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;

新しく SqrOscSawOsc が登場しました。
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;

はい。なんかそれらしい音になりましたね!ステレオ対応もばっちりです。

今回はこれにて。