function playMidiFileAndEmitEvents(jqueryCallback) {
let ac = new AudioContext();
var stopCallback;
SoundFontPlayer.instrument(ac, 'acoustic_grand_piano').then(function(piano) {
var Player = new MidiPlayer.Player(function(event) {
if (event.name == 'Note on') {
piano.play(event.noteName, ac.currentTime, {
gain: event.velocity / 100
});
if (jqueryCallback) {
jqueryCallback(event.noteName);
}
}
});
Player.loadArrayBuffer(theme);
Player.play();
stopCallback = () => piano.stop();
});
return stopCallback;
}