次に具体的にSoundの編集を行っていきます。

File Menu から New を選択。Sound File Window を開きます。

このワークスペースに Prototype WindowSources & Generators から Oscillator を選択し、Drug &Drop します。Oscillator アイコンをダブルクリックして Sound Edit Window に入ります。

今存在する Sound は一つなので、この画面で表示されるパラメーターは Oscillator についてのものだけです。Sound が複数になった場合はパラメーターを表示させたい Sound をダブルクリックします。

まずはこの Sound の名前を変更してみましょう。Sound を選択し、return key を押すと Sound Name 変更のダイアログが表示されます。今回は単純に Oscillator としておきましょう。

各パラメーターの名称の上にカーソルを移動させるか、もしくはダブルクリックすると Help 画面が表示され、パラメーターの概要を知ることが出来ます。紅い表示が
Hot Parameter で、この Sound には音量と音階にあたるパラメータに使われています。smoothed というのはフェーダーのデータ変化をなめらかにするメッセージです。

コマンド+Pキーでコンパイル・ロード・スタートします。

音が出ましたね。ではフェーダーを使ってコントロールしてみましょう。

次にこの OscillatorEnvelope コントロールとモジュレーションを追加し、Midi 鍵盤によるリモートを可能にしてみましょう。

Prototype WindowEnvelopes & Control Signals から Graphical Envelope を選択し、
コピー、 OscillatorEnvelope window にペーストします。ペースト後は OscillatorGraphical Envelope Sound のアイコンが現れます。

Parameter fieldFrequency
!Pitch と書き込み、Midi 鍵盤からのデータを直接受けられるように設定します。

基本波形をサイン波からノコギリ波に変更します。Wavetable parameter のファイルボタンをクリックして Waveforms フォルダのなかの Saw21 を選択して下さい。

次に Graphical Envelope のアイコンをダブルクリックすると Gate, Level, Rate というパラメーターが表示されます。ここにもデフォルトで
!KeyDown!Level!Rate というホットパラメーターがアサインされています。!KeyDown は Midi キーボードの鍵盤を押鍵時のトリガーを受け付けるホットパラメーターです。 Envelope の出力波形はシフト + クリックで変化ポイントを書き加えることが出来ますRate は最大値が 1 で、0.5 を入力すると時間軸は2倍になります。このままMidiキーボードでコントロール出来るので、一度演奏してみましょう。



今度はフィルタを追加してみましょう。Prototype WindowFilters-Mono から Filter を選択、 Oscillator の直後に追加します。

Filter のカットオフをキーボードのアタックに追従する場合、Sound Edit Window 上の Graphical Envelope を選択しコピー、Filter Frequency Parameter に追加します。

この場合、接続の選択肢は2種類あります。
!FreqLow 全体をマルチプライ()する方法と、 !FreqLow に任意の幅(1kHz)の周波数変化量を加える(+)方法で、

(!FreqLow * GraphicalEnvelope L) hz (かけ算)
!!FreqLow hz + (GraphicalEnvelope L * 1000) hz (加算)

のように書き込みます。加算の場合はレンジオーヴァーに注意して下さい。また、変化量の深さを可変したい場合は、

!!FreqLow hz + (GraphicalEnvelope L * 1000 * !Depth) hz (加算)

のように表記すればよいでしょう。

この
!Depth の代わりに新たに Prototype Window から Oscillator をコピーし、貼り付けることによって(Oscillator Lと表記されます)LFOモジュレーションが可能になります。この場合注意することは、Oscillator の振幅が「プラス・マイナス1」であることです。!FreqLow の設定によってはパラメータ全体が負の値になる可能性があるので、

OscillatorL + 1)* 0.5

のように
全体を一旦嵩上げした後、最大値を1.0 以下に押さえるという工夫が必要です。追加したModulationOscillatorFrequency Parameter には!LFOspeedEnvelope には !LFOdepth 等といった表記で、ホットパラメータをアサインしておくと、コントロールが楽になります。

最後にDelayを追加します。Prototype WindowDelays-Mono から DelayPlusOriginalFilter の後に追加します。 この Delay Sound を使って Flanger Chorus など遅延エフェクト系ユニットを製作することもできます。

以上の作業で簡単な音源モジュールが完成しました。

このように、KYMA の Sound 設計は古のパッチングシンセを彷彿とさせるものであり、アナログ回路設計のスキルがあれば、無駄なく自分の望む構成の Sound を、短時間で組み立てることが出来るでしょう。しかも、各パラメータは数値だけではなく簡単な SmallTalkメッセージを付加することが出来、パラメータコントロールに必要な計算を余分な Sound を使うこと無しに行えます。これはGUIとCUIの長所を備えた優秀な設計のインターフェイスであるといえるでしょう。

では、次にこのモジュールを使って Function メッセージ の使い方に触れてみましょう。Function メッセージ とはKYMA に実装された計算プログラムで、Parameter Field に使用することで、 Sound の構造を簡素化し、合理的にシステムを構築することが出来ます。

まずは 例題として
!LocalTime という Function メッセージ を使用します。

OscillatorFrequency

4 c + !LocalTime nn

とタイプします。
!LocalTime はコンパイル後1秒ごとにカウントされる Fuunction で、nn (MIDI note mumber)という specify units を加えることにより、一秒ごとに半音ずつ音階があがるように Oscillator をコントロールする事が出来ます。

ちょっと寄り道になりますが、KYMA で使用する specify units の例を紹介します。


days days
h hours
m minutes
s seconds
ms milliseconds
usec microseconds
samp samples
beat (default BPM setting is quarter note = 60)
SMPTE SMPTE time code
hz hertz
nn MIDI note number


実際の使われ方は、

440 hz
60 nn
1 s
1 day + 3 m + 17 s

のようになります。

音階に関しては

4 c sharp

のような表記も可能です。


逆に計算上 unit を取り除きたい場合は

60nn removeUnits / SignalProcessor sampleRate.

のように unit のある数値の後に removeUnits を加え、261.6256 という数値に変換。それをサンプルレートで割ることで、Frequency 以外の
入力範囲が 0~1のような Parameter にフルスケールが 1 になるデータを返すことが出来ますremoveUnits に関しては、後ほど説明する「評価」の項目でおさらいします。



さて、例題は Function メッセージ の使い方に戻ります。

Frequency field に今度は

(!KeyDown ramp: 0.1 s) * 3 nn + !Pitch

とタイプしてみましょう。 ramp: 0.1 s とは0.1秒で 0 から1に値が変化する ramp 波 をジェネレートする Function メッセージ で、この場合は鍵盤を押さえる毎に0,1秒かけて1音半音程が上昇します。

次は Frequency field

(1 repeatingRamp: 3 s) * 1 nn + !Pitch

とタイプします。 1 repeatingRamp: 3 s とは3秒周期で0から1にリニアに変化する波形を生成する Function メッセージ で、この場合はトリガーに関係なく半音階に上昇する一定のモジュレーションをかけています。

次は Envelope field

1 bpm: 60

とタイプして下さい。これで、半秒毎に Oscillator の音声がオン・オフされます。bpmbeat per minutes の略です。TriggerGate fieldbpm: を使用することにより、一定のリズムで Sound の発音をコントロール出来ます。例えば信号の立ち上がりを1秒毎に行う場合:

!KeyDown bpm: 60

のように鍵盤のアクションに同期することも可能です。

3秒ごとにトリガーを発生させる場合には

1 bpm: (60.0 / 3.0)


となります。


next Page→