【问题标题】:Is it possible to play synthesized sound in the browser using JavaScript?是否可以使用 JavaScript 在浏览器中播放合成声音?
【发布时间】:2010-12-11 12:14:12
【问题描述】:

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

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

【问题讨论】:

    标签: javascript audio emulation synthesis


    【解决方案1】:

    我想你最好的办法是让 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。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

          【解决方案4】:

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

          在实践中,Steven Wittens 实际上已经产生了这种技术的demoencodeAudio8bitencodeAudio16bit 函数是神奇发生的地方。

          【讨论】:

            猜你喜欢
            • 2023-03-04
            • 2011-10-13
            • 2015-06-20
            • 2020-11-14
            • 1970-01-01
            • 1970-01-01
            • 2017-03-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多