2010-10-06 5 views
4

Possible en double:
Fast fourier transform in c#transformée de Fourier rapide en C#

Je cherche un exemple d'effectuer une FFT en temps réel (transformée de Fourier rapide) de la ligne ou des données audio micro en C#. Mon but est de déterminer en temps réel si une note particulière est présente dans les données audio. Tous les exemples appréciés.

+0

double: http://stackoverflow.com/questions/170394/fast-fourier-transform-in-c –

+3

En fait, cette question ne couvre pas exactement le même motif, comme déterminer si une note musicale présente dans les données audio peut impliquer un post-traitement significatif des résultats FFT, ou même l'utilisation d'une méthode complètement différente d'estimation de hauteur de note (autocorrélation, ondelettes, etc.). Note pitch! = FFT fréquence de pointe bin – hotpaw2

Répondre

7

AForge.NET est une bibliothèque open-source avec un support de transformée de Fourier rapide.
ExocortexDSP est également une autre option.

ExocortexDSP exemple ressemblerait à quelque chose comme ceci:

Exocortex.DSP.ComplexF[] complexData = new Exocortex.DSP.ComplexF[512]; 
    for (int i = 0; i < 512; ++i) 
    { 
     // Fill the complex data 
     complexData[i].Re = 1; // Add your real part here 
     complexData[i].Im = 2; // Add your imaginary part here 
    } 

    // FFT the time domain data to get frequency domain data 
    Exocortex.DSP.Fourier.FFT(complexData, Exocortex.DSP.FourierDirection.Forward); 

    float[] mag_dat_buffer = new float[complexData.Length]; 
    // Loop through FFT'ed data and do something with it 
    for (int i = 0; i < complexData.Length; ++i) 
    { 
     // Calculate magnitude or do something with the new complex data 
     mag_data_buffer[i] = ImaginaryNumberMagnitude(complexData[i].Im, complexData[i].Re); 
    } 
+0

Merci pour les liens de la bibliothèque. Je suis après des exemples :) – Phil

+0

Mis à jour avec un exemple ExocortexDSP. AForge ressemblera. – SwDevMan81

+0

Merci, comme dans la question initiale, je suis après des exemples de tirer lesdites données de micro ou de ligne. Aurais-je besoin d'une deuxième bibliothèque pour cela? Je vous remercie. – Phil

Questions connexes