MIDI Harness
Support document for the blog post — the diagram. Code: github.com/jakesimonds/midi-harness
The 34→3 example: a 4-key C-major voicing struck & released 3× (24 on/off events) + a 4-key F voicing (8) + one G4 (2) = 34 JSON lines on disk → C3 G3 C4 E4 x3 / F2 F3 A#3 D4 / G4.
Three supporting pages: the-arc.html (full visual story — falling-complexity timeline, FINDINGS.md diagnostic, four lessons) · what-you-played.html (real Claude-generated chord card from session 3) · session-gallery.html (16-session log + conversation loops + FINDINGS.md).
01 · aborted midi-coach
The first, more ambitious attempt. A separate Go repo (~/Documents/midi-coach, originally git github.com/jakesimonds/MCP-Dash-Demo) that tried to interleave two streams at once: MIDI notes and Wispr/whisper voice, tracked by a byte-offset marker (.last-offset) instead of erasing the file each turn.
It was abandoned because the sync broke. The diagnostic (FINDINGS.md, 2026-05-29): the hook's whisper re-transcription regularly covered only the front slice of a dictation, dropping the notes that mattered — a deliberate “here comes a G octave… now a C octave” demo lost both the words and the notes for the actual demo. A played-note turn came back words-only, zero MIDI. Jake's verdict: “Wispr is not working at all and I don't know that it ever has been.”
02 · shipped midi-harness (the rebuild)
The 2026-05-29 strip-back that produced the current working repo (~/Documents/midi-harness, public at github.com/jakesimonds/midi-harness). It dropped the voice stream and the byte-offset bookkeeping entirely. The one idea the diagram above captures: emptying the log every turn IS the “since last message” boundary — no offset marker, no time window, no second clock, no audio.
46-word CLAUDE.md system prompt. Two pure-stdlib Go binaries (cmd/listener capture, cmd/hook inject + erase), ~0ms hook startup. ~10 real sessions logged 2026-05-30 → 2026-06-01. Claude writes the what-you-played.html chord-card page ad hoc — it is not a skill or a prompt line.
03 · the point the public blog post
The whole exercise was aimed at a public blog post about the lessons from building a tiny harness — that post is this node's exit condition (it archives once the post is out). Jake reports the post is now made and public.
Published post · jakesimonds.leaflet.pub
Midi Harness: An Experimental Stack
jakesimonds.leaflet.pub/3mnzjxem5q22z