jld*_*ger 11 javascript audio beep
我正在重新审视我们很久以前建立的ID扫描仪站程序,我有一个用户要求发出系统蜂鸣声的请求.我们正在考虑将系统移动到网络浏览器,但是是否可以通过javascript或其他方式调用扬声器?它不需要跨浏览器兼容,但它可能需要在Windows或Linux上运行.有问题的电台没有配备声卡或外部扬声器,因此请求使用PC扬声器.
我知道有人会这么说,所以我会先解决这个问题:我不关心你对应用程序制造噪音的看法,这不适合你.用户要求它,它是有道理的,硬件扫描仪已经发出噪音了.是的,我们提供具有可区分文本和颜色的视觉反馈,但我们发现人们接受现有的蜂鸣声作为积极反馈并添加更多音频上下文会有所帮助.
今天,使用JavaScript可以实现。
这是我写的一个快速而肮脏的功能...
var beep = function(duration, type, finishedCallback) {
if (!(window.audioContext || window.webkitAudioContext)) {
throw Error("Your browser does not support Audio Context.");
}
duration = +duration;
// Only 0-4 are valid types.
type = (type % 5) || 0;
if (typeof finishedCallback != "function") {
finishedCallback = function() {};
}
var ctx = new (window.audioContext || window.webkitAudioContext);
var osc = ctx.createOscillator();
osc.type = type;
osc.connect(ctx.destination);
osc.noteOn(0);
setTimeout(function() {
osc.noteOff(0);
finishedCallback();
}, duration);
};
Run Code Online (Sandbox Code Playgroud)