A list of links and resources for the norns hardware music platform by monome.
The community resides mostly on llllllll.co (pronounced lines).
The norns is a hardware music platform.
It's built around the idea of community: creating and sharing ideas in the form of small apps.
It allows running apps built with SuperCollider and/or softcut, a powerful live sampler / player.
In addition, Pure Data patches can also be run (see Pure Data).
It runs Linux and is built around the Raspberry Pi (processing unit + USB ports) but uses a separate low-latency audio codec chip (ADC/DAC).
For more details, see the docs and the t/Approaching: norns thread, specifically posts:
A more correct question would be "What can it be?".
Switching apps allows going into totally different contexts.
Some are inspired by existing hardware / software, others are totally new and sometimes produce very experimental (yet musical) results.
To give you some concrete examples, norns can be:
- an analogue-sounding synth with molly_the_poly, a pimped up Juno-6 emulation
- a 4 track tape recorder / looper with reels
- chainable multieffects with pedalboard
- an advanced sequencer with takt, inspired with the Electron Octatrack
- a nasty sounding sample player with timber/keys (MPC-like) timber/player (rompler-like)
For a more complete list, see the Apps section.
There are 3 variations of the norns hardware:
name | audio path | case | battery | audio monitor output | supported Raspberry Pi models | price point |
---|---|---|---|---|---|---|
norns (shop) | cleanest | 2x aluminum block (hard anodized), custom caps & buttons | ✔ | ✔ | CM3, CM3+ | $800 / $680 (b-stock) |
norns shield (shop) | clean | basic acrylic face & back plates / DIY | ❌ | ❌ | 3B, 3B+ | $200 * |
fates | clean (?) | no | ❌ | ✔ | 3B, 3B+, 4 | n/a |
*: to which must be added the price of the Raspberry Pi, micro SD card, power supply and eventually better case. So you're eventually looking more at ≃$300.
norns shield is currently the most economic version but is DIY and lacks some of the features of its big brother. It's design is open source.
fates is an unofficial open source project similar to the norns shield, predating it.
norns and norns shield use a CS4270 codec. norns uses an additional amp chip to drive a monitor (headphone) output. fates uses a WM8731 codec which embeds an headphone amp chip.
For getting help regarding the assembly or even please use t/DIY: norns shield.
The case provided in kits is pretty minimal. People share their design of more rugged version in t/norns shield case designs.
A few highlights:
- nice 3D printing STL design by u/JHC that complements the stock faceplate (shop).
- nice laser-cut designs by u/okyeron (shop).
- aluminium case by u/Gregory_Delabelle (shop).
If you don't have access to a fablab, you can use a laser-cut service such as ponoko (US) or razorlab (UK).
For encoder caps, any D-shaft knob cap should fit.
You can look at makers such as Sifam / Selco, the various offerings at aliexpress (example) or even go the 3D printing route.
For screws/spacers, use M2 for the screen and M2.5 for everything else.
Some apps are made to pair with some of other monome hardware.
The most prominent are:
- grid, a keyboard mostly used for sequencer apps
- arc, an array of knobs with sequencing functionalities
- crow for interacting with eurorack / modular synth gear
You don't necessarily have to own any of those "peripherals" to enjoy your norns. It depends of the apps you plan to use.
See the list of apps by I/O to see what you're missing.
Please note that most apps assume a 128 varybright grid. Older non-varybright models will work but you'll be missing some visual feedback.
There is also a DIY grid project that allows making one for ≃$250. To use it with the norns, patching and recompiling is required to have it recognized. It will work right of the bat on a PC (with Max, Pure Data...). It doesn't (and will certainly never) work with eurorack monome modules such as ansible.
Synth apps generally rely on MIDI inputs. So a keyboards, pads or sequencer is a must have. A computer with midi output will do as well.
Lots of parameters can also be controlled with midi CC by using anything with midi knobs / sliders.
Some examples related to the monome community:
- 16n faderbank
- bleached, Four-N and 17
Some trackers apps (orca and nisp) rely on a USB computer keyboard.
Those plus other hardware accessories & peripherals are discussed in t/Friends of norns: gear, accessories, etc.
Many apps are available through maiden (real-time list) but many more are missing.
The documentation has a list of popular apps.
This section is aimed at being more complete and providing more meta-data to select which app corresponds to your needs.
Synths & drones:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
ash/earthsea | ✔️ | gh | PolySub engine. Also acts as a sequencer with grid. | ||
benjolis | ✔️ | gh | port of Alejandro Olarte’s Benjolis SuperCollider patch, inspired from Rob Hordijk’s Benjolin | 1, 2 | |
dronecaster | ✔️ | gh | Various drones | 1 | |
fm7 | ✔️ | gh | DX7-inspired polyphonic FM synth | 1 | online |
grendy | ✔️ | gh | a simple drone synth, grendel drone commander inspired | ||
haven | ✔️ | gh | two unique oscillators: one high, one low | 1 | |
lissadron | ✔️ | gh | A software synth making extensive use of seeded randomness, internal sequencer for voice change | internal sequencer | |
molly_the_poly | default️ | gh | Juno-6 voice structure with chorus, the extra modulation of a Jupiter-8, and CS-80 inspired ring modulation | 1 | |
moln | ✔️ | gh | Polyphonic substractive synthesizer | ||
passersby | ✔️ | gh | Wave folding, FM, LPG, spring-ish reverb, LFO and two dice to roll | 1 | |
rudiments | ✔️ | gh | 8 voice lofi percussion synthesizer and sequencer (playfair-style) | ||
showers | ✔️ | gh | a thunderstorm (rain & thunder) | ||
stjoernuithrott | ✔️ | gh | drone synth inspired by the Moffeenzeef Stargazer |
Granular sample players and synths:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
ash/angl | ✔️ | gh | use an arc to control pitch and speed granulation of four audio files | 1 | |
glut | ✔️ | gh | granular synth inspired by mlr/rove, grainfield & loomer cumulus | 1 | |
gemini | ✔️ | gh | one file, two granulators | 1 | |
mangl | ✔️ | gh | a 7 track granular sample player | 1 | |
uhf | ✔️ | gh | your tapes transmitted thru late-night static and broken antenna frequencies |
Sample players:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
crash | ✔ | gh | random drum kit player (606 samples) | ||
drum_room | ✔ | gh | MIDI-controlled drum kits | 1 | |
timber/keys | ✔ | gh | map a sample at different pitches across midi keys / grid | 1 | |
timber/player | ✔ | gh | load whole directory of samples mapped onto midi keys / grid | 1 |
Basic samplers:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
sam | ✔ | gh | record, adjust start & end points, save to tape |
Sequencers & trackers:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
animator | ✔️ | gh | 2D polyphonic sequencer for grids | 1, 2 | online |
arcologies | ✔️ | gh | interactive environment for designing 2d sound arcologies | gallery | online |
arp_index | ✔️ | gh | generate sequence from company stocks | 1 | |
ash/earthsea | ✔️ | gh | grid-enabled shape-memory pattern instrument | ||
ash/playfair | ✔️ | gh | euclidean drummer, four sequences, each with its own sample | 1 | |
awake | default | gh | two looped sequences | 1 | |
boing | ✔ | gh | a bouncing ball sequencer | 1 | |
cheat_codes | ✔️ | gh | sample playground | 1 | |
circles | ✔️ | gh | move cursor, place circles, make music | 1 | |
cyrene | ✔️ | gh | drum pattern generator | 1, grid | |
dunes | ✔ | gh | function sequencer, inspired by spacetime | audio, midi | |
drift | ❌ | gh | sequencer based on particle systems | midi | |
euclidigons | ✔️ | gh | plucky geometric rhythm generator | 1, 2 | |
foulplay | ✔️ | gh | euclidean drummer, inspired by ash/playfair | 1 | online |
fretwork | ️❌ | gh | ornamental sequencer | 1 | |
fugu | ️❌ | gh | 4 playhead sequencer, inspired by the Fugue Machine iOS app | 1, 2, 3 | |
grd | ❌️ | gh | 8x8 autonomy | 1, 2 | |
less_concepts | ✔️ | gh | cellular automata sequencer | 1 | online |
loom | ✔️ | gh | pattern weaving sequencer for grids | 1, 2 | |
meadowphysics | ✔️ | gh | grid-enabled rhizomatic cascading counter | 1 | online |
nisp | ✔️ | gh | LISP (Scheme dialect) livecoding tracker | 1, 2 | |
orca | ✔️ | gh | esoteric programming language | 1, 2 | |
punchcard | ✔️ | gh | experimental sequencer that works like a classic punchcard computer | 1, 2 | |
quence | ✔️ | gh | a probabilistic 4-track sequencer | 1, 2 | |
rebound | ✔️ | gh | a kinetic sequencer | 1 | |
spacetime we/study/study3 |
✔️ | a weird function sequencer | 1 | ||
step | ✔️ | gh | a simple step sequencer | ||
takt | ✔️ | gh | Digitakt-inspired parameter locking step sequencer | 1 | online |
vials | ✔️ | gh | 4 track performance-oriented sample sequencer | online | |
zeelen | ✔️ | gh | game of Life based sequencer | 1, crow | online |
Control Modulation sources:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
barycenter | ❌ | gh | Fluctuating relationships in orbit | ||
changes | ✔️ | gh | eight connected sine wave LFOs as MIDI output | 1, 2 | |
shapes | ❌ | gh | Visually based modulation source for crow |
Audio effects:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
greyhole | ✔️ | gh | echo / delay | 1 | |
manifold | ✔️ | gh | multi-effects processing for live performance | 1 | |
pedalboard | ✔️ | gh | chainable effects for live performance | ||
phyllis | ✔️ | gh | digitally modeled analog | 1 | |
pools | ✔️ | gh | a shimmery reverb | 1 | |
stack | ✔️ | gh | stack of bandpass filter, sequenceable | ||
sway | ✔️ | gh | analysis-driven live audio processing | 1 |
Loopers, live samplers & crazy delays:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
ash/orbit | ✔️ | gh | dual async start-stop loop recorder | ||
barcode | ✔️ | gh | a randomized looper | 1 | |
b-b-b-b-beat | ✔️ | gh | beat repeater/glitcher inspired by Ableton's Beat Repeat, MASF Possessed & MWFX Judder | 1 | |
blndr | ✔️ | gh | a quantized delay with time bending effects | 1 | |
clcks | ✔️ | gh | a tempo-locked repeater | 1 | |
cranes | ✔️ | gh | stereo varispeed looper / delay / timeline-smoosher | 1 | video |
here-there | ✔️ | gh | feedback of granular replay and sines | ||
glitchlets | ❌️ | gh | glitches incoming audio, quantized to the global tempo | 1 | |
jiffy | ✔️ | gh | 16 seconds looper | ||
mlr | ✔️ | gh | live sample-cutting platform | 1, 2 | |
oooooo | ✔️ | gh | digital tape loops x6 | 1, 2 | |
otis | ✔️ | gh | dual tape delay/looper/sampler | 1 | |
piwip | ✔️ | gh | a sampler that works in realtime | 1, 2, 3, 4 | |
reels | ✔️ | gh | a 4-track asynchronous looper | 1 | |
samsara | ✔️ | gh | minimalist looper that eventually reaches nirvana | ||
tunnels | ✔️ | gh | a collection of uncertain delays | 1 |
Midi effects:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
athenaeum/delay | ❌ | gh | generates MIDI delay with siual feedback | 1, 2 |
Utilities:
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
athenaeum/arc | ❌ | gh | interract with arc, read and write leds, no sound | 1 | |
foundry | ❌ | gh | browse all glyphs of all installed fonts, play with options | ||
midi-monitor | ✔️ | gh | simple midi monitor with note feedback | 1 | |
monitor | ✔️ | gh | midi monitor and input/output channel & note transpose | 1, 2 | |
shell_runner | ❌ ️ | gh | menu to launch shell scripts | ||
tuner | ✔️ | gh | a tuner |
symbol | meaning |
---|---|
✔️ | yes |
🔴 | mandatory |
🔶 | strongly encouraged |
⚪ | optional |
app | audio in | midi sync | midi in | keyboard | grid | arc | audio out | midi out | crow |
---|---|---|---|---|---|---|---|---|---|
ash/angl | 🔴 | ✔ | |||||||
ash/earthsea | ✔ | ⚪ | ✔ | ||||||
ash/orbit | ✔ | ✔ | |||||||
[ash/playfair][app playfair lines] | ⚪ | ✔ | |||||||
athenaeum/arc | 🔴 | ||||||||
athenaeum/delay | ✔ | ✔ | |||||||
arcologies | 🔴 | ✔ | ✔ | ✔ | |||||
arp_index | ⚪ | ✔ | |||||||
awake | ⚪ | ⚪ | ✔️ | ✔️ | |||||
barcode | ✔ | ✔️ | ️ | ||||||
barycenter | ✔️ | ✔️ | |||||||
b-b-b-b-beat | ✔ | ✔ | ✔️ | ️ | |||||
benjolis | ✔️ | ️ | |||||||
boing | ⚪ | ✔️ | ✔️ | ✔ | |||||
changes | ✔ | ||||||||
cheat_codes | 🔶 ** | 🔶 | |||||||
circles | ✔ | ✔ | |||||||
clcks | ✔ | ✔ | |||||||
cranes | ✔️ | ⚪ | ✔️ | ||||||
crash | ️ | ? | ✔️ | ||||||
cyrene | ️ | ⚪ | ⚪ | ️ | ✔ | ✔ | |||
drift | ✔️ | ✔ | |||||||
dronecaster | ✔️ | ||||||||
drum_room | 🔴 | ✔️ | |||||||
dunes | ✔️ | ||||||||
euclidigons | ✔️ | ✔️ | |||||||
foulplay | 🔶 | ✔️ | ✔️ | ||||||
fretwork | ✔️ | ✔️ | ✔ | ||||||
fm7 | 🔶 | 🔶 | ✔️ | ||||||
fugu | 🔴 | ✔️ | |||||||
gemini | ️ | ⚪ | ✔️ | ||||||
glitchlets | ️✔ | ⚪ | ✔️ | ||||||
glut | ️ | 🔶 | ✔️ | ||||||
grd | ️ | ✔️ | |||||||
greyhole | ✔️ | ✔️ | |||||||
haven | ️ | ✔️ | |||||||
here-there | ️✔ | ✔️ | |||||||
less_concepts | 🔶 | ✔️ | ✔ | ✔ | |||||
lissadron | 🔶 | ✔️ | |||||||
loom | ⚪ | 🔴 | ✔️ | ✔ | |||||
mangl | 🔶 | 🔶 | ✔️ | ️ | |||||
manifold | ✔ | 🔶 | ✔️ | ️ | |||||
meadowphysics | 🔴 | ✔️ | ✔️ | ||||||
midi-monitor | ✔ | ✔️ | ️ | ||||||
mlr | ✔️ | 🔴 | ✔️ | ||||||
molly_the_poly | 🔴 * | ⚪ * | ✔️ | ||||||
moln | 🔴 * | ⚪ * | ⚪ | ✔️ | |||||
monitor | ✔ | ️ | ✔️ | ||||||
nisp | 🔴 | ✔️ | |||||||
oooooo | ✔️ | ✔️ | |||||||
orca | ✔️ | ✔ | 🔴 | ⚪ | ✔️ | ✔ | |||
otis | ✔️ | ✔️ | |||||||
passersby | 🔴 * | ⚪ * | ✔️ | ||||||
pedalboard | ✔️ | ✔️ | |||||||
piwip | |||||||||
pools | ✔️ | ✔️ | |||||||
punchcard | 🔴 | ✔️ | |||||||
quence | 🔴 | ✔ | ✔️ | ✔ | |||||
rebound | ️ | ⚪ | ️ | ✔ | |||||
reels | ✔️ | ✔️ | |||||||
shapes | ✔ | ||||||||
spacetime we/study/study3 |
✔️ | ||||||||
step | 🔴 | 🔶 | ✔️ | ||||||
stjoernuithrott | ⚪ | ✔️ | |||||||
takt | 🔴 | ✔️ | |||||||
timber/keys | ⚪ | 🔴 * | ⚪ * | ✔️ | |||||
timber/player | ⚪ | 🔴 * | ⚪ * | ✔️ | |||||
tuner | ✔ | ️ | |||||||
uhf | ✔️ | ||||||||
vials | 🔶 | ✔️ | |||||||
zeelen | 🔴 | ✔️ | ✔ | ✔ |
Special cases:
- *: grid acts as a midi keyboard and can replace it
- **: grid can be replaced by TouchOSC
Pure Data patches originally built for the Organelle can run on any norns device.
This is done by escaping the norns runtime environment and booting into a Pure Data-compatible one.
Please note that next release of the norns software will add native support of Pure Data, akin to what we currently have with SuperCollider.
This is easily done thanks to the combination of 2 projects:
- Sidekick by u/thetechnobear that allows booting out of the norns software and into other ones (lines thread)
- Mother by u/oxbown that provides a compatibility layer for running Organelle patches (lines thread)
In addition, installing Sideckick also provides:
- Orac: a patch chaining software for Pure Data
- NuiLite: a lightweight Pure Data external (i.e. extension) for making and running patches without depending on the Organelle/Mother or Orac layer.
For more details, see also the the Sidekick project wiki.
The norns platform allows developing small programs using the lua programming language.
They are generally referred to as scripts, and apps once packaged and distributed.
2 internal sound processing units are at our disposal:
engine
: an instance of SuperCollider (sometimes also referred to asexternal
)softcut
: a live multi-channel sampler / player that can be used to build crazy loopers and delays
Even though SuperCollider is generally used to define a virtual synthesizer, it can also take audio from the inputs (missing on the above diagram).
Most scripts you'll find in the wild use either softcut or engine, but some might use the 2 of them.
- norns studies
- norns: tutorial by Devine Lu Linvega
- softcut studies
- foundry app (code) for text & fonts (
screen.text
API) - athenaeum/arc app (code) for arc interactions
- video tutorial on adding midi out to an existing app
- tutorial on adding computer keyboard support to an existing app
When wanting to contribute or seeking help, use one of those threads:
- t/norns: scripting: getting help with app development (lua)
- t/norns 2.0: softcut: getting help with app development (softcut)
- t/norns: SuperCollider: getting help with app development (SuperCollider side)
- t/norns: development and t/Approaching 3.0: universal engine support: following and participating to evolutions to core norns code
- t/norns: crone/supercollider: following and participating to evolutions to core norns code (SuperCollider / Crone)
- t/Exquisite Script: A collective scripting game for norns: a cadavre exquis, collective development of an app
When developing apps/scripts, you rely on lua libraries (classes & modules). One of them, engine, allows interacting with a running SuperCollider instance.
When using SuperCollider, one can rely on an already installed SuperCollider library on spin their own. Those SuperCollider libraries (in essence a SynthDef) are called engines in the context of norns development.
Most advanced apps come with their own custom libraries / engine.
Here are listed the ones most often spotted in the wild.
library | code | description | provided by | used by |
---|---|---|---|---|
softcut | lua, undelying C | sample record & playback | installed by default | sam, reels, piwip |
supercut | lua | higher-level wrapper around softcut | wrms |
library | code | description | provided by | used by |
---|---|---|---|---|
ack | lua wrapper, sclang | simple sample playback | step, ash/playfair, foulplay, takt, crash, vials | |
timber | lua wrapper, sclang | advanced sample playback | timber | timber, orca |
glut | sclang | granular sample playback | glut | glut, mangl, uhf |
PolyPerc | sclang | simple polyphonic filtered decaying square wave | installed by default | awake, meadowphysics, barycenter, zeelen |
PolySub | sclang | multi-type oscillator with polyphonic modulation busses for polytimbral expression | installed by default | ash/earthsea |
R | sclang | collection of engines that link together in a modular synth-style workflow | installed by default | moln |
mi-engines | lua+scland | port of Mutable Instruments rack modules | ||
molly_the_poly | lua wrapper, sclang | analogue (substractive) synth | molly_the_poly | molly_the_poly, arp_index, loom, quence, fugu |
passersby | lua wrapper, sclang | westcoast-style synth | passersby | passersby, less_concepts, dunes |
PrimitiveString | sclang | euclidigons | euclidigons |
A niche use-case is to disable the norns software services and interact with the internal sound routing and hardware peripherals using pure C.
This effort is discussed in t/low-level-norns.
For a working example with grid and arc support see project norns-lowlevel (explanation & demo).