cd /news/ai-tools/a-claude-code-mod-plays-midi-music-w… · home › topics › ai-tools › article
[ARTICLE · art-147223] src=github.com ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

A Claude Code mod plays MIDI music when it works

An engineer released miod, a Claude Code plugin that generates live MIDI music reflecting what the AI coding agent is doing, requiring Claude Code 2.1.290 or newer on macOS. The mod assigns each task a flavour, key, scale, chord progression, tempo and sound, with 13 moods (thinking, reading, editing, running, failing and others) that each have 10 variants and change whenever the agent's activity changes or every 4 phrases. It is installed via the Claude Code plugin marketplace from delexw/miod and can be toggled with /miod on, /miod off and /miod wave commands.

read4 min views3 publishedOct 7, 2026
A Claude Code mod plays MIDI music when it works
Image: Michielbdejong (auto-discovered)

Important

Only tested on macOS. Not sure yet how it behaves on Linux or Windows.

I'm an engineer, but these days I solve the boring problems entirely by vibe coding. Somewhere along the way I felt I had lost the creativity and curiosity I used to have when writing code myself.

So I started thinking about how to make vibe coding fun again. miod is the first try: while the agent does the work, you get to hear it think, read, edit, fail and fix, with a little piece of music no one has heard before.

Feel free to add more moods, flavours and styles. Each mood is one row in hooks/moods.ts, each flavour one row in hooks/flavours.ts, each sound style one entry in hooks/styles.ts, and each wave look one file in hooks/waves/.

Feeling it's a bit too noisy? 🙉 No hard feelings. Just turn it off with /miod off.

A Claude Code mod (MIDI + mod) that writes music on the spot while Claude works. No music files, no library, no AI model.

  • Every task picks its own flavour (lo-fi, chiptune, ambient, jazzy and 8 more), key, scale (16 of them), chord progression, tempo, sound and theme.

  • The mood follows what the agent is doing. Every mood has 10 variants, and a new one is picked as the task goes: whenever the activity changes, and every 4 phrases. The task's flavour bends it too, so editing in a lo-fi task sounds nothing like editing in a chiptune one.

  • The faster it spends tokens, the busier the music.

  • Above the prompt, one line shows the mood, flavour, key, tempo and energy, with a wave under it that scrolls with the music, coloured by mood:

  • Tasks flow into each other: the next task fades in, in a related key. If no new task comes, a closing chord fades out at the end of the phrase.

Needs Claude Code 2.1.290 or newer, on macOS.

claude plugin marketplace add delexw/miod
claude plugin install miod@miod

Then start a new session.

/miod        is it on or off?
/miod off    stop the music
/miod on     play again from the next task
/miod wave   list the wave looks: bars, line, mirror, dots, pulse
/miod wave dots   switch the wave to the dots look

Each row below is the mood's first variant. All 10 are in MOODS in hooks/moods.ts.

The agent is… When it uses… Sounds
thinking no tool calm
reading Read, Grep, Glob, MCP tools airy
exploring WebSearch, WebFetch curious (lydian)
planning TodoWrite, plan mode hopeful (major pentatonic)
asking AskUserQuestion waiting, almost silent
editing Edit, Write bright (major)
running Bash driving beat
installing npm, bun, pip, brew… install patient (minor pentatonic)
testing test, check, lint, tsc focused (dorian), busy beat
shipping git commit, push, merge, gh pr triumphant (mixolydian)
deleting rm -r, git reset --hard, git clean ominous (phrygian), low drone
delegating Agent one harmony voice per subagent
failing a Bash command that failed tense (minor), until a command passes

When several happen in one 8-beat phrase, the one higher in STRONGEST_FIRST (hooks/activity.ts) wins. A filling context window lifts the melody and, past 80%, adds a low drone.

The scales follow how musicians describe each mode (musical-u, Jiang et al. 2024).

  • Mood variant: add a row to that mood's list inMOODS inhooks/moods.ts .
  • New mood: add the name toActivity andSTRONGEST_FIRST inhooks/activity.ts , map tools or commands to it there, and give it a list of at least 10 variants inMOODS .
  • Flavour: add a row toFLAVOURS inhooks/flavours.ts . Each field nudges every mood: brighter or darker scale, busier or calmer, drums up or down, swing, bass line.
  • Scale or chords: add toSCALES orPROGRESSIONS inhooks/theory.ts .
  • Wave look: add a file tohooks/waves/ that exports aWaveLook (how many rows, and adraw function), then list it inWAVES inhooks/waves/index.ts .
  • Style: add a wave function toSTYLES inhooks/styles.ts . It must return values between -1 and 1.

Then check it:

claude plugin validate .
claude plugin test .

Run a checkout without installing it with claude --plugin-dir <path to this repo>.

  • Only tested on macOS, where Claude Code plays the audio through afplay .
  • The sound is simple chiptune-style tones.
  • miod only hears the session it's loaded in.
── more in #ai-tools 4 stories · sorted by recency
── more on @claude code 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/a-claude-code-mod-pl…] indexed:0 read:4min 2026-10-07 · —