动态加载midi.js声音字体

Mik*_*012 5 javascript midi soundfont midi.js

我刚刚开始使用midi.js,到目前为止,它看起来确实很整洁。我目前正在像这样一次加载所有声音字体:

    MIDI.loadPlugin({
    soundfontUrl: "js/MIDI/soundfont/FluidR3_GM/",
    instrument: instruments,
    callback: function() {
        app.MIDIManager.midiLoaded = true;
        console.log("DONE LOADING");
    }
});
Run Code Online (Sandbox Code Playgroud)

随着仪器阵列的增加,开始需要花费一些时间来完成加载。有没有一种方法可以仅在需要时动态加载仪器?我可以找到加载乐器的唯一方法是对loadPlugin的调用。我也找不到任何全面的API文档(我在演示页面和github上查看了),因此,如果我只是想念我想要链接到完整文档的链接。

Kai*_*ver 4

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);
    }
  })
}
Run Code Online (Sandbox Code Playgroud)