2010-05-03 114 views
7

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

回答

1

听起来最简单的方法是将MIDI数据传递给一个PHP脚本,然后返回输入。 然后您可以使用“yourscript.php?your-midi-data”而不是“data:your-mini-data”。

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去可能。这是一个开始。

2

你可能想看看我的以下博客文章。这是关于一个图书馆,正是你所要做的,客户端。请注意,浏览器中的跨浏览器MIDI再现性并不是真的一致,但。

http://sergimansilla.com/blog/dinamically-generating-midi-in-javascript/

+0

Sergi,你的解决方案似乎不能解决主要问题。如果使用“嵌入”或“对象”,则无法控制播放。 QuickTime界面解决了这个问题。你可以从JavaScript完全控制它,甚至可以动态地生成和添加东西。它适用于数据网址。这是原始问题的一个重点。 – shurik 2011-01-29 11:58:42

1

的QuickTime数据url和Firefox和Chrome一起工作(最近发布,没有测试版)你必须遵循quicktime website的指示:通过调用QT_WriteOBJECT函数初始化QuickTime函数(我必须提供指向Beethoven mp3文件的初始有效src,以防止抱怨 - 也许这是没有必要的),注册听众详细说明在所述在获得回调函数qt_load后,调用document.movie1.SetURL(myDataURL)方法。我在数据url中使用了base64编码:"data:audio/midi;base64,..."。 (内容是由javascript生成的)。所有事情都很奏效:Play(),Stop()等等。最难的部分是阅读他们的纪念文档(注意它也有“HTML”部分)

+0

链接不好... – milesaron 2016-12-23 03:15:45