I had this realisation that I could use euclidean rhythms on basically anything, not just on "beats". ie. if you have a string of boolean values you loop through they don't have to mean "hit or don't hit the drum", it could mean high/low, loud/quiet, open/close, accent/base, anything. All obvious to all of you, I'm sure.

When dreaming up new ideas for synth firmwares for platform 16 I found that envelopes beyond basic decay-only ones can take up a lot of the 16 knobs I have available so I wanted to try my hand at a drone synth. And then come up with basic yet interesting "one-knob" ways to add variation. So for each of the pitch, filter cutoff and volume "sections" I dedicate one knob to picking a euclidean rhythm, one to a base value and then one to an "accent" value. Worked fine as a "two-tone" thing but was a bit boring so for pitch the "accent" knob is now "choose a arpeggio mode". And then the true/false values from the rhythm becomes "advance the arpeggio or stay where you are".

I was low on knobs so the key is hardcoded (always C natural minor, can easily change it) and then the "pitch degree" knob just moves forward in that scale where it maps the chord to the "correct" major, minor, diminished or augmented cord for that note in the scale. And then three note arpeggios felt a bit limiting so I kinda arbitrarily added 7th notes to the mix. Was worried it would be limiting but I think it turned out pretty well and at a nice compromise for using so few knobs. By hardcoding the key it makes this easier to sync up with my other synths and end up with something vaguely musical anyway.

Started out as a drone and yet here it is playing something that's more "melody" than "done", but what can you do. ¯_(ツ)_/¯

Kinda proud of how "knob-efficient" it came out while remaining one-knob-per-function and not having to resort to a modal interface.

Code's here: