Динамическая загрузка шрифтов 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 ответ

Вы можете загрузить инструмент динамически с MIDI.loadResource (недокументированная функция, которую я обнаружил, просматривая js/midi/loader.js код на GitHub).

Например, приведенный ниже код добавляет банджо на канал 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);
    }
  })
}
Другие вопросы по тегам