🥁 Extracadian Rhythms
A midi sequencer firmware for the Befaco MIDI Thing v2 controlled via a Novation Launchpad Mini Mk3, inspired by the Tiptop Audio Circadian Rhythms.
Turns a MIDI Thing v2, Launchpad Mini Mk3 combo into a standalone eurorack trigger/gate/CV sequencer.
Features
Inspired by Circadian Rhythms
- 8 trigger/gate channels with configurable length (1-512 steps) (output on jacks 1–8)
- Groups/presets/steps: 8 groups × 8 presets × 8 steps x 8 channels
- Mutes/solos per channel
- Random/chaos generation at preset level
- Beat sync: wrap vs immediate
- Swing with variable amount and mode (8th/16th)
- Tempo control with tap tempo
- Performance fills with variable rate and division
- Copy/paste/clear at channel, preset, and group level
- Sub-step editing at 24 PPQ resolution for micro-timing and flams
Beyond Circadian Rhythms
- Euclidean rhythm generation per preset with density and rotation controls
- Polyrhythmic patterns via variable/independent preset/channel lengths
- Dual shift registers for semi-random CV generation (V/Oct output on jacks 9 & 10)
- Probability per step/gate for randomized patterns
- Project storage: save/load 32 projects to program flash (survives firmware updates)
- OLED status display: BPM, group/preset, shift register notes, trigger activity
- Launchpad hot-plug: connect/disconnect the Launchpad at any time
- Clock output (16th note tempo out for maximum eurorack usefulness, jack 11) and reset trigger out (jack 12)
Hardware
- Befaco MIDI Thing v2 — Teensy 4.0 based eurorack module with 12 CV/trigger jacks, OLED display, USB Host port
- Novation Launchpad Mini Mk3 — 8×8 RGB grid controller (connected via USB to the MIDI Thing's USB Host port)
Output Assignment
| Jack | Function |
|---|---|
| 1–8 | Trigger/gate outputs for sequencer channels 1–8 |
| 9 | Shift Register 1 CV output (V/Oct) quantized |
| 10 | Shift Register 2 CV output (V/Oct) quantized |
| 11 | Clock output (16ths) |
| 12 | Reset trigger |
Reason for existence
I really like the Circadian Rhythms, but the omission of polyrhythms was a dealbreaker for me, so I decided to create my own version of it. I also added two shift registers because I personally use them a lot in my musical projects (usually via the Disting mk4). Another benefit of this software is project storage (up to 32 full machine states can be saved as projects).
Full Documentation
The full sequencer documentation is in the documentation folder.
Building & Flashing
The easiest way to flash the firmware is to use the TyTools tyUploader and follow the instructions in the MidiThing v2 manual for flashing the firmware. This is also how you can flash back the original MidiThing v2 firmware when needed.
The hex file can be found on the Releases page in Github.
Note: this firmware will set the clock speed of the MidiThing v2 to 240mhz (down from the full 600) to save power and prevent heat buildup.
Prerequisites
Build
pio run -e midithing
Flash
Sometimes it is needed to run this twice, something to do with the bootloader, not sure why.
./flash.sh
Running Tests
All sequencer logic is platform-independent and natively testable on your development machine:
# Run all tests
pio test -e native
# Run a single test suite
pio test -e native -f test_<name>
Architecture
- All logic lives in
lib/— platform-independent, zero-heap in the hot path src/is a thin hardware glue layer (~350 lines)IntervalTimerISR callsprocessTick()for microsecond-precision timingloop()handles non-critical work: Launchpad I/O, LED refresh, OLED, auto-save- Hardware abstraction via interfaces in
lib/hal/
License
Commons Clause + MIT — see LICENSE for details. Since this project is heavily inspired by the Tiptop Audio Circadian Rhythms, I can not in good conscience allow any commercial use of this codebase. The license allows anyone to use, modify, and distribute the code for free for open-source and personal projects, but prohibits any commercial use of the code or derivative works.
Summary: Free for open-source and personal use. Commercial use prohibited.
