高品質のリバーブアルゴリズム


11

私はこのサイトを少し検索しましたが、驚くべきことに、関連する情報はあまり見つかりませんでした。DSPに関する私の知識は非常に限られています。

私の目標は非常に単純です。C++でアルゴリズムのリバーブをプログラムしたいのですが、これは本当にいいですね。より正確には、最良のオプションは、エンドユーザーが品質とCPU使用量の間のトレードオフを選択できるようにすることです。

これまでにわかったことから、リバーブを作成するには、ドライ信号をアーリーリフレクションアルゴリズムに送り、次にレイトリフレクションアルゴに送る必要があります。これは正しいです ?

今、私はフィードバック遅延ネットワーク(時フィードバック遅延ネットワークを使用した人工反響要件の削減)を使用して、遅延反射部分に関する広範な記事を見つけました。私が読んだことから、FDNは高品質であり、後期反射をシミュレートする(CPUの観点から)あまりに拡張的ではありません。さらに、遅延線の数を変更することで、品質とCPUのチャージのトレードオフを制御できると思います。

ただし、初期反射アルゴリズムをどのようにプログラムするかはまったくわかりません(覚えていますか?DSPドメインでは本当に無知です)。

一種のマルチディレイを使用することは私には論理的に聞こえます。これはプログラミングが簡単で、計算コストが安いという利点があります。しかし、それは本当であるには単純すぎるように思えます。

さらに、本能は、1つまたは複数のフィルターを信号パスのどこかに含める必要があることを教えてくれます。

誰かがこのトピックを少し明確にしてくれませんか?

2つのメモ:

  • 私はコンボリューション・リバーブをまったく望んでいません。リバーブのリアリズムについては特に気にしませんが、代わりに、CPUに飢えたリバーブではなく、良いサウンドで微調整可能なサウンドを求めています。
  • また、コーディングの部分は私を心配するものではありません、そうでなければスタックオーバーフローについて尋ねます。それは本当にDSPの部分であり、まさにその部分です:)

回答:


10

数タップの遅延(=少数のディラックの合計とのたたみ込み)で早期反射を生成する必要があります。そして、通常、オールパス(AP)とくし型フィルターのネットワークで実装されるものとの「テール」。

最初の部分は実装するのは簡単ですが、正しく聞こえるようにするのは困難です。事前に記録されたインパルス応答の先頭にあるピークの位置を確認して、どのような応答が「自然」であるかを理解するのに役立つ場合があります。いくつかの設定で簡単にパラメーター化できるようにするのは難しいですが、このパーツに多数のプリセットを用意してVirsyn Reflectの「ハイブリッド」リバーブを取得することで問題を解決できます。

パラメータ化が容易なため、テールはアルゴリズムのリバーブが光る場所です(しゃれは意図されていません)。アルゴリズムリバーブの祖父はシュローダーのアルゴリズム。これは「テール」を生成するだけで、初期反射を生成しないことに注意してください-数タップの遅延でそれを補強して、頭を出すことができます。あまりよく聞こえませんが(非常に「ザラザラ」)、それはまともな出発点です-何かをいじくり回すことができ、各パラメーターの影響を理解するのに役立ちます。多くの賞賛されているアルゴリズムリバーブ、特に80年代のもの(Lexicon、Eventide、Publison)は、オールパスフィルターとコームフィルターのトポロジを微調整しただけです。これには、科学的なアプローチではなく、パラメータやトポロジの変化がどのように聞こえるかを理解することに熟練した訓練を受けた耳による多くの試行錯誤が関係していると思います。ここに別の興味深い読みがあります-キースバーのお気に入りのリバーブトポロジを示しています。元のmidiverbは「高品質のアルゴリズムリバーブ」の定義ではないかもしれませんが、見栄えがよく、係数が0.5のMACのみが可能な「dsp」で作成されたことがわかります。

ヴァルハラルームは私のお気に入りのソフトウェアアルゴリズムリバーブです。時間をかけてその開発者のブログを読んで、正しく理解するのに役立つ種類のものについてのインスピレーションを見つけてください。


2
FreeverbをSchroederのアルゴリズムのより近代的なバリアント(使用可能なコードを含む、たとえばcsoundまたはladspaコードベースで見つけることができる)として言及するのを忘れていました。
ピシェネット2012

とても興味深い !私もヴァルハラ製品が大好きです(ValhallaShimmerは輝きます。なぜ初期反射の畳み込みに言及するのですか?通常の遅延マルチタップ遅延で十分ですか?
Dinaiz 2012

1
「マルチタップ遅延」は特定の種類のたたみ込みである(nullでない係数がいくつかあり、単純な方法で計算でき、「密な」たたみ込みに関連する砲兵なしで計算できる)ため、私はたたみ込みについて説明しました。とにかく、Hilmarが指摘したように、マルチタップ遅延は少し素朴すぎる可能性があり、数回の反射の後、時間的に拡散(=ローパスフィルタリング)することでエコーがより自然に聞こえるようになります。これは、各タップに単純なLPを使用したマルチタップ遅延で実行できます。または、畳み込みエンジンとプリセットIRを使用して、リバーブの初期反射部分全体を直接計算します。
ピシェネット

8

良い響きのリバーブを作るのは簡単ではありません。フィードバック遅延ネットワークは間違いなく進むべき道です。すべてのパスとコムフィルターを備えた元のSchroederアルゴリズムは、メタリックなサウンドにする「スペクトルシンニング」の影響を受けます。(周波数の関数として)リバーブ時間を表すさまざまなディレイラインの周波数依存減衰をダイヤルする必要があります。初期の反射は、タップされた遅延線を介して行うこともでき、周波数に依存する減衰と、それらを非相関にするいくつかのディフューザーを使用します。ステレオを行うには、非相関のいくつかの手段も必要です。

かなり優れたオープンソース実装が浮かんでいます。これはGVerbと呼ばれ、Audacityなどで使用されています。グーグル検索はあなたにソースコードの(合法的な)コピーを得るはずです。


あなたの投稿からそれは簡単に聞こえます!逆相関に関する部分を除いて、少なくとも私はそれを理解することができます。それはどういう意味ですか?また、周波数依存の減衰については、すべてのラインの周波数であるいくつかのフィルターを排除し、耳で微調整することを意味していると思います。私たちはどんな種類のフィルターについて話しているのですか?HP?LP?BP?よろしくお願いします!
Dinaiz 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.