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