Safari和Edge中audioContext.copyToChannel()的替代方法

时间:2015-09-17 21:54:32

标签: javascript safari web-audio microsoft-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;

2 个答案:

答案 0 :(得分:4)

您可以在 URL url = file.toURL(); URL[] urls = new URL[]{url}; ClassLoader cl = new URLClassLoader(urls); Class c = new Object().getClass(); try { c = cl.loadClass(className); } catch (ClassNotFoundException e1) { System.err.println("not found class: " + className); } 上使用getChannelData(channel),然后获得常规AudioBuffer,而不是随意修改。也许你想看一下Float32Array方法?

set用于优化缓冲区副本,如spec中所述(请参阅下面的绿色小框。

答案 1 :(得分:0)

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