Safari和Edge都不支持使用自定义内容填充audioBuffer的audioContext.copyToChannel()
函数。还有其他办法吗?
在我的情况下,我想创建一个脉冲响应,用该响应填充缓冲区并用该缓冲区卷积一些声音。对于Chrome和Firefox,这适用:
buffer = audioCtx.createBuffer(numOfChannels, 1, sampleRate);
buffer.copyToChannel(impulseResponse, 0);
buffer.copyToChannel(impulseResponse, 1);
convolverNode.buffer = buffer;
答案 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上测试)