是否可以使用javascript / html5生成恒定的声音流?例如,要生成一个永久的正弦波,我将有一个回调函数,只要输出缓冲区即将变空,就会调用该函数:
function getSampleAt(timestep)
{
return Math.sin(timestep);
}
(想法是使用它来制作交互式合成器。我事先不知道按键会被按下多久,所以我不能使用固定长度的缓冲区)
最佳答案
使用HTML5音频元素
像史蒂文·维滕斯(Steven Wittens)notes in a blog post on creating a JavaScript synth:一样,目前无法使用JavaScript和audio
元素跨浏览器生成持续音频
"...there is no way to queue up chunks of synthesized audio for seamless playback".
使用网络音频API
Web Audio API旨在促进JavaScript音频合成。 Mozilla开发人员网络中的Web Based Tone Generator可在Firefox 4+中使用[demo 1]。将这两行添加到该代码中,并在按键时就具有生成持续音频的有效合成器[demo 2-仅在Firefox 4中有效,请首先单击'结果'区域,然后按任意键]:
window.onkeydown = start;
window.onkeyup = stop;
英国广播公司的page on the Web Audio API也值得回顾。不幸的是,对Web Audio API的支持还没有扩展到其他浏览器。可能的解决方法
目前,要创建跨浏览器的合成器,您可能必须依靠以下方法来回退预先录制的音频:
audio
元素中,并在按键时启动和停止它们。 关于javascript - 使用javascript/html5即时生成声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41510378/