Digitaler Tiefpassfilter



  • @Quiche-Lorraine Danke für die ausführliche Antwort. Das kleine Problem ist, dass ich 12 bin und Formeln noch weniger als Aktienkurse verstehe. Daher werde ich daraus relativ wenig schlau. Ist es bei einem Filter mit Resonanz nicht so, dass eine Art Schwung entsteht?



  • @SeppJ sagte in Digitaler Tiefpassfilter:

    Gedanken dazu:

    • Im Frequenzraum zu arbeiten ist nicht ohne Grund die Basis für alle Audioverarbeitung, egal ob digital oder analog. Da wirst du aus mathematischen Gründen nicht umher kommen.

    Falsch. "Normale" Filter wie Hochpass, Tiefpass, Bandpass, Notch etc. arbeiten normalerweise im Zeitraum. Weil das viele Vorteile hat:

    • Es ist (viel) einfacher zu implementieren
    • Man kann damit gut analoge Filter simulieren (IIR) - bei Verarbeitung im Frequenzraum ist man dagegen auf FIR Filter eingeschränkt
    • Abhängig von der Anzahl der Filter braucht es viel weniger Rechenzeit (und man braucht schon eine ganze Menge Filter damit sich die Transformation vom Zeitraum in den Frequenzraum und wieder zurück rentiert)
    • Man kann ohne Probleme extrem geringe Latenzen realisieren
    • FFT ist die beste Methode, ein digitales Signal im Frequenzraum darzustellen. Wer da eine wesentliche Verbesserung findet, wird Patentmillionär.

    Ich glaube das ist abhängig von der Anwendung. Für Komprimierung wird sehr oft DCT verwendet. Manchmal auch Wavelet Transformationen.

    • Vielleicht kann man deinen Code besser optimieren? Professionelle FFT-Bibliotheken bieten wesentlich höhere Leistung als alles, was man als Einzelperson selber programmieren kann. Nutzt du so etwas schon?

    Man kann seinen Code sicher besser optimieren, aber IMO idealerweise ohne FFT o.Ä. zu verwenden. Ein Problem bei dem Code das ich sehe sind die zwei Divisionen. Die sind nicht nötig für analoge Filter. Im Prinzip braucht man dafür nur "multiply and accumulate" Operationen.



  • @NoobTracker
    Das Stichwort für digitale Simulation analoger Filter ist "biquad". Google mal nach biquad filter design oder so.

    Das schöne an Biquad Filtern ist dass du mit einer einzigen Funktion alle einfachen Filter simulieren kannst. Also Hochpass, Tiefpass, Shelving, Notch etc. - alles der selbe Code, nur unterschiedliche Parameter. (D.h. der Code zur Berechnung der Parameter ist natürlich unterschiedlich. Aber der muss ja nicht optimiert werden.)

    Es gibt unterschiedliche Formeln die man verwenden kann, und je nachdem welche Formel man verwendet muss man die Parameter unterschiedlich berechnen. Aber man kann mit jeder der Formeln alle Filterarten umsetzen.



  • @Quiche-Lorraine Wieso empfielst du ihm für eine Echtzeitanwendung wo es um wenig Delay geht FIR Filter? Bei so einfachen Sachen wie Hochpass oder Tiefpass sind FIR Filter IMO völlig unsinnig.



  • @mgaeckler Hast du vielleicht eine Idee wie man einem 12-jährigen erklären kann wie man einfache Filter (Hochpass, Tiefpass) digital implementiert und die Koeffizienten berechnet?



  • @hustbaer Es sieht sehr interessant aus und ich könnte damit bestimmt was anfangen, leider konnte ich aber kein Programm dafür finden. Hast du vielleicht ein Beispielprogramm parat?



  • @hustbaer

    Wieso empfielst du ihm für eine Echtzeitanwendung wo es um wenig Delay geht FIR Filter? Bei so einfachen Sachen wie Hochpass oder Tiefpass sind FIR Filter IMO völlig unsinnig.

    Sind FIR Filter so schlecht?

    Ich kennne die gewünschten Randbedingungen des Filters (Grenzfrequenz, Sperrbanddämpfung, Weichheit, Flankensteilheit,...) ja nicht und FIR Filter kann man diesbezüglich schön entwickeln.

    Des weiteren kenne ich im Audio Bereich für digitale Filter nur FIR und IIR. Im Analogen kenne ich noch andere Filter, wie Butterworth. Wie man diese aber in die digitale Welt herüberzieht weiß ich nicht. Der Butterworth Filter war übrigens auch der erste Filter, welcher mir in den Sinn kam, als ich den Thread las.

    Von daher war meine Antwort motiviert.

    Mal eine Frage zurück: Wie sähe denn eine Echtzeit-Alternative aus? Zum Beispiel ein Hochpassfilter mit 1kHz Grenzfrequenz aus?



  • Eine Frage: Wenn man einen ElKo als Tiefpassfilter einfach bei dem Signal parallel schaltet, wie kann man dann die Cutofffrequenz berechnen?



  • @NoobTracker
    Also wenn ich nach biquad filter design google dann finde ich als erstes das:
    https://arachnoid.com/BiQuadDesigner/index.html

    Und das sieht IMO schon recht brauchbar aus.
    Da ist auch einiges zu dem Thema beschrieben, angefangen von den Sampling Grundlagen bis hin zum "Aufbau" eines BiQuad Filters.

    Wenn dir das in Englisch zu heftig ist, kannst du mal den deutschen Wikipedia Artikel versuchen: https://de.wikipedia.org/wiki/Digitales_Filter

    Bzw. hier gibt's etwas Source-Code (natürlich auch englisch, ist halt so): https://www.earlevel.com/main/2012/11/26/biquad-c-source-code/

    Nochmal zurück zum Thema Englisch: ich kann dir nur wärmstens empfehlen neben dem Programmieren auch einiges an Zeit in Englisch zu investieren. Was mich als Jugendlicher ordentlich weitergebracht hat war englische Filme zu gucken. Klar, am Anfang braucht man Untertitel und versteht viel nicht, aber das kommt mit der Zeit. Speziell wenn du hin und wieder, wenn du ein Wort/eine Phrase nicht verstehst, kurz auf Pause drückst und es nachschlägst. Nicht jedes mal, sonst vergeht dir der Spass, aber halt öfter mal, speziell wenn es nicht aus dem Zusammenhang klar wird. Dank moderner Technik (Smartphones etc.) geht das ja heute viel viel einfacher als wo ich jung war.

    Wäre schade wenn du dich durch unzureichende Englischkenntnisse unnötigigerweise zu sehr einschränken würdest.



  • @hustbaer Ich gucke am Tag gefühlt 2 Stunden LGR, davon wurde mein Englisch merklich besser, am Anfang habe ich immer die Untertitel angestellt, jetzt nicht mehr.
    Oh, ich hätte runterscrollen müssen. Das guck ich mir dann mal an ...



  • Okay, dieses Programm sieht sehr wie mein Programm aus, nur ohne den Schwung. Im Grunde einfach nur so etwas wie mein ElKo-Programm.



  • Da ist nirgendwo etwas mit Resonanz.



  • @Quiche-Lorraine

    Sind FIR Filter so schlecht?

    FIR Filter sind nicht grundsätzlich schlecht, aber gerade für Echtzeitanwendungen nicht ideal. Weiters ist es damit "schwer" analoge Filter gut anzunähern - weil eben F (finite), und analoge Filter sind halt I (infinite). Man braucht dann recht lange FIR Filter, was wieder die Rechenzeit enorm erhöht. Der Vorteil ist natürlich dass man jede beliebige (endliche) Impulsantwort trivialst umsetzen kann, da Filterkoeffizienten == Impulsantwort.
    Allerdings braucht man dazu auch erstmal ein Programm das einem die gewünschte Impulsantwort berechnet.

    Im Analogen kenne ich noch andere Filter, wie Butterworth. Wie man diese aber in die digitale Welt herüberzieht weiß ich nicht.

    Man kann sie gut (meist vollkommen ausreichend gut) über "gesamplete" IIR Filter annähern. Die am weitesten Verbreitete Form dabei sind soweit ich weiss sog. "Biquad" Filter. Siehe z.B. den Link den ich gerade für @NoobTracker gepostet habe: https://arachnoid.com/BiQuadDesigner/index.html

    Mal eine Frage zurück: Wie sähe denn eine Echtzeit-Alternative aus? Zum Beispiel ein Hochpassfilter mit 1kHz Grenzfrequenz aus?

    BiQuad. Für die Koeffizienten: siehe Link oben 😉
    Wenn man mehr als 12dB/Okt braucht muss man mehrere solche Filter kombinieren (einfach hintereinanderschalten).



  • @hustbaer sagte in Digitaler Tiefpassfilter:

    12dB/Okt

    Wofür steht das eigentlich?



  • @NoobTracker Stell mal nen Tiefpassfilter ein und dann stelle z.B. Q auf 2 oder mehr. Wenn das nicht das ist was du meinst, weiss ich nicht was du mit "Resonanz" meinst.

    Weitere Tips: Stell "Horizontal Scale" auf "Log10" und wähle eine Grenzfrequenz die nicht so knapp an der Obergrenze liegt. Also z.B. 2 kHz Grenzfrequenz bei 40 kHz Samplingfrequenz.



  • @hustbaer Mit Resonanz meine ich das, was hier die mittlere Spur macht. Das ist ein Tiefpassfilter mit Resonanz.
    Mein Vater ist Synthisammler und wir haben mal seinen monopoly unter das Soundkarten-Oszilloskop gehalten. Da kamen auch solche Sachen mit "Schwung" raus. Das ist kein einfacher ElKo.



  • @NoobTracker sagte in Digitaler Tiefpassfilter:

    @hustbaer sagte in Digitaler Tiefpassfilter:

    12dB/Okt

    Wofür steht das eigentlich?

    12 dezibel pro Oktave.

    Dezibel pro Oktave wird verwendet wenn man die Flankensteilheit eines Filters angibt. Gemeint ist dass das Signal um ca. so viele dB leiser wird, pro Oktave die man sich in "Sperr-Richting" von der Trennfrequenz wegbewegt.



  • @hustbaer Ah, danke, dann war ich doch nicht ganz falsch.



  • @NoobTracker sagte in Digitaler Tiefpassfilter:

    @hustbaer Mit Resonanz meine ich das, was hier die mittlere Spur macht. Das ist ein Tiefpassfilter mit Resonanz.

    Naja, anhand der Waveform (Zeitraum) kann ich nicht beurteilen wie der Frequenzgang (Frequenzraum) des Filters aussieht. Speziell nicht da ich nicht weiss wie das Input-Signal aussieht.

    Nur falls da ein Misverständnis bestehen sollte: Die Kurve die du auf https://arachnoid.com/BiQuadDesigner/index.html im Filter Designer siehst ist der Frequenzgang. D.h. wenn du da so einen "Buckel" nach oben hast (=mehr als 0dB Verstärkung) bevor der Pegel dann anfängt abzufallen, dann ist das ein Resonanzeffekt der das Signal in diesem Frequenzbereich verstärkt.



  • @hustbaer das Eingangssignal ist eine Pulswellenform mit PWM.


Anmelden zum Antworten