UNPKG

json-midi-encoder

Version:

This module encodes a JSON representation of MIDI data into a binary MIDI file.

56 lines (44 loc) 1.89 kB
# json-midi-encoder **This module encodes a JSON representation of MIDI data into a binary MIDI file.** [![version](https://img.shields.io/npm/v/json-midi-encoder.svg?style=flat-square)](https://www.npmjs.com/package/json-midi-encoder) By using this module it is possible to encode a JSON representation of a MIDI file into its binary counterpart. That JSON representation can either be created from scratch or produced by parsing an existing file with the [midi-json-parser](https://github.com/chrisguttandin/midi-json-parser). ## Usage This module is distributed as package on [npm](https://www.npmjs.com/package/json-midi-encoder). It can be installed by running the following command: ```shell npm install json-midi-encoder ``` The only exported function is called `encode()`. It expects to receive a JSON representation as its only parameter. It returns a Promise which hopefully resolves with an ArrayBuffer containing the binary MIDI file. Here is a little example. ```js import { encode } from 'json-midi-encoder'; const json = { division: 480, format: 1, tracks: [ [ { delta: 0, trackName: 'example' }, // ... there are probably more events ... { delta: 0, endOfTrack: true } ] // ... maybe there are more tracks ... ] }; encode(json).then((midiFile) => { // midiFile is an ArrayBuffer containing the binary data. }); ``` To see what kind of events this module can handle, you may want to have a look at the [JSON files](https://github.com/chrisguttandin/json-midi-encoder/tree/master/test/fixtures) used to test this module. There is also a [TypeScript interface](https://github.com/chrisguttandin/midi-json-parser-worker/blob/master/src/interfaces/midi-file.ts) which describes the JSON representation.