网络音频 api 以不同的速率播放哔哔声...

web audio api plays beep, beep,... beep at different rate

我正在尝试根据浏览器中的某些传感器读数以不同的速率播放 "beep" 声音 window。

想法是当传感器读数高时"beep, beep, beep, ... beep"更快,当传感器读数低时"beep,...beep"慢,所有这些都是实时的。

传感器读数通过 socket.io 送入浏览器。我已经可以控制进度条上下移动了。音频反馈是一项额外功能。

经过一些谷歌搜索后,我正在考虑使用网络音频 api,创建一个正弦波振荡器,并使用增益节点 connect/disconnect 将其 on/off 转动。

我的问题是如何以正确的方式控制时间,比如我试图在 1 Hz 到 20 Hz 的频率范围内发出蜂鸣声,并能够动态改变频率。

我最明确地不会通过连接和断开振荡器来打开和关闭振荡器 - 您必须从主线程执行此操作,所以不是超级可预测的。

您实际上可以使用调制低频振荡器来执行此操作:查看此代码:

var context = new AudioContext();

//defaults to A440Hz, sine wave
var src = context.createOscillator();

// Now let's create a modulator to turn beeps on and off
var mod = context.createOscillator();
mod.type="square";
mod.frequency.value = "2";  // Start at 2Hz

var gain = context.createGain();
var scaler = context.createGain();

src.connect(gain);
gain.connect(context.destination);

mod.connect(scaler); // Mod signal is [-1,1]
scaler.gain.value = 0.5; // we need it to be [-0.5,0.5]
gain.gain.value = 0.5; // then it's summed with 0.5, so [0,1]
scaler.connect(gain.gain);

//start it up
src.start(0);
mod.start(0);

// to change rate, change mod.frequency.value to desired frequency