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.
  • 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.
  • 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.

interesting! I’m currently a new owner of a usb host to host adapter and am looking for more Norns midi scripts in any capacity. I will def give this some play in a few. thanks for all your work and sharing Tyler!


new addition to the athenaeum: arc.lua. video up above.


added splash.lua. i remember how evocative splash screens were when i was a wee lad playing DOS games in the basement… a very warm place in my heart.




edit: also added enc_wait.lua for fun encoder state checking.