grimmdude / MidiPlayerJS

♬ MIDI parser & player engine for browser or Node. As a parser converts MIDI events into JSON. Works well with single or multitrack MIDI files.
https://grimmdude.com/MidiPlayerJS/
MIT License
357 stars 52 forks source link

Getting Key and Time Signatures, Transposition #17

Closed tjvg91 closed 6 years ago

tjvg91 commented 6 years ago

How do you get the key and time signatures? Can I transpose to a different key?

grimmdude commented 6 years ago

Hi @tjvg91,

Currently key & time signatures aren't implemented, I will work on that as soon as I get a chance. As far as transposing, you can handle this at your application level. Here's an example:

var MidiPlayer = require('midi-player-js');

// Initialize player and register event handler
var Player = new MidiPlayer.Player(function(event) {
    switch (event.name) {
        case 'Note on':
            // This is a note event, you can transpose here as needed.
            // Here's an example of transposing up a half step
                        // You would assumably use this information to trigger an audio event.
            console.log(event.noteNumber + 1);
            break;
    }
});

// Load a MIDI file
Player.loadFile('./test.mid');
Player.play();
grimmdude commented 6 years ago

I just added support for key signatures and time signatures in 2.0.2. Let me know if you have any issues,

-Garrett

tjvg91 commented 6 years ago

Thanks. Will try it out. Is it in npm too?

grimmdude commented 6 years ago

Yep, it's updated in npm.