シンセシスのプロセスを部分に分割することは、モジュラー・デザインとコンポーネントの再利用を促進します。このことが意味するのは、小さく、うまく設計されたタスクを成し遂げる様にSynthDefを作るということには、しばしば〜があるということです。そのようにすることで、複雑なシンセシスのネットワークを構築するためにSynthDefを組み合わせたり、様々な方法で組み替えたりすることが可能になるのです。
////////////////////////////////////////////////////////////////////////////////////////////////////
前の例ではBufRateScaleとBufDurというUGenを使って、PlayBufがサウンド・ファイルをプレイするレートと、PlayBufに適用されるエンベロープの長さをコントロールしています。
BufRateScaleはサウンド・ファイルが録音されたときのレートでプレイバックされることを保証します。BufDurはバッファの長さを返します。これら両方のクラスはInfoUGenbaseまたはBufInfoUGenBaseを継承するUGenのファミリーです。
そのようなUGenの完全なリストを表示するためのコードがこれです。
このコードを実行すると次の様に表示されます。
このコードを実行すると次の様に表示されます。
////////////////////////////////////////////////////////////////////////////////////////////////////
もう一度、次の例はどのようにしてシンセをソースとエフェクトのグループに配置するのかを示します。2つのグループは2つのシンセが適切な順序で実行されることを保証します。
////////////////////////////////////////////////////////////////////////////////////////////////////
サウンド・ファイルを何度も何度も繰り返し再生するには、PlayBufのloopアーギュメント(コントロール)を使います。
しかし、PlayBufのインスタンスのloopアーギュメントに任せてファイル全体をループする代わりに、正確な繰り返しが起きる様にスケジューリングすることで、より細かくコントロールすることもできます。
////////////////////////////////////////////////////////////////////////////////////////////////////
この例は3つのSynthDefを使用しています。第1のSynthDefはサンプル・プレーヤーで、バッファ全体を永遠にループし続けます。第2のSynthDefはその入力をリング変調します。第3のSynthDefはその入力に対してローパス・フィルターを適用します。
3つのシンセはチェーンを形成します。第1のシンセはソース・シンセです。第2と第3のシンセは、それぞれのソースに対して処理を加えます。つまり、ソースに対して振幅変調を加え、振幅変調を行ったソースに対してローパス・フィルターをかけます。
処理の順序、つまり振幅変調とローパス・フィルターのどちらが最初でどちらが2番目かは任意です。それはどちらの方法でも定義することができます。
このシンセシスのネットワークを文字による図で表すと、この様になります。
////////////////////////////////////////////////////////////////////////////////////////////////////
ここでは、シンセとグループの配置は同じです。一部のアーギュメント(コントロール)を変えることでエフェクトの音色が劇的に変わります。
////////////////////////////////////////////////////////////////////////////////////////////////////
go to 13