This synth celebrates all things circular: the circle of fifths, Euclidean rhythms, and rotary encoders. Four synth voices play random notes in a triad to the beat of a determined Euclidean rhythm animated on the 8x8 matrix. You can scroll through the circle of fifths on each synth voice to change the triad for easy modulation between keys.
The code is written in CircuitPython with the synthio module and runs on a Feather RP2040. An I2S amp outputs audio to a speaker and the rotary encoders, alphanumeric displays, and 8x8 matrix all connect to the Feather over I2C with STEMMA QT cables.
The synth has multiple functions that can be selected using the top encoder:
- Play - the synth plays and you can adjust the chords for each of the four synth voices
- Euclidean - adjust the Euclidean rhythm for each voice
- BPM - raise or lower the Beats Per Minute of the sequence (speed)
- Beat - change the beat division of the sequence from a range of 1/16th notes to whole notes
- Wave - change the waveform for each synth voice to a square wave, sine wave, sawtooth wave, or noise
- ADSR - adjust the attack, decay, sustain, and release for each synth voice
- Ring - adjust the percentage of ring modulation applied to each synth voice
- LFO - adjust the rate of the LFO being used for ring modulation
- Volume - control the overall volume of the synth
What are Euclidean Rhythms?
Euclidean rhythms are derived from an algorithm that determines how to spread the number of steps over a number of beats as equally as possible. The interplay between different time signatures can create complex and interesting polyrhythms, even something as simple as one person clapping in 4/4 time while another person claps in 6/8 can sound interesting!
Euclidean algorithms have become popular as an option in Eurorack modules that generate rhythms. C code for this algorithm was originally referenced in Godfried Toussaint's paper and Brian House ported the algorithm to Python in this repository. You'll see this function in the CircuitPython code.
The Euclidean rhythm for each synth voice is controlled with the four lower encoders in Euclidean mode. The 8x8 matrix displays the total number of steps in each rhythm. As the rhythms advance, a pixel on the matrix turns red when a note plays to denote the place in the sequence.
Text editor powered by tinymce.