我做了一个产生鼓声的功能,它在被调用4次后会停止产生错误:



此功能有什么问题?
我的代码是:

drum = function(){
    var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
    var frameCount = audioCtx.sampleRate/20
    var myArrayBuffer = audioCtx.createBuffer(1, frameCount, audioCtx.sampleRate);
    var nowBuffering = myArrayBuffer.getChannelData(0);
    for (var i = 0; i < frameCount; i++) {
        nowBuffering[i] =Math.sin(i**(1/1.8)/4)
    }

    var source = audioCtx.createBufferSource();
    source.buffer = myArrayBuffer; source.connect(audioCtx.destination);
    source.start();
}

最佳答案

您的audioCtx分配应该移到drum()之外,因为每次都会调用它,最终会引发异常,因为您不能在文档中创建6个以上的音频上下文。

07-26 05:47