4

我刚刚在互联网上遇到了一个完全用 JavaScript 编写的任天堂模拟器,但它没有声音。这让我想到:有没有办法在浏览器中使用 JavaScript 合成声音然后播放?如果一般情况下不可能,那么是否有任何 Safari/Opera/FireFox/IE/Etc。使之成为可能的扩展?

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

4

4 回答 4

3

我想你最好的选择是让 Javascript 使用 ExternalInterface ( http://www.adobe.com/devnet/flash/articles/external_interface.html ) 与 Flash 对话。Flash 现在有一种在声音缓冲区和通用 ByteArray 类之间传输数据的方法。

http://www.adobe.com/devnet/flash/articles/dynamic_sound_generation/

您可以使用 Flex SDK http://www.adobe.com/products/flex/免费开发 Flash 。

于 2009-10-30T05:09:14.373 回答
2

大多数开发人员在希望使用 JavaScript 将声音添加到他们的应用程序时会使用SoundManager 2 。它具有钩子,因此 JavaScript 可以与 Flash 8 和 9 功能交互。我不确定它是否暴露了使用字节数据的能力,我猜你正在追求,我从来没有处理过这个问题。

于 2009-10-30T05:33:11.267 回答
2

原来NES模拟器的作者找到了一个动态音频库:

https://github.com/bfirsh/dynamicaudio.js

我还没有尝试过,但文档看起来很有希望:

var dynamicaudio = new DynamicAudio({'swf': '/static/dynamicaudio.swf'})

写(样本);// 播放 -1.0 到 1.0 范围内的浮点音频样本数组。

于 2011-07-19T14:58:36.870 回答
1

理论上,应该可以合成声音,然后让浏览器使用数据 URL 播放它们。

在实践中,Steven Wittens 实际上已经制作了这种技术的演示encodeAudio8bitencodeAudio16bit函数是魔法发生的地方。

于 2012-11-16T23:24:57.930 回答