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

fhc*_*chl 5 javascript safari microsoft-edge web-audio-api

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

就我而言,我想创建一个脉冲响应,用该响应填充一个缓冲区,然后用该缓冲区卷积一些声音。对于Chrome和Firefox,此方法有效:

buffer = audioCtx.createBuffer(numOfChannels, 1, sampleRate);
buffer.copyToChannel(impulseResponse, 0);
buffer.copyToChannel(impulseResponse, 1);
convolverNode.buffer = buffer;
Run Code Online (Sandbox Code Playgroud)

pad*_*not 5

您可以仅getChannelData(channel)在上使用AudioBuffer,然后获得一个常规列表,然后Float32Array可以随意修改。也许您想看看该set方法?

copyToChannel规范中所述,可以在那里优化缓冲区副本(请参阅下面的绿色小框。