Norns: update 210114

use SYSTEM > UPDATE when connected to wifi.


norns 2.4.8

  • NEW keyboard: easier keyboard management in scripts @tehn
  • NEW keyboard: basic menu control via keyboard @tehn
  • FIX params: reverb/comp settings persist between script loads
  • NEW help system: quick script reference via REPL @tehn
  • NEW lib: lattice is a clock patterning framework @tyleretters
  • NEW api: norns.shutdown() can be called by script @tyleretters
  • FIX clock: tune sync multiplier thresholds @artfwo
  • FIX screen: clamp level input, prevent crash @tehn
  • NEW lib: util.wrap() util.wrap_max() @tyleretters
  • NEW params: read() accepts and passes “silent” arg @infinitedigits
  • NEW menu: now 16 vports for midi @dan_derks
  • NEW params: pmap now autosaves @dan_derks
  • GONE norns.fetch: use ;install in maiden instead @tehn


  • NEW ;install command for fetching remote repositories
  • NEW refresh all button @ngwese
  • NEW script stop/clear button @ngwese
  • FIX improve implicit untitled.lua creation @ngwese
  • FIX upgrade versions @ngwese
  • CHANGE rename sc -> supercollider for clarity @ngwese


  • NEW watcher: separate application for key-trigger restart @tehn


@ngwese made several great improvements and fixes.

;install in the REPL will now add a specified repository. if you want to install a script which is not in the project manager, use this. for example:


(but don’t bother doing this, you already have it probably)

for script writers, this is a good way of sharing a script (ie, here on the Library) without requiring people to manually download a zip then upload it to their norns (let’s stop doing that altogether if possible).

note that this deprecates previously introduced norns.fetch()

docs are all updated.

norns: keyboard

we’ve build a simple abstraction which makes adding keyboard support to scripts much much easier (you no longer need to fiddle with selecting the wrong HID device, or have a ton of redundant code for decoding presses).

see the new reference which includes an example.

very basic menu support is included for the keyboard— we’ll be expanding this in the future. presently:

  • left/right (K2, K3)
  • up/down (E2 cw/ccw)
  • pageup/pagedown (E2 fast cw/ccw)

there is support for other keyboard layouts— but presently only US is in place. we need contributions to fill this out.

norns: lattice

@tyleretters make a clock management framework, see the docs for an example


the K3-2-1 reset mechanism is now fixed— moved to its own watcher application so, it actually works now. if you norns crashes or hard stalls— sequentially push and hold K3 K2 K1 for 10sec and all the software will restart. this is a much better solution than the white button on the bottom (which may result in data corruption, though sometimes this is all that works) or pulling power on the shield.

please let us know if you hit any snags and we’ll fix things up right away.


One additional detail - maiden will now attempt to download the latest version of the script catalog(s) (not the scripts themselves) when norns boots and it has a network connection.


this is massive

thank you all for continuing to polish and improve things for us!


also keyboard! opens up a ton of potential for control. nice.


Can you explain this one a bit more?


for sure!

  • MIDI mappings for each script are saved as a script-specific PMAP file
  • previously, PMAPs were only saved if a user also saved a PSET for the script. otherwise, when the script was reloaded, the MIDI mappings were wiped.
  • this update saves a script’s PMAP with every mapping edit – so, it’s now no longer dependent on a user saving a PSET. so for example, if you map a controller to oooooo's parameters, norns will restore those mappings the next time you load oooooo, regardless of whether you saved a preset for oooooo.

coupled with the 16-port update, this means less doubling-back on MIDI mappings for scripts which don’t utilize presets :slight_smile:

lmk if there are any other q’s!


does this also do an update for the repo if it exists (i.e. git pull)? or is it best to still run the os.execute to remove the repo first for updating?

i would generally advise not doing os.execute and just use the project manager or file tree to delete folders.

also i don’t believe install does git pull (etc)— ;install will actually install from a non-git repo, a zip file, etc as well.


Could just be that new OS smell but the menus feel snappier and everything overall feels very buttery smooth.


not that they weren’t snappy before!!! :robot:


CORRECTION ABOUT WHOLE NOTES: i knew i was on thin ice when the words were coming out of my mouth. i was, of course, confused by whole rests… whole notes are four quarter notes, but whole rests are the elastic ones.


;install GitHub - schollz/kolor: every light. => unrecognized operation
This should work right?

1 Like

;install is probably what you’re looking for :smiley:

1 Like

That’s what I’m typing and getting :slight_smile:
;install GitHub - schollz/kolor: every light. => unrecognized operation
Think the forum software wants to smart format it badly :slight_smile:

odd, it worked for me! :slight_smile:

weird, still getting the same after a sleep, and double checked the update.

does maiden have the square STOP button on the right bar for you? if not, you might need to hard refresh your browser / clear cache to access maiden 1.1.0


BINGO, cheers for that :slight_smile:

1 Like

The ;install REPL command can be used in conjunction with the update button next to each project listed on the installed page within maiden.

Apologies for the table, maybe it will make the behavior more clear or maybe not!

action source result
;install <url> git git clone <url>
;install <url> zip download, unzip
install button from catalog git git clone <url>
install button from catalog zip download, unzip, rename based on catalog entry
update button from catalog git git pull (regardless of how the repository was installed)
update button from catalog zip (re)download, unzip, rename only if installed from the catalog

At the end of the day maiden is trying to provide as uniform an experience regardless of whether the source of the script/project is a git repository or a zip file. It has some heuristics to name/rename the project folders correctly if the zip/git files are coming from,, or

Yes this - prior to this version of maiden the web application contained logic which tried to maintain a cached copy of the code local to the browser for fast initial page load. This cache meant that it took 2x refreshes before the latest version would load (at times). In practice maiden is so tiny the cache was more trouble than it was worth and thus removed in this release. I would expect from this point forward the need to refresh will go away.

If there is any doubt which version you are seeing, the version number can be found at the bottom of the configuration dialog (click the gear button).


Thanks for the update!

I am noticing something strange though …

When making changes to the reverb in the edit menuThe setting for “input softcut” seems to overwrite “input engine” with the same setting after a sleep. I can’t imagine this is the expected behavior.

Hmmmm …


There seems to be something funky going on with all input and return values when restarted after a sleep … or I’m just misunderstinding how this is supposed to work.

1 Like

good catches, thank you!

hotfix pr’d