SynthDef
箇条書き(と言うのかわからないけど)を使っていろいろ音作りができそうなことはわかった。
これをSynthDef(「シンセの定義」だろうか)というものの中に入れると、名前をつけたり、出し入れできたり、ひとつの音源のように扱うことができる。
SynthDef("hoge", { // hogeなるシンセなり var a, b; // a、bなる変数あり a = SinOsc.ar(440); b = Pan2.ar(a, 0); Out.ar(0, b); // バス0番にbを出力 }).play;
ところでコメントは // または /* */ よくある感じ。
コメント部分は無視されるので何を書いても良い事になっている。日本語も可のはず。
playすると音が出るのはこれまで同様。
SynthDef("hoge", { var a, b; a = SinOsc.ar(440); b = Pan2.ar(a, 0); Out.ar(0, b); }).store;
今度はplayではなくstoreとなっておる。
この場合は直ちに音出しするのではなく、SynthDefファイルをどこかに保存している。
Synth("hoge"); // 立ち上がれhogeよ
これで呼び出せる(音が鳴る)。好きな時に出し入れできるようになりました。
引数
SynthDef("hoge", { arg nn; // nnなる引数あり var a, b; a = SinOsc.ar(nn.midicps); // 周波数はnn.midicps b = Pan2.ar(a, 0); Out.ar(0, b); }).store;
引数というのを使ってシンセに好きな数字をくれてやることができる。
Synth("hoge", [\nn, 60]); // 立ちやがれhogeよ、あとnnは60でね
中央のドで鳴ります。
Synth("hoge", [\nn, 67]);
その上のソで鳴ります。というふうに使い分けられる。
setを使って途中で値を変えることもできる。
// ひとつずつ実行 x = Synth("hoge"); // xとしてhogeを立ち上げる x.set(\nn, 60); // xのnnは60 x.set(\nn, 67); // xのnnは67 x.free; // xを片付ける
立て続けにブチブチ押せば、それなりに演奏的なこともできそうだと。
ただし疲れる。これを次回何とかします。