Specifications for music representations that are used in various applications by Music Artificial Intelligence Algorithms, Inc.

Installation, usage, and contributing

This repository contains specifications in JSON format, so there is no need/point for installation/usage guidance. See links in subsequent sections (e.g., under Composition object) for interfaces where it is possible to experiment with the representations.

We encourage use of the representations specified here (within the terms of the GNU General Public License), and visitors are welcome to post feature requests and issues to the issue tracker.

There are many other music representations out there. Those in this repository are motivated by wanting representations that (1) are in JSON format, (2) support collaboration in and evolution of musical activity, (3) bridge the audio-symbolic gap, and (4) promote research in music computing.

Composition object

Encodes when sounds will be triggered and how they will appear visually.

Fairly traditional approach to the representation of a song or piece of music. Can be rendered conveniently as piano roll or sheet music. For examples, see here for piano roll (playback rendered using Tone.js, Firefox recommended) and here for the corresponding sheet music (notation rendered using VexFlow).

Instrument object

Encodes what sounds will be triggered. We have not finished the specification for the Instrument object yet, although it is used already, e.g. in the Jam! interface.


Other representations will be published here in due course. We know we are overlooking many ways of making and interacting with music right now (audio routing, visual programming, mixing, DJ'ing to name a few).

See also

Release history

  • 0.0.0 Initial release


music representations