Globally Editable Musical/Matrix Sequencer.

GEMS's minimalist aesthetic was noteably inspired by the Monome grid, Norns, TE's OP-Z, and many others.

Global controls

GRID: Any changes to the matix/grid are propogated to others on the same page.

CLEAR MATRIX: clears the matrix/grid. The matrix/grid is also reset for others on the same page.

Local controls

Any changes to the following "local controls" will be reflected in one's own browser only.

  • ADSR: controls the shape of the audio waveform.
  • TEMPO: The BPM or speed of the grid.
  • DELAY: adjust the amount of delay (dry/wet).
  • Reverb: adjust the amount of reverb (dry/wet).
  • KEY: base note (bottom of the matrix).
  • SCALE: the scale starting from the "key" (above).
    • major
    • minor
    • minor harmonic
    • minor melodic

Distributed Hosting

For the sake of real-time responsivity, GEMS is hosted around the world (Japan, Seattle, Amsterdam, etc.) in a distributed cluster. This is all easily made possible with FLY.IO. Also shoutout to libcluster and Erlang.

The Region ID you're connected to is:

Refer to these docs to translate Region ID to a location.


The code for the project is available here.

Notable mentions

  • Tone.js team for creating such an easy to use audio library
  • Lee for advice on music theory