我刚刚在互联网上遇到Nintendo emulator written entirely in JavaScript,但它没有声音。它让我想到:有没有办法在浏览器中使用JavaScript合成声音然后播放它?如果一般情况下不可能,那么有没有Safari / Opera / FireFox / IE / Etc。可以实现的扩展吗?
我不是在询问合成声音的技巧,只是用于播放由浏览器中运行的代码合成的声音的技术。
答案 0 :(得分:3)
我认为你最好的办法是使用ExternalInterface(http://www.adobe.com/devnet/flash/articles/external_interface.html)让Javascript与Flash对话。 Flash现在有一种在声音缓冲区和通用ByteArray类之间传输数据的方法。
http://www.adobe.com/devnet/flash/articles/dynamic_sound_generation/
您可以使用Flex SDK http://www.adobe.com/products/flex/免费开发Flash。
答案 1 :(得分:2)
大多数开发人员在想要使用JavaScript为其应用程序添加声音时会使用SoundManager 2。它有钩子,因此JavaScript可以与Flash 8和9功能进行交互。我不确定它是否暴露了使用字节数据的能力,我想你是在追求,我从来没有处理过这个问题。
答案 2 :(得分:2)
事实证明,NES模拟器的作者找到了一个动态音频库:
https://github.com/bfirsh/dynamicaudio.js
我没有尝试过,但文档看起来很有希望:
var dynamicaudio = new DynamicAudio({'swf': '/static/dynamicaudio.swf'})
写(样本); //播放-1.0到-1范围内的浮点音频样本数组 1.0。
答案 3 :(得分:1)
理论上,应该可以合成声音,然后让浏览器使用数据URL播放它们。
在实践中,Steven Wittens实际上已经产生了demo这种技术。 encodeAudio8bit
和encodeAudio16bit
函数是神奇发生的地方。