有没有办法将内存中的原始数据作为样本添加到Web Audio Api?我想添加一个Int8Array(或Int16Array)作为缓冲区,缓冲区只有样本,没有格式为WAV或MP3。我已经尝试过audioContext.createBuffer,但没有成功。
这样的事情:
var buffer = audioContext.createBuffer(1,8192, 22000);
var intArray = new Int8Array(....);
// -- fill intarray
buffer.buffer = intArray;
...
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
如果不可能,是否有与contetx.decodeAudio()兼容的声音格式,这很容易在内存中“模拟”?即只是标题或其他东西。
答案 0 :(得分:4)
它既不是非常直观,也不是在规范中明确记录,也不是很容易在网上找到:
但是,您只需修改Float32Array
在任何缓冲区上返回的getChannelData(<idx of channel>)
。
不要忘记将样本缩放到范围[-1,1]
对于您的示例,您可以将intArray中的值缩放并复制到通过调用获得的floatArray:
floatArray = buffer.getChannelData(0)