The core library implements a graph object model for audio - we are calling this the audio graph. The audio graph can be constructed out of a collection of audio-objects and connections that links the audio-objects together.


The audio object is a wrapper on the Web Audio API. These objects are the building blocks of an audio graph.


The soundio-object-template repository contains a plugin template to build custom plugins. The audio variable in the constructor contains a reference to the Audio Context.


MIDI abstracts the Web MIDI API. It contains a normalize function that converts MIDI format to Music JSON which is used internally.


Maps the web audio absolute time to a Clock time using rates.


Maps the clock time to the Sequence time.


var soundio = Soundio();
var sampler = soundio.objects.create('sample');
// soundio.objects = [
//  {id; 0, type: 'sample'}
sampler.trigger(0, 'noteon', 64, 127);

Sample map

A sample map maps notes across the keyboard and the velocity range.

Music JSON

Music JSON is an interchangeable MIDI format of the web.


Scribe is a parser for Music JSON to create lead sheets in SVG.