2013-03-05 149 views
2

我計劃通過音頻「可視化」一些圖形數據。爲了簡短起見,我從一些圖像數據中獲得了一堆頻率和相關的幅度值。這個頻率/幅度表 - 可以說256對數據 - 必須轉換成相關的正弦波形。Android的標準FFT類/庫?

一種解決方案是爲每個表輸入生成不同頻率的正弦波形。這意味着可以產生多達256次的正弦波形。但我想這很慢。那麼使用FFT轉換應該是更好的解決方案呢?

所以我的問題:是否有某種快速易用的可用於Android的FFT標準可用於此?

回答

3

在我的Android項目中,我使用了在Android上完美工作的JTranforms

示例代碼:

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); 

AudioRecord ar = // initialize AudioRecord here; 
ar.startRecording(); 

// Here's the Fast Fourier Transform from JTransforms 
DoubleFFT_1D fft = new DoubleFFT_1D(samples.length); 

do { 
    // Read audio to 'samples' array and convert it to double[] 
    ar.read(samples, 0, samples.length); 

    // Will store FFT in 'samplesD' 
    fft.realForward(samplesD); 

} while (/* condition */); 

ar.stop(); 
ar.release(); 
+0

我打算使用FFT在其它方向(生成音頻數據,而不是現有的音頻數據的分析)。 JTransform也支持嗎?我在他們的頁面上找不到文檔,所以我問... – Elmi 2013-03-05 15:21:43

+1

倒退方式(IFFT)與標誌和歸一化因子的例外情況相同。所以,如果你有一個可用的FFT,你可以將它作爲IFFT,通過將輸出乘以正確的因子。 – 2013-03-06 11:22:04

+0

@kamituel我也在我的一個應用程序中使用JTranforms。我可以在MPL/LGPL/GPL許可證Play Play Store上銷售該應用程序嗎? – madLokesh 2013-09-20 10:31:05