チュートリアル29

プロセッシング:コムフィルタ

コムフィルタ(櫛形フィルタ):comb~

tapin~とtapout~を使用したディレイラインへのフィードバックに使用できる最小のディレイタイムは、シグナルベクタサイズによって決定されます。しかし、多くの面白いフィルタのための公式は、わずか1〜2サンプルのディレイタイムによるフィードバックを必要とします。このようなフィルタ処理は、1つのMSPオブジェクト内でプログラムしなければなりません。

このようなオブジェクトの実例は、コムフィルタ(櫛形フィルタ)の公式を実装するcomb~です。一般的に言って、オーディオフィルターは、周波数依存型の増幅器(アンプ)です。;これは、シグナルのある周波数成分の振幅を増加させ、他の周波数成分の周波数を減少させます。コムフィルタは、一定の間隔の周波数値(ある基本周波数の整数倍)で、入力シグナルを強調し、減衰させます。

技術的な詳細:コムフィルタの基本周波数は、ディレイタイムの逆数で与えられます。例えば、もしディレイタイムが2ミリ秒(1/500秒)ならば、500Hz間隔(500、1000、1500、その他)でシグナルの強調が発生し、減衰はその周波数の間で発生します。フィルタ効果の程度は、フィードバックがスケールされる係数(0〜1の間)によります。スケーリング係数が1に近付くにつれ、強調と減衰の幅は、より大きく極端になります。これは、基本周波数の高調波で音の共振(「リンギング」サウンド)効果を引き起こします。

comb~オブジェクトは、a)入力シグナル、b)特定の時間だけ以前に受信した入力シグナル、c)同じ時間だけ以前に出力したシグナル(それ以前のディレイも含んでいます)、の組み合わせを出力します。comb~のインレットにはこれら3つ(a, b , c)の各々の量を自由に指定できます。また、同様にディレイタイム(これをdと呼ぶ)も指定できます。

コムフィルタのパラメータは調整できます

技術的な詳細:comb~は、時間内のあらゆる瞬間で(これをtとする)、入力信号(xt)の値を使って、以下の方法でアウトプットytを計算します。

yt=axt + bx(t-d) + cy(t-d)

コムフィルタの基本周波数はディレイタイムによって決まり、フィルタリングの強さは他の3つのパラメーターによって決まります。フィードバックのためのスケーリング係数(右のインレット)が通常1を超えないように注意して下さい。なぜなら、だんだん大きくなっていくシグナルがフィードバックされ、フィルタの出力が絶えまなく増加し続けてしまうからです。

コムフィルタの試用

チュートリアルパッチでは、いろいろなサウンドを使って、コムフィルタを試してみることができます。パッチには、フィルタのための3つの音源(コンピューターのオーディオ入力、バンド-リミテッドパルスウェーブ、ホワイトノイズ)及び、フィルタのための3つのオプション(フィルタなし、パラメータを手動で調整するコムフィルタ、パラメータを他のシグナルで連続してモデュレートするコムフィルタ)があります。

ポップアップメニューを使って音源を選び、希望するフィルタへ送ります

presetのボタンをクリックし、パラメータのセッティング例による様々な組合せを試して下さい。フィルタの効果を聞き、パラメーターを変えて実験してみて下さい。シンセサイザからのMIDIノートメッセージによって、ピッチ、ベロシティ(周波数と振幅)、パルス波の情報を送ることができます。また、モデュレーションホイールを使って、フィルタのディレイタイムを変化させることができます。

コムフィルタでは、振幅のピークや谷間が、等しい周波数の間隔で存在するので、特徴のある倍音の共鳴を伴っています。(振幅のピークと谷間によって作られる)櫛型が周波数領域で上下に「スウィープ」する場合、この特徴は特に効果的で、結果として音源のいろいろな部分を強調します。ディレイタイムを変化させるだけで、この周波数の「スウィープ」を引き起こすことができます。

バンド-リミテッド・パルス

フィルタの効果は、フィルタを適用する音源が様々な周波数を数多く含んでいる時、最も顕著になります。倍音のスペクトルを伴った「ピッチ」を持つサウンドにコムフィルタを適用しようする場合、多くの部分音(高調波成分)をもつ「ノコギリ波-sawtooth wave」や「矩形波-square wave」を用いることは、最も理にかなっています。

これらの数学上理想的な波形はコンピュータのサウンドウェーブとして扱うには「パーフェクト」すぎます

しかし、このような数学的に導かれた波形の場合、現実には、高い部分音を豊富に含みすぎるという問題点があります。こういった波形は、ナイキスト・レートより上の周波数帯に、不協和なエリアシングを引き起こしてしまう程の強さを持った部分音を含んでいます。(この問題についてはチュートリアル5で詳しく説明されています。)

このチュートリアルでは、バンド-リミテッド・パルスと呼ばれる波形を使用しています。バンド-リミテッド・パルスは、すべての倍音が等しいエネルギーを持つような倍音スペクトルを含んでいますが、エリアジングを発生させないために倍音の数を制限しています。このチュートリアルパッチで使用される波形は、同じエネルギーをもつ10個の倍音を含んでいるので、その最も高い周波数成分は基本波の10倍の周波数を持っています。このことから、サンプリングレートが44,100Hzである場合、演奏のために用いることができるバンド−リミテッドパルスは基本周波数が2,205Hzまでのものになります。(この時の最も高い倍音の周波数は22,050Hzですが、これはナイキスト・レートと同じです。)61鍵のMIDIキーボードの最も上のキーは2,093Hzですから、これを上限とすれば、この波形はエリアシングを起こすことはありません。

MIDIによるバンド−リミテッド・パルスの演奏

技術的な詳細:理想とされる(最適な狭さの)パルス・ウェーブでは、波形の各々のサイクルは、1つのサンプルが値1を持ち、それに、値0を持つ残りのサンプルが続きます。これは、すべての倍音が等しい振幅を持ち、それが無限に上方へ続くような倍音スペクトルを生成します。基本周波数とサンプリングレートに基づいて、「折り返し」を起こさない範囲でできるだけ多くの倍音を含むバンド−リミテッド・パルスを計算するような、MSPシグナルネットワークを作ることは可能です。しかし、ここでは単に、ストアしてある10個の部分音を持つ波形を使用する方法を選んでいます。

「ベロシティ−振幅」変換:gain~

「MIDI-振幅」変換を行うサブパッチp Pulse_Waveは、MIDIからMSPのサウンドを演奏するための、シンプルで効果的な方法を含んでいます。これは、ボイスのスティール(借用)を行うためにpolyオブジェクトを使い、入力されて来るMIDIノートを1回につき1つに制限します。(入力されたノートを演奏する直前に、1つ前のノートに「ベロシティ0」を送って、これをオフにします。)この際、MSPのために、MIDIノートナンバから正確な周波数値への変換にはmtofを使い、MIDIベロシティによるシグナルの振幅のスケーリングにはMSPオブジェクトであるgain~を使います。

MIDIのピッチとベロシティのデータをMSPのための周波数と振幅の情報に変換します

gain~オブジェクトは、左のインレットにシグナルと数値の両方を受取ります。数値は、シグナルを送り出す前に、その振幅をスケールするための係数として使用されます。gain~の特別な機能の1つは、(シグナルをスケールするためのユーザーインターフェース・オブジェクトであるという有用性を別にすれば)入力されて来る数値を、線形な変化から対数、または指数曲線に変換することができるという点です。これは、ここでの使用に非常に適しています。なぜなら、ここでは線形のベロシティレンジ(0〜127)を、我々が音量を聞く感覚に大まかに対応するような、指数曲線による振幅値(1と0)に変換したいからです。ベロシティの変化10は振幅の変化6dBに対応します。gain~の他の有用な機能は、左のインレットに新しい数値を受取ったとき、急に振幅を変えるのではなく、何ミリ秒かをかけて新しい振幅係数へ段階的に進むことです。この進行にかける時間は、右のインレットにミリ秒単位の時間の値を送ることによって指定できます。このパッチでは、単純に、デフォルトの時間である20ミリ秒を使用しています。

* プリセットされた設定から1つを選び、"Pulse Wave"を"Sound Source"ポップアップメニューから選んで下さい。MIDIキーボードで長い音を演奏して下さい。ピッチとベロシティのナンバーボックスの値をp Pulse_Waveサブパッチのインレットに送る(最初にベロシティ、次にピッチ)ことによって、任意の振幅と周波数による持続音を得ることもできます。

フィルタのパラメーターの変化

このパッチで図示されるように、フィルタのパラメータを変えるには、通常、1つの値による急激な変化の代わりに、徐々に変化するシグナルを用いるほうがベストです。そのため、"Adjusted By Hand"(手動で調整)で行うcomb~オブジェクトのパラメータの変更は、最初にline~オブジェクトに送られ25ミリ秒をかけて補間されます。

「モデュレートされた」comb~オブジェクトのディレイタイムは低周波数のバンド−リミテッドパルスウェーブの形(単純なサイン波より面白い形をしているので)で変化を加えられます。実際、モデュレーションは任意の形で変化するシグナルによって行われます。シンセサイザのモデュレーションホイールを使用(または、単にナンバーボックスをドラッグ)して、このモデュレーションのレートを変えることができます。x、yディレイのゲイン(右端の2つのインレット)は、0.01〜0.99のレンジを持つサイン波(フィードバックゲイン)と、0.01〜0.49のレンジを持つコサイン波(フィードフォーワードゲイン)でモデュレートされます。一方の振幅が増加するにつれて、他方は減少します。

*パラメーター値の様々な組合せによって実験することは、ユーザが自分のパッチで設計しようと思っている別のタイプのモデュレーションのためのアイデアを与えるかもしれません。

まとめ

comb~オブジェクトは、非常に短いフィードバック・ディレイタイムを使用し、シグナルにコムフィルタをかけることを可能にします。コムフィルタは、透過するシグナルに、周波数に従って振幅の増加、減少を引き起こしますが、この現象は等間隔の周波数(すなわち倍音関係)で生じます。この周波数の間隔は、ディレイタイムの逆数によって決定されます。コムフィルタは、フィルタを適用されたシグナルの様々な周波数領域を強調するように、ディレイタイム(言い換えれば、周波数の間隔)が時間上で変化する場合、特に効果的です。

ユーザインターフェース・オブジェクトgain~は、シグナルの振幅を、特定の対数または指数曲線でスケールするために役立ちます。gain~による振幅の変更は、ある一定の時間(デフォルトで20ミリ秒)をかけて徐々に行われるので、出力シグナルで、不必要な突然の不連続を引き起こすことはありません。

<-前の章 次の章->