Norns: maiden

So am I connecting my Norns Via usb to the computer for this?

Forgive my ignorance but what SSH and how do I get there?

Am I typing these highlighted quotes in SSH?

just added to all the docs :slight_smile:

When connected via WIFI you can SSH into norns from another computer on the same network at the IP address shown in SYSTEM.

  • open a Terminal on a Mac/Win/Linux computer
  • execute ssh we@norns.local or ssh we@<IP_ADDRESS_SHOWN_IN_SYSTEM>
  • password: sleep

then execute the highlighted commands


Is there a way to access matron via SSH?

yeh! editing our video session this week and will update docs with this, but in the meantime:

ssh we@norns.local


Ahh! Perfect. I just added this to /home/we/.bashrc so now I can just just type matron from anywhere:

alias matron="/home/we/norns/build/maiden-repl/maiden-repl"


Anyone have success with watchers that automatically re-run your script on save?

I’m starting a new project and want to use my own IDE instead of maiden. There are going to be a lot of includes and I don’t want to switch to the CLI or matron every time I save to re-run norns.script.load("code/thing/thing.lua") or click (gasp) on the main script cmd+P.

So it’d be something like:
while inotifywait -e close_write thing.lua; do MATRON THING norns.script.load("code/thing/thing.lua"); done

I’ve not tried this myself. The desire to trigger a script load from the command line has come up enough that I’m tempted to hack something up. The thought of using it with inotify is indeed enticing.

Would you expect to run the above on device or on whatever is running the IDE (I’m assuming on device)?

On device. Just have an SSH window open to norns in the background.

Sidenote: right now I’m just working in my IDE and then cmd+tab over to maiden and cmd+P so that works out pretty well.

can someone confirm the package manager pulls the latest commit on the default branch?

yes, it’ll just pull from your main branch :slight_smile:
users will have to refresh/update their local catalog to download the new commit, though. the commit tag should always align with the latest commit on the default branch.


To expand on @dan_derks answer there are three moving parts in the maiden package manager.

  • sources - are json config files which describe where the catalogs live. Each defined source appears as a group in the package ui. Currently there are two catalog source which get installed as part of the norns system update script - “we” and “community”. The code linked above is related to the maiden installation process and it includes theses source configs as part of the release.

  • catalogs - when the refresh button in the maiden ui is clicked for a catalog it is downloaded again from the source location which is configured (via git pull on the default branch). Changes to the “community” catalog are not seen on a device until the catalog is refreshed.

  • projects - when a project is installed via maiden it is copied to the device. The project can either be maintained in a git repository or as a HTTP accessible zip file. If the project is distributed via zip file then the install or update process simply removes the existing project directory, downloads the archive and extracts the content. If the project is distributed via git (this currently includes everything in the community catalog) then maiden will effectively git clone when installing and git pull --ff-only when updating. In both cases the default branch is used.

One feature of this system (which is “hidden” by lack of documentation) is that people can define their own catalogs by adding a new source config file which points at a personal catalog… useful when trying to manage personal scripts across multiple norns.


thank you @dan_derks & @ngwese. another absolutely brilliant system, just like everything else here.

Is it possible to put scripts into subfolders like «loopers», «sequencers» etc? Or does that mess up engine paths or other stuffs? Sorry if this has been asked before.

It’d mess it up. Some scripts could handle it but others couldn’t.

1 Like

there have been various proposals thrown around to organize scripts, and we haven’t quite identified the right path.

ideas include a favorite/star system, tags, and subfolders.

given the menu system itself is written in lua, this is all totally doable… the main issue is committing to a good design (and finding the time to execute it)


Sorting by tags is great, since it is already implemented in maiden and since scripts might fall into multiple categories.

1 Like

You can find some approaches related to this here

20 chars of thank you!!!

i have a weird issue. i just updated molly the poly via the maiden project manager from v 1.0.1 to 1.1.0.

this worked, when i load the script from norns via main menu->select->molly_the_poly, the info page on norns displays the correct info (1.1.0).

but for some reason, the text of the script itself in maiden didn’t update. it still says 1.0.1 up top and doesn’t have any of the other changes reflected in the script. but if i press play from maiden, it loads version 1.1.0. this persists even after resetting norns.

very odd. i am going to try just removing and reinstalling it but seemed worth writing down somewhere just in case!

edit: persisted even after i did that, which lead me to discover it’s a safari specific issue. safari is caching something it shouldn’t, so maybe not anyone here’s problem

When a file is clicked in maiden the file is loaded completely into a buffer in the browser. That copy in the browser will be held and not refreshed for as long as the window/tab containing maiden is open.

The easiest way to deal with this is to just hit the refresh button in the browser window (assuming you don’t want to save any of the files loaded into maiden for editing).

The current behavior is not great and really should be improved. Thanks for the reminder that it’s still a problem and is still tripping people up.

The reason for the weird play behavior is that you probably hadn’t made any modifications to the script. When the play button it clicked maiden notes that there haven’t been any changes so the file isn’t sent to norns ahead of telling matron (the lua control program) to run the file which is stored on the device.