aaa*_*dan 7 javascript webkit web-audio-api
当我使用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))
Run Code Online (Sandbox Code Playgroud)
使用振荡器池和控制音符打开/关闭增益节点.与模拟合成器一样,振荡器一直在池中运行.
虽然它可以用来创建振荡器池,但Web Audio API已经过优化,不值得做.我之前认为振荡器池是一个好主意,但事实并非如此.每次需要一个新注释时创建一个新的振荡器非常简单 - 比维护一个池简单得多 - 而且这个持续的创建/垃圾收集过程不会对性能产生重大影响.
如果你考虑一下,这是一个非常干净的编程模型.无需维护对象的引用,然后再重用它们.维持较少的状态.