This module is parsing midi files into a human-readable JSON object.
npm install midi-json-parserThis module is parsing midi files into a human-readable JSON object.

This module parses a binary MIDI file and turns it into a JSON representation. This JSON representation can then for example be used to pass it on to the midi-player. It can also be encoded again as a binary MIDI file using the json-midi-encoder.
This module is available on npm and can be
installed by running the following command:
``shell`
npm install midi-json-parser
Once the module is installed you can use its one and only function as shown in the example below:
`js
import { parseArrayBuffer } from 'midi-json-parser';
// Let's assume there is an ArrayBuffer called arrayBuffer which contains the binary content of a
// MIDI file.
parseArrayBuffer(arrayBuffer).then((json) => {
// json is the JSON representation of the MIDI file.
});
`
In case you are comfortable with TypeScript, this is the interface which describes the JSON
representation:
`typescript
interface IMidiFile {
division: number;
format: number;
tracks: TMidiEvent[][];
}
`
The type
TMidiEvent
is a union of all possible MIDI events. Here is the complete list of all MIDI events this module can handle:
- IMidiChannelPrefixEvent
- IMidiChannelPressureEvent
- IMidiControlChangeEvent
- IMidiCopyrightNoticeEvent
- IMidiDeviceNameEvent
- IMidiEndOfTrackEvent
- IMidiInstrumentNameEvent
- IMidiKeyPressureEvent
- IMidiKeySignatureEvent
- IMidiLyricEvent
- IMidiMarkerEvent
- IMidiMidiPortEvent
- IMidiNoteOffEvent
- IMidiNoteOnEvent
- IMidiPitchBendEvent
- IMidiProgramChangeEvent
- IMidiProgramNameEvent
- IMidiSequencerSpecificEvent
- IMidiSetTempoEvent
- IMidiSmpteOffsetEvent
- IMidiSysexEvent
- IMidiTextEvent
- IMidiTimeSignatureEvent
- IMidiTrackNameEvent
- IMidiUnknownTextEvent`
Developing this module wouldn't have been possible without all the great resources out there. The
following list tries to mention a few of them:
- A detailed specification of the MIDI file format as HTML: Standard MIDI-File Format Spec. 1.1, updated and PDF: Standard MIDI-File Format Spec. 1.1, updated
- A brief description of the MIDI file format: Outline of the Standard MIDI File Structure
- A blog post about the timing information in MIDI files: Timing in MIDI files
- An explanation of the concept called running status: Running Status
- Actually a documentation for a Python library, but it also contains extensive information on MIDI messages itself: Mido - MIDI Objects for Python
- Very detailed information on meta messages, but also on many other non MIDI related audio topics as well: RecordingBlogs.com Wiki
- A JavaScript MIDI parser and synthesiser: jasmid - A Javascript MIDI file reader and synthesiser and its excluded parser: midi-file-parser
- A complete MIDI app which also contains a parser: MIDI.js
- A very similar parser but for Node.js only MIDI Converter
- A parser for converting MIDI into a JavaScript object which can also turn it back into a binary MIDI file again: MIDIFile