在 Safari 和 Edge 中替代 audioContext.copyToChannel()

alternative to audioContext.copyToChannel() in Safari and Edge

Safari 和 Edge 都不支持使用自定义内容填充 audioBuffer 的 audioContext.copyToChannel() 函数。还有其他方法吗?

在我的例子中,我想创建一个脉冲响应,用该响应填充一个缓冲区,然后将一些声音与该缓冲区进行卷积。对于 Chrome 和 Firefox 这有效:

buffer = audioCtx.createBuffer(numOfChannels, 1, sampleRate);
buffer.copyToChannel(impulseResponse, 0);
buffer.copyToChannel(impulseResponse, 1);
convolverNode.buffer = buffer;

你可以只在AudioBuffer上使用getChannelData(channel),然后你会得到一个常规的Float32Array,你可以随意修改。也许您想看看 set 方法?

copyToChannel 是否可以优化缓冲区副本,如 spec 中所述(请参阅下面的小绿框。

edge 现在支持 copyToChannel(在 edge 38.14393.0.0 上测试)