Skip to content

♬ MIDI parser & player engine for browser or Node. As a parser converts MIDI events into JSON. Works well with single or multitrack MIDI files.

License

Notifications You must be signed in to change notification settings

grimmdude/MidiPlayerJS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b15c24d · Dec 5, 2022
Feb 14, 2022
Nov 30, 2017
Sep 13, 2021
Sep 13, 2021
Sep 13, 2021
Sep 13, 2021
Sep 13, 2021
Feb 1, 2021
Dec 5, 2022
Feb 14, 2022
May 11, 2020
Feb 10, 2018
Dec 4, 2022
Sep 13, 2021
May 11, 2020
Feb 14, 2022
Sep 13, 2021
May 11, 2020
Sep 13, 2021

Repository files navigation

♬ MidiPlayerJS

npm version Build Status

MidiPlayerJS is a JavaScript library which reads standard MIDI files and emits JSON events in real time. This player does not generate any audio, but by attaching a handler to the event emitter you can trigger any code you like which could play audio, control visualizations, feed into a MIDI interface, etc.

Demos

Getting Started

Using MidiWriterJS is pretty simple. Create a new player by instantiating MidiPlayer.Player with an event handler to be called for every MIDI event. Then you can load and play a MIDI file.

import MidiPlayer from 'midi-player-js';

// Initialize player and register event handler
const Player = new MidiPlayer.Player(function(event) {
	console.log(event);
});

// Load a MIDI file
Player.loadFile('./test.mid');
Player.play();

Player Events

There are a handful of events on the Player object which you can subscribe to using the Player.on() method. Some events pass data as the first argument of the callback as described below:

Player.on('fileLoaded', function() {
    // Do something when file is loaded
});

Player.on('playing', function(currentTick) {
    // Do something while player is playing
    // (this is repeatedly triggered within the play loop)
});

Player.on('midiEvent', function(event) {
    // Do something when a MIDI event is fired.
    // (this is the same as passing a function to MidiPlayer.Player() when instantiating.
});

Player.on('endOfFile', function() {
    // Do something when end of the file has been reached.
});

Note that because of a common practice called "running status" many MIDI files may use Note on events with 0 velocity in place of Note off events.

Full API Documentation

http://grimmdude.com/MidiPlayerJS/docs/

About

♬ MIDI parser & player engine for browser or Node. As a parser converts MIDI events into JSON. Works well with single or multitrack MIDI files.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published