チュートリアル26

プロセッシング:フィードバックを伴ったディレイライン

反射をエミュレートするディレイ

tapin~、tapout~オブジェクトを使用して、特定の時間シグナルをディレイする(遅延させる)ことができます。tapin~オブジェクトは、絶えずアップデートされて続けているバッファとして、受信した直前のシグナルをストアします。また、tapout~はストアされている時間の中の1つ以上の特定の点でそのバッファにアクセスします。

tapin~、tapout~によるシグナルのディレイ

サウンドを、それ自身のディレイされたものと組み合わせることは、壁で反射してから耳へ届くような音波をエミュレートするシンプルな方法です。;これによって、後に反射音が続いているダイレクトなサウンドを聞くことができます。現実の世界では、サウンドのエネルギーの幾分かは反射する壁によって吸収されますが、これは下の例のようにディレイサウンドの振幅を減少させることでエミュレートすることができます。

サウンドの吸収をエミュレートするための、ディレイシグナルの振幅のスケーリング

技術的な詳細:異なる素材は異なる度合いでサウンドを吸収しますが、たいていの素材で、サウンドの吸収は周波数によって変化します。一般に、高周波は低周波よりも多く吸収されます。この事実は、ここでは無視されていますが、残響に関する後のチュートリアルで考慮されます。

「ディレイシグナル」のディレイ

また、現実の世界では、たいてい2つ以上のサウンドの反射面が存在します。例えば、部屋の中では、サウンドは壁、天井、床そして、室内の物体に無数の方法で反射し、反射波はかわるがわる他の面に反射します。この「反射の反射」をモデル化する1つのシンプルな方法は、ディレイシグナル(最初の「吸収」の後のいくつか)をディレイラインにフィードバックすることです。

フィードバックを伴ったディレイ

上記のような1つのフィードバックを持つディレイラインは、現実の世界でサウンドが響いている状態のように聞こえるためにはあまりにもシンプルですが、これは多くの面白い効果を生成することができます。フィードバックを伴ったステレオディレイは、このチュートリアルのサンプルパッチで実現されます。各々のオーディオ入力チャンネルは、ディレイされ、スケールされてディレイラインにフィードバックされます。

個別のディレイタイムとフィードバック量をもつステレオディレイ

*"Output Level"と記されたナンバーボックスを1にセットして下さい。そして、hsliderを真中の位置に動かして、"Direct Level"、"Delay Level"ナンバーボックスが0.5であることを読み取って下さい。オーディオをオンにして、コンピュータのオーディオ入力にサウンドを送って下さい。様々なディレイタイム、フィードバック量で実験してみて下さい。例えば、ぼやけたような効果を出すために上に示したようなセッティングを使用してみてもよいでしょう。フィードバックの割合(1000/ディレイタイム)によって、より大きな共鳴音の響きを得るためにフィードバック量を増加させて下さい。分離して聞こえるエコーを作るために、ディレイタイムを増加させて下さい。HsliderでDry/Wetのミックスの度合いを変えてみてもよいでしょう。

オーディオ信号をシステムにフィードバックする時には、常にオーバーロードを起こす可能性がある点に注意して下さい。このため、シグナルをディレイラインにフィードバックする前に、(*~オブジェクトや"Feedback"ナンバーボックスによって)1.0より小さいいくつかの係数でスケーリングすることが重要です。さもないと、ディレイサウンドは際限なく続き、新規に入力されてくるオーディオとの加算によって増加してしまう場合さえあります。

振幅の制御:normalize~

このパッチでは、レベルセッティング(特にフィードバックレベル)をユーザが変えることができ、さらに、どんなサウンドがパッチに入力されてくるかわからないので、最終のアウトプットレベルをどのくらいスケーリングする必要があるかについて実際に予測することはできません。アウトプットの振幅をスケールするために*~オブジェクトをezdac~の前に使っていた場合、アウトプットレベルをセットすることはできますが、もし後々、フィードバックレベルを増加させると、アウトプットの振幅は限度を超えてしまいます。mormalize~オブジェクトはこのような予測できない状況を扱うのに適しています。

normalize~オブジェクトは、アウトレットから送り出したいピーク(最大)の振幅を指定することができます。normalize~は、その入力のピーク振幅値を見て、最大値として指定されたピーク振幅を保つようにシグナルをスケールするための係数を計算します。そのため、normalize~を使うと、アウトプットのピーク振幅値は、決して指定された最大値を超えることはありません。

normalize~は、(現在の入力値×ピーク出力/ピーク入力)を出力します

normalize~に起こりうる1つの問題点は、入力シグナルに1つの大きなピークがあると、たとえ残りのシグナルが非常に小さい場合でも、normalize~はシグナル全体のスケールを低くしてしまうということです。normalize~の左のインレットに数値、または、resetメッセージを送ることによって、使用する新しいピーク入力値を与えることができます。

*オーディオをオフにして、次の章に進む前にパッチャーウィンドウを閉じて下さい。

まとめ

tapout~のアウトプットをtapin~のインプットにフィードバックし、さらにそれをDACに送る方法は、シグナルの多重ディレイされたバージョンを作る1つの方法です。フィードバックされたディレイシグナルは、tapin~のインレットに入力されてきたシグナルに加算されるので、tapout~のアウトプットをtapin~にフィードバックする前に減少させておくのは良い方法です。

振幅の変化するシグナルの追加を含むようなパッチでは、DACに送られる合計のシグナルの振幅値の予測はしばしば困難になります。シグナルの振幅をコントロールする1つの方法は、normalize~を使うことです。normalize~は入力されるシグナルのピーク振幅値を使って、シグナルを出力する前にどのくらい振幅を減少させなければならないかを計算します。

<-前の章 次の章->