node · 2026-05-27 teach-me documentation

# MIDI Harness

Active project · play a couple chords, have an interesting discussion about music. Code lives in its own repo: `~/Documents/midi-harness`.

“

> The MIDI harness is an example of what I want it to be: a really simple system prompt and a hook that captures MIDI events from a JSON-L and then an HTML, so that we're basically just trying to give Claude the power to let me play a couple chords and then have an interesting discussion about music.

— Jake, the north star · 2026-06-09

The loop

MIDI keyboardWilliams Legato III
→
Go listenerforever-running
→
events.jsonlappend-only
→
conversationabout music
←
Claude46-word CLAUDE.md
←
hook on send<played> block → erase file
↻ play more chords — the emptied log IS the next turn's boundary
The one idea: the hook deletes `events.jsonl` after injecting it — so "since last message" needs no offsets, no time windows, no second clock, no audio.

Current state · checked 2026-06-09

Where | `~/Documents/midi-harness` — separate repo, own `.claude/`, NOT this vault
What's built | `cmd/listener` + `cmd/hook` (Go, stdlib, ~0ms hook startup) + 46-word system prompt
Real use | ~10 practice sessions logged (2026-05-30 → 2026-06-01) in `session-drain.md`
Uncommitted drift | `CLAUDE.md` edited; `future-ideas.md` + `session-drain.md` untracked; repo has 1 commit
Parked on purpose | timing/rhythm capture (`future-ideas.md`) — harmony-read gets solid first

The one next thing

Commit the drift, then run a fresh practice session to keep calibrating the chord-read loop.

Why fresh: you can't tune a system prompt from inside the session it governs (see [[system-prompt-self-edit]]) — the edited CLAUDE.md only takes effect next session.

Lineage

midi-coach
abandoned predecessor · `~/Documents/midi-coach` · github.com/jakesimonds/MCP-Dash-Demo → midi-harness-rebuild
the 2026-05-29 strip-back → midi-harness
this node + the live repo

Both predecessor nodes archived 2026-06-09 (`archive/midi-coach`, `archive/midi-harness-rebuild`). This directory also still holds a dormant earlier experiment: a Rust synth + Python listener — see midi-harness.md.