当我使用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就是这样设计的,并针对这种用途进行了优化.除了为每个音符创建一个新振荡器之外,没有太多选择.