我正在Codepen上重新创建孩子们的游戏“Simon”,并使用Web Audio API在用户点击或生成序列的机器上创建音调。
当程序启动时,我初始化音频上下文,然后初始化四个不同的振荡器,每个音调/颜色一个。我也开始每个音调。
let context = new AudioContext();
let audioblue = context.createOscillator();
audioblue.frequency.value = 329.63;
audioblue.type = "sine";
audioblue.start();
// I repeat same code as above for audiored, audiogreen, and audioyellow
我让程序生成一个随机数(0,1,2或3,与每个棋盘的象限相关),一次一个数字,要求玩家在程序生成下一个随机数之前重新创建完整的序列数。每次在序列中添加新数字时,我都会使用setInterval()来“播放”序列。 “播放”序列意味着点亮象限并播放相应的音调。为了演奏音调,我有以下代码(对于audiored,audiogreen和audioyellow也是如此):
audioblue.connect(context.destination);
然后我使用setInterval()撤消点亮并断开音频。
audioblue.disconnect(context.destination);
(可能有更好的方法可以做到这一点,但作为初学者,这是我能够弄清楚的。)
一切正常。问题是您可以在连接和断开音调时听到令人不快的反馈声音。是否有可能消除这种反馈声音,使音调更加舒适和用户友好?
感谢您提供的任何帮助。
以下是Codepen的链接:https://codepen.io/lieberscott/pen/aEqaNd