Presented in Living Stereo
SuperCollider では、とにかく配列が重要らしい。
とりあえず、配列の使い方は [ xxx, xxx, xxx ] という感じ。
var array = [ "foo", "bar" ]; array.at(0).postln; // 1番目の要素を表示 array[1].postln; // 同じこと array[2].postln; // nil エラーにはならない array.postln; // [ foo, bar ] が表示される array[-1].postln; // これは出来ない array[0] = "FOO"; // 1番目の要素を FOO に変更 array.at(1) = "BAR"; // これは出来ない array[2] = "FooBar"; // これも出来ない
出来る事と出来ないことが良く分からない。後で Language Reference を調べる。
初めて音を出したサンプルコードは下記の2行目のように書く事ができる
{ [ SinOsc.ar( 440, 0, 0.5 ), SinOsc.ar( 442, 0, 0.5 ) ] }.play; { SinOsc.ar( [440, 442], 0, 0.5 ) }.play;
これは、左右の2チャンネルから音が出ている。
配列を使ったもひとつのサンプルコード
( { var freq; freq = [[660, 880], [440, 660], 1320, 880].choose; SinOsc.ar(freq, 0, 0.2); }.play; )
配列オブジェクトで choose メソッドを呼び出すと、適当にのどれかの値が得られる。
実行するたびに、違う音がなる。
ノイズを出すオブジェクト
PinkNoise.ar( 0.5 );
引数は mul。他にも WhiteNoise や BrownNoise もあるみたい。
あとはパンニングするオブジェクト
{ Pan2.ar( SinOsc.ar( 440, 0, 0.5 ), -1 ) }.play; { Pan2.ar( PinkNoise.ar( 0.5 ), SinOsc.kr( 0.5 ) ) }.play;
最初の引数にオーディオ信号で、2番目の引数に -1(左) から 1(右) までの数字。
1行目の例では、ちょっと左側から音がなる。
2行目の例では、2番目の引数にコントロール信号を与えて2秒周期で左右にパンニングされる。
Pan2 読み方はやっぱ パンツー なんかなぁ?