2012-03-24 8 views
1

ファイルのスペクトル分析を実行しようとしています。分析したいファイルはかなり長く(40分程度)することができるので、これをリアルタイムで分析することは本当に私にとってはオプションではありません。オーディオファイルの非リアルタイムFFT解析

私は現在、MininのFFTクラスを使用していますが、すでに再生している曲しか実行できないようです。私もess libraryを見てきましたが、私もリアルタイムストリームを持つことに限られていることを理解しました。

オーディオファイルを小さなチャンクで繰り返し処理し、そのデータをfftで実行する方法はありますか?

void setup() 
{ 
    minim = new Minim(this); 
    frameRate(30); 

    song = minim.loadFile("../shortfile.mp3", 1024); 
    song.loop(); 
    fft = new FFT(song.bufferSize(), song.sampleRate()); 
    background(#ffffff); 
} 

void draw() 
{ 
    fft.forward(song.mix); 

    for(int i = 0; i < height/2; i++) 
    {  
    intensity = constrain((log(fft.getBand(i)*1.4)/log(1.15)), 0, 40); 
    intensity = int(map(intensity, 0 , 40, 0, 255)); 
    stroke(strokeColour(int(intensity))); 

    point(framecount, i); 
    } 
} 

答えて

1

あなたは標準入出力コマンドを使用して、ファイルの一部を読み、FFTW使用したい:

ここで私が今持っているものの簡易版です。 http://www.fftw.org/fftw2_doc/fftw_2.html

また、スニペットからオンラインで独自のFFTコードを書くこともできます。これにより、FFTWの使用方法を学ぶのが早くなります。このページを見てくださいhttp://cnx.org/content/m12016/latest/それはC FFTの実装を持っているようです。虚数部を取り除くと、1D FFTスキームを理解しやすくなります。

2

公式のGitHubデポのこの例は役に立ちます。彼らはそれをoffline analysisと呼びます。

+0

これはかなり役に立ちます。私は現時点でこれを実際に見ていないが、とにかく感謝:) – Marco

関連する問題