Visualizer onFftDataCapture - 如何解读?

时间:2013-12-04 19:41:46

标签: android

Android Visualizer回调onFftDataCapture提供了fft数据的字节数组。数据是否配对为实字节/虚字节?我想知道以下伪代码是否正确?

for(int i=0;i<fft.length;i+=2) {
  byte real = fft[i];
  byte imag = fft[i+1];
  long magnitudeSquare = real*real + imag*imag;
}

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

对于那些感兴趣的人,我的逻辑似乎是正确的,因为我看到我的仪表与扬声器的响度同步移动。我认为这是缺乏更权威答案的正确答案。

的问候,
彼得

答案 1 :(得分:0)

这适用于我使用Xamarin Studio。根据需要进行调整。 请记住,实数和虚数实际上是一个带符号的字节。 这种转换将为你提供毕达哥拉斯量级的标准化-1到+1范围。

public void OnFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate)
{
    float[] fft = new float[bytes.Length/2];
    for(int i=0;i<fft.Length;i++)
    {
        float real = (float)(sbyte)(bytes[(i*2)+0])/128.0f;
        float imag = (float)(sbyte)(bytes[(i*2)+1])/128.0f;
        fft[i] = ((real*real)+(imag*imag));
    }
}