Gast
#6553596
Hi Leute, mal kurz zum Hintergrund: Ich arbeite aktuell an einem Realtime-DSP der über ein externes SPI Slave Interface steuerbar ist. Bisher sind erstmal nur Basics implementiert wie Hochpass, Tiefpass, EQ. Die BiQuad Koeffizienten werden innerhalb des DSPs errechnet. Ich gebe über das SPI slave nur die Parameter wie Frequenz, Gain, Q, Typ usw. vor. Ich habe jetzt mal ein paar Tests gemacht, was passiert, wenn ich "on-the-fly" Parameter ändere während Musik durchspielt. Die BiQuad Parameter werden hier also instant geändert. Leider hört man dann (je nachdem welche Amplitude das Audiosignal grad hat) deutlich hörbare Pops. Ich habe ein bisschen gesucht im Internet und anscheinend hängt das damit zusammen, dass der Biquad kurz instabil wird, wenn man Parameter zu schnell ändert. Folgender Lösungsansatz wurde genannt: Man nehme zwei Biquad-Filter die man wechselseitig updated und dann ein Cross-Fade macht. Um ehrlich zu sein würde ich das aber vermeiden wollen, weil ich da quasi für jedes Element einen zweiten BiQuad vorsehen müsste und danach nochmal nachträglich summierung -> meiner Meinung nach verschwendete Rechenleistung. Meine Idee war jetzt, dass ich die 5 IIR Koeffizienten quasi Tiefpass-Filtere mit einem Single-Pole LPF und das dann in die BiQuads füttere. Denkt Ihr das Konzept würde aufgehen? Hätte hier evtl. auch Bedenken bzgl. Stabilität um ehrlich zu sein. Oder muss das vor der Errechnung der Koeffizienten passieren? Wenn ja müsste ich aber auch dort dann mit jeder Iteration die IIR Koeffizienten mit den Formeln neu berechnen was wieder viel Rechenleistung schluckt. Hat jemand schonmal ähnliche Probleme gehabt und wie habt Ihr es gelöst? Danke