尝试使用FFT通过Android AudioRecord获取准确的频率

时间:2014-02-09 00:59:04

标签: android fft audio-recording

我知道我绝对不是第一个询问使用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的类文件,它甚至无处返回其输出。希望我所说的一切都不会令人困惑。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我明白了。 ComplexDoubleFFT类中的函数ft会更改动态传递的数组。如果其他人需要帮助这样做(或者只是帮助在Android中使用FFT),请在这里留言,我会详细说明。