我想在JavaScript中生成一系列MIDI音符并播放它。许多插件都支持MIDI,但我不知道有任何插件支持"data:" URL。生成MIDI内容并不是什么大问题,但将此内容提供给播放器却很困难。是否有人知道如何做到这一点 - 如果不是普遍的话,至少对于像QuickTime这样的特定插件?
<embed
autostart="true"
loop="false"
volume="100"
hidden="false"
src="data:audio/x-midi;base64,abc...."
></embed>
我不确定在JS中是否可以将二进制图像转换为base64,但我怀疑从MIDI开始可能是可行的。这是一个起点。
听起来最简单的方法是将MIDI数据传递给一个PHP脚本,然后返回输入。 然后你可以使用"yourscript.php?your-midi-data"代替"data:your-mini-data"。
使用数据URL的QuickTime可以在Firefox和Chrome(最近版本,没有测试版)中使用。您必须按照quicktime网站的说明进行操作:通过调用QT_WriteOBJECT
函数初始化QuickTime(我不得不提供指向贝多芬mp3文件的初始有效src,只是为了防止它抱怨 - 也许这不是必要的),根据所述参考注册侦听器,并在获取回调qt_load后调用document.movie1.SetURL(myDataURL)
方法。我在数据URL中使用了base64编码:"data:audio/midi;base64,..."
。(内容由JavaScript生成)。一切都运行得非常出色:Play(),Stop()等。最困难的部分是阅读他们的巨大文档(请注意,它还有“HTML”部分)