网络音频api发出哔哔声,哔哔声,...以不同的速度发出哔哔声

时间:2015-06-05 17:47:33

标签: html5-audio web-audio

我试图根据浏览器窗口内的一些传感器读数以不同的速率播放“哔”声。

当传感器读数很高时,想法是“发出哔哔,发出哔哔,发出哔哔声,发出哔哔声”的声音,当传感器读数很低时,它会发出“嘟嘟声,......嘟嘟”声,这一切都是实时的。

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

经过一些谷歌搜索后,我正在考虑使用网络音频api,创建一个正弦波振荡器,并通过增益节点连接/断开来打开/关闭它。

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

1 个答案:

答案 0 :(得分:6)

我最特别不会通过连接和断开它来打开和关闭振荡器 - 你必须从主线程中做到这一点,所以不能超级预测。

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

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