Functions and Other Functionality

初めての音出し。

{ [SinOsc.ar(440, 0, 0.2), SinOsc.ar(442, 0, 0.2)] }.play;

おお、サイン派がなった。 Not too inspiring? いや、感動したよ。
この例では、2つのサイン派を合成しているみたい。[ ]は配列だと思われる。


ショートカット

Cmd + .
音を止める


次は関数の定義、

f = { "Hoge".postln; };
f;

実行すると a Function が表示される。実行してくれたらいいのに..


実行するには

f.value;

とする。なんか面倒くせ。


関数に引数を与えるには

f = { arg a, b; a + b; };
f = { |a, b|    a + b; };    // ショートカット


呼び出すには

f.value( 5, 4 );
f.value( a:5, b:4 );    // キーワード付きの呼び出し方

とする。


両方組み合わせた

f.value( 5, b:4 );

みたいな書き方も OK らしいがエラーになる。こんど調べる。
寝て起きたら出来るようになった。??やりかた違ってたか??とりあえずOK


引数にデフォルト値をつける場合は、

f = { arg a = 2, b = 5; a + b; };

とする。


変数の宣言は var を使うが、ブロックの先頭で宣言しないといけない。
ブロックの中で宣言された変数はそのスコープを外れると死ぬ。
ただし、 a から z までの1文字の変数は、グローバル変数とのこと。
これは注意が必要そう。いつかハマる気がする。