Move cursor. Place circles. Make music.

Circles consists of lib/libCircles.lua, the sequencing engine and the circles.lua script that uses the engine.

The circles script allows you to move a cursor around on screen using ENC 2 and ENC 3. Pressing KEY 3 will place a new circle at the cursor point. KEY 2 will remove the circle at the cursor point. Holding KEY 1 will remove all circles after a confirmation step. ENC 1 adjusts the cutoff frequency of the filter.

Placed circles will grow with each MIDI tick. This means that it will stay in beat with whatever else you have going on.

Circles will burst when they hit another circle or when the get too big. When they burst, they make sound. The sound they make depends on their x, y position on the screen and how big they are when they burst.

The pitch is determined by their x coordinate, with lower pitches on the left and higher pitches on the right.

The timbre is determined by their y coordinate, currently connected to PWM of the PolyPerc engine.

The size determins how long the sound will last. Larger circles will sound out for longer.

There are also a few parameters to adjust under the KEY 1 parameters page. Play around with those.

libCircles is the library that does all of the heavy lifting. It keeps track of all of the circles, grows them and does the hit detection to decide when to burst them. It can comunicate with a client script by way of callback functions. If you’re interested in any of this, please read the documentation in the file.




ENC 2 & 3 move cursor
ENC 1: engine.cutoff

KEY 3: Place circle
KEY 2: Remove circle at cursor
KEY 1: Hold removes all circles

Notes divided along screen x
Timbre divided along screen y
Bigger circles, longer release


Added MIDI support.
Added scale selection.


Added Crow + Just Friends support. Please make sure to update your crow and Norns to the latest firmware.

v1.3 - Save Params

Circles now supports the system saving/loading of params. See the PARAMETERS section of norns | monome/docs for more information.

v1.2 - Deterministic

Added deterministic burst type option. This should allow for more loop like rhythms.

v1.1 - Added crow support.

Added params for output; audio or crow. If crow:

  • Output 1: Trigger
  • Output 2: Pitch
  • Output 3: Y Pos (0 - 10V)
  • Output 4: Radius (0 - 10V)
    Added params for clock; midi or crow. Crow accepts clock on input 2. I would like this to be on input 1, but there is currently a bug with norns or crow mentioned here (^^ crow help: norns - #10 by jakecarter).


v1.5 -


awesome. I’m always impressed with how creative people get with this little low res screen.

It’s definitely a fun little box to script.

Fun! Perfect Instagram video, too.

1 Like

Cool :slight_smile:

1 Like

this is an awesomely creative sequencer

thanks for sharing!

1 Like

Thanks! I’m kind of hoping someone takes libCircles and puts it to better use. :slight_smile:

1 Like

i will glance at how to switch to a sampling engine with the same interface

wouldnt expect it to be “better” tho


That would be cool. Let me know if you have any questions. I’m also happy to review pull requests.

midi out would be nice too

In what way? Like an event for when each bubble pops or something? If you could let me know how you would use it I can try to design for that.

just midi notes out on bubble pops would be cool. A lot of the scripts that do midi out you can select between audio, audio+midi or, midi notes out.


Cool! I’ll add that to the list and look into it.


I really dig the script though just wanted to say that. Nice work


I 2nd the vote for midi out! I’d love the ability to sequence ext gear with this gem. Thanks @jakecarter!

1 Like

I’ve been super busy with my day job but that should be slowing down soon. Will look into midi out as soon as I have time. :+1:


Got crow on Friday. Been busy this weekend. Just got external, from the modular, clocking working. Here’s a demo of Circles being clocked via the modular then outputting trigger, pitch and timber back via crow. Hoping to have this released soon. Need to clean up a few things.


Crow support added! You can get v1.1 here (, or just git pull if you installed that way. Please post here if you use it. I’d love to see what people do!


I like this so much! Thanks for sharing!

1 Like

Small update, but something I’ve been thinking about for a while. Added deterministic burst type option. This should allow for more loop like rhythms. Get it while its hot! :slight_smile: