Constellations, a sequencer project


Constellations is a script I have been working on for the Monome Norns ecosystem. For those unfamiliar with Monome and their wonderful world of open-source audio devices and interfaces please visit, just good people doing things.

Constellations is a sequencer that runs on the Norns or Norns Shield. The initial inspiration came when I was working on Offworld, when I realized how potent the visual tag + pointer is as a "signifier" for a user interface. Though I am out of the eurorack (modular synthesizer) loop at this point, one of the few modules I really appreciated was Mutable Instruments Marbles (as a random generator of musical information, as an interface I'm actually not sure how I feel about it). Constellations is deeply inspired by this work. Spread + bias + scale + length is a ton of control for a somewhat "random sequencer".

The interface and logic for a Norns script is done in Lua, a simple language I quite enjoy and appreciate. Though it is simple; through its tables, metatables, first-class functions it can be developed with an object oriented or functional approach. Working in Lua and Javascript a bunch at the same time actually helped me reinforce my understanding of both the Lua table and the Javascript object as a flexible piece of data.

Unlike my first attempt at a Norns' script, Raft, I wanted to take this opportunity to do a better job at structuring my Lua project by breaking it up across different namespaces in order to make it easier to read and change. Reminds me that 'Easy to Change' code can be more important than 'Don't Repeat Yourself' code.

As a nearly-but-not-quite-fanatic vim user, I came up a with a nice workflow for developing norns scripts.

  1. SSH in norns in one terminal window, with my local copy (contained to Github) in another window.
  2. Make a new branch for the features I am working on git push origin name-of-branch
  3. In the SSH session navigate to the correct directory for the script and the git pull origin name-of-branch.
  4. You can then type maiden repl and rerun the script to get the new development pull running on your norns.
  5. Rinse and repeat.

This probably a little hacky, but I'm still learning these type of workflows. I initially tried to set up my vimrc on the Norns itself, but found it a little less consistent and slower than developing on my own machine. This workflow is wayyyyy more reliable than relying on maiden in the browser as a development platform.

I have really enjoyed the process of taking community ideas and implementing them. Makes me excited to work with teams to develop software. A fresh perspective can add so much, especially when much of my process up until this point as been solo.

To join in the discussion check out the thread on lines.