だから私は最後の問題を解決することができましたが、私はすでに次の問題に悩まされていました.
簡単なスペクトログラムを作成したいのですが、そのためにはFFTライブラリがどのように機能し、実際に計算して返すものを理解したいと思っています。(FFT と信号処理は、時間ができたらすぐに取り上げる一番のトピックですが、今のところ、夕方にプログラミングの練習をする時間しかありません。;))
ここでは、最も重要な部分を要約しました。
int framesPerSecond;
int samplesPerSecond;
int samplesPerCycle; // right now i want to refresh the spectogram every
DoubleFFT_1D fft;
WAVReader audioIn;
double audioL[], audioR[];
double fftL[], fftR[];
.....
framesPerSecond = 30;
audioIn= new WAVReader("Strobe.wav");
int samplesPerSecond = (int)audioIn.GetSampleRate();
samplesPerCycle = (int)(audioIn.GetSampleRate()/framesPerSecond);
audioL = new double[samplesPerCycle*2];
audioR = new double[samplesPerCycle*2];
fftL = new double[samplesPerCycle];
fftR = new double[samplesPerCycle];
for(int i = 0; i < samplesPerCycle; i++) {
// don't even know why,...
fftL[i] = 0;
fftR[i] = 0;
}
fft = new DoubleFFT_1D(samplesPerCycle);
.....
for(int i = 0; i < samplesPerCycle; i++) {
audioIn.GetStereoSamples(temp);
audioL[i]=temp[0];
audioR[i]=temp[1];
}
fft.realForwardFull(audioL); //still stereo
fft.realForwardFull(audioR);
System.out.println("Check");
for(int i = 0; i < samplesPerCycle; i++) {
//storing the magnitude in the fftL/R arrays
fftL[i] = Math.sqrt(audioL[2*i]*audioL[2*i] + audioL[2*i+1]*audioL[2*i+1]);
fftR[i] = Math.sqrt(audioR[2*i]*audioR[2*i] + audioR[2*i+1]*audioR[2*i+1]);
}
問題は、サンプリングされた信号に含まれる周波数を知りたい場合、どのように計算すればよいかということです。(fftL / fftR 配列を印刷したい場合、配列の両端でいくつかの指数形式を取得します。)
どうも :)