Forum: Digitale Signalverarbeitung / DSP / Machine Learning Digitaler Tiefpass mit veränderbarer Grenzfrequenz


von Tummy (Gast)


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?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Dann mach' halt keine sprunghafte Aenderung der Grenzfrequenz. Kannst ja 
da einen Tiefpass einbauen :-)

Sowas in der Art hab' ich schonmal vorexerziert:

Beitrag "Re: adaptiv IIR Filter Koeffizienten ändern, wie?"


Gruss
WK

von J. S. (engineer) Benutzerseite


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.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Es gäbe auch noch die halb digitale Lösung mit geschalteten Kapazitäten, 
z.B. LTC1064-2 mit einem einstellbaren Taktgenerator, hier ein DS1077 
über I2C-Bus.
Die Taktfrequenz beträgt umschaltbar das 50- oder 100-fache der 
Grenzfrequenz.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Hier noch meine Schaltung dazu.
Das ist nicht mehr ganz Stand der Technik, so hätte man das vielleicht 
in den Neunzigern gebaut. Aber die Teile gibt es noch bei RS-Components.

von J. S. (engineer) Benutzerseite


Lesenswert?

Hm, der hat aber ziemliche Phasenverzerrungen. Für Musikanwendungen eher 
nicht so geeignet.

von W.S. (Gast)


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.

von Christoph db1uq K. (christoph_kessler)


Angehängte Dateien:

Lesenswert?

Ich habe keine Erfahrung mit Phasengang und Gruppenlaufzeit, der 
LTC1064-2 soll Butterworth-Charakter haben. Es gibt andere SC-Tiefpässe 
aus der Familie mit steilerer Charakteristik. Hier drei Kurven aus dem 
Datenblatt. Gibt es besseres?

von J. S. (engineer) Benutzerseite


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.

von Tobias (. (Gast)


Lesenswert?

Tummy schrieb:
> Erster Ansatz wäre ein Biquad Tiefpass mit Butterworth Charakteristik
> gewesen.

Hast Du eine Lösung für das Problem gefunden?

von Benjamin Sellak (Gast)


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.

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.