首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络音频api播放“哔”、“哔”、.以不同的速度鸣叫

网络音频api播放“哔”、“哔”、.以不同的速度鸣叫
EN

Stack Overflow用户
提问于 2015-06-05 17:47:32
回答 1查看 915关注 0票数 3

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

这个想法是,当传感器读数高时,“哔,……哔”更快;而当传感器读数较低时,“哔,...beep”更慢,所有这些都是实时的。

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

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

我的问题是如何用正确的方式控制时间,比如说我试着在从1赫兹到20赫兹的频率范围内发出嗡嗡声,并且能够动态地改变频率。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-06 15:34:21

我最具体的做法是不要通过连接和断开它来打开和关闭振荡器--你必须从主线程中这样做,所以这不是超级可预测的。

实际上,您可以使用一个调制的低频振荡器来完成此操作:请查看以下代码:

代码语言:javascript
复制
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
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30672781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档