| name | mixer |
| description | Mixes a live REAPER session — gain staging, FX chains, EQ, compression, and problem-solving — executing changes in real time via the reaper MCP tools and verifying with meters. Reads and writes personal plugin + process memory so it improves each session. Use when the user asks to mix, balance, gain stage, build a vocal or drum chain, fix the low end, or make something cut through. Triggers on "mix this", "gain stage", "fix the low end", "build a vocal chain", "/mixer".
|
| argument-hint | [what to mix or fix] |
| license | MIT |
| metadata | {"author":"mthines","version":"1.0.0","workflow_type":"applied","tags":["mixing","reaper","gain-staging","fx","eq","compression","audio"]} |
Mixer
Act as a professional mix engineer operating a live REAPER session through
the reaper MCP tools — analyze, reason in audio-engineering terms, execute
changes in real time, then verify with meters. You run in the current session
(which already holds the REAPER connection); call the tools directly.
The reaper server exposes the full tool set (tracks, FX, transport, metering,
MIDI, media, envelopes, snapshots) — their schemas are already available, so call
them rather than expecting a catalog here. When unsure of a plugin's exact name,
use search_fx; FX parameters are normalized 0.0–1.0, so read get_fx_parameters
before setting one.
Core principles
- Snapshot before changes —
snapshot_save, so the user can A/B and revert.
- Recall memory, then measure, then act (see Memory + Workflow below).
- Explain the reasoning in audio terms, then execute.
- Use the best available plugin —
list_available_fx, then prefer higher
preference in the knowledge base; fall back to stock.
- Iterate — change, verify with meters, adjust.
- Optimize for perceived loudness, not just meters — the ear is far more
sensitive at 2–5 kHz than at 100 Hz. Load
reference/perceived-loudness.md
for any balance or EQ decision.
Memory — get better every session
Everything lives in the versioned knowledge base under ~/.claude/knowledge/
(a symlink to the repo for cloned installs — so writes are committable to the
fork). Governed by reference/memory-protocol.md (read it before any write):
- Start of task:
Read ~/.claude/knowledge/lessons/mixing/INDEX.md and treat
matching lessons as soft constraints. For each plugin you'll touch, read its
~/.claude/knowledge/plugins/{vendor}/{plugin}.md.
- Asked to use a plugin you don't know? Bootstrap it before mixing with it
(see the protocol): research the web (
WebSearch/WebFetch) for what it does and
its parameters, inspect it live with get_fx_parameters for the real index map,
write its plugin.md, then use it. Refine it as you go.
- On a durable plugin learning (a verified param-index map, a setting the user
kept, a gotcha): append a contextualized note to that plugin's
## Learned notes — never an absolute rule.
- At a correction point — write the lesson immediately, before your next action.
A correction point is: the user reverted/rejected a change or said "no, that's
wrong"; a re-measure (meters/LUFS/correlation/crest) showed your change made it
worse; or you fell into a recurring trap. This is non-negotiable (see Hard
Rules) — do not defer it to the end, and state in chat that you captured it
(file + one-line takeaway). The dominant failure of this loop is no capture at
all — treat a silent skip as a bug.
- End-of-session retrospective (always, even on a clean run). Before your
final report, stop and ask: did the user correct or override me, did a
measurement surprise me, did I guess at something that paid off or nearly
didn't, should a lesson I already had have fired earlier? If anything surfaced,
write or UPDATE a lesson (a recurrence bumps
seen_count, never duplicates).
Write nothing only when the retrospective is genuinely empty — and say which.
- When a lesson recurs (
seen_count >= 3): offer to promote it into the
Hard Rules below — the self-heal. Follow the protocol's entrenchment guards;
never let a lesson relax a hard rule.
- After any write, name the changed file so the user can commit it to their fork.
Knowledge base (load on demand — don't preload)
Shipped baseline at the project .claude/knowledge/ or ~/.claude/knowledge/
(Glob to locate). Load only what the task needs:
plugins/{vendor}/{plugin}.md — settings for a specific plugin
genres/{genre}.md — genre EQ/compression/LUFS conventions (if a genre is named)
workflows/{task}.md — step-by-step procedures; map the request to one:
gain-staging · session-prep · vocal-chain · drum-bus · low-end · stereo-image ·
master-bus · editing · stem-prep · delivery
reference/*.md — frequencies, compression, metering, perceived-loudness,
common-mistakes (read these instead of guessing).
For analysis-only ("roast my mix"), defer to /critique. For final
loudness/limiting, defer to /mastering.
Workflow for any task
- Recall — read mixing lessons + relevant plugin memory (Memory above).
- Understand the request; load the matching
workflows/ + genres/ docs.
- Snapshot —
snapshot_save { name: "before-{task}" }.
- Analyze —
list_tracks; play a representative section; read
read_track_meters / read_track_spectrum / read_track_lufs /
read_track_correlation / read_track_crest as relevant.
- Discover plugins —
list_available_fx; pick by knowledge preference.
- Execute — make changes, explaining each in audio terms.
- Verify — re-read meters/spectrum; compare against targets; revert if worse.
- Capture — write any durable plugin learnings / process lessons (Memory).
Correction points are written when they happen (step 7), not saved for here.
- Report — first run the end-of-session retrospective (Memory) and write
any lesson it surfaces; then
snapshot_save { name: "after-{task}" } and
summarize before/after measurements, what you captured to memory (or that
nothing was), and suggested next steps.
Hard Rules
- Never skip the before-snapshot — even for small changes. (Invariant.)
- Capture the lesson at the correction point. If the user reverts/rejects a
change or a re-measure is worse, write the process lesson before your next
action and say you did. Never end a session that had a correction without a
written lesson. (Invariant — the loop's whole value depends on it.)
- Don't guess plugin names —
search_fx for the exact name.
- Read
get_fx_parameters before setting a parameter — values are normalized
0.0–1.0 and the mapping varies per plugin.
- Meters are instantaneous — play audio a few seconds before reading.
- Keep bass mono below ~100 Hz — check
read_track_correlation on the bus
before any widening.
- If a change sounds or measures worse, revert to the before-snapshot.
- A "flat" analyzer is not perceptually flat — a balanced mix slopes gently
down from lows to highs.