【问题标题】:Copy data from smaller AudioBuffers into a bigger Float32Array将数据从较小的 AudioBuffers 复制到较大的 Float32Array
【发布时间】:2018-04-14 10:30:34
【问题描述】:

我想在浏览器中以

普通 Web Audio AnalyzerNode 的最大值 FFT_SIZE 为 32768。这导致普通采样率 (48kHz) 的分辨率约为 1.4Hz。

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

不幸的是,ScriptProcessorNode 的最大 bufferSize 也只有 16384 我想将它的 4 个缓冲区合并为一个 Float32Array。 我以为会有类似的东西

copyChannelData(array, offset, length) 

但只有

getChannelData(array)

因此,如果我理解正确,我必须先复制更大数组中的所有数据,然后才能执行 fft。

只是为了确保我不会遗漏任何东西...有没有办法将数据直接检索到我更大的数组中?

【问题讨论】:

    标签: javascript fft web-audio-api arraybuffer


    【解决方案1】:

    不,您需要复制数据。无论如何,这种方法效率很低(我的意思是 ScriptProcessor) - 副本并不是您最担心的问题,因为您从根本上需要复制该数据。

    【讨论】:

    • 谢谢,我接受了。如果您知道一些,请随意添加更有效的方法来达到更好的分辨率!为了获得灵感,here 是第一个版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 2016-04-21
    • 2022-01-09
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多