04 — Hardware

Programmer

In 2024 Chase Bliss reached out to me so MOOD MKII owners could install the 1.1 firmware. I got it working on a forked flasher, then rebuilt it properly this year (2026) with beta and nightly channels, plus an admin panel to swap out and upload new ones.

Client
Chase Bliss Audio
Role
Design + build
For
Users + CBA Engineers
Line drawings of a Chase Bliss MOOD MKII, one of the pedals the Programmer updates, and of two of the Programmer's pages: the customer page at firmware.chasebliss.com, where you select firmware, connect the pedal and update, and the admin, where Chase Bliss loads a build, flashes it and publishes it to a channel. Both pages' steps can be pressed through, no pedal needed.

04.1 — It needs a pedal

You can click around without a pedal, right up until you hit update. Plug one in over USB and it's the real thing, so maybe don't flash your MOOD just to watch the progress bar. The one up top is pretend, flash it all you want.

firmware.chasebliss.com

04.2 — Three steps

04.3 — The old one

It already worked

Credit where it's due, my 2024 version was Electro-Smith's open-source flasher with a Chase Bliss coat of paint. It worked, but every new build meant me hand-editing JSON and hoping I didn't miss a comma.

04.4 — The build

USB in browser

WebUSB lets the page talk to the pedal directly, so everything runs in your browser. The catch is it's Chrome only, sorry Safari people. I've been mostly in Astro lately, but this is one big interactive thing, so Vite and React made more sense.

04.5 — Behind it

I fired myself

Chase Bliss logs into an admin, uploads a build, picks a channel and hits save. That commits to GitHub and kicks off a deploy, no Jake required. Unlisting a bad release moves the file off its public URL, so pulling it pulls it everywhere.

04.6 — The DFU part

Hand-me-down code

The flashing runs on DFU code from the original, ported to TypeScript. The libraries behind it haven't been touched in years, so I patched a few things myself, like writing to the right flash bank. Way lower level than I usually get.

Every build lands in production, beta or nightly. Same page, different list. Beta needs a password and nightly makes you tick a disclaimer, because nightly builds are nightly builds. The little computer down there is from the real site, clicktap it.

ClickTap it — flash complete

04.7 — Made of

ReactTypeScriptViteTailwindWebUSBVercel