Mixの用法
{ SinOsc.ar([400, 500]) }.play;
こう書くと左右別々に鳴らせる。ほほー
{ SinOsc.ar([400, 500, 600]) }.play;
三つ同時は無理だったもよう。右の次というのはないもんな
{ Mix(SinOsc.ar([400, 500, 600])) }.play;
Mixで三つ同時に鳴らせる。ただしこれだと音量も三倍で割れてる。
つまりこの書き方で、実際にはSinOscが三つ立ち上がってるということか。
あと、またしても左だけになってる。
{ a = Mix(SinOsc.ar([400, 500, 600])); b = Pan2.ar(a, 0, 1/3); }.play;
真ん中に持ってきて音量を1/3にした。
こうしてきれいな三和音ができました。めでたし。
別に三つに限らず何個でもMixできる。ついでに配列の部分を外に出して
{ a = [100, 200, 300, 400, 500, 600, 700]; b = Mix(SinOsc.ar(a)); c = Pan2.ar(b, 0, 1/a.size); }.play;
sizeというのは配列の長さの意味。この場合a.sizeとは7だから、音量は1/7になってる。
配列の長さによらず常に音量の合計を1にする作戦です。
{ a = 8; b = Mix.fill (a, { c = 1000.rand; d = SinOsc.ar(c, 0, 1/a); }); e = Pan2.ar(b, 0); }.play;
やや。これまた見慣れぬ感じになりましたが、今度はMix.fill。
{ }の間の処理を繰り返すものでして、aで繰り返しの回数を指定。
randについては後述。
{ a = 8; b = Mix.fill (a, { arg n; c = 100*n; d = SinOsc.ar(c, 0, 1/a); }); e = Pan2.ar(b, 0); }.play;
今度はMix.fillの中にargというのが入っている。
するとどういうわけか、繰り返す度にこれの値が1ずつ増える。
出音としては二つ前のと同じと思われます(最初に0HzのSinOscが混ざっちゃってるが)
{ a = 8; b = Mix.fill (a, { arg n; c = (5*n+50).midicps; d = SinOsc.ar(c, 0, 1/a); }); e = Pan2.ar(b, 0); }.play;
さっきよりは和音っぽい感じですが、今度はmidicpsというのを使ってる。midicpsについても後述。