Loopo schrieb:
Zunächst eine Art EQ programmieren...
Da gibt es zwei Wege:
Entweder über die FFT das Signal in den Bildbereich transformieren, dann die gewünschte Filterwirkung einstellen und wieder zurücktransformieren.
Oder Du bastelst Dir einen FIR/IIR-Filter.
Beides hat Vor- und Nachteile. Bei wenig komplexen Filtern liegt die zweite Möglichkeit vorn, bei schwierigen Sachen, die lange Filterpolynome benötigen würden, kommt die FFT besser zurecht.
Noch etwas zu dem Zeitaufwand:
FIR/IIR-Filter benötigen exakt so viele komplexe (!) Fließkomma-Multiplikationen wie sie Filterpolynome besitzen. Das heißt, die maximale Filterlänge ist durch die Geschwindigkeit des ausführenden Systems begrenzt.
Eine FFT (und ein iFFT) benötigt (N/2)*ld(N) Multiplikationen (mit N als der Länge der FFT). Hin und Rückweg (FFT und später iFFT) bedeuten also N*ld(N) Multiplikationen. Dazu kommen noch die Multiplikationen durch den Filter, die betragen exakt N. Insgesamt erhält man also N+N*ld(N) Multiplikationen.
Wie man sieht, skaliert die FIR/IIR-Lösung linear, die FFT-Lösung logarithmisch (allerdings mit anderen Variablen). Ab einem bestimmten Filteraufwand ist immer die FFT-Lösung im Vorteil. Die FIR/IIR-Lösung ist allerdings erheblich einfacher zu realisieren, besonders FIR, die benötigt nur ein statisches Array und ein Schieberegister (Tipp: Schieberegister durch einen Ringpuffer realisieren).
Gruß
Morgoth