Platform 16 Arpeggios

Added an arpeggiator to the new "two-tone euclidean polymeter" firmware for platform 16 this morning, reusing code from when I made the fm chord synth. So you can pick a "degree" in the scale and then it chooses the "right" chord shape for that point in the scale (major, minor, diminished, augmented) and you can arpeggiate the notes in that chord. Various arpeggio algorithms to pick form starting with off where it just plays the chord's root note.

But then in keeping with the vibe of the rest of the firmware, there's a "rhythm" at play where if the note in the rhythm is "high" it advances the arpeggio, otherwise it plays the last note. So depending on the dedensity of the "hits" in the rhythm you either have it always advance or you can play something a bit stochastic or it can just drone and rarely/slowly change the note.

And it automatically doesn't loop often or at least in an obvious way because most of these rhythms and now the arpeggio lengths are likely to be co-prime.

arpeggio.hpp is mostly vibe-coded. What's interesting is that I spent more time thinking about what I want and writing the instructions than it saved to generate the code. And that's usually the case.

Also added euclidean rhythms the other day and rhythms.hpp is the same story. Although I did generate the vectors for containing the rhythms separately using a JavaScript script.

Then the synthetic clock generator thingy was written by me manually originally then factored out manually, then it vibe-wrote the description. And got it perfectly accurate!

fun!