Hochwertiger Hall-Algorithmus


11

Ich habe ein bisschen auf dieser Seite gesucht, aber überraschenderweise habe ich nicht viele relevante Informationen gefunden, und meine Kenntnisse über DSP sind sehr, sehr begrenzt.

Mein Ziel ist ganz einfach: Ich möchte einen algorithmischen Hall in C ++ programmieren, der wirklich gut klingt. Genauer gesagt wäre die beste Option, den Endbenutzer den Kompromiss zwischen Qualität und CPU-Nutzung wählen zu lassen.

Was ich bisher herausgefunden habe, ist, dass Sie, um einen Hall zu erzeugen, das Trockensignal in einen Algorithmus für frühe Reflexionen und dann in einen Algorithmus für späte Reflexionen einspeisen müssen. Ist das richtig ?

Jetzt fand ich einen ausführlichen Artikel über den Teil der späten Reflexionen unter Verwendung des Feedback Delay Network ( REDUZIERUNG DER ANFORDERUNGEN AN KÜNSTLICHE REVERBERATION MIT ZEITVARIANTEN FEEDBACK-VERZÖGERUNGSNETZWERKEN ). Nach dem, was ich gelesen habe, ist FDN eine qualitativ hochwertige, nicht zu expansive (CPU-weise) Methode, um die späten Reflexionen zu simulieren. Darüber hinaus können Sie den Kompromiss zwischen Qualität und CPU-Gebühr steuern, indem Sie die Anzahl der Verzögerungsleitungen ändern.

Ich habe jedoch absolut keine Ahnung, wie ich die frühen Reflexionen algo programmieren soll (erinnerst du dich? Ich bin im DSP-Bereich wirklich unwissend).

Es klingt für mich logisch, eine Art Multi-Delay zu verwenden, die den Vorteil hat, einfach zu programmieren und rechnerisch kostengünstig zu sein. Aber das klingt zu einfach, um wahr zu sein.

Außerdem sagt mir mein Instinkt, dass ein oder mehrere Filter irgendwo im Signalpfad enthalten sein müssen.

Könnte jemand bitte dieses Thema für mich ein wenig klären?

Zwei Anmerkungen:

  • Ich bin überhaupt nicht nach einem Faltungshall. Der Realismus des Halls interessiert mich nicht wirklich, aber ich möchte stattdessen einen gut klingenden, optimierbaren, nicht CPU-hungrigen Hall.
  • Außerdem macht mir der Codierungsteil keine Sorgen, ich würde sonst nach Stackoverflow fragen. Es ist wirklich der DSP-Teil und genau dieser Teil, nach dem ich suche :)

Antworten:


10

Sie müssen frühe Reflexionen mit ein paar Verzögerungen erzeugen (= Faltung mit der Summe einer Handvoll Diracs); und der "Schwanz" mit dem, was normalerweise mit einem Netzwerk von Allpass- (AP) und Kammfiltern implementiert wird.

Der erste Teil ist trivial zu implementieren, aber schwierig, richtig zu klingen. Es kann hilfreich sein, die Positionierung von Peaks an der Spitze der aufgezeichneten Impulsantworten zu untersuchen, um eine Vorstellung davon zu erhalten, welche Art von Antworten "natürlich" sind. Es ist schwierig, es mit ein paar Einstellungen leicht parametrierbar zu machen, obwohl Sie damit durchkommen könnten, indem Sie eine Reihe von Voreinstellungen für diesen Teil anbieten, um einen "hybriden" Hall à la Virsyn Reflect zu erhalten.

Der Schwanz ist der Ort, an dem algorithmische Reverbs leuchten (kein Wortspiel beabsichtigt), da er leicht zu parametrisieren ist. Der Großvater der algorithmischen Reverbs ist SchrödersAlgorithmus. Beachten Sie, dass es nur einen "Schwanz" erzeugt, keine frühen Reflexionen - Sie können ihn mit ein paar Verzögerungen ergänzen, um ihm einen Kopf zu geben. Es klingt nicht sehr gut (sehr "körnig"), aber es ist ein anständiger Anfang - damit haben Sie etwas zu tun und es hilft, die Auswirkungen der einzelnen Parameter zu verstehen. Viele gelobte algorithmische Reverbs, insbesondere die aus den 80er Jahren (Lexicon, Eventide, Publison), sind nur fein abgestimmte Topologien von Allpassfiltern und Kammfiltern. Ich vermute, dass dies viel Versuch und Irrtum durch geschulte Ohren beinhaltete, die sehr gut herausgefunden haben, wie sich Änderungen der Parameter oder der Topologie anhören würden, und nicht irgendeinen wissenschaftlichen Ansatz. Hier ist eine weitere interessante Lektüre- zeigt Keith Barrs Lieblingshalltopologie. Der ursprüngliche Midiverb ist vielleicht nicht Ihre Definition von "hochqualitativem algorithmischem Hall", aber er klang süß und relativiert die Tatsache, dass er mit einem "dsp" erstellt wurde, der nur MACs mit Koeffizienten von 0,5 ...

Valhalla Room ist mein bevorzugter algorithmischer Nachhall für Software. Nehmen Sie sich etwas Zeit, um den Blog des Entwicklers zu lesen und Inspiration für die Dinge zu finden, die dazu beitragen, ihn richtig zu machen.


2
Ich habe vergessen, Freeverb als eine modernere Variante (mit verfügbarem Code, z. B. in der csound- oder ladspa-Codebasis) des Schröder-Algorithmus zu erwähnen.
Pichenettes

Sehr interessant ! Ich liebe auch Valhalla-Produkte (ValhallaShimmer glänzt, auch kein Wortspiel beabsichtigt :)). Warum erwähnen Sie Faltung für frühe Reflexion? Soll eine normale Verzögerung Multitap-Verzögerung ausreichen?
Dinaiz

1
Ich erwähnte die Faltung, weil "Multitap-Verzögerung" nur eine bestimmte Art der Faltung ist (mit einigen Nicht-Null-Koeffizienten, so dass sie auf naive Weise und ohne die mit "dichten" Faltungen verbundene Artillerie berechnet werden kann). Wie Hilmar betonte, könnte eine Multitap-Verzögerung etwas zu naiv sein, und nach einigen Reflexionen klingt das Echo natürlicher, wenn es sich zeitlich ausbreitet (= Tiefpassfilterung). Dies kann mit einer Verzögerung von mehreren Abgriffen mit einer einfachen LP für jeden Abgriff erfolgen. oder durch direktes Berechnen des gesamten Teils der frühen Reflexionen des Nachhalls mit einer Faltungsmaschine und voreingestellten IRs.
Pichenettes

8

Es ist NICHT einfach, einen gut klingenden Hall zu erzeugen. Feedback-Verzögerungsnetzwerke sind definitiv der richtige Weg. Die ursprünglichen Schroeder-Algorithmen mit allen Durchgängen und Kammfiltern leiden unter "spektraler Ausdünnung", wodurch sie metallisch klingen. Sie müssen die frequenzabhängige Dämpfung auf den verschiedenen Verzögerungsleitungen einstellen, die für die Hallzeit repräsentativ sind (als Funktion der Frequenz). Frühe Reflexionen können über eine abgegriffene Verzögerungsleitung auch mit einer frequenzabhängigen Dämpfung und einigen Diffusoren durchgeführt werden, um sie zu dekorrelieren. Für Stereo sind auch einige Mittel zur Dekorrelation erforderlich.

Es gibt eine ziemlich gute Open-Source-Implementierung, die GVerb heißt und beispielsweise in Audacity verwendet wird. Eine Google-Suche sollte Sie zu einer (legalen) Kopie des Quellcodes führen.


Von Ihrem Beitrag klingt es einfach! Nun, zumindest kann ich es verstehen, außer dem Teil über die Dekorrelation. Was meinst du genau damit? Auch in Bezug auf die frequenzabhängige Dämpfung meinst du, du meinst, einige Filter wegzuwerfen und die Frequenzen für jede Leitung nach Gehör abzustimmen. Über welche Art von Filter sprechen wir jedoch? HP? LP? BP? Vielen Dank !
Dinaiz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.