Forum: Digitale Signalverarbeitung / DSP / Machine Learning Freeverb Kammfilter Implementierung verstehen


von Solocan Z. (solocan)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe Schwierigkeiten, zu verstehen, was für ein mathematisches 
Modell genau hinter der Kammfilterimplementierung von Freeverb steht. 
Laut Beschreibung soll es ein Kammfilter mit Tiefpass sein. Unten ist 
die Originalimplementierung:
1
inline float comb::process(float input)
2
{
3
    float output;
4
    output = buffer[bufidx];
5
    filterstore = (output*damp2) + (filterstore*damp1);
6
    buffer[bufidx] = input + (filterstore*feedback);
7
    if(++bufidx>=bufsize) bufidx = 0;
8
    return output;
9
}
https://ccrma.stanford.edu/~jos/pasp/Lowpass_Feedback_Comb_Filter.html

Daraus leite ich den Regelkreis im Anhang ab. Doch ich verstehe nicht, 
was dieser Konstrukt in der Rückkopplung beabsichtigt. Irgendwie muss es 
eine Art Tiefpass sein, aber so einen Tiefpass kenn ich nicht.

Versteht das jemand?

Viele Grüße

von Bonzo (Gast)


Lesenswert?

Ich auch nicht!

Normal ist, dass die hohen Frequenzen im Hall zuerst abnehmen. Deshalb 
bauen alle Tiefpässe ein. Der andere Punkt ist, dass viele das 
Verzögerungsglied, das nur deshalb drin sitzt, weil man das delay haben 
will, in Verbindung mit der Rückkoppelung als Tiefpass auffassen. Das 
muss aber nicht so sein. Es gibt diese Filter auch als Allpass.

Noch genauer:

Die Allpass-Ketten sorgen für die Verzögerung und weitere zusätzliche 
Tiefpässe in den Rückkoppelungen für die Frequenzanpassung.

Um Deine Ableitung dort einzuordnen, müsste man noch wissen, wie 
"feedback" belegt wird und wann. Das fehlt irgendwie in der Bechreibung.

von Bonzo (Gast)


Angehängte Dateien:

Lesenswert?

So kann das aussehen. Es ist aber empfehlenswert die Rückkoppelung 
gering zu halten und pro Schleife nur wenige Impulse zu erzeugen und 
dafür mehr Zweige zu nehmen. Sonst kommt ein zu deutlicher Kammfilter 
heraus, d.h. der Hall brummt mit einigen Grundfrequenzen.

Irgendwo hat hier einst jemand ausgeführt, dass die Hallketten eine 
Primzahlänge haben sollen, damit keine Reflektion auf eine andere fällt.

von Solocan Z. (solocan)


Lesenswert?

Mir geht's hierbei nicht um die praktische Umsetzung, sondern um das 
mathematische Verständnis.

Im Link steht:
-----
Inspection of comb.h in the Freeverb source shows that Freeverb's 
``comb'' filter is more specifically a lowpass-feedback-comb filter 
(LBCF4.11--§2.6.5). It is constructed using a delay line whose output is 
lowpass-filtered and summed with the delay-line's input. The particular 
lowpass used in Freeverb is a unity-gain one-pole lowpass having the 
transfer function

When d=0 , the LBCF reduces to the feedback comb filter (FBCF) of §2.6.2 
in which the feedback was not filtered. The overall LBCF transfer 
function is then
This structure was introduced for artificial reverberation by Schroeder 
[415] and Moorer [317].
----


Offensichtlich wird hier diese Übertragungsfunktion implementiert. Wie 
komme ich aber von dieser auf diese Implementierung. Kann mir hierbei 
jemand auf die Sprünge helfen?

von Detlef _. (detlef_a)


Lesenswert?

Die Struktur in der Rückkopplung ist der einfachste IIR Tiefpass, läuft 
bei Wikipedia unter 'exponentielle Glättung'.

v(n) = u(n)+ d1 v(n-1)
=> V(z)/U(z)= 1/(1-d1 z^(-1))

Das Ding ist nur für |d1|<1 stabil, für negative d1 ist das ein Tiefpass 
mit der Zeitkonstanten 1/d1.

Eine rückgekoppelte Verzögerungsleitung mit M taps macht alle Frequenzen 
der Periodendauer 2*M tot, weil M Abtastwerte auslöschend zurückkommen.

Beides zusammen sollte ein Kammfilter für niedrige Frequenzen sein, 
hängt auch von den Vorzeichen der Konstanten ab.

Wie die Audiophilen das nennen weiß ich nicht :)

Cheers
Detlef

von J. S. (engineer) Benutzerseite


Lesenswert?

Detlef _. schrieb:
> Wie die Audiophilen das nennen weiß ich nicht :)

Die "Analogen" nennen es sicher Eimerkettenspeicher-Delay :-)

Detlef _. schrieb:
> Eine rückgekoppelte Verzögerungsleitung mit M taps macht alle Frequenzen
> der Periodendauer 2*M tot, weil M Abtastwerte auslöschend zurückkommen
Kommt auch auf das Vorzeichen an. Solche Delays werden mit optimierten 
Längen verwendet, um ganz geziel frühe Reflektionen auszulöschen, sodass 
später im Bild (scheinbar) zufällige und ungeordnete Reflektionen 
auftreten, die musikalisch interessanter sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.