[THE_EXPR_METHOD] 003 Sequencing(和訳)
[THE_EXPR_METHOD] 003 シーケンシング
値の離散的な変化から切り離して考えると、シーケンシングのためのコントロールシグナルを作ることは、モジュレーションと全く同じアプローチと言えます。言い換えれば、与えられた波形の見た目を「変える」本質的な方法で、その結果が「ステップ状」の波形として現れると言えます。連続的でスムーズに値が変化しているシグナルを、量子化して限定された出力値に変形させることは、シーケンシングのためのコントロールシグナルを準備するための第一歩です。
以下の簡単な例では、1周期に10個のステップがあるノコギリ波を作ります。
[phasor~ 1]->[expr~ floor($v1*10, 0)/10]
量子化されたシグナルでは、ステップから次のステップにいくまで一時的に一定の値を維持しています。それには比較演算子(例えばイコール「=」)を使っていて、シーケンスの特定の部分を分離するか選択するかをしています。与えられた時間の「ステップ」の全体の長さについてプログラムの比較演算が真を返したら、シグナルに対してさらに進むか違う処理をするかというような、いずれかの側に進む処理をすることを許可されます。このシーケンシングをするシグナルの特性は、はじめのうちはささいなことに見えるかもしれません。しかし、時間に依存する構造を扱う際に共通して直面するタスクを処理するために、その特性はシーケンシングシグナルはとても有用なものになっていきます。
以下の例は、(0,1,2,3,0,1,2,3…)と増加するカウントのシーケンスの中でどうやって最後の要素を選択するか、そして続いて(0,1,2,0,0,1,2,0…)と出力値を割り当て直すかについて説明します。
[phasor~ 1]->[expr~ floor($v1*4, 0)]->[expr~ if($v1 == 3, 0, $v1)]
上記の関連するものを組み合わせると、シーケンシングのためのコントロールシグナルはシンプルなカウントをするメカニズムをさらに大きく拡張することができます。[select]、[spigot]、[int]そして[moses] といった多くの共通するオブジェクトは簡単に再現することができます。動的に変化するシグナルのルーティングと融通のきくループを、実行するのに比較的複雑ではない例として挙げます。
以下の例ではモジュロ演算子(除算した余りを出す)を使って興味深い方法でカウントする方法について説明しています。
この例は、モジュロ演算子を使ってより面白く簡単なDSPカウンタをどのように作るかを示しています。
EXAMPLE PATCH:003_modulo.pd
練習問題:
他にどんな算術子がコントロールシグナルを改造するのに使えるでしょうか?
例題パッチの他のパートのどれが変調/シーケンシングできるでしょうか?
※この翻訳はChun Lee氏の[expr~]オブジェクトを使った作曲パッチの制作メソッドを和訳したものです。Chun Lee氏の許諾を得ています。
※元サイト