scan the stars; make music! an interactive sequencer for Norns, Crow, JF, and midi.


One of my goals this year was to make a sequencer with Norns & Crow to use with my Serge panel, and inspiration struck when I was working on Offworld (a fun Tone.JS based granular synth project). The concept was to randomly generate stars (each of which was a really an object that held note information, etc), and then to tag those stars to create sequences. It came together rather quickly in the last couple days, and is at a point where I would love to see what other folks think of it (and any improvements that could be made).


Norns, PolyPerc engine, Crow [optional], midi [optional], JF [optional]


It is surprisingly simple!

to start making music just press [key3] and use encoders 2 & 3 to tag some stars.

if you like your little sequence place [key3] again to lock it and just watch the stars pass by, otherwise constellations can make some comically long sequences with ease.

A star’s location on the Y axis determines the note value (bottom of the screen is low notes, top of the screen is high notes). A star’s size determines the release time and crow’s bipolar cv. A star’s brightness determines the amplitude and crow’s unipolar cv.

  • [key 1] hold for ALT
  • [key 2] clears the sequence
  • [key 3] locks/unlocks the sequence
  • [enc 1] time division to the Norns master clock
  • [enc 2] crosshair Y axis
  • [enc 3] crosshair X axis
  • ALT + [enc1] probability
  • ALT + [enc2] star density
  • ALT + [enc3] star size
  • ALT + [key2] sequence shift
  • ALT + [key3] sequence pop

output, sequencer params, engine params are located in the parameter menu (again thanks to awake & tehn)

  • [engine, crow, jf, midi] outputs are all available
  • [scale, root, probability, max sequence length, and overwrite logic] are available under ‘sequencer params’
  • all notable engine params are available


  • [input2] unipolar (0-5v) control over Y axis
  • [output1] 1 volt per octave
  • [output2] clock pulse
  • [output3] unipolar cv
  • [output4] bipolar cv


  • make [key1] an ALT button and add ‘probability’ or other params to the live screen
  • add cv output to crow outputs 3,4
  • sequencer max length, pop, shift
  • midi cc to x axis, crow targeting control
  • edit-sequence mode
  • crow input on/off option
  • mx.samples integration
  • have some star size algorithm options other than logarithmic



install via the maiden library or repl:


on github


Looking forward to trying this out! :milky_way:

Image and your text reminds me of the Daft Constellations Twitter bot (@daft_stars).

:sparkles: The Crooked Millner :sparkles:
He enrages the secret midwife.


It is fun! E1 for turning up bpm is very handy. Are you planning to play with brightness of stars? for example brighter ones = higher value for something like volume or filter more opened :alien:


i can confirm just friends is able to play some lovely sequences with your script.

nicely done!

i was just thinking you might add some additional controls for star size and density.



thanks ya’ll, great ideas!

star density, star size, and adding a mapping of some various star data to engine parameters are going to happen. my thoughts are:

  • holding [key1] = ALT
  • sequence probability is adjustable via ALT + ENC1
  • star density is adjustable via ALT + ENC2
  • star size is adjustable via ALT + ENC3 and controls the release time of the engine
  • star brightness maps to the amplitude or filter (going to see which one is most enjoyable since the star brightness flickers)
  • add both star size and star brightness as CV on crow outputs 3,4

how cool I love this can’t wait to give it a spin

1 Like

Cool! This script is nice for finding nice sequences using fast bpm - because they are so long, you can kinda “scroll” and search the parts you like. A bit like speeding up a movie to look for an interesting part

1 Like

cooool, just pushed updates to Github.

Updates for 0.8.2:

  • added star density and size
  • added [key1] as ALT (hold it down and see additional parameters (probability, size, and density) to change on the fly)
  • patched star size to the engine release (you can control the upper range in the parameters menu) and as a bipolar (-5 to 5v) cv to crow output 4
  • patched star brightness to amplitude (again, upper range can be set in parameters) and as a unipolar (0 to 5v) cv to crow output 3

thanks the input everyone, this is twice as playable as it was last night.

ps: I let density range go up to 100%, not sure if it will be a good idea or not. good luck out there.


Thanks for the script @toomanatees really enjoying it.

I do seem to run into issues with Crow though, it sends one note and then just stops. No issues with JF (which as @jaseknighter pointed out sounds lovely!) or the internal engine.

Was concerned it was my Crow, but loaded other scripts like Awake and Plonky and they worked as they should.

I’m running the latest Crow firmware.

Any thoughts?

1 Like

@mattallison interesting, I ran it through crow for about half hour while I was finishing it up yesterday and had no issues. I’ll check my crow firmware version at some point today. Do you get any errors in maiden?

Hi @toomanatees

Yes, if I run the script and then use the PARAMS page to select the output as Crow in the “Output” section it kicks up the following error.

metro_stop(): pthread_cancel() failed; error:
specified thread does not exist
lua: /home/we/norns/lua/core/clock.lua:65: /home/we/dust/code/constellations/lib/sequencer.lua:27: attempt to call a nil value (field 'linliin')
stack traceback:
[C]: in function 'error'
/home/we/norns/lua/core/clock.lua:65: in function 'core/clock.resume'
crow: repl:1: attempt to call a nil value (field 'execute')
crow: stack traceback:
crow: repl:1: in main chunk
crow: runtime error.

Just queried my Crow and I’m running Firmware 3.0.0

EDIT: Just updated to Firmware 3.0.1 and the problem persists.

Hope that helps!

1 Like

Util.linliin on line 27 is a typo?

Should be Util.linlin maybe @toomanatees?


Ha, oh boy. I had fixed that typo in my local copy in maiden, but missed it in the git commit. Should be better now.

1 Like

Thank You! That did the trick.

1 Like

This is so fun. I’m sequencing my Minilogue and sending it through Otis and into Alterneath on the ZOIA. Pure bliss.


this is a fun script - I feel like I’m cheating :grinning: thank you :pray:


Yaaaa, gotta love 650+ note long sequences


Not quite 650+, here’s a noodle, layered with a bit of Plinkysynth and
Spitfire Labs (no crow to play with)
Brume (is a mist or fog)

thanks for making this tool, most excellent.


Love this! Thank you for your hard work to create it.

One suggestion - I’d love to hear this script with MX.Samples - is that a simple addition?


@rebuspop Mmm, so nice

@danbond Took a cursory glance at mx.samples, and it does look pretty simple to add. Cool idea. Will look into it more towards the end of the week.