Midi Clock Display
A small display to read a midi clock signal and display it
Overview
I use a ClockStep:Multi metronome to run my guitar setup. I really like it, it’s a great device. But the only interface is a grid of buttons that light up and blink in different sequences. To read the BPM the buttons light up like a telephone keypad and flash a quick sequence to show 3 numbers. That works fine but it’s hard to read that quickly when I’m doing a lesson.
What I learned
My first attempt was plugging in my BOSS DB-90. It can read the signal from midi in, and display it. It worked pretty good, but it had issues where the display would start to lose sync if the BPM jumped too much.
Then I tried using TouchOSC. This worked a bit better in some ways. It didn’t lose sync, but MIDI over USB has some issues. USB isn’t real time. For most thing’s thats fine, but for reading a clock signal it left it with a bit of jitter. Not bad, but the reading would constantly drift up and down.
So I ended up getting inspired to learn about embedded software and electronics. I though I could probably build something that combined the speed of the DB-90, and the features of the TouchOSC script. A purpose built device instead of trying to use something not really meant for it.
I started reading up on microcontrollers, the MIDI spec, and brushing off soldering skills I hadn’t used since highschool electronics. I was learning about ESP32s, learning what an optocoupler was, and how to reverse engineer some undocumented messages from the metronome.
I had a good time with it. Talked to creator of the metronome who pointed me on the right track for the undocumented stuff. He likely would have told me the exact details, but I just kept working on it and had the exact messages figured out before he eventually replied.
There was a version that used MQTT to send messages and a Tauri desktop app to record progress and log practice sessions. But I ended up removing it. It was too much complexity, the thing that made the display work so well was how simple it was. You give it a midi input, it shows you the BPM and time signiture. The whole idea was that it just worked. So I scrapped the extras.
I didn’t make it to sell or anything. It was something I made for myself, to solve a problem I had. Made just for my exact setup and use case. The end result was a whole wave of inspiration on other things I could solve. Being able to go from “Man I wish this product existed, I really want to buy it” to just being able to make it is so much fun.

Stack
Rust, ESP32