Mix it Up

単純に音を重ねる場合は、 + 演算子で UGen を加算する。

{ PinkNoise.ar( 0.2 ) + SinOsc.ar( 440, 0, 0.2 ) + Saw.ar( 660, 0.2 ) }.play

また新しい UGen が出てきた。Saw はノコギリ波のクラス。


Mix クラスを使っても同じようにできる。
その場合は、足し算ではなく配列で渡す。

{ Mix( [ PinkNoise.ar( 0.2 ) ,SinOsc.ar( 440, 0, 0.2 ) ,Saw.ar( 660, 0.2 ) ] ) }.play

Mix( .. ) っていうのは Mix クラスの new メソッドのショートカット。


BinaryOpUGen とは何だ?


Mix クラスの fill メソッドを使えば、複数回同じ処理を実行できる。
引数は2つあって、2つ目が実行する関数。1つ目は関数を実行する回数。
2つ目の引数に指定した関数には何番目に実行しているかを示す数値が引数として渡される。
例えば、7回の場合は 0 から 6 までの数字が渡される。

{ Mix.fill ( 4 , { arg index; SinOsc.ar( 440 + (index*10), 0, 1/4 ) } ) }.play;

上のコードだと、2番目の引数の関数が4回呼び出される。
2番目の関数では変数 index に何回目かの呼び出しかが渡されるので、
440Hz, 450Hz, 460Hz, 470Hz のサイン波が鳴る。