是否可以使用createjs加载midi文件?

问题描述

我正在开发一个需要加载 MIDI 文件作为其功能的一部分的 createjs 应用程序。然后我打算使用 midiplayer.js 来播放文件。但是,我找不到任何使用 createjs 加载 midi 文件的示例。似乎我想将它作为二进制文件加载,然后将它作为 ArrayBuffer 提供给 midiplayer.js,它可以处理。我被困在如何在 createjs 中读取 BINARY 文件类型。这是我正在尝试做的一些示例代码

let queue = new createjs.LoadQueue();
queue.on("complete",assets_loaded);
queue.on("fileload",handle_file_load);
queue.loadManifest([
{id: "bach_score",src: "Bach_score.png"},{id: "football_stage",src:"Football.png"},{id: '1badbar1s',src: "exampleplayer/e1/1badbar1.mid",type: createjs.Types.BINARY}]);

一切似乎都很顺利。没有错误报告。我可以用这样的一行加载图像文件而不会出现任何问题:

let new_image = new createjs.Bitmap(queue.getResult("bach_score));

但是,我找不到如何加载二进制文件的示例。任何帮助表示赞赏。

所以这里有一个更新。看来我需要指定这是二进制类型。 (我在上面添加了)。然后这应该调用 binaryLoader 类并给我我想要的东西。但是,它似乎不起作用。这可能是 createjs 中的错误吗?

###进一步更新:4/16/21

我仔细研究了 createjs 代码并意识到发生了什么。由于我的文件的扩展名是 .mid(midi 文件)soundjs 声称正在处理该文件。列出的扩展名之一是 .mid 作为 line 363 of sound.js 上的 SUPPORTED_EXTENSION。这会检查浏览器是否支持 midi 文件,但不支持。我必须为此找到解决方法

解决方法

其实我已经想通了。这是 createjs 中的一个错误(在我看来)。 soundjs 模块说它可以处理 .mid 文件 (midi),但随后会检查浏览器,如果浏览器无法处理它,则将其标记为 false。因此,它做出了无法兑现的承诺。我只用几行代码就可以修复它。它结束将文件作为原始二进制文件上传,您必须从那里处理它。 GitHub for SoundJS

提供了更详细的说明