删除console.log使用Web Audio API中断代码

时间:2016-01-13 21:26:11

标签: javascript web-audio

我正在使用Web Audio API并使用此代码:

function playTones(startFreq, numNotes) {
  if (numNotes === 0) return;

  var osc = AC.createOscillator();
  osc.frequency.value = startFreq;
  osc.onended = function() {
    playTones(startFreq + 20, numNotes-1);
  };
  console.log(osc.onended);

  osc.connect(AC.destination);
  osc.start();
  osc.stop(AC.currentTime + 1);
}
它只是应该播放一系列音符,每个音符比前一个高20Hz。但是,当我删除console.log时,它无法正常工作;它只播放第一个音符,然后停止,onended回调从未被调用。为什么会这样?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

嘿,你可以试试这个:

    var AC = new AudioContext();

   function playTones(startFreq, numNotes) {
   if (numNotes === 0) return;

   var osc = AC.createOscillator();
   osc.frequency.value = startFreq;

   //    console.log(osc.onended);

    osc.connect(AC.destination);
    osc.start();
    osc.stop(AC.currentTime + 1);
    setTimeout(function(){playTones(startFreq+20,10)},1000);
    }

    playTones(200, 10);