And What About Functions and Sound?
単純なサイン派を再生するコード
{ SinOsc.ar( 440, 0, 0.5 ) }.play;
これでローカルサーバから音が出る。
明示的にサーバを指定していない時は、グローバル変数 s で指定しているサーバを使う。
s にはデフォルトでローカルサーバが格納されているから、このコードでローカルサーバから音がでるということだと思われる。
サンプルコードで SinOsc はクラスで、クラスメソッド ar (audio rate) を呼び出している。
ar メソッドの引数は、frequency, phase, mul で 周波数、位相、振幅 という感じ。
mul は multiply という事で、frequency と phase の波形に対して乗算する。
サンプルでは省略されているが、四番目の引数に add ってのもあるみたい。こっちは加算。
位相はラジアンで指定する。
振幅は値かシグナルで指定する。シグナルで使うのは、
{ SinOsc.ar( 440, 0, SinOsc.kr( 0.5, 0, 0.2, 0.7 ) ) }.play;
という感じ。この場合は音量が周期的に変わる。
kr (control rate) と ar と同じように使えるが、
{ SinOsc.kr( 440, 0, 0.5 ) }.play;
だと、音は出ない。
でも、以下のコードだと同じ音がでていると思う。
{ SinOsc.ar( 440, 0, SinOsc.kr( 0.5, 0, 0.2 ) ) }.play; { SinOsc.ar( 440, 0, SinOsc.ar( 0.5, 0, 0.2 ) ) }.play;
違いが良く分からないが、用途が違うってのは何となくわかる。
こういう、オーディオ信号やコントロール信号を生成するオブジェクトは UGens(unit generator)というらしい。
なんて読むやろか?ユージェン?いつか恥ずかしい思いをするかもしれない。
あと、標準のエディタがちょっと使いにくいな。 Emacs とかで編集できたらいいんやけど..