Freeverb (Teensy Audio ライブラリ)

Teensy 4 でリバーブの処理をさせようと思い,ライブラリにあるFreeverb を試してみたところ,FIRフィルタと同様信号レベルが低下してくるとノイズが生じてくる(残響音の減衰の最後の方は特に顕著).やはりこれも16bit整数処理の影響かと思われるので,32bitフロートで書き直すことにする.

書き直すにあたってまず,ライブラリのソースを調べて具体的な処理内容を確認した.

Freeverbの中身はSchroederのアルゴリズムがベースになっていた.ただし,”High quality Reverb effect”とあるようによく見かける 4個のComb filterと2個のAllpass filter によるものではなく,下図のようにそれぞれ2倍の 8個と4個になっている.

ただし,この処理ブロックは,残響のテイルの部分を生成するものなので,空間の残響をそれなりにシミュレートするには,Early reflection の生成や Pre delay の処理を追加する必要がある.

Comb filter は以下のようになっていた.

図のようにダンピング処理のための1次LPFを持っているので自然なリバーブが得られそう.
(このフィルタをBPFとかにすれば,Shimmer Reverb になるのかも?)

Allpass filter は以下のとおり.

ライブラリソースでは a=0.5 に固定されているようだが,その場合 1-a^2 = 0.75 でなければならない.コードをみるとこれ(1-a^2)も 0.5 になっているように解釈できた(自分の読み間違いかもしれないが).単なるバグなのか何か意図があってそうしているのかわからないがもしそうなら特性はAllpass にはなっていない.とはいえ残響音の密度を上げるという観点からは聴感上大きな違いが出るようにも思えないのであまり気にしないでもいいか… 書き直しの際はセオリー通り 1-a^2=0.75 にする.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中