【发布时间】:2014-11-07 05:42:52
【问题描述】:
我将网络音频用于各种目的,虽然通过 URL 加载的样本和振荡器正常工作和播放,但构建自定义源缓冲区却不行。我尝试使用下面的代码将我自己的 AudioBuffer 加载到 AudioBufferSourceNode 中,并通过 Chrome-NetBeans 调试器我可以看到它正在使用数据加载缓冲区并且没有标记任何错误,但是当调用 start 时,没有声音产生。请注意,我只是用噪声填充缓冲区,但我计划用我自己的自定义波形数据填充它。我意识到我很可能用错误的数据类型填充缓冲区,但我无法找到任何有关正确执行方式的文档或示例。任何帮助将不胜感激。
var audioContext = new (window.AudioContext || window.webkitAudioContext)();
var frameCount = 2000;
var sampleRate = 4000;
var myBuffer = audioContext.createBuffer(2, frameCount, sampleRate);
// FILL WITH WHITE NOISE
for (var i = 0; i < frameCount; i++) {
myBuffer[i] = Math.random() * 2 - 1;
}
sourceNode = audioContext.createBufferSource();
sourceNode.buffer = myBuffer;
sourceNode.connect(audioContext.destination);
sourceNode.start(0);
【问题讨论】: