跨浏览器HTML5 javascript生成单勾音
我需要一个大约20毫秒宽的单发方波。 我还没有找到一个简单的自治代码示例来实现这一点 没有外部库,只有几行代码 这能做到吗?在运行DOS的IBMXT上很容易做到这一点。 我用创造性的关键词做了一次扩展搜索,但什么也没找到 我看到一个暗示,一个人可以在本地构造一个声音 正在替换…数据。。。根据实际数据:跨浏览器HTML5 javascript生成单勾音,javascript,html,audio,Javascript,Html,Audio,我需要一个大约20毫秒宽的单发方波。 我还没有找到一个简单的自治代码示例来实现这一点 没有外部库,只有几行代码 这能做到吗?在运行DOS的IBMXT上很容易做到这一点。 我用创造性的关键词做了一次扩展搜索,但什么也没找到 我看到一个暗示,一个人可以在本地构造一个声音 正在替换…数据。。。根据实际数据: var playSound = (function beep () { var snd = new Audio ("data:audio/wav;base64,//...data...")
var playSound = (function beep () {
var snd = new Audio ("data:audio/wav;base64,//...data...");
return function () {
snd.play();
}
}) ();
然后运行:
playSound ();
但这些例子并不奏效。
我有chrome、firefox、opera和其他几种浏览器
有人知道如何在没有太多代码的情况下实现这一点吗?提供了一套有趣的音频处理工具,我曾使用这些工具在下面生成了226.6hz 20ms的方波
更新Web音频振荡器注释只能启动和停止一次。这是一个设计缺陷功能,要求每次播放一个ocillator节点时创建一个新的ocillator节点
我还包括主控和振荡器增益控制,以便显示音频节点的互连
//创建音频上下文、masterGain和nodeGain1节点
var audioContext=new window.audioContext | | window.webkitadiocontext;
//Webkit/blink浏览器需要前缀,没有窗口Safari将无法工作。
var masterGain=audioContext.createGain;
masterGain.gain.value=0.5;
masterGain.connectaudioContext.destination;
var nodeGain1=audioContext.createGain;
nodeGain1.gain.value=0.5;
nodeGain1.connectmasterGain;
功能点击嗡嗡声频率、长度{
var oscillatorNode=新的OscillatorNodeaudioContext,{type:'square'};
振荡节点频率值=频率;
振荡节点。连接节点1;
oscillatorNode.startaudioContext.currentTime;
//setTimeout函数{oscillatorNode.stop;},长度*1000;
oscillatorNode.stop audioContext.currentTime+长度;
}
功能卷1范围输入{
masterGain.gain.value=+rangeInput.value;
}
函数卷2范围输入{
nodeGain1.gain.value=+rangeInput.value;
}
在文本区域键入按键声音:
主卷
振荡器体积
如果您关心浏览器支持,为什么要使用仅由最新的chrome和FF支持的OscillatorNode构造函数,而不是所有主流浏览器都支持的传统方法?要完成这样一件简单的事情,代码太多了。但它奏效了。谢谢