(norns/circle/03) dressed in sequins

a gathering— a group study where participants each create a script according to a prompt. scripts are submitted by an established deadline. discussion and help will be provided to facilitate completion of scripts.

this series will focus on softcut. for an introduction, see softcut studies. for general norns scripting, see norns studies. this edition will also extensively use sequins.

upon completion we will release the pack of scripts as a collection along a bandcamp compilation of captures from each script. see the collected past gatherings.

we’ll be here throughout the process to assist everyone in getting scripts working. please ask questions – this is an ideal time to learn.

future prompts will have different parameters. don’t go overboard building out your script with extra functionality – try to stay close to the prompt.

norns/circle/03 dressed in sequins


(nb. requires norns: update 220802)

construct an evolving expression of rhythmic time using provided synth drum samples, the new lfo library, and sequins.

  • 7 sample groups with 9 variations are provided
  • no USB controllers, no audio input, no engines
  • map
    • E1 volume
    • E2 cadence
    • E3 horizon
    • K1 stability
    • K2 relax
    • K3 bind
  • visualization of data

parameters are subject to interpretation. “stability” could mean timbral parameter randomization, but perhaps something else. “horizon” could mean the navigation of changes to rhythmic balance, but perhaps something else. “relax” and “bind” could mean a stop/play mechanism, but perhaps something else.

see the lfo docs for additional details on the lfo library.
see the sequins docs for additional details on the sequins library.
see the softcut helper readme for additional details on the optional softcut helpers including in the lib file.

deadline: oct 8 (extended from oct 1)

submit your script by submitting a PR to github: GitHub - monome-community/nc03-ds: norns/circle/03 dressed in sequins (we will help with instructions when the time comes, or feel free to submit early)

record 1-3 minutes of the output of your script using TAPE. feel free to use the built-in reverb and compessor. upload to google drive, dropbox, etc. post link on thread.


to get started, go to maiden’s project manager, refresh the collection, and install nc03-ds. note, this will take some time to download as it includes some audio files.

if you need a place to start from, check out scarlet.lua


Oh I am so excited for this! I will finally learn soft cut.


yesss I’ve been hoping for this! So exciting.


I’m very excited to loop into one of the norns/circles!

I have a fun idea in my head. I’m going to be livecoding my entry from scratch this thursday (08/18) at 7pm pst, feel free to drop-in. I’ll happily teach a little bit and share some little tricks (my current favorite trick is to use @midouest’s runes for rapid prototyping screens).

happy to help out here too if anyone seeks assistance with crossing into the norns script rubicon.


Very cool! Hopefully have a working shield and dev setup by then. Will attend regardless.


ok here we go. today, in about 30 minutes from now (7pm pst). coding a nc03 idea from scratch.

here is the url:

here is the gameplan:

  1. look at guidelines of project.
  2. prototype idea in daw with samples.
  3. how to Github (forking, cloning, credentials)
  4. norns essentials
  5. softcut essentials
  6. get mvp working
  7. bugs
  8. goto step 6

I think that twitch will archive the feed so don’t worry about missing it.

edit: stream finished! I got stuck on #7 with a weird bug. the 85F and late time converts my brain to flatbread so I will clear the bug to move onto new things in another time. here is a link to the code written so far for this “benjamin button” style sample sequencer where samples always have their start on the beat but sometimes they begin at the end instead of the start: nc03-ds/infinitedigits.lua at main · schollz/nc03-ds · GitHub

next time: clearing a bug. adding a ui. adding controls.


Lurked in the stream for quite a while last night and it was really awesome to see your development! Thanks for sharing


dang, yeah, @infinitedigits that was such a treat – it’s so meaningful to be able to watch a brilliant artist problem-solve their way through a fantastic idea.

on the heels of zack’s walkthrough + @radioedit’s fantastic loud numbers workshop today, i’m going to spend a few hours in the #lua channel of the norns discord server tomorrow for synchronous (or drop a question in ahead of time and i’ll make sure it gets addressed!) text-based support for nc03. totally happy to answer q’s about the included files or lfo lib, chat through approaches / workflow planning, mess with some code sketches together, whatever’s helpful!

10a - noon eastern tomorrow:


hope everyone’s having a nice sunday :sparkles:
used the two hours to build out a couple ‘studies’ detailing some approaches nc03’s constraints. hope these are helpful for folks as you approach your own scripts!

1: moving nc03 samples from project audio to dust audio

upon first download, the audio files for nc03 are bundled in the project’s audio folder. since folks typically expect audio files to live inside dust/audio , we need to migrate these files from the project to dust. even if you don’t choose to use the included softcut helper files, there’s a pre-wrapped function which performs this action that is useful to deploy for this single purpose:

^ that’ll print moving audio to matron and you’ll see the audio files have migrated from dust/code/nc03-ds/audio to dust/audio/nc03-ds . it’s totally fine for this function to get called every time a script is started – there’s a built-in check to see if dust/audio/nc03-ds exists before it tries to move files.

tho scarlet performs this migration, it’ll be helpful for every nc03 script to include this lil’ bit – it’ll ensure that the files are in the expected place no matter which script someone chooses first :slight_smile:

2: quick + easy softcut parameters

if you’re just dipping into norns scripting, feeling confident about managing the many moving pieces of softcut may be an initial speedbump. i didn’t have much scripting background when i first dug into norns in 2018 and it took me a year to really feel like i understood softcut’s DNA. the softcut studies (softcut studies | monome/docs) are a super helpful primer on what’s initially possible – but since nc03 likely prompts crossover scripting needs across authors, it seemed helpful to provide a shortcut to build the ‘greatest hits’ parameters you’ll likely want to explore in your scripts.

to add a full parameter set for each of the six softcut voices to your script, simply include and invoke lib/sc_params, which will automatically build the following parameters for voice [x], where [x] is voices 1 to 6:

  • load sample
  • clear samples
  • level (0% to 250%)
  • pan (i love the pan widget in the formatters library!)
  • semitone offset (+/- 48 semitones)
  • pitch control (+/- 12% variation on the current rate)
  • reverse (trigger to quickly reverse the current rate)
  • lowpass (0% to 100%, inits at 0%)
  • highpass (0% to 100%, inits at 0%)
  • bandpass (0% to 100%, inits at 0%)
  • dry (0% to 100%, inits at 100%)
  • filter cutoff (10hz to 12000hz)
  • filter q (0% to 100%)

once a file is loaded via the parameters UI, you can play it with sc_fn.play_slice(voice,1), where voice corresponds to the voice you’ve loaded a sample into

3: loading the provided drum files into softcut

each of the drum samples has 9 variations, which correspond to an organizing ‘kit’:

  • default1
  • default2
  • fltr-amod-eq
  • fm-lite
  • heavy
  • mods-1
  • mods-2
  • verb-long
  • verb-short

if you use the lib/sc_params helpers, you can mix and match audio files into each voice pretty easily via params:set scripting:

BUT you can also load a single kit into all 6 voices, eg:

4: lfos

the lfo library in the latest norns update was designed to give an easy on-ramp to scripting modulation. the docs cover a lot of usability, but here’s how we can expand our previous sketches with randomly-parameterized sine waves:

^ if we run that snippet and head to the PARAMETERS, we’ll see the panning and filter cutoff values for each voice changing in real-time.

pitch LFOs are super fun to quantize – we’ll expand our clock sequencer jumble a bit and add a bit of pitch quantization to a semitone_offset lfo, so we only switch between a -7, 0, or +12 semitone offset:

5: sequins

alright, we’ve been doing a lot of random jumbling to play these voices, which can be fun for exploration but rooting a bit of intention in our rhythms (with a way to subvert) might also be fun!

sequins is a sequencing library that trent originally wrote for crow, which @tyleretters helped port to norns. imo, it’s the easiest on-ramp to scripting a step sequencer. the docs have a lot of helpful waypoints, but for this snippet we’ll focus on getting a sequins set up for each voice and dynamically changing their step sizes:

overall, i harbor a tiny secret hope that thru preloading sequins (see scarlet for a nested approach, where sequins patterns can be switched out – a lattice or another sequins could meta-sequence), an nc03 entry could represent an entire song, able to be manipulated by the listener :rocket:


My entry to norns circle three is called “seabird”.

All is sea.
The pylons that remain of civilization poke out of the waves sometimes.
You are bird.
You fly over the pylons and contemplate the rhythms of waves, dead civilization, and flight.

Now included with the nc-03 package:


I took a really long time with the graphics on this one. Influence-wise, it draws from MI Grids and the velocity modifications added in Cyrene, and old video games like Tron.


this was fun… (no idea if i did anything correctly :sweat_smile: )
my entry is called ‘scattr’… it does lots of stuttery/cutup-type things with softcut… i based it off of the gist dan posted above(the final one for incorporating sequins).
i think i did not hit the ‘map’ part quite correctly: “E1 volume/E2 cadence/E3 horizon/K1 stability/K2 relax/K3 bind…”
instead, the instructions for mine are:
Use E2 to select UI stuff,
then use E3 to change param values,
K3 starts/stops playback,
K2 turns on/off ‘stutter’(and jumps the UI selection to stutter so that enc3 can quickly apply changes to stutter timing there as well),
K1 does nothing! :stuck_out_tongue_winking_eye:
enc1 sort of does something :stuck_out_tongue_winking_eye: :innocent:
…when you have ‘Seq#’ selected it will randomly choose to loop a certain voice, and cause it to be offset in rhythm as a result… to set it all back straight, rotate enc1 while anything else besides ‘Seq#’ is selected(weird interface i know :person_shrugging: ),
…the top-right ‘Rand’ (turned ‘on’/‘off’ by enc3 while selected) will randomize parameter changes once every ‘cycle’ (the ‘CycLn’ field below that determines the cycle-length in beats)… the other ‘rand’ will randomize a particular voice’s sequence(only works while selected and k2 is pressed; you can also hit k2 with the ‘Seq#’ field highlighted and it will randomize the sequence towards filling all steps with '1’s)… and the rest should be intuitively discovered based on using enc2 to select, and enc3 to change… my UI-design sucks. i’m sorry :sob:

here’s the 256k-mp3 preview:

here’s the google-drive link to the full 48k wav file for the bandcamp/compilation:


submitted a PR~ the .wav is on https://txt.goth.lol/nc03/glimmerzz.wav

had some fun just messing around and found out that the little textures that you can generate by overlapping draw calls is very satisfying


hihi! hope everyone’s well :revolving_hearts:
wowowow @sixolet , @rajaTheResidentAlien , and @zzsnzmn — these are such imaginative + fantastic submissions and the audio artifacts are all wicked compelling, thank you for these submissions and engaging with the prompt so whole-heartedly!!

considering the delays we’ve faced with getting the latest run of norns units out (namely hand-reworking the finish on every unit’s enclosure in our workshop), we figured there might be folks in our two latest shipment groups who might have planned to engage in the project but didn’t get a chance to. so, we’ll be extending the deadline to next saturday (oct 8th), just to give anyone who’s interested but didn’t have the opportunity to script a bit of extra time :slight_smile:

i’m absolutely around all week to answer q’s and troubleshoot code, either here or discord, so please please feel free to post any and all stumbling blocks!! :sparkles::black_heart:


If someone wanted to include a handfull of .PNGs as part of the visualization, is that ok and is there a prefered way of doing it?


eeee stoked for thiiiiis!
totally okay to include .PNG’s! maybe build out an images folder in your PR, to match audio and lib?


i missed this note till today

maybe i can try something for it after all :smile:


Sequin Racer!


My attempt went in a few different directions.

The main part is just 4 tracks with a few patterns for each and cadence moves through the patterns. There’s also an lfo on cadence unless you manually change it with the knob.

Then it started sounding a little 8 bit so I spent most of the time making it into a handheld LCD racing game for the visualization :slight_smile:

The stability option skips a beat sometimes and changes the speed

Horizon brings in two super slow looping samples with lfos for a bit of a drone

Relax brings in the drone, cuts out everything apart from the occasionally the melodic part and adds a softcut delay effect (and stops the traffic)


all these scripts are so good!!!

seabird is a thing of beauty @sixolet and sounds magnificent.

I can’t enough of your track @rajaTheResidentAlien, so good.

@tomw this script is very inspired, love it.

@dewb your interface is smooth as silk, the sounds are great. awesome use of chords.

@zzsnzmn so cool what the screen is doing here, and sounds great.

I am submitting my script “wards” which creates drums that are forwards and backwards in time/space. link to full track.

demo track:


This was a ton of fun, if a little stressful, because I ended up just being able to work for a few hours before each version of the deadline (twice.) I didn’t really have much of a cohesive idea going in, so it was a freeing experience to just follow what seemed interesting and doable quickly without thinking too much about whether it hung together as a tool, in contrast to my usual approach which is to overthink the system design and never reach a state of doneness.

The starting concept was a 2D bank of values that could drive both a scale degree and a selection from a pool of sequins, and the rest your can read in the script notes.

Folks in the norns discord pointed out that the interface owes a lot to nanoloop, which is perceptive because I 100% have nanoloop burned into my subconscious, but this controls very differently (i.e., not at all.)

Speaking of non-control: one design philosophy question I did indulge in was whether each voice should have its own copy of the sequins bank, so two voices pulling from the same bank wouldn’t interfere with each other’s phase. In the end I let them interfere, which makes things a lot less predictable in both good and bad ways.

I neglected to post a song before I left town for the weekend, apologies, here it is –
SoundCloud - Hear the world’s sounds

Haven’t had a chance yet to check out the other scripts, but they all sound amazing and I look forward to noodling around. @infinitedigits thanks for the kind words and I love your track!


just wanted to let you guys know that the script “glimmerzz” is missing the “.lua” when loaded into norns from maiden

but it will work for you if you manually enter it in maiden.
so I know you all know this just maybe wanna fix it for the future people to dive in.