9

我想在 javascript 中生成一系列 MIDI 音符,然后播放它。许多插件支持 MIDI,但我不知道任何支持“数据:”URL。生成 MIDI 内容没什么大不了的——但是将这些内容输入播放器才是。任何人都知道如何做到这一点 - 如果不是一般情况下,那么至少对于 QuickTime 这样的特定插件?

4

5 回答 5

5

非常整洁的问题。我最近一直在使用 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 转换。这是一个开始。

于 2010-05-12T14:59:39.113 回答
2

您可能想看看我的以下博客文章。它是关于一个库,它可以在客户端完成您正在尝试做的事情。但请注意,浏览器中的跨浏览器 MIDI 再现性并不是真正一致的。

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

于 2010-11-09T10:05:12.777 回答
1

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

于 2010-05-04T14:41:42.603 回答
1

除了使用 Javascript(参见 Sergi 的帖子)之外,您还可以使用 Java 作为我的 Javascript 到 Java 桥的后备方法,它公开了 MIDI 框架的部分:http: //mudcube7.blogspot.com/2010/08/dynamic-midi -generation-in-browser.html

于 2010-11-10T08:10:41.297 回答
1

带有数据 url 的 QuickTime 适用于 Firefox 和 Chrome(最新版本,无测试版)您必须遵循quicktime 网站的说明:通过调用函数初始化 QuickTime QT_WriteOBJECT(我必须提供指向贝多芬的 mp3 文件的初始有效 src,只是为了防止它抱怨-也许没有必要),按照上述参考中的详细说明注册侦听器,并在获得回调 qt_load 后,调用document.movie1.SetURL(myDataURL)方法。我在数据 url: 中使用了 base64 编码"data:audio/midi;base64,..."。(内容由 javascript 生成)。一切都运行得非常好:Play()、Stop() 等。最困难的部分是阅读他们不朽的文档(请注意,它也有“HTML”部分)

于 2011-01-27T03:42:00.430 回答