我刚开始使用midi.js,到目前为止看起来真的很整洁。我目前正在加载所有声音字体:
MIDI.loadPlugin({
soundfontUrl: "js/MIDI/soundfont/FluidR3_GM/",
instrument: instruments,
callback: function() {
app.MIDIManager.midiLoaded = true;
console.log("DONE LOADING");
}
});
随着仪器阵列的增长,它开始需要相当长的时间才能完成加载。有没有办法只在需要时动态加载仪器?我可以找到加载仪器的唯一方法是调用loadPlugin。我也找不到任何全面的API文档(我查看了演示页面和github),所以如果我错过了,我会喜欢完整文档的链接。
答案 0 :(得分:1)
您可以使用MIDI.loadResource
动态加载乐器(我发现通过GitHub上的js/midi/loader.js
代码查找的未记录的函数)。
例如,下面的代码在通道1上添加了一个班卓琴,假设您想要在通道0上保留以前加载的乐器。
loadInstrument('banjo')
function loadInstrument(instrumentName) {
MIDI.loadResource({
instrument: instrumentName,
onprogress: function(state, percent) {
console.log(state, percent);
},
onsuccess: function() {
MIDI.programChange(1, MIDI.GM.byName[instrumentName].number);
}
})
}