当我使用Web音频振荡器(使用noteOn)成功创建了一个音调,然后调用了它的noteOff函数时,随后对noteOn的调用将不再播放该音调。我似乎必须创建一个新的振荡器来演奏新的音符。为什么是这样?

var ctx = new webkitAudioContext();
var osc = ctx.createOscillator();
osc.connect(ctx.destination);
osc.start(0); // tone is heard (previously noteOn(0))

// ... some time later
osc.stop(0); // tone falls silent (previously noteOff(0))

// ... some time later
osc.start(0); // no effect! (previously noteOn(0))

最佳答案

简而言之-API是按照这种方式设计的,并且针对这种使用进行了优化。除了为每个音符创建一个新的振荡器以外,没有太多选择。

10-07 13:36