在您已链接的示例代码中,m_mag
矢量本身包含光谱数据。如果你想修改它与现有的,旨在与computeSpectrum
工作代码工作,你应该写在这个向量中的值到ByteArray
像这样:然后
import flash.utils.ByteArray;
var fftBytes:ByteArray = new ByteArray();
for(var i:uint = 0; i < N/2; i++)
{
var re:Number = m_tempRe[i];
var im:Number = m_tempIm[i];
var mag:Number = re*re + im*im;
// Old method: write to vector
// m_mag[i] = Math.sqrt(sample);
// New method: write to ByteArray
fftBytes.writeFloat(mag);
}
// microphone is mono, so make a copy to match computeSpectrum's stereo output
fftBytes.writeBytes(fftBytes, 0, fftBytes.length);
现有的代码可以看看fftBytes
直接代替致电computeSpectrum
。请注意,我们在ByteArray
的末尾第二次复制这些值,以模拟computeSpectrum
始终返回立体声数据的事实,但麦克风是单声道的。您也可以通过调整现有代码来接受单色数据并查看m_mag
矢量,而不是将它全部写入ByteArray
,以获得一点速度。
此外,您可能需要将代码顶部的SAMPLE_RATE
和N
常数分别更改为44100
和9
。这将匹配默认的返回每个通道256个值(以44100Hz采样)的行为。
目前尚不清楚你想要做什么。您是否试图为从麦克风进入的音频生成动态波形或...? – 2011-05-30 01:27:54
不可以。我想分析音频,就像在示例链接中一样,但我需要执行其他分析。 – 2011-05-30 05:36:16