Per*_*rty 3 html javascript html5-audio web-audio-api
有没有办法将内存中的原始数据作为样本添加到 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);
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,是否有一种与 contetx.decodeAudio() 兼容的声音格式,很容易在内存中“模拟”?即只是一个标题或其他东西。
它既不是很直观,也没有在规范中明确记录,而且在网上也不容易找到:
但是,您可以简单地修改任何缓冲区Float32Array返回的值。getChannelData(<idx of channel>)
不要忘记将样本缩放到范围 [-1, 1]
对于您的示例,您将缩放 intArray 中的值并将其复制到通过调用获得的 floatArray:
floatArray = buffer.getChannelData(0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2904 次 |
| 最近记录: |