繁体   English   中英

Web 音频停止振荡器声音

[英]Web Audio-Stopping Oscillator Sound

试图创造一种脉动的音调。 从此处的另一个帖子中找到了一些帮助( web 音频 api 以不同的速率播放哔、哔、...哔)。 需要改编剧本。 想出了一个令人满意的结果,播放和脉冲音调。 无法找出 function 来停止音调:与振荡器一起使用的 .stop() 不起作用。

任何帮助表示赞赏。

这是我的代码:

 <html> <body> <button id = "start1" onclick='tone();'>Play</button> <button id = "stop1" onclick='stopper();'>Stop</button> <script> function tone(){ var context = new AudioContext(); var abc = context.createOscillator(); abc.frequency.value = 325; var xyz = context.createOscillator(); xyz.type='sine'; xyz.frequency.value = 10; var gain = context.createGain(); var ramp = context.createGain(); abc.connect(gain); gain.connect(context.destination); xyz.connect(ramp); ramp.gain.value = 0.3; gain.gain.value = 0.3; ramp.connect(gain.gain); abc.start(0); xyz.start(0); } function stopper() { abc.stop(); xyz.stop(); } </script> </body> </html>

移动评论回答:

AudioAPI 不是问题,它是一个简单的变量范围问题。

在 function 中创建的变量在 function 之外无法访问,并且stopper() function 无法访问 abc/xyz 变量。

 <html> <body> <button id = "start1" onclick='tone();'>Play</button> <button id = "stop1" onclick='stopper();'>Stop</button> <script> let context = null; let abc, xyz; function tone(){ context = new AudioContext(); abc = context.createOscillator(); abc.frequency.value = 325; xyz = context.createOscillator(); xyz.type='sine'; xyz.frequency.value = 10; var gain = context.createGain(); var ramp = context.createGain(); abc.connect(gain); gain.connect(context.destination); xyz.connect(ramp); ramp.gain.value = 0.3; gain.gain.value = 0.3; ramp.connect(gain.gain); abc.start(0); xyz.start(0); } function stopper() { abc?.stop(); xyz?.stop(); } </script> </body> </html>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM