Digitaler Tiefpass mit veränderbarer Grenzfrequenz

Gast #5455348
Lesenswert?

Hallo,
für ein Audio-Projekt (Subtraktiver Synth) benötige ich ein digitales 
Tiefpassfilter, dessen Grenzfrequenz ich mit einem LFO jedoch modulieren 
will.

Erster Ansatz wäre ein Biquad Tiefpass mit Butterworth Charakteristik 
gewesen.

Ich habe dann jedoch das Problem, dass ich bei einer (sprunghaften) 
Änderung der Grenzfrequenz auch Unstetigkeiten im Ausgangssignal habe 
(Knacken).

Ein einfaches Tiefpassfilter erster Ordung:
1
tiefpass += (input-tiefpass) * FILTERKOEFFIZIENT;

hat dieses Problem ja nicht. Schalte ich 2 dieser Filter hintereinander, 
bekomme ich keine Butterworth Charakteristik.
Dachte schon an ein State-Variable Filter. Das wird aber unstabil bei f> 
1/8*Abtastfrequenz.

Wie kann ich da weiter kommen?
Persönliche Seite #5455526
Lesenswert?

Genau das hätte Ich nun auch geschrieben, aber aus anderer - 
funktioneller - Sicht: Es macht keinen Sinn, einen Klang derart schnell 
zu ändern und dann zu fordern, dass die Wellen nicht springt. Sie 
springt im Übrigen auch nicht, sondern sondern folgte nur dem 
Eingangssignal, eben hier den sich rasch ändernden Parameter. Das ist 
bei solchen Synthesizern eigentlich gewollt.

Ich sehe auch umsetzungstechnisch nicht, wieso das ein Problem sein 
sollte.
Gast #5459048
Lesenswert?

Tummy schrieb:
> dessen Grenzfrequenz ich mit einem LFO jedoch modulieren
> will.

Ja sag doch erstmal, wie "low" dein LFO ist und was er an Ausgangsform 
denn so herausbringen soll. Ich nehme mal an, Dreieck oder gar Sinus.

Als nächstes wäre ja interessant, auf was für einer HW-Basis das Ganze 
laufen soll. Wenn du genug Rechenleistung hast, dann ist zum einen ein 
FIR auf Basis sin(x)/x mit nicht allzu großem Filterkernel ja kein 
Problem und zum anderen wenn du float oder gar double in HW rechnen 
kannst, ist auch das Berechnen dieses Filterkernels schnell genug, um 
ihn zwischendurch neu zu berechnen - falls das für deine vigilanten 
Audio-Ideen erforderlich ist. Ansonsten machst du ne Vorberechnung aller 
nötigen Kernel und schaltest dazwischen per Zeiger um.

Die Fensterfunktion kannst du ja vorberechnen und speichern.

W.S.
Persönliche Seite #5469906
Lesenswert?

W.S. schrieb:
> Ja sag doch erstmal, wie "low" dein LFO ist und was er an Ausgangsform
> denn so herausbringen soll. Ich nehme mal an, Dreieck oder gar Sinus.
Ich glaube, das "lo" ist nicht so das Problem. Eher sind es die Dreiecke 
und Rechtecke, die Sprünge machen. Die aber werden ja üblicherweise 
digital gefiltert, um das gewünschte Verhalten eines Schaltkreises 
nachzubilden, so, wie es die Analogelektronik auch täte.

Die Modulation der Grenzfrequenzen kann auch nicht beliebig schnell 
erfolgen, weil das Gehör das dann nicht mehr als Shaping der Klangkurve 
wahrnimmt, sondern als Frequenzmodulation. Je nach "Aggressivität" kann 
man da Raten bis maximal 20Hz ansetzen, weil sonst Frequenzverschiebung 
gehört wird, was dann eher in Richtung vibrato, flanging und chorus geht 
(subjektiv!).

Die Spünge, die man auf diese Weise erzeugt, können also auch nur in dem 
Spektralbereich liegen, sofern die Abtastrate der Filterberechnung 
passt. Diese sollte nicht wesentlich geringer sein, als die Rate der 
Samplefrequenz.

Ansonsten bleiben die funktionellen Sprünge, die man durch grobe Encoder 
und rechteckige Modulationen, bit crushing etc erzeugt. Diese generieren 
aber gewollte Phasenhopser.
Gast #5520291
Lesenswert?

Also die gängigen Filterstrukturen, speziell die BLT-Filter die man aus 
Signaleverarbeitung 101 kennt, sind für dynamisch einstellbare 
Klangbearbeitungsfilter nur so bedingt geeignet, eben wegen den 
Unstetigkeiten der Zustandsvariablen.

Ein gängiger Weg sind VA Filter (virtual analog) oder genauer "Topology 
preserving Transform"-Filter, zu denen das erwähnte State Variable 
Filter gehört. Die Instabilität und die Ungenauigkeit bei hohen 
Frequenzen kriegst du mit 4- oder 8-fach Upsampling in den Griff.
Hier n dickes PDF dazu: 
https://www.native-instruments.com/fileadmin/ni_media/downloads/pdf/VAFilterDesign_2.0.0a.pdf

Wenn dir das zu teuer ist in Sachen Rechenleistung - bleib einfach beim 
Biquadfilter und den gängigen Formeln aus Zölzer/Audio EQ Cookbook/...
Berechne bei großen Parametersprüngen einfach einige Zwischenwerte für 
die Koeffizienten oder lass die Koeffizienten durch ein Glättungsfilter 
laufen (Dabei auf Stabilität achten!). Ich weiss von mindestens zwei 
Pro-Audio-Firmen, deren parametrische EQ's auf genau diese Weise 
implementiert sind.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren