在javascript中生成MIDI

时间:2010-05-03 22:00:33

标签: javascript quicktime midi data-url

我想在javascript中生成一系列MIDI音符,然后播放它。许多插件支持MIDI,但我不知道任何支持“data:”URL。生成MIDI内容并不是什么大问题 - 但是将这些内容提供给播放器就是。任何人都知道如何做到这一点 - 如果不是一般,那么至少对于像QuickTime这样的特定插件?

5 个答案:

答案 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”部分)