Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS

Fortgeschrittene Audioverabeitung

Stand: 2012-02-05

Algorithmische Tricks

Schnelle Faltung, Faltung ohne Latenz. Insbesondere für den Faltunghall (convolution reverb) sind lange Signale (Länge N) mit langen Impulsantworten (einfachheitshalber hier auch als Länge N) zu falten. Naiv mit einer Summe von Produkten ist der Zeitaufwand O(N²). Besser mit FFT: 2*O(N Log N) für die Fourieranalyse, O(N) für das Produkt der Fourier-Transformierten, O(N Log N) für die Fouriersynthese. Vorsicht aber mit der FFT, weil die zirkulär arbeitet. Um „Time Aliasing“ (Ende des Stücks am Anfang hörbar) zu vermeiden, muss genug Leerraum (Nullen) gelassen werden. Das kann man im Prinzip auch in Echtzeit machen (blockweise überlappende Faltung), hat aber massiv effektbedingte Latenz, weil immer ein kompletter FFT-Block als Eingangssignal vorliegen muss, bevor man rechnen kann. Im Prinzip latenzfreie Lösung: segmentierte Faltung (David McGrath, US-Patent 5.502.747 von 1996). Man teilt die Impulsantwort in Segmente. Nur das erste Segement muss in sofort verarbeitet werden, mit einem relativ kurzen FIR-Filter. Die hinteren Segmente können für entsprechend große Teile des Originalsignals effizient per FFT gebündelt berechnet werden. Naheliegend ist, eine Kaskade von immer längeren Segmenten zu bilden.

Linearphasige Filter. In Echtzeit nicht ohne Latenz. Denn: Linearphasige Übertragungsfunktion H(omega) = r(omega)*exp(i omega T) mit reellem r und reellem T. Mit Fouriersynthese Impulsantwort h an der Zeit t-T und an der Zeit -t-T bestimmen. Man findet, dass diese beiden Werte für alle t gleich sein müssen (komplex Konjugieren!). Also ist die Impulsantwort symmetrisch um den Zeitpunkt T. Also im Echtzeitbetrieb Verzögerung um T. In Echtzeit ist T <= 0 nicht zu haben, weil die Impulsantwort für positive Zeiten null sein muss (Kausalität). Ebenfalls sieht man, dass ein echtzeitfähiges linearphasiges Filter nur FIR sein kann. Offline sind T=0 und IIR dagegen sehr einfach: Man lässt dasselbe Signal einmal vorwärts durch das Filter laufen und dann das gefilterte Signal nochmal rückwärts. Die Wirkung des Filters in dB ist dann verdoppelt und linearphasig.

Fractional Delay. Zum Beispiel für einen Chorus-Effekt oder das Physical Modeling einer Posaune benötigt man eine Verzögerung, die stufenlos modulierbar ist. Ein einfacher Zwischenpuffer kann aber nur auf eine ganze Zahl Samples gestellt werden. Ein perfektes Fractional Delay Filter lässt sich nicht in Echtzeit realisieren (Impulsantwort = verschobenen abgetasteter sinc, also nicht kausal, auch dann nicht, wenn man Latenz erlaubt). Am einfachsten ist die Näherung per Interpolation.

Pitch Shifting, Time Stretching, Analyse und Resynthese

Unmixing. (Blind) Audio Source Separation

Einfachste Variante: N Mono-Audiospuren per Panpot auf M >= N Ausgangskanäle gemischt (keine Verzögerung, keine Filterung, kein Hall). Im Prinzip mit fester Mischung (ggf. phasenverkehrt) der Ausgangskanäle zu lösen. Bestimmung zum Beispiel über ICA (Independent Component Analysis): Man versucht, Anteile zu finden, die stochastisch möglichst unabhängig voneinander sind.

Schwierigere Variante: N Mono-Audiospuren per Panpot auf Stereo gemischt. Beispiel für einen Algorithmus: ADRess (Video, Beispiele).

Schwierigste Variante: N Klangerzeuger im realen Raum mit M << N Mikrophonen aufgenommen. Es kann nicht mehr darum gehen, die N Originalsignale zu berechnen (Was sollte auch das Originalsignal einer Aufnahme sein?), sondern N Signale zu errechnen, in denen jeweils möglichst nur eine Quelle zu hören ist (Hall? Filter?). Dieses Problem zu lösen verlangt wahrscheinlich eine Simulation der Vorgänge im Hirn (CASA, Computational Auditory Scene Analysis), insbesondere eine große Wissensbasis über Klänge.

Permutation als eines von vielen Problemen: Wenn man es tatsächlich schafft, M Audiosignale zu extrahieren, ist noch nicht klar, in welcher Reihenfolge das die gesuchten Ergebnisse sind. Abhilfe möglich, indem man Charakteristika vorgibt, z.B. dass das erste extrahierte Signal die Bassline sein soll. Schwieriger wird es noch bei einer Zerlegung, die im Frequenzraum arbeitet: Welche frequenzmäßig verschiedenen Teile gehören zum selben Signal?

Audionamix UnMixingStation (Demo)

Gute Sitten für Plug-ins