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 読み方はやっぱ パンツー なんかなぁ?