动态加载midi.js声音字体

时间:2015-02-19 19:18:59

标签: 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");
    }
});

随着仪器阵列的增长,它开始需要相当长的时间才能完成加载。有没有办法只在需要时动态加载仪器?我可以找到加载仪器的唯一方法是调用loadPlugin。我也找不到任何全面的API文档(我查看了演示页面和github),所以如果我错过了,我会喜欢完整文档的链接。

1 个答案:

答案 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);
    }
  })
}