Das partitionierte Falten zur Reduktion der Latenz klappt ganz universell, also mit linearphasigen Filtern genauso wie mit minimalphasigen Filtern. Brutefir macht da keinen unterschied. Hierbei wird allerdings nur die IO-Latenz reduziert, nicht die inhäränte Verzögerung durch den eingesetzten Filter. Bei langen Filtern ist die IO-Latenz in Brutefir allerdings dominant, da sie das Doppelte der Filterlänge beträgt. Mit der Partitionierung lässt sie sich je nach Rechenleistung gegen Null reduzieren, mit dem Raspberry auf 85ms bei zwei 65536er Filtern mit 32 Partitionen. Für 64 Partitionen fehlt die Rechenleistung.
Bei minimalphasigen Filtern lässt sich die Energie meist auf den Anfang der Filterkoeffizienten konzentriert, so dass eine Verzögerung nahe Null erreicht werden kann. Linearphasige Filter haben symmetrische Koeffizienten und die Maximalenergie in der Mitte des Koeffizientensatzes. Damit ist die unüberwindbare Verzögerung linearphasiger Filter 0,5*Filterlänge/Abtastrate. Bei mir aktuell 0,5*65536/48000=0,68s. Zur Lösung gibt es drei Ansätze:
->Bei DRC kann mit dem Parameter PSFilterType mit L ein linearphasiger Filter und mit T ein minimalphasiger Filter (Nullen am Anfang werden entfernt, minimalste Verzögerung) erstellt werden. Beide Filter können auf dem Rechner abgelegt werden. Wie beim AudioVolver ist es dann möglich, im Betrieb zwischen minimalphasigem Filter (nur Amplitudengang korrigiert, dafür unhörbare Latenz) und linearphasig (auch Phasengang korrigiert, Latenz zusätzlich 0,68s)umzuschalten. Der Erfahrung nach bringt schon der minimalphasige Filter gut 75% des Ergebnisses.
->Reduktion der Filterlänge auf 8192 Punkte. Hierbei geht allerdings die Frequenzauflösung verloren.
->Verzögerung des Videos, was bei <1s weder bei der Bedienung stört, noch unmögliche Pufferspeicher verlangt.
Bei minimalphasigen Filtern lässt sich die Energie meist auf den Anfang der Filterkoeffizienten konzentriert, so dass eine Verzögerung nahe Null erreicht werden kann. Linearphasige Filter haben symmetrische Koeffizienten und die Maximalenergie in der Mitte des Koeffizientensatzes. Damit ist die unüberwindbare Verzögerung linearphasiger Filter 0,5*Filterlänge/Abtastrate. Bei mir aktuell 0,5*65536/48000=0,68s. Zur Lösung gibt es drei Ansätze:
->Bei DRC kann mit dem Parameter PSFilterType mit L ein linearphasiger Filter und mit T ein minimalphasiger Filter (Nullen am Anfang werden entfernt, minimalste Verzögerung) erstellt werden. Beide Filter können auf dem Rechner abgelegt werden. Wie beim AudioVolver ist es dann möglich, im Betrieb zwischen minimalphasigem Filter (nur Amplitudengang korrigiert, dafür unhörbare Latenz) und linearphasig (auch Phasengang korrigiert, Latenz zusätzlich 0,68s)umzuschalten. Der Erfahrung nach bringt schon der minimalphasige Filter gut 75% des Ergebnisses.
->Reduktion der Filterlänge auf 8192 Punkte. Hierbei geht allerdings die Frequenzauflösung verloren.
->Verzögerung des Videos, was bei <1s weder bei der Bedienung stört, noch unmögliche Pufferspeicher verlangt.
Kommentar