2014-02-09 145 views
0

我知道我絕對不是第一個問關於使用FFT來找到頻率與Android的AudioRecord,但在閱讀噸的論壇後,我仍然不理解它好。試圖使用FFT來獲得確切的頻率與Android AudioRecord

我結束了使用ComplexDoubleFFT類,Herschel Common Science System的一部分和類似於here的代碼。

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, rate, channelConfig, audioFormat, bufferSize); 

... 

double[] micBufferData = new double[audioData.length]; 
     int x=0; 
     for(short data : audioData) 
     { 
      micBufferData[x] = data; 
      x++; 
     } 


     FFT newFFT = new FFT(bufferSize/2); 
     newFFT.ft(micBufferData); 

接下來要做的事情基本上是在我上面,因爲它爲他們工作已經提到的線程做同樣的事情。但是,他們有一個名爲toTransform的數組,我不確定他們從哪裏得到它。我假設這是他們的FFT值的列表,但我不知道如何獲得值!我已經瀏覽了ComplexDoubleFFT的類文件,並且沒有任何地方甚至可以返回它的輸出。希望我所說的所有這些都不會讓人困惑。任何幫助深表感謝!

+0

您可能需要顯示代碼或說出這個toTransform數組的用途。 – hotpaw2

+0

@ hotpaw2我已經知道了,但如果你想讓我詳細說明我做了什麼,我可以做到這一點。 – Sp4mm4ge

回答

0

我想通了。 ComplexDoubleFFT類中的函數ft會更改您動態傳遞它的數組。如果有其他人需要幫助(或者只是幫助在Android中使用FFT),請在這裏留言,我會詳細說明。

+0

您能否詳細說明一下?我試圖做同樣的事 –

+0

你到底需要什麼幫助?一般的FFT,在Android上使用它,還是特別使用上面提到的同一個庫? – Sp4mm4ge