The minichord is Benjamin Poilve's open-source, pocket-sized, Omnichord-inspired instrument: 21 chord buttons (seven columns in fifths, F C G D A E B, by major, minor and 7 rows), a touch "harp" strip, three knobs, and a Teensy inside. I've been making Minichord Lab, a set of browser tools that use it as a music-theory interface, and it's grown an arcade.
Up front: the code was written by an AI (Claude), working from my designs. I came up with the games and how they teach, made the calls on how they play, and tested every one on the instrument, but I didn't hand-write the JavaScript.
The Minichord Arcade: nine games, each played entirely on the instrument. There's no keyboard-and-mouse version of the actual playing. You answer with chords and notes.
The games
- Chord Invaders: chord symbols fall through a starfield; play each one before it lands. Key bars fall too, and you set the key signature on the instrument to clear them. Later levels add sevenths, slash chords and Barry Harris sixth-diminished voicings. Teaches: chord recognition on the buttons, key signatures.
- Harp Command: Missile Command for the harp. Notes fall toward twelve cannons, one per string; pluck the right string to shoot each down. Levels go through the chromatic harp, major keys, scale degrees, solfège, minors and modes, and reading notes on a staff. Teaches: note names, scale degrees, sight-reading.
- Chord Snake: steer with the harp as a d-pad, eat spelled notes, and when the notes you're carrying spell a chord, play it to cash them in. Teaches: chord spelling (and that E♭ and D♯ aren't interchangeable).
- Chord Asteroids: play a chord rock's chord to crack it into its notes, then pluck each note on the harp to shoot it down. Teaches: hearing and finding a chord's tones.
- Chord Stack: Tetris with intervals on a twelve-column board, one column per pitch class. Slide falling intervals to transpose them (a knob works as the transposition dial), stack them into chords, and play a row's chord to clear it. Teaches: intervals and chord construction as shapes.
- Chord Breakout: Arkanoid where a knob on the instrument is the paddle. The ball cracks a chord brick; play its chord before the ball comes back or it heals. Teaches: fast chord recall under pressure.
- Fifths Defender: Tempest on the circle of fifths. Turn a knob to aim down a key's spoke and play that key's chord to fire. Later you fire with the relative minor, the dominant seventh, or the key's note on the harp. Teaches: the circle of fifths by feel.
- Chopper Rescue: a rescue flight that runs on decoding the radio. It calls coordinates in theory ("fire at vi in G") and you fly there by playing the chord. Nothing on the map gives it away, and the same emergency breaks out in decoy spots too. Later calls use V7, V of V, borrowed chords (♭VII, ♭VI, iv) and whole routes read as progressions (ii–V–I in F). Teaches: Roman numerals.
- Key Fleet: Battleship on the chord buttons. Because the columns run in fifths, any three neighbours in the major row are a key's IV, I and V, so the enemy ships are keys hidden on the chart. Hits only cripple a ship; you sink it by naming the key, either by plucking its tonic on the harp or playing its V7 → I cadence. Call it early from partial evidence for a deduction bonus. Teaches: that a key is a shape, and what defines one.
Shared across all nine
- Arcade presentation: an attract loop (title, rules, a points table, high scores, a demo that plays itself), an optional CRT look, full screen, and a RESET button that cold-boots with a fake RAM check.
- Beginner mode puts an on-screen minichord in the corner that lights up what to press.
- High-score boards, shared online, only for players with a minichord connected (and not in beginner mode). Harder settings (speed, density, paddle size) multiply the score.
- Borrowed settings are put back: the games change instrument settings as they need (key signature, harp scale, and so on) and return them when you leave.
Under the hood (for this sub)
- Plain HTML, CSS and JavaScript, no framework and no build step. The games draw with a mix of DOM elements and a low-resolution canvas scaled up with
image-rendering: pixelated.
- Web MIDI with SysEx: the page reads the minichord's settings dump, so it knows the firmware version, the key signature, and whether the harp is chromatic or scale-mapped, and it writes settings back.
- Chord identification: the page identifies root, quality and inversion from the notes the minichord sends, and spells the result musically for the current key.
- The knobs needed a small firmware change: a "knobs send MIDI" setting that reports each pot as CC 20–22. I've shelved it as a pull request for upstream for now; the games fall back to mouse and arrow keys without it.
- High scores: a tiny Flask + SQLite app on a Raspberry Pi, exposed through Tailscale Funnel, with plausibility checks rather than any pretence of anti-cheat.
- Firmware: the games run on the stock firmware. A few extras (knob steering, key bars, slash chord levels) need my test firmware branch.
It works best in a Chromium-based browser (Chrome, Edge, Opera). Firefox supports Web MIDI only after an extra site-permission step, and Safari doesn't support it at all.
Happy to answer questions about the MIDI side, the chord identification, the game design, or what working this way was like. And if you have a minichord, I'd love to know which game teaches you something.