ChucK入門 #4 - そしてステレオへ
今回は音のステレオ化に挑戦しましょう。
その前に、オシレータの他の種類も見てみましょう。
SqrOsc s1; SawOsc s2; 0.5 => s1.gain; 0.5 => s2.gain; s1.freq() + 2 => s2.freq; s1 => dac; s2 => dac; 5::second => now;
新しく SqrOsc と SawOsc が登場しました。
SqrOscは矩形波のオシレータで、SawOscはノコギリ波のオシレータです。
gainプロパティはオシレータの出力レベルを示すプロパティですね。最終的にどちらもdacへ繋いで(加算されて)いますから、0.5とか、まあ、適当な数字にしてレベルを調整しています。
s1.freq() + 2 => s2.freq;
は前回で説明したように s1の周波数に2Hz足したものが s2の周波数にセットされる、とそういう文ですね。要するに「デチューン」です。
このプログラム走らせると、デチューンのおかげで分厚い音がしますが、音は「ド真ん中」にありますね。さて今回はステレオに関するトピックを扱っていきましょう。
オシレータそのものはモノラルですが、これをステレオで定位させるにはどうすればいいんでしょうか。
さて、オシレータからdacへのChucKing箇所を以下のコードに置き換えてみてください。
Pan2 p; s1 => p; s2 => p; p => dac;
Pan2 は「パン」を扱うことのできる ユニットジェネレータです。このまま実行してみると・・・そのまま鳴りますね。
なにもしてなければ Pan2 はスルーするだけだ、ということがわかりました。いや、「ミックス」はしてくれているか。
次に
-1 => p.pan;
を追加してみてください。適切なところに。
今度は左から聴こえましたか?(いまさらですがステレオ再生環境でお願いします)
はい、 -1は左で1は右 にパンを振る機能、それがPan2の仕事なんです。
ということは
Pan2 p1; Pan2 p2; s1 => p1; s2 => p2; -1 => p1.pan; 1 => p2.pan; p1 => dac; p2 => dac;
はい。なんかそれらしい音になりましたね!ステレオ対応もばっちりです。
今回はこれにて。