是否可以使用JavaScript在浏览器中播放合成声音?

时间:2009-10-30 05:01:51

标签: javascript audio emulation synthesis

我刚刚在互联网上遇到Nintendo emulator written entirely in JavaScript,但它没有声音。它让我想到:有没有办法在浏览器中使用JavaScript合成声音然后播放它?如果一般情况下不可能,那么有没有Safari / Opera / FireFox / IE / Etc。可以实现的扩展吗?

我不是在询问合成声音的技巧,只是用于播放由浏览器中运行的代码合成的声音的技术。

4 个答案:

答案 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这种技术。 encodeAudio8bitencodeAudio16bit函数是神奇发生的地方。