August 11, 2026

Making the firmware, the web app and the manual agree

By admin · 2 min read

Three versions of this instrument exist: the firmware on the Teensy, the web application that controls it, and the interface preview that runs in a browser. They are meant to be the same instrument. They had stopped being one.

This was the reconciliation:

  • Controls, value formats and layouts unified across all three, and page indices synchronised so page four means the same thing everywhere
  • Macro mapping re-architected with per-target fallback validation, so a macro pointing at something that isn’t there fails visibly instead of silently
  • The effects section split into six discrete items, each with its own wet/dry mix, instead of one effect type with a shared control
  • A conflict on pin 13, where the SPI clock and the status LED were fighting over the same pin

Values got a single format too. Frequencies as Hz or kHz. Times in milliseconds. LFO rate in Hz. MIDI variables as plain 0–127. A macro now reads Macro 1: Flt Cut (1.50 kHz) instead of a bare number, which tells you what it does without having to remember.

The part worth keeping

Drift between three implementations is not a bug you fix once. So there is now a consistency checker: thirteen automated tests that compare the firmware, the application and the interface against each other and fail when they disagree.

Three descriptions of one thing will drift apart. A checker is cheaper than proofreading, because proofreading happens once and this runs every time, including the times you can’t be bothered.

More on the project page.