Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨浏览器HTML5 javascript生成单勾音_Javascript_Html_Audio - Fatal编程技术网

跨浏览器HTML5 javascript生成单勾音

跨浏览器HTML5 javascript生成单勾音,javascript,html,audio,Javascript,Html,Audio,我需要一个大约20毫秒宽的单发方波。 我还没有找到一个简单的自治代码示例来实现这一点 没有外部库,只有几行代码 这能做到吗?在运行DOS的IBMXT上很容易做到这一点。 我用创造性的关键词做了一次扩展搜索,但什么也没找到 我看到一个暗示,一个人可以在本地构造一个声音 正在替换…数据。。。根据实际数据: var playSound = (function beep () { var snd = new Audio ("data:audio/wav;base64,//...data...")

我需要一个大约20毫秒宽的单发方波。 我还没有找到一个简单的自治代码示例来实现这一点

没有外部库,只有几行代码 这能做到吗?在运行DOS的IBMXT上很容易做到这一点。 我用创造性的关键词做了一次扩展搜索,但什么也没找到

我看到一个暗示,一个人可以在本地构造一个声音 正在替换…数据。。。根据实际数据:

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构造函数,而不是所有主流浏览器都支持的传统方法?要完成这样一件简单的事情,代码太多了。但它奏效了。谢谢