gpt4 book ai didi

javascript - 使用javascript/html5即时生成声音

转载 作者:行者123 更新时间:2023-12-03 01:48:44 25 4
gpt4 key购买 nike

是否可以使用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的支持还没有扩展到其他浏览器。
可能的解决方法
目前,要创建跨浏览器的合成器,您可能必须依靠以下方法来回退预先录制的音频:
  • 使用预先录制的较长的ogg / mp3采样音,将它们嵌入单独的audio元素中,并在按键时启动和停止它们。
  • 嵌入包含音频元素的swf文件,并通过JavaScript控制播放。 (这似乎是Google Les Paul Doodle使用的方法。)
  • 关于javascript - 使用javascript/html5即时生成声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41510378/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com