15:
Filter:
Tutorials/Mark_Polishook_tutorial/Japanese_version | Tutorials > Mark_Polishook_tutorial > Japanese_version

15

Mark Polishook tutorial (JP)

ルーチンとクロック

クロックは、SuperColliderの中で自動のアルゴリズミックなスケジュ−リングを生成する際に使うメカニズムを提供します。クロックはルーチン、タスク、そしてパターンを再生します。

パターンとタスクはルーチンから作られます。

ルーチンに対する最初のアーギュメント(そして通常は唯一のアーギュメント)は関数です。

これが関数の一例です。

これはルーチンの中に関数を配置したものです。.yieldメッセージを送ることで関数の中の式を評価します。

ルーチンを実行するには、評価して下さい。

もう一度やってみましょう。

これは一度ルーチンが"yield"(受け渡し)すると、関数の中にさらなるコードがあるか、resetメッセージを受け取らない限り、終了することを示します。

////////////////////////////////////////////////////////////////////////////////////////////////////

この引用では、ルーチンに.nextメッセージが送られると、3つの表現(文字列)を順番に引き渡すことを引き起こします。例えば、nextメッセージが送られると、文字列が引き渡され、nextメッセージが送られると、文字列が引き渡さるという様にです。

上の例での最後の.nextメッセージはnilを返すでしょう。最後の表現が引き渡されると、ルーチンはリセットされるまで常にnilを返します。

////////////////////////////////////////////////////////////////////////////////////////////////////

このルーチンを.doメッセージを使って書き直すと、loopを作ります。

このdo loopをルーチンの中のループよりももう1回多く実行すると、前の例と同じ様に、3つの文字列とnilを返します。

////////////////////////////////////////////////////////////////////////////////////////////////////

次に、このルーチンを.waitメッセージを含む形で書き直します。.waitメッセージは、その数字が示す秒単位で指定した時間だけ、ルーチンを「プレイ」するクロックを一時停止させます。

以下のコードが示す様に、ルーチンに.resetメッセージを追加します。このようにして、ルーチンは常に再スタートできる様になります。そして、クロックとともにルーチンをプレイします。

以下のコードはSuperColliderがイベントをスケジューリングする時に使用する3つのクロックを示します。

////////////////////////////////////////////////////////////////////////////////////////////////////

または、そのプロセスを省略することができ、その場合にはデフォルトとしてTempoClockが使用されます。

////////////////////////////////////////////////////////////////////////////////////////////////////

ルーチンを用いたシンセシスのスケジューリング

ルーチンの中にシンセを入れます。シンセの中のSynthDefが必ずエンベロープを持つ様にし、そのエンベロープのdoneActionパラメータを2にセットします。これによって、エンベロープが終了した後に、そのシンセのために必要とされていたメモリが解放されます。

////////////////////////////////////////////////////////////////////////////////////////////////////

ルーチンの中で引き起こされたシンセを、ルーチンの外側で実行するエコー・エフェクト・ユニットを通してプレイします。

////////////////////////////////////////////////////////////////////////////////////////////////////