Musik Filtern/Trennen mit FFT?
-
Ich hatte vor kurzem die folgende Idee:
ADC/Wav-File -> FFT -> Filter/Frequenzweichen -> iFT -> DAC/Wav-File
Mich reizt an dem ganzen, dass die Fourier-Transformation aus dem Intervall einzelne Frequenzen und deren Amplitude liefert.
Auf diese könnte man dann jede beliebige Filter-Funktion anwenden.Wie groß wähle ich nun das zu transformierende Intervall am besten (Frequenzbereich 10 Hz bis 20KHz) ?
Und wie berechne ich am besten FFT/iFT?
Ich möchte das ganze erstmal am PC in einem C++-Programm ausprobieren.(Wenn es gut funktioniert soll es dann auf einem ARM oder sehr schnellem µC in Echtzeit laufen.)
-
Meinst du sowas?
http://help.adobe.com/en_US/Audition/3.0/help.html?content=WS58a04a822e3e5010548241038980c2c5-7f1e.htmlFür solche Sachen würde ich, um die am besten geeignete Fensterfunktion, das Intervall usw. zu ermitteln, das ganze erst mal in Matlab (oder Octave) machen. Soviel ich weiß bringen beide bereits Umfassende Funktionen für solche Anwednungsbereiche mit.
-
Je nachdem wie die Filter aussehen sollen (bzw. was mit ihnen erreicht werden soll) gibt es natürlich auch noch Möglichkeiten bei den IIR-Filtern. Da gibt es Designmöglichkeiten die sich mit FIR-Filter nicht oder nur annähernd erreichen lassen. Zudem sind sie weniger resourcenhungrig.
-
Ich wollte eben einige Filter hintereinander/nebeneinander realisieren:
Equalizer, Frequenzweiche, das ganze dann mit einstellbaren Flanken, Dämpfung/Verstärkung,...
Ich schätze mal, die FFT/iFFT wird die meiste Rechenleistung verschlingen, oder?
Somit erscheint es mir günstig, das Audiosignal nur ein mal zu transformieren, die Filterfunktionen müssen dann nur noch einen Faktor in Abhängigkeit von f zurückliefern, mit denen die Amplitude der jeweiligen Frequenz multipliziert wird.Von IIR/FIR-Filter habe ich gehört aber keine gute Lektüre gefunden dazu.
Also man findet zwar - zB auf Wiki - eine ungefähre Beschreibung des ganzen aber nicht wie man jetzt zB einen Hochpass, Tiefpass,... bestimmter Ordnung damit entwickelt.Kann mir da jemand was empfehlen?
Edit: Ich habe grade das Gefühl, dass ich mir diese digitalen Filter völlig falsch vorstelle...
-
Einfach so FFT + in der Frequency-Domain rumpfuschen + iFT = Knacksen im Output.
Du kannst allerdings einen FIR Filter mittels FFT auf ein Signal "anwenden". Was im Prinzip die "korrekte" Variante von dem ist, was du machen willst, denn mit FIR Filtern kannst du auch beliebig viel Dinge in EINEM Filter anstellen, also EQ, Trennfilter, Phasendrehung korrigieren etc.
Weiteres findest du im Netz:
http://www.google.com/search?hl=en&source=hp&q=fast+convolution+fft&btnG=Google+Search
-
Ich wollte keinen neuen Thread dafür aufmachen:
Wie kann ich denn 16bit-Samples direkt auf die Soundkarte ausgeben?
Damit ich mit FIR-Filtern am PC herumspielen kann...Das ganze immer erst in eine WAV-Datei zu exportieren und dann in nem Player anzuhöhren ist auch langweilig...
-
Kommt ein bisschen drauf an was du fuer ein System hast. Unter linux gehts z.B. indem du das ganze nach sox pipest. Unter Java gaengs noch einfacher