[THE_EXPR_METHOD] 009 Phase Shifting(和訳)
[THE_EXPR_METHOD] 009 フェーズシフティング
以前にfmod()関数を周波数の操作をする使ったことがありました。例えば:
[phasor~ 0.25] -> [expr~ fmod($v1*4, 1)]
※fmod()は浮動小数点の余りを出力する関数。
その横で、それはノコギリ波のオシレータのフェーズ(位相)の位置をシフト(変移)するのに使うことができます。原理は上記の例とほとんど同じです。違うのは乗算をシフト量(変移量)を表すものに入れ換えていることです。
例えば:
[phasor~ 0.25] -> [expr~ fmod($v1+(1/4.0), 1)]
これはフェーズの位置をノコギリ波の入力でずらしていて、ノコギリ波の1周期の波形の長さの1/4分(25%)を動かしています。
オリジナルのフェーズの位置(上)
25%のフェーズシフト(下)
音楽的に言うと、本質的に時間のディレイ(遅延)/オフセット(開始位置)をオリジナルのコントロールシグナルに付加しています。一方通行としては、これは並行のシフトさせるシグナルを構成するには有用です。音楽のカノンと似た効果を生み出します。実際には、これはあらかじめ設定されたシーケンスの範囲内で、面白い作曲上のバリエーションを作ることができます。さらにシフト量(変位量)は、音量と周波数に対するのと同じ方法でモジュレート(変調)されることもできます。それによりダイナミックで反応する構造を実現できます。
音のシンセシスのコントールのために、フェーズシフティングは時間軸に沿ってエンベロープと論理的な音量レベルを動かす、単純なメカニズムをもたらします。以下を見てみましょう:
[phasor~ 0.25] -> [expr~ if($v1<0.25, 1, 0)] -> [s~ signal_1]
\-> [expr~ fmod($v1+0.25, 1)] -> [expr~ if($v1<0.25, 1, 0)] -> [s~ signal_2]
signal_1は25%のデューティ比のゲートスイッチングを実現します。[phasor~]のフェーズをシフトすることで、signal_2は(signal_1と)同じ割合で変化します。ただし、1周期の波形長の1/4の時間だけ遅延しています。
これは言っておいた方が良いでしょう。「許されている」シフトの総量について注意を払っていくことです。言い換えれば、「効果的な」シフトは1周期の波形のトータルの長さからゲートのデューティ比の長さを減算したものです。上記の例のケースでは、もしシフト量が0.75よりも大きくなったら、ゲートの”on”の割合が正しく働かなくなり、望ましくないエフェクトを引き起こしてしまうかもしれません。
EXAMPLE PATCH: 009_phase_shift.pd
練習問題:
・どうやってサイン波のフェーズをシフト(位相変移)するのでしょうか?
※この翻訳はChun Lee氏の[expr~]オブジェクトを使った作曲パッチの制作メソッドを和訳したものです。Chun Lee氏の許諾を得ています。
※元サイト