将数据从较小的AudioBuffers复制到更大的Float32Array

时间:2017-11-02 01:27:28

标签: javascript fft web-audio arraybuffer

我想在浏览器中分析来自麦克风输入的分辨率<1Hz

普通网络音频分析器节点的最大 FFT_SIZE为32768.对于正常采样率(48kHz),这会产生 ~1.4Hz 的分辨率。

现在我想使用jsfft或类似的东西进行频率变换。我想收集65536个音频样本,因为这个fft大小应该达到~0.7Hz的分辨率。 (时间分辨率并不重要)

不幸的是,ScriptProcessorNode的最大缓冲区大小也只有16384 我希望将其4个缓冲区组合到一个Float32Array中。 我以为会有像

这样的东西
copyChannelData(array, offset, length) 

但只有

getChannelData(array)

因此,如果我理解正确的话,我必须先复制更大阵列中的所有数据才能完成fft。

只是为了确保我不会错过任何内容...... 有没有办法直接将数据检索到我的大阵列?

1 个答案:

答案 0 :(得分:2)

不,您需要复制数据。无论如何,这种方法效率很低(ScriptProcessor,我的意思) - 副本不是你最担心的,因为你基本上需要复制那些数据。