The norns is a portable linux-based sound computer.

Typically, one uses it with special software. matronis the control system, and crone is the audio system (built on top of SuperCollider). maiden is an editor used to create scripts for the norns. Scripts are written in lua.

How to connect via serial

screen can bit a bit flaky sometimes when connecting to the norns. minicom is a better option.

minicom -D /dev/ttyUSBN

Usually, it is /dev/ttyUSB2 for me, because the grid + arc are already plugged in.

When in there, Ctrl-a o to get to hardware options, then serial port setup.

Hit 'f' to disable hardware control flow. I think I had to do this to make it possible to type?

Exit out of the menu with escape.

Monolith + Norns


A version of monolith has been ported to the norns as a replacement to the default backend.

The monolith norns port still runs on Linux and uses JACK to connect to audio, but implements it's own polling polling thread for listening for encoder/button events, as well as an interface for handling drawing onto the framebuffer. Instead writing lua code in Maiden, scheme and janet code is written using emacs.

Future Plans

Future plans as of [2020-07-26 Sun 11:32].

Monolith works on the norns now.

Most of the easy and obvious stuff has been done already. The next frontier is now actually being productive on the norns. Being able to compose, explort, etc.

This is a personal challenge for me because the norns is right next to my laptop. So, what does the norns do that the laptop can't do? They run pretty much identical software.

Exploring the form factor and natural affordances of the norns is going to be important in discovering what to build for it.

WIP Compiling Monolith for norns

A bit of an ordeal at the moment. Sorry about that. Will be less bumpy in the future. Still trying figure things all out.

TODO Making the "norns" folder inside monolith

And what should be inside

TODO config file for norns

TODO Compiling Runt

Make sure has the following compilers set.


Run make, then copy

runt.h to NORNS/include

librunt.a to NORNS/lib

Compiling Patchwerk

The gist of this.

Make sure you have ctangle installed.

Tangle patchwerk.c with "make patchwerk.c".

go into the runt folder.

Make sure you have a config file that looks like this:

CC = arm-linux-gnueabihf-gcc
AR = arm-linux-gnueabihf-ar

CFLAGS += -I$(HOME)/proj/monolith/norns/include

# override default LIBS
LIBS = -L$(HOME)/proj/monolith/norns/lib
LIBS += -lsoundpipe -lm -lrunt -lpthread

Should be called, if called something else, like, make sure CONFIG environment variable is properly set.

~/proj/monolith/norns/include should be the folder where you are putting files (runt is needed to be compiled first to work).

Run make.

Copy the following files to your norns folder:

librunt_patchwerk.a to NORNS/lib

runt_patchwerk.h to NORNS/include runt_ftbl.h to NORNS/include ../patchwerk.h to NORNS/include

libpatchwerk.a is NOT needed, as it is baked into librunt_patchwerk.a

TODO Compiling Soundpipe

TODO Compliling Monolith

TODO Monolith Linux configuration

Ideal things.

TODO Setting Up Buildroot + Image

More or less was a pretty standard buildroot, with the norns buildroot configs.

TODO Setting up SSH + SCP

At the time of writing, these weren't included with the buildroot image, so I had to compile manually. I used dropbear, which also had an scp implementation included.

TODO Startup Files

Systemd stuff, and some shell scripts I use.

home | index