# Euclidigons

## Euclidigons

plucky geometric rhythm generator

A little while ago, @setfield and I got talking about an idea he had for a Norns sequencer: something kinda like @jakecarter’s celebrated Circles, but with polygons of various sizes and shapes, which you’d place along a horizontal axis and set spinning at whatever speed you wanted. Notes would play when they collided with one another.

I sent him a terrible sketch (featured in the video above) to make sure I got the idea, and a few weeks, a bunch of back & forth, a couple high school algebra and calculus refreshers, a Google-based crash course in computational geometry, and a good handful of "ooh, and what if…"s later, we’re very pleased to present an initial release of this script.

@setfield’s been teasing it for a little while on Instagram, and his latest video features much better tabletop Norns friends than I had on hand:

### Requirements

Norns (latest system always recommended, but version 200424 or later should be fine)

### Documentation

Euclidigons has its own SuperCollider engine, so take a nap after installing or run SYSTEM > RESET, otherwise you’ll get a “Missing PrimitiveString” error.

At script startup, there will be two polygons visible on the screen. Think of their sides as strings: when a side is crossed by one of the other shapes’ vertices, the string is plucked or struck.¹ The faster the side-string and vertex-plectrum are traveling relative to one another, the louder and brighter the note will be; and different harmonics will be emphasized depending on where along its length the string is struck.

E1 chooses a shape to edit.
E2 moves it along the X axis.
E3 changes its size.
K2+E2 sets rotation rate.
K2+E3 sets the number of sides (1-9).
K3+E2 sets the note to which the shape’s sides are tuned.²
K3+E3 transposes the note in octaves, or changes MIDI settings if MIDI is active.²
K3 by itself mutes or unmutes the selected shape.³
K2+K3 inserts a new shape.
K3+K2 deletes the selected shape.

1. by default, notes are only sounded when one shape’s vertex crosses into another shape, but this can be changed using the ‘trigger style’ param.
2. changes made while holding K3 will apply only once K3 is released. to reset changes made while holding K3 instead of applying them, hold K1 while continuing to hold K3.
3. set the ‘mute style’ param to ‘own note only’ to allow a muted shape’s vertices to pluck the strings of another shape.

Available in Maiden; or:
v1.0.0 - https://github.com/synthetiv/euclidigons/archive/v1.0.0.zip

GitHub repo:

Questions, bug reports, ideas, etc. all welcome, naturally

49 Likes

Heck yeah! Now I just need some time to play.

2 Likes

pythagoras smiles from beyond. this is absolutely inspired. i can’t wait to dive into the code to see how you did this.

2 Likes

This is super rad! Can’t wait to try it out myself.

2 Likes

Wow. The norns library is sparkling with creativity/productivity these days. Excited to try this out. Can I hope for midi out?

4 Likes

In the near future, for sure!

5 Likes

Great news! Thank you!

Some more words.

2 Likes

@synthetivv
hey ya!

SUPER cool script!
will you be adding MIDI out and clock in?

i immediately thought of hooking this up to a drum synth!

5 Likes

thanks for making this. i have been wanting something like this for a while. (with midi out, of course )

3 Likes

This is a terrific script - I’ve been exploring it for the last hour or two, and was inspired to make this little video when I came across an appropriate ProjectM visualisation by happy accident while fiddling with OBS (there’s also some generative Axoloti drones in there somewhere):

4 Likes

Thank you all for your enthusiasm and to @synthetivv for the masterful coding and brainstorming. If it wasn’t for him Euclidigons would still be stuck bouncing around my brain.

On the roadmap are clocks and crow and midi. Stay tuned!

5 Likes

This is script is awesome, but unfortunately when I just press K1 it will act as if I’m pressing K1+E3, which transposes the note in octaves. It won’t let me go back to the main system menu, so I’ve had to do a hard reset by pressing and holding K3,K2,K1.

hmmmm. Did you install the script using the v1.0.0 zip file linked above, or from the main branch on GitHub, or using Maiden (which is a thing you can do now – thanks, @ngwese)?

The version on the main branch (which I think is what Maiden will install too) tweaks K1’s response to make it work faster as a modifier key, but that means you need to tap it pretty quickly to get to the system menu. Not at all sure what would cause K1 alone to switch octaves, though. Does it shift up or down every time you press it? Including after you reset?

@synthetivv Ah, this is crazy! Looks super similar to a script I started a couple years ago, and just got around to start finishing yesterday (spinning polygons and all)! Mine is a modulation source for crow though. Regardless, looks fun to play with, gonna check it out.

3 Likes

I installed the zip file from above, but I just reinstalled it from Maiden and things seem to be working fine now. It was shifting the octaves up every time, even after the reset before I installed it using Maiden.

1 Like

the future is sooner than you might think! @noiserock, @acajide, @louis, @SPIKE, @encephalitislethargi – any of my multiple MIDI maniacs want to test a MIDI version? Check out the `midi` branch or download this.

There’s another engine change (I moved some velocity scaling logic out of SuperCollider to the Lua side so I can use the same velocity curve for MIDI notes), so, naptime again, please. Then choose `midi`, `both`, or `multi (per shape)` for the `behavior` > `output` param, and choose a MIDI device and channel in the `midi` section. Scroll to the end of either the device or channel params to enable per-shape device/channel selection.

Now, if multichannel and/or multi-device MIDI is enabled, K1+E3 will cycle through output options for the selected shape (internal, then channels 1-16 of device 1, then channels 1-16 of device 2, etc.).

I ran into occasional stuck notes while testing, so there’s a `clear midi notes` trigger param you can use if you need it (also let me know if you’re able to reliably get stuck notes, I’m not totally sure yet why they happen).

That’s totally weird. It shouldn’t make a difference, but all testing so far has been on factory Norns, so are you using something else? If this happens again, let me know, and please send the Matron log from Maiden too if you can. Same goes for anyone else if this happens to you.

7 Likes

I’m on a factory Norns. I’ll definitely let you know if it happens again.

1 Like

first session last night with the Euclidigons…running one norns with high pitches and another to create a bass instrument.
also in the mix is the script OOOOOO and a horde of Ciat-Lonbarde noiz weaponry.
https://www.instagram.com/p/CFox8PzJgHQ/?utm_source=ig_web_button_share_sheet

and here’s the full session:

4 Likes

thats a genius implementation of midi out. beautiful, thank you. i’ll test it in the morning on Fates

**Midi Out Works Great, love it. Thanks again

1 Like

thanks for you awesome script, that sequencer is all i want !!! but i cant use
the channel per shap. Encoder1 + K2 (button?) dosnt work for me.

thanks

ok i got it, there is no visuall feedback for changing channels but it works … wow the perfect sequenzer for beats (model:samples)

2 Likes