How do you transfer the midi file?

I use this MIDI.js library: https://github.com/mudcube/MIDI.js

To download the plugin and play the midi file, I do this:

window.onload = function () {
    MIDI.loadPlugin({
        soundfontUrl: "./soundfont/",
        instruments: [ "acoustic_grand_piano" ],
        callback: function() {
            MIDI.programChange(0, 0);   
                    _player = MIDI.Player;

        }
    });

};

function playSong(){            
        _player.timeWarp = 1; // speed the song is played back
        _player.loadFile(song[songid], _player.start);

        _player.addListener(function(data) {
            var now = data.now; // where we are now
            var end = data.end; // time when song ends
            var channel = data.channel; // channel note is playing on
            var message = data.message; // 128 is noteOff, 144 is noteOn
            var note = data.note; // the note
            var velocity = data.velocity; // the velocity of the note


        });
}

var songid = 0;
var song = ['data:audio/mid;base64,TVRoZAAAAA...

My question is, is there any transposition of this MIDI file before the game? Basically I want to parse a midi file (either a .mid file, or base64 format), change all notes to +1 and then send it to the player. Any way to do this in javascript?

+3
source share
1 answer

, , . , MIDI.js , . , .

  • addListener . , , .. , .
  • , javascript. jasmid.
  • , , , . . , - , .

, .

EDIT: , , , https://github.com/gasman/jasmid/blob/master/midifile.js. , , 155

case 0x09:
    event.noteNumber = param1;
    event.velocity = stream.readInt8();
    if (event.velocity == 0) {
        event.subtype = 'noteOff';
    } else {
        event.subtype = 'noteOn';
    }
    return event;

, , , 227

while (!trackStream.eof()) {
    var event = readEvent(trackStream);
    tracks[i].push(event);
0
source

All Articles