在 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 上测试)
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 上测试)