我想在javascript中生成一系列MIDI音符,然后播放它。许多插件支持MIDI,但我不知道任何支持“data:”URL。生成MIDI内容并不是什么大问题 - 但是将这些内容提供给播放器就是。任何人都知道如何做到这一点 - 如果不是一般,那么至少对于像QuickTime这样的特定插件?
答案 0 :(得分:4)
非常整洁的问题。我最近一直在使用base64编码的图像,并经常使用http://www.greywyvern.com/code/php/binary2base64进行图像编码。我只是尝试转换MIDI文件并将base64文本流放入HTML中,它在Firefox中播放得很好(这令我很惊讶)。这是代码(为简洁起见,删除了Base64流):
<embed
autostart="true"
loop="false"
volume="100"
hidden="false"
src="data:audio/x-midi;base64,abc...."
></embed>
我不确定在JS中可以从二进制图像转到base64,但我怀疑从MIDI转发可能是。这是一个开始。
答案 1 :(得分:2)
您可能想查看我的以下博文。它是关于一个库,它完全按照你要做的,客户端。请注意,浏览器中的跨浏览器MIDI重现性并不是非常一致。
http://sergimansilla.com/blog/dinamically-generating-midi-in-javascript/
答案 2 :(得分:1)
听起来最简单的方法是将MIDI数据传递到例如一个PHP脚本,然后返回输入。 然后你可以用“yourscript.php?your-midi-data”代替“data:your-mini-data”。
答案 3 :(得分:1)
除了使用Javascript(参见Sergi的帖子)之外,您还可以使用Java作为我的Javascript to Java桥接器的后备方法,公开部分MIDI框架:http://mudcube7.blogspot.com/2010/08/dynamic-midi-generation-in-browser.html
答案 4 :(得分:1)
带有数据网址的QuickTime适用于Firefox和Chrome(最新版本,没有测试版)您必须按照quicktime website的说明操作:通过调用QT_WriteOBJECT
函数初始化QuickTime(我必须提供初始有效的src)指向Beethoven的mp3文件,只是为了防止它抱怨 - 也许没有必要),在所述引用中详细注册监听器,并在获得回调qt_load后,调用document.movie1.SetURL(myDataURL)
方法。我在数据网址中使用了base64编码:"data:audio/midi;base64,..."
。 (内容由javascript生成)。一切都工作得很好:Play(),Stop()等等。最困难的部分是阅读他们的纪念文档(注意它也有“HTML”部分)