This document will not be updated anymore, being replaced by norns.community, a community-driven wiki (launch post).
Don't hesitate to copy sections of this document onto norns.community if you find they didn't get ported.
A list of links and resources for the norns hardware music platform by monome.
The community resides mostly on llllllll.co (pronounced lines).
- What / why is norns?
- What can it do?
- Lingo
- Hardware
- script List
- scripts by I/O
- Pure Data
- Development: General
- Development: Libraries & Engines
- Development: C
- Contributing
- License
norns is a hardware music platform.
It's built around the idea of community: creating and sharing ideas in the form of small apps (scripts).
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 (scripts) 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 script List section.
norns designate both the hardware and software side of the platform.
It runs independent musical scripts (sometimes also called apps) written in the lua programming language.
In addition to lua, in order to record and play back and manipulate sound, scripts rely on bindings with softcut and/or SuperCollider. Bindable SuperCollider sub-scripts are called engines.
maiden is the web-based IDE (http://norn.local
).
You might encounter the name matron, which designate the program that performs lua code evaluation and provides binding to hardware (screen / encoders / buttons).
The folder were data is stored called dust (/home/we/dust/
). It comes bundled with some default scripts, engines & samples (lines tread).
Audio can be saved to disk with tape, the internal audio recorder.
There are 3 variations of the norns hardware:
name | audio path | case | battery | audio monitor output | supported Raspberry Pi models | price point | releases |
---|---|---|---|---|---|---|---|
norns (shop) | cleanest * | 2x aluminum block (hard anodized), custom caps & buttons | β | β | CM3, CM3+ | $800 / $680 (b-stock) | instant |
norns shield (shop) | clean | 3D-printed w/ acrylic face plate / DIY | β | β | 3B, 3B+ | $240 ** | instant |
fates | cleanest * | acrylic / DIY | β | β | 3B, 3B+, 4 | n/a | with delay *** |
*: the original norns and fates have an isolated audio power section which is much more immune to noise.
**: to which must be added the price of the Raspberry Pi, micro SD card, power supply and eventually an alternative case. So you're eventually looking more at β$300.
***: fates runs on an unofficial fork of the norns software, with its own kernel, so update cycles run behind the official releases given there is a separate maintainer.
As of writting, all 3 versions are compatible with every app published.
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 project similar to the norns shield, not initiated by monome.
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 assembly please use t/DIY: norns shield.
People share their own case design in t/norns shield case designs.
A few highlights:
- the now standard 3D-printed design by u/JHC (shop).
- nice laser-cut designs by u/okyeron (shop).
- 3D-printed + aluminium front plate design by u/justinkowski.
- aluminium case by u/Gregory_Delabelle (shop).
- aluminium case on Pusherman (shop).
- simple laser cut front & back panels by u/infovore.
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 scripts are made to pair with some of other monome hardware.
The most prominent are:
- grid, a keyboard mostly used for sequencer scripts
- 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 scripts you plan to use.
See the list of scripts by I/O to see what you're missing.
Please note that most scripts assume a 128 varybright grid. Older non-varybright models will work but you'll be missing some visual feedback.
There is 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.
There is also a DIY arc project which will also cost β$250. It does not require any special patching.
Synth scripts 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 scripts (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 scripts are available through maiden (real-time list) but many more are missing.
The documentation has a list of popular scripts.
This section is aimed at being more complete and providing more meta-data to select which app corresponds to your needs.
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 | ||
hachi | βοΈ | gh | TR-808 reproduction with euclydian sequencer | ||
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 | |
mi-eng/macro-b | βοΈοΈ | gh | collection of complex oscillator sources, based upon the Mutable Instrument Braids macro-oscillator | 1 | |
mi-eng/macro-p | βοΈοΈ | gh | collection of complex oscillator sources, based upon the Mutable Instrument Plaits macro-oscillator | 1 | |
mi-eng/modal-e | βοΈοΈ | gh | modal synth, based upon the Mutable Instrument Elements | 1 | |
mi-eng/resonate-r | βοΈοΈ | gh | ring resonator, can be used as basic percusive oscillator, based upon the Mutable Instrument Rings | 1 | |
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) | ||
sines | βοΈ | gh | a simple FM sine drone synth | ||
stjoernuithrott | βοΈ | gh | drone synth inspired by the Moffeenzeef Stargazer | ||
there | βοΈ | gh | a theremin |
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 | |
langl | βοΈ | gh | ash/angl-inspired granulator, also uses arc and offer more control | 1 | |
mangl | βοΈ | gh | a 7 track granular sample player | 1 | |
uhf | βοΈ | gh | your tapes transmitted thru late-night static and broken antenna frequencies |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
abacus | β | gh | drum loop slicer / player / sequencer | 1 | |
beets | β | gh | drum loop slicer / player | 1, 2, 3 | |
crash | β | gh | random drum kit player (606 samples) | ||
drum_room | β | gh | MIDI-controlled drum kits | 1 | |
ortf | β | gh | browse play & loop your tape folder | 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 |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
sam | β | gh | record, adjust start & end points, save to tape |
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 | |
breakthrough | β | gh | rebound meets breakout | 1 | |
buoys | β | gh | kinetic sequencer based on motion of water | 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 |
fourtunes | οΈβοΈ | gh | 4 track polyphonic step sequencer | 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 | |
gridstep | βοΈ | gh | step-based 16-track polyphonic sequencer with various grid layouts and micro-timing | 1 | online |
groovecats | βοΈ | gh | particle-based step sequencer | 1 | |
hpns | βοΈ | gh | clocks-based random step sequencer | ||
ising | β | gh | sequencer based on 2D ferromagnetism ising model, zeelen-inspired | ||
islands | βοΈ | gh | kria-based sequencer with internal playback | 1 | presentation video |
isoseq | βοΈ | gh | isomorphic step sequence | 1 | presentation video |
kria_midi | βοΈ | gh | port of the kria sequencer with midi output | 1, 1 | |
less_concepts | βοΈ | gh | cellular automata sequencer | 1 | |
loom | βοΈ | gh | pattern weaving sequencer for grids | 1, 2 | |
meadowphysics | βοΈ | gh | grid-enabled rhizomatic cascading counter | 1 | online |
nono | βοΈ | gh | Nanoloop-inspired 4 channel sequencer | 1 | |
orbital | βοΈ | gh | circular 16 step sequencer | ||
orca | βοΈ | gh | esoteric programming language | 1, 2 | |
patchwork | βοΈ | gh | dual function (note + command patterns) sequencer | 1 | |
pitfalls | βοΈ | gh | microtonal scale / chord sequencer | 1 | |
pixels | βοΈ | gh | landscape-traversal sequencer | 1 | |
punchcard | βοΈ | gh | experimental sequencer that works like a classic punchcard computer | 1, 2 | |
qfwfq | βοΈ | gh | sequencer inspired by brute force password hacking | ||
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 | ||
strides | βοΈ | gh | sample or midi pattern sequencer | 1 | online |
strum | βοΈ | gh | 16-step sequencer w/ a variety of pattern transition mechanisms | 1 | |
takt | βοΈ | gh | Digitakt-inspired parameter locking step sequencer | 1 | online |
tambla | βοΈ | gh | Arpgegio sequencer | online | |
torii | βοΈ | gh | gated audio sequencer | 1, 2 | |
traffic | βοΈ | gh | loom-inspired, with decoupling between patterns & notes | 1 | |
vials | βοΈ | gh | 4 track performance-oriented sample sequencer | online | |
wifihifi | βοΈ | gh | turn local Wi-Fi signals into music | online | |
zeelen | βοΈ | gh | game of Life based sequencer | 1, crow | online |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
nisp | βοΈ | gh | LISP (Scheme dialect) livecoding tracker | 1, 2 | |
yggdrasil | βοΈ | gh | "cyberdeck" tracker | 1, 2 | online |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
barycenter | β | gh | fluctuating relationships in orbit | ||
buoys | βοΈ | gh | its midi output mode produces abstract midi CC LFOs | ||
cccccccc | βοΈ | gh | 8 LFOs as MIDI CC output, arc-controlled | 1, 1 | |
changes | βοΈ | gh | 8 connected sine wave LFOs as MIDI CC output | 1, 2 | |
shapes | β | gh | visually based modulation source for crow | ||
strides | β | gh | allows midi CC record / replay with knobs |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
greyhole | βοΈ | gh | echo / delay | 1 | |
manifold | βοΈ | gh | multi-effects processing for live performance | 1 | |
mi-eng/modal-e | βοΈ | gh | modal synth, affects input audio, based upon the Mutable Instrument Rings | 1 | |
mi-eng/resonate-r | βοΈ | gh | ring resonator, based upon the Mutable Instrument Rings | 1 | |
pedalboard | βοΈ | gh | chainable effects for live performance | ||
phyllis | βοΈ | gh | digitally modeled analog filter | 1 | |
pools | βοΈ | gh | a shimmery reverb | 1 | |
stack | βοΈ | gh | stack of bandpass filter, sequenceable | ||
sway | βοΈ | gh | analysis-driven live audio processing | 1 | |
timeparty | βοΈ | gh | sequenced time-based multi-effect |
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 | |
bounds | βοΈ | gh | kinetic stereo looper / delay, otis with rebound mechanics | 1 | |
clcks | βοΈ | gh | a tempo-locked repeater | 1 | |
compass | βοΈ | gh | asynchronous looper, with command-based sequencer | 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 | ||
mi-eng/texture-c | βοΈ | gh | realtime granualr audio processor, based upon the Mutable Instrument Clouds | 1 | |
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 |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
athenaeum/delay | β | gh | generates MIDI delay with visual feedback | 1, 2 |
app | on maiden | code | description | demo | doc |
---|---|---|---|---|---|
athenaeum/arc | β | gh | interract with arc, read and write leds, no sound | 1 | |
caliper | β | gh | tuner for eurorack modules using norns + crow | ||
clarck | β | gh | use arc as a clock to display time | 1 | |
defuser | β | llll | musical bomb defusal game | 1 | |
foundry | β | gh | browse all glyphs of all installed fonts, play with options | ||
grid-test | β | gh | utility to test grids | 1 | |
midimatrix | βοΈ | gh | simple midi matrix example app | ||
midi-monitor | βοΈ | gh | simple midi monitor with note feedback | 1 | |
monitor | βοΈ | gh | midi monitor and input/output channel & note transpose | 1, 2 | |
n16o | βοΈ | gh | turn a Korg nanoKONTROL2 into an ER-301 controller | ||
norman | βοΈ | gh | normalize & auto-trim sample files on disk | ||
norns.online | βοΈ | gh | expose norns screen and buttons/encodeers to the internet | 1 | |
onehanded | βοΈ | gh | simple MIDI note / CC trigger | ||
practice | βοΈ | gh | musical scale quizz | ||
rpmate | βοΈ | gh | utility to help feeding a sped up audio to a hardware sampler | ||
seaflex | β οΈ | gh | practice chords shapes on grid, earthsea layout | ||
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 |
---|---|---|---|---|---|---|---|---|---|
abacus | β | ||||||||
ash/angl | π΄ | β | |||||||
ash/earthsea | β | βͺ | β | β | |||||
ash/orbit | β | β | |||||||
ash/playfair | βͺ | β | |||||||
athenaeum/arc | π΄ | ||||||||
athenaeum/delay | β | β | |||||||
arcologies | π΄ | β | β | β | |||||
arp_index | βͺ | β | |||||||
awake | βͺ | βͺ | βοΈ | βοΈ | |||||
barcode | β | βοΈ | οΈ | ||||||
barycenter | βοΈ | βοΈ | |||||||
beets | β | βͺ | βͺ | βͺ | βοΈ | οΈ | |||
b-b-b-b-beat | β | β | βοΈ | οΈ | |||||
benjolis | βοΈ | οΈ | |||||||
boing | βͺ | βοΈ | βοΈ | β | |||||
bounds | β | βοΈ | οΈ | ||||||
breakthrough | β | οΈ | βοΈ | ||||||
buoys | β | π΄ | βͺ | οΈβ | βοΈ | β | |||
caliper | β | β | |||||||
cccccccc | π΄ | β | |||||||
changes | β | ||||||||
cheat_codes | πΆ ** | πΆ | |||||||
circles | β | β | |||||||
clarck | π΄ | ||||||||
clcks | β | β | |||||||
compass | β | βͺ | β | ||||||
cranes | βοΈ | βͺ | βοΈ | ||||||
crash | οΈ | ? | βοΈ | ||||||
cyrene | οΈ | βͺ | βͺ | οΈ | β | β | |||
defuser | π΄ | βοΈ | |||||||
drift | βοΈ | β | |||||||
dronecaster | βοΈ | ||||||||
drum_room | π΄ | βοΈ | |||||||
dunes | βοΈ | ||||||||
euclidigons | βοΈ | βοΈ | |||||||
foulplay | πΆ | βοΈ | βοΈ | ||||||
fretwork | βͺ | βοΈ | βοΈ | β | |||||
fm7 | πΆ | πΆ | βοΈ | ||||||
fourtunes | π΄ | βοΈ | |||||||
fugu | π΄ | βοΈ | |||||||
gemini | οΈ | βͺ | βοΈ | ||||||
glitchlets | β | βͺ | βοΈ | ||||||
glut | οΈ | πΆ | βοΈ | ||||||
grd | οΈ | βοΈ | |||||||
greyhole | βοΈ | βοΈ | |||||||
grid-test | οΈ | π΄ | οΈ | ||||||
gridstep | οΈ | π΄ | βοΈ | β | |||||
groovecats | οΈ | π΄ | βοΈ | ||||||
hachi | οΈ | βοΈ | |||||||
haven | οΈ | βοΈ | |||||||
here-there | β | βοΈ | |||||||
hpns | οΈ | β | |||||||
ising | πΆ | βοΈ | |||||||
islands | πΆ | βοΈ | |||||||
isoseq | βͺ | π΄ | βοΈ | β | |||||
kria_midi | πΆ | βοΈ | |||||||
langl | π΄ | βοΈ | |||||||
less_concepts | πΆ | βοΈ | β | β | |||||
lissadron | πΆ | βοΈ | |||||||
loom | βͺ | π΄ | βοΈ | β | |||||
mangl | πΆ | πΆ | βοΈ | οΈ | |||||
manifold | β | πΆ | βοΈ | οΈ | |||||
meadowphysics | π΄ | βοΈ | βοΈ | ||||||
mi-eng/macro-b | β | βοΈ | οΈ | ||||||
mi-eng/macro-p | β | βοΈ | οΈ | ||||||
mi-eng/modal-e | β | β | βοΈ | οΈ | |||||
mi-eng/texture-c | β | βοΈ | οΈ | ||||||
mi-eng/resonate-r | β | β | βοΈ | οΈ | |||||
midimatrix | β | βοΈ | οΈ | ||||||
midi-monitor | β | βοΈ | οΈ | ||||||
mlr | βοΈ | π΄ | βοΈ | ||||||
molly_the_poly | π΄ * | βͺ * | βοΈ | ||||||
moln | π΄ * | βͺ * | βͺ | βοΈ | |||||
monitor | β | οΈ | βοΈ | ||||||
n16o | π΄ | οΈ | β | ||||||
nisp | π΄ | βοΈ | |||||||
nono | βοΈ | β | |||||||
norman | οΈ | ||||||||
norns.online | οΈ | ||||||||
onehanded | οΈ | οΈ | β | ||||||
oooooo | βοΈ | βοΈ | |||||||
orbital | οΈ | βοΈ | |||||||
orca | βοΈ | β | π΄ | βͺ | βοΈ | β | |||
ortf | οΈ | βοΈ | |||||||
otis | βοΈ | βοΈ | |||||||
passersby | π΄ * | βͺ * | βοΈ | ||||||
patchwork | π΄ | π΄ | βοΈ | βοΈ | |||||
pedalboard | βοΈ | βοΈ | |||||||
pitfalls | βͺ | β | |||||||
piwip | |||||||||
pixels | β | β | |||||||
pools | βοΈ | βοΈ | |||||||
practice | οΈ | ||||||||
punchcard | π΄ | βοΈ | |||||||
qfwfq | βͺ | β | βοΈ | ||||||
quence | π΄ | β | βοΈ | β | |||||
rebound | οΈ | βͺ | οΈ | β | |||||
reels | βοΈ | βοΈ | |||||||
rpmate | βοΈ | βοΈ | |||||||
rudiments | οΈ | βͺ | βοΈ | ||||||
seaflex | π΄ | β | |||||||
shapes | β | ||||||||
shell_runner | |||||||||
showers | β | ||||||||
sines | β | ||||||||
spacetime we/study/study3 |
βοΈ | ||||||||
step | π΄ | βͺ | βοΈ | ||||||
stjoernuithrott | βͺ | βοΈ | |||||||
strides | βοΈ | π΄ | βοΈ | βοΈ | |||||
strum | βͺ | βοΈ | π΄ | βοΈ | βοΈ | ||||
takt | π΄ | βοΈ | |||||||
tambla | π΄ *οΈ | βͺ * | βοΈ | β | |||||
there | βοΈ | ||||||||
timber/keys | βͺ | π΄ * | βοΈ | ||||||
timber/player | βͺ | π΄ * | βͺ * | βοΈ | |||||
timeparty | β | βͺ | π΄ | βοΈ | βͺ | ||||
torii | βͺ | βοΈ | |||||||
traffic | πΆ | βͺ | βοΈ | ||||||
tuner | β | οΈ | |||||||
uhf | βοΈ | ||||||||
vials | πΆ | βοΈ | |||||||
wifihifi | βοΈ | ||||||||
yggdrasil | βͺ | π΄ | βοΈ | β | β | ||||
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 sometimes 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
- hid-demo example script (code) for HID input (keyboard, mouse, touchpad...)
- waveviz example app for softcut waveform visualization
- video tutorial on adding midi out to an existing app
- tutorial on adding computer keyboard support to an existing app
- example usage of the
pattern_time
lib
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
Additionally, there is a Discord norns study group (blog, lines thread) that meets regularly for sharing development knowledge.
When developing 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 scripts 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 | |
halfsecond | lua | simple 1/2s delay | awake | awake, vials, tambla |
To get the list of engines installed on your norns, type tab.print(engine.names)
in the matron console in maiden.
library | code | description | provided by | used by |
---|---|---|---|---|
ack | lua wrapper, sclang | simple sample playback | step, ash/playfair, foulplay, takt, crash, vials, strides | |
timber | lua wrapper, sclang | advanced sample playback | timber | timber, orca |
glut | sclang | granular sample playback | glut | glut, mangl, uhf, langl |
Thebangs | sclang+lua wrapper | fork of PolyPerc w/ multiple synth algorythms & control over polyphony | groovecats | |
PolyPerc | sclang | simple polyphonic filtered decaying square wave | installed by default | awake, meadowphysics, barycenter, zeelen, orbital, nono, tambla |
PolySub | sclang | multi-type oscillator with polyphonic modulation busses for polytimbral expression | installed by default | ash/earthsea |
Gong | sclang | basic FM synth | installed by default | |
TestSine | sclang | a basic single mono sinewave | installed by default | there |
R | sclang | collection of engines that link together in a modular synth-style workflow | installed by default | moln, torii |
mi-engines | lua+scland | port of Mutable Instruments rack modules | mi-eng/* | mi-eng/* |
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 |
Dust2 | sclang | impulses (ticks) | bgc_dust | |
PrimitiveString | sclang | euclidigons | euclidigons |
Those are more generic Lua libs that add either:
- improve handling of midi / LFOs
- provide support for additional hardware
- provide additional drawing utils
library | code | description | provided by | used by |
---|---|---|---|---|
passthrough | lua | allows norns to pass through midi between connected devices | passthrough | passthrough, b-b-b-b-beat, beets, stjoernuithrott |
midi | lua | helper to trig MIDI out | euclidigons | euclidigons |
midigrid | lua | use alternative midi grid hardware as a grid (e.g. Novation Launchpad) | ||
middy | lua | define midi mappings to specific controllers in your scripts, JSON configuration | ||
hnds | lua | LFOs to modulate app parameters | otis | otis, pools, greyhole, pedalboard, wrms, timeparty |
nest_ | lua | advanced, callback-based, user interaction definitions, grid support | ||
arcify | lua | simple parameter binding to arc | beets, compass | |
shnth | lua | use the shbobo shnth as a controller | ||
screencap | lua | animated capture of the screen (into an animated png) | ||
grid-capture | lua | capture a grid button press sequence as a gif | ||
shape | lua | draw shapes on screen | euclidigons | euclidigons |
noise | lua | draw perlin Noise on screen | ||
moreFilters | lua | provides a moving, windowed RMS/standard deviation filter | ||
3d | lua | 3D drawing lib | ||
p8 | lua | pico-8 code adaptation layer | ||
pitfalls | gh | compute microtonal intervals/scales/chords | pitfalls | pitfalls |
namesizer | gh | randome (file) name generator |
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).
Contributions and suggestions are always welcome!
I am by no mean the owner of this document, merely its initiator. It belongs to the community.
To discuss about the general structure and content use t/Index of norns-related resources.
For less impacting modifications / suggestions, you can:
- submit a pull request
- create an issue
- comment on the lines thread
- send me a PM