这里有一个超级简单的例子,我正在尝试在Chrome的iphone上运行。其他的web音频API示例,比如这个http://alxgbsn.co.uk/wavepad/work,但不包括我的:(
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script>
var audioContext, osc
audioContext = new (window.AudioContext || window.webkitAudioContext);
osc = audioContext.createOscillator()
osc.connect(audioContext.destination)
if (osc.noteOn) osc.start = osc.noteOn
osc.start(0)
osc.frequency.value = 440
</script>
</body>
</html>
知道怎么了吗?
编辑
总结一下答案:
iOS只允许您在用户操作后使用Web Audio API开始播放声音。
尝试将该代码放入某种事件处理程序中。
var elem = document.getElementById('play'),
audioContext = new (window.AudioContext || window.webkitAudioContext),
osc = audioContext.createOscillator();
osc.connect(audioContext.destination);
if (osc.noteOn) osc.start = osc.noteOn
osc.frequency.value = 440;
play.addEventListener('click', function() {
osc.start(0);
}, false);
当使用web audio API制作振荡器时,我总是听到当停止它时的咔嗒声。我四处寻找,但没有一个解决办法对我有效。我尝试了所有的实现从我如何避免这种‘咔哒’声音时,我停止播放一个声音?和更多 我读到一个解决方案是等待下一个零振幅值,然后立即停止播放。有没有一种方法可以使用web audio API做到这一点? 我正在考虑为我的项目切换到Tone.js,因为声音不需要点击就可以播放。他们是如何解决
在下面的代码中,我希望在每次按下按钮元素时创建一个分配给o的新振荡器节点,允许多次按下,从而在440处产生多个1秒音调。然而,我发现这个按钮只能按一次以产生一个音调,之后它就会消失,就好像我没有创建新的振荡器节点一样。我正在学习JavaScript,我怀疑它一定是一些微不足道的东西。有人有主意吗? 编辑: 刚找到这个问题解决了这个问题。解决方案是将audio_context.currentTime
在执行此代码时,我会得到这样的错误:“Uncattle TypeError:Failed to execute'linear ramptoValueAtTime'on'AudioParam':The provided double value is non-finite”。 &如果替换ac.endTime只是endTime-“endTime未定义”,则发生错误。也许有人能解释为什么会这样?谢谢
我正在尝试添加AnalyserNode并将输出声音可视化到我制作的web音频示例中,但我不知道如何实现。我想我没有将正确的源传递给分析器(?) 完整代码如下:https://jsfidle.net/kepin95043/1ub0sjo3/ 谁能帮我找出我做错了什么?提前感谢! PS:用火狐打开吧。对我来说在基于Chromium的浏览器上不起作用。 下面是一个工作示例:https://codepen
在使用Opera44.0时,我正在摆弄音频API,并尝试了一个简单的示例: 它按预期工作,声音播放2秒,然后停止。 然后我试着往上走一点,当一个按钮被点击时播放一个声音: 不管用.单击按钮时调用函数(我在函数中使用进行了检查),但不播放任何声音。我尝试刷新页面,重新启动浏览器..什么都没有。 经过一些研究,我发现当调用时,振荡器会被丢弃,因此每次都必须创建一个新的振荡器。我发现的几乎所有示例都围绕
振荡器是一个重复波形,它有一个频率和峰值幅度。振荡器的最重要的特征之一,除了它的频率和振幅之外,是波形的形状。四种最常用的振荡器的波形是正弦、方形、三角、锯齿。 它也可以创建自定义形状。不同的形状适合不同的合成技术并产生不同的声音,有从平滑的到刺耳的。 网络音频接口以“OscillatorNode(振荡器节点)”为单位进行波形重复。我们可以像下面这样利用分配属性值来达到上图所示的这些波形: Os