Windows/VSTには、SIR Impulse Response Processor
のような気軽に使えるインパルス応答の畳み込み用のプログラムがありますが、ソースコードが公開されていないので、
Jezarにより作られたfreeverbに何種類かの残響処理や畳み込み演算の機能を加えたものをC++で作成しました。
Audacious、Beep Media Player、XMMSのEffect PluginsとSteinberg VSTを実装したので、ある程度簡単に試せます。Mac OS XのVSTも実装しました。
VST最新版にはマルチコア用のアルゴリズムも入っており、デフォルトで有効にされています。DFTには最も高速なライブラリの一つであるFFTWを使用しているので、
SIRより速度はずっと速いです。畳み込み時のバッファの影響を減らしたZero Latency Modeも実装しています。Buffer Frame SizeまたはNon Zero Latency Modeの時バッファサイズは、
2の累乗から選べます。8192,16384あたりがデフォルトです。Athlon 800MHz PC133で、ステレオ160万tapをreal-timeで畳みこめます。精度(S/N)は、35万*18万tapの畳み込みで約100dBです。
畳み込みは、Hardwareですと、YAMAHAのSREV1(生産完了品)のような製品があります。
音源: S-YXG50.DLL
VST pluginのImpulser2には、出力保護のためのリミッターを挿入してあります。最新版では外せるようにしてありますが、 古いバージョンやデフォルトでは入っているので、出力にゆがみが生じる場合があります。 デフォルトでCeiling 0dB, Threshold=-1dB程度, Release=10ms程度のリミッタになっています。 他の畳み込みリバーブプラグインと異なる結果が出る場合や、出力がどこか暗い感じを受けるという場合は、大抵、畳み込み結果が飽和して0dB FS以上となっています。 リミッタのパラメータ自体はGUIで変更できます。もし、ミックスまで0dB以上に出力したいという場合や 出力のゆがみをなくしたいという場合、古いバージョン等やリミッタオンの場合ではCEI=+20dB THRES=+20dBにすれば出力の歪みはなくなりますが、 大きな出力により耳や機器が損傷する場合があるので、注意してください。
なお、他のリバーブプラグインに関しては出力リミッタが入っていません。WindCompressorには出力リミッタが入っています。
最適化技法に関しては、畳み込みと最適化で詳しく説明しています。
リバーブのアルゴリズムに関しては、リバーブに簡単な説明があります。
インパルス応答+畳み込みで検索したら、無限に長い信号と非常に長いインパルス応答の畳み込み演算[PDF] というものがありましたが、さらに調べると、海外で同様のアルゴリズムの論文を出している所があるようです。同じようなことを考える人は多いようです。
HANAC200X
Digital Signal Processing
FFT (高速フーリエ・コサイン・サイン変換) の概略と設計法
離散フーリエ変換を用いた多倍長乗算の話
FFTを用いて多倍長乗算をしてみた
FFTによる多倍精度の乗算
RWCP 実環境音声・音響データベース ドライソースとインパルス応答の畳み込み計算法
効率の良い畳込みの計算法
窓関数
フーリエ変換と窓関数
大川電子設計
デジタル信号処理豆知識 窓関数(その2)
窓関数 (Window Function)
フーリエ変換の性質4(たたみこみ)
METEOR: A Constraint-Based FIR Filter Design Program
FIR Filter Design
Charles Poynton - Filter design software
チュートリアル - DIGITALFILTER.COM
Matsuzawa Lab,
Department of Physical Electronics, Tokyo Institute of Technology
ローパスフィルタの設計(チェビシェフフィルタ)
sverb, a simple order 15 CFDN reverb.
HRTF Measurements of a KEMAR Dummy-Head Microphone
Q: Why don't Scotsmen ever have coffee the way they like it?
A: Well, they like it with two lumps of sugar. If they drink
it at home, they only take one, and if they drink it while
visiting, they always take three.
Oh! I wish you could see the look on his face! Actually, I would have also
liked to see the look on his face, but just then I woke up from the dream.
"The Enemy and how I Helped to Fight It"
Shlomi Fish
-- Shlomi Fish
-- Shlomi Fish's Aphorisms Collection ( http://www.shlomifish.org/humour.html )