Twitter

フェイズ・キャンセレーション

このチュートリアルでは位相(phase)による音の打ち消し合い(cancellation)を実験します。

まず、phase、フェイズ、位相とはなんぞやという事なのですが、位相とは「振動や波動などの周期運動の過程でどの点にあるかを示す変数」のことです。
以下は余弦波の一周期をプロットしたものですが、この一周期の中のどこかのポイントを指すときに使う言葉です。位相は一般的に角度で表現されます。
[caption id="attachment_1437" align="aligncenter" width="300"]余弦波のプロット 余弦波のプロット[/caption]

この角度で表すというところがミソで、我々は例えば、高校で三角関数を習った時に θ = 90°などという風に勉強したと思いますが、Pdの世界ではこの一周期=360°が0から1にスケーリングされる場合と、また0から2πにスケーリングされる場合があります、後者の表記方法はラジアンといわれます。

一番ややこしいのが、「cos」オブジェクトと「cos~」オブジェクトで、「cos」は上の例のようにラジアンで入力する必要があるのに「cos~」は0から1までのスケーリングです。これはおそらく「cos」がC言語のライブラリ関数に準じているのに対し、「cos~」は「phasor~」等と組み合わせる事を考えた実用性、速度を重視しているのだと思われます。
[caption id="attachment_1439" align="aligncenter" width="300"]「cos~」は0から1の入力を一周期と解釈 「cos~」は0から1の入力を一周期と解釈[/caption]

初期位相(initial phase)という言葉もあり、周期がどこからはじまるかを設定します。「osc~」初期位相は「osc~」の右インレットに0から1までの数値を入力することで、0-360度の範囲で指定できます。例えば、初期位相が0度、初期位相が180度の余弦波はちょうど上下が逆転したような状態となります。これを逆相といいます。
[caption id="attachment_1440" align="aligncenter" width="300"]「逆相」 「逆相」[/caption]

もし、この2つのサイン波を足したら、お互いが打ち消し合い、音が聞こえなくなります。これを位相差による打ち消し合い、フェイズ・キャンセレーションといいます。音を足したら、普段は合わさって両方聞こえるのですが、このように一定の条件では完全に2つの音が互いを相殺するような事が起こりうるのです。

[caption id="attachment_1442" align="aligncenter" width="281"]フェイズ・キャンセレーション フェイズ・キャンセレーション[/caption]

以下の例では左チャンネルから初期位相0度、右チャンネルから初期位相180度のサイン波を出力するプログラムです。まず、左チャンネルからサイン波を出し、そして右チャンネルから逆相のサイン波を出すと、空気中で打ち消し合いが起こり音量がかなり減ってきこえるはずです(ヘッドフォンで聞いた場合はそうでもありません)。

[caption id="attachment_1444" align="aligncenter" width="300"]逆相の音をスピーカーから出すと... 逆相の音をスピーカーから出すと…[/caption]

この現象は、電子音に限らず普通の楽器同士の音でも当然起こりえます。しかし、この実験のように全くの逆相の音が偶然生じるという事はあまり無いと思いますが…。
この項のパッチをダウンロード