a repository of study, spike, and sample scripts for norns. each was created as a means to learn different techniques or technologies myself. i am sharing it in the event others find them inspiring or useful.
- arc.lua - explores getting data from and updating the LEDs on an arc. handles linear “scaled rings”, chunky “paginated rings”, wrapping, “snap” LED aliasing, and encoder sensitivity. additionally, arbitrary minimum and maximum values can be set for each encoder which will then scale out accordingly. also, a utility function to map the current encoder value to a given segment.
- crow.lua - test script to make sure crow and Just Friends are working. One test is for volts/slew, another is for envelopes, another is for JF. Essentially just the code from here but recoded as a “homework assignment.”
- delay.lua - explores the concept of MIDI delay. control rate and decay level of MIDI notes and get visual feedback as notes are toggled on and off. requires an outboard MIDI device, preferably one capable of polyphony. made as a research spike for a new arcologies structure. requires norns + midi device.
- enc_wait.lua - watches the norns encoders but lets you know when they’re turning and when they’ve stopped turning. this allows for more sophisticated user interactions. this technology is what the arcologies UI is based on.
- graphics.lua - the Northern Information graphics library. these seven abstractions are used in all Northern Information projects.
- markov.lua - simple markov chain implementation. supports any number of “links” and each link has a probability of repeating, advancing, and retreating.
splash.lua - the Northern Information splash screen. the
graphics:splash()method is where most of the action happens. conceptually, the “NI” logo is always there but it is randomly revealed, concealed, and then inverted. note: frames are used for sequencing but drawing needs to happen from “back to front.” the logic mashes these two concepts together while favoring brevity over clarity. for example, right at the start we see
local l = globals.frame >= 49 and 0 or 15, this is because after 49 frames the splash screen inverts black for white and white for black.