@mthines/reaper-mcp 0.70.2 → 0.70.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,12 +1,181 @@
1
- # reaper-mcp
1
+ <div align="center">
2
2
 
3
- **Type what you hear. An AI mix engineer inside your REAPER session measures it, decides and makes the change live.**
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/logo-dark.svg">
5
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/logo.svg" alt="reaper-mcp" width="360">
6
+ </picture>
4
7
 
5
- reaper-mcp connects Claude Code to a running REAPER session: tracks, FX, metering, MIDI, automation, rendering and more, plus mix skills (`/mixer`, `/critique`, `/mastering`, `/editing`, `/learn-plugin`) that know your plugins and genres.
8
+ <br><br>
6
9
 
7
- ## Install
10
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/hero.svg" alt="reaper-mcp — Mix by asking. Type what you hear and an AI mix engineer inside your REAPER session does it." width="100%">
8
11
 
9
- You need [REAPER](https://www.reaper.fm/) (v6+), [Claude Code](https://claude.com/claude-code) and [Node.js 20+](https://nodejs.org/). In a terminal:
12
+ <br>
13
+
14
+ **Type what you hear. It measures, decides and makes the change live in your REAPER session.**
15
+ <br>
16
+ You chat in plain English in Claude Code, by keyboard (or dictation, if you like). No menus to learn, no exporting, no code.
17
+
18
+ <br>
19
+
20
+ [![REAPER 6+](https://img.shields.io/badge/REAPER-6%2B-22d3a6?style=for-the-badge)](https://www.reaper.fm/)
21
+ [![Claude Code](https://img.shields.io/badge/Claude_Code-ready-a78bfa?style=for-the-badge)](https://claude.com/claude-code)
22
+ [![LoreKit](https://img.shields.io/badge/Memory-LoreKit-7c3aed?style=for-the-badge)](https://lorekit.io)
23
+ [![macOS · Windows · Linux](https://img.shields.io/badge/macOS_·_Windows_·_Linux-1a1240?style=for-the-badge)](#-install-in-3-steps)
24
+ [![MIT](https://img.shields.io/badge/license-MIT-ff7a45?style=for-the-badge)](https://github.com/mthines/reaper-mcp/blob/v0.70.3/LICENSE)
25
+
26
+ [**Install in 3 steps**](#-install-in-3-steps) · [See it work](#-just-type-what-you-hear) · [What you get](#-why-producers-use-it) · [Watch it work](#-see-what-your-agent-is-doing) · [Extensions](#-extensions-teach-it-your-plugin) · [FAQ](#-faq)
27
+
28
+ </div>
29
+
30
+ ---
31
+
32
+ ## 💬 Just type what you hear
33
+
34
+ You know what's wrong with your mix. You just don't want to spend an hour in
35
+ plugin windows fixing it. Type it into Claude Code the way you'd say it to an
36
+ engineer. It's a text chat, so no microphone or voice setup is needed (dictate
37
+ with your OS if you prefer, it's the same thing to the agent):
38
+
39
+ > 🎧 *"Please gain stage my tracks."*
40
+ >
41
+ > 🎸 *"The chorus needs more energy. Make the vocals cut through."*
42
+ >
43
+ > 🔊 *"I hear some low-end rumble. Can you fix that?"*
44
+ >
45
+ > 🔥 *"Roast my mix. What could be better?"*
46
+ >
47
+ > 💿 *"Master this for Spotify."*
48
+
49
+ Here's what happens next:
50
+
51
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/session-demo.svg" alt="Illustrative session: the mixer saves a snapshot, measures, cuts the guitars where they mask the vocal, compresses the vocal, re-measures and saves an after snapshot." width="100%">
52
+
53
+ It isn't a preset and it isn't a guess. Before it touches anything it **measures your
54
+ actual tracks** (loudness, spectrum, stereo width, dynamics). It makes the change with
55
+ **the plugins you own**, then **measures again** to check it worked.
56
+
57
+ ---
58
+
59
+ ## ✨ Why producers use it
60
+
61
+ <table>
62
+ <tr>
63
+ <td width="33%" valign="top">
64
+
65
+ ### 👂 It measures, then mixes
66
+ It reads LUFS, true peak, the frequency spectrum, stereo correlation and crest factor
67
+ on every track before it decides anything, and again after. You get numbers, not vibes.
68
+
69
+ </td>
70
+ <td width="33%" valign="top">
71
+
72
+ ### 🎛️ It uses *your* plugins
73
+ It finds your installed FX and reaches for the best one you have: **FabFilter Pro-Q 3**
74
+ if it's there, **ReaEQ** if not. Anything it doesn't know yet, it learns.
75
+
76
+ </td>
77
+ <td width="33%" valign="top">
78
+
79
+ ### 🛟 You can't lose your mix
80
+ It saves a snapshot **before and after** every change, so you can A/B them with one
81
+ click. Each edit is a single REAPER undo step.
82
+
83
+ </td>
84
+ </tr>
85
+ <tr>
86
+ <td valign="top">
87
+
88
+ ### 🎸 It knows the genre
89
+ Rock, pop, hip-hop, electronic, metal, orchestral. It adjusts loudness targets, low-end
90
+ handling and dynamics to the style. Just tell it what you're making.
91
+
92
+ </td>
93
+ <td valign="top">
94
+
95
+ ### 🧠 It remembers
96
+ With **[LoreKit](#-lorekit-the-knowledge-core)** as its memory, it keeps what it learns
97
+ about your plugins and your taste, so a correction sticks. It also draws on a shared
98
+ plugin library that grows every time someone
99
+ **[contributes](https://github.com/mthines/reaper-mcp/blob/v0.70.3/knowledge/contributions/README.md)**, you included.
100
+
101
+ </td>
102
+ <td valign="top">
103
+
104
+ ### ⚡ It works live, in real time
105
+ It talks straight to your open session, about 50–150 ms per action. You don't bounce
106
+ or upload anything, and you hear each change as it happens.
107
+
108
+ </td>
109
+ </tr>
110
+ </table>
111
+
112
+ ---
113
+
114
+ ## 🔍 How it works
115
+
116
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/how-it-works.svg" alt="You describe what you hear, Claude measures and decides, REAPER changes live. Every change: snapshot, measure, decide, change, re-measure." width="100%">
117
+
118
+ **You stay in charge.** Ask it to explain before it acts, undo anything, or use
119
+ `/critique` for advice without a single change to your project.
120
+
121
+ ---
122
+
123
+ ## 🧠 LoreKit: the knowledge core
124
+
125
+ A mix engineer's value is what they've learned. reaper-mcp keeps all of that in
126
+ **[LoreKit](https://lorekit.io)**, a free, open-source memory store for AI agents. It's
127
+ what turns a remote control into an engineer that gets better every session.
128
+
129
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/knowledge-core.svg" alt="LoreKit at the center: the mix skills read plugin records and lessons before acting and write back what they learned." width="100%">
130
+
131
+ - 🎛️ **One record per plugin.** What it is, what each knob does, the settings that
132
+ worked and the gotchas. Ask for a plugin it has never seen and it **researches it,
133
+ inspects it live and writes the record first**, then uses it. You can also teach it
134
+ one with `/learn-plugin`.
135
+ - 📝 **Lessons from your corrections.** Revert a change, or have a re-measure come back
136
+ worse, and it saves a lesson right then. A lesson that keeps coming up becomes one of
137
+ the mixer's permanent rules, so it stops making that mistake.
138
+ - 🧩 **Built-in knowledge plus your own.** It ships with a curated, read-only set of
139
+ plugin records and lessons, and everything it learns from *you* goes into your own
140
+ layer on top. When the two disagree, yours wins, so your taste never gets
141
+ overwritten. The built-in set comes with the server, read-only, and needs no
142
+ LoreKit account. Connect your own LoreKit to start your layer.
143
+ - 📚 **A built-in plugin library.** FabFilter, Soundtoys, Valhalla, iZotope, Melodyne, the
144
+ REAPER stock plugins and more: see the **[built-in plugin list](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/PLUGINS.md)**, and how
145
+ to add yours.
146
+ - 🤝 **Share what you taught it.** Press **Contribute** in the bridge page's Plugins tab
147
+ and your plugin records become a pull request. Once the maintainer approves it, they're
148
+ built in for every reaper-mcp user and added to the
149
+ [plugin list](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/PLUGINS.md) ([how it works](https://github.com/mthines/reaper-mcp/blob/v0.70.3/knowledge/contributions/README.md)).
150
+ Regular contributors can publish straight to built-in, no pull request: ask on
151
+ [Discord](https://discord.gg/Eg8tznuXp4).
152
+ - 🌍 **It follows you.** The memory isn't tied to one project folder. Whatever song
153
+ you open, it brings what it knows.
154
+ - 🔒 **Audio knowledge only.** It never stores client names, song titles or license keys.
155
+
156
+ > **No LoreKit? It still mixes.** Everything works without it. It just starts from
157
+ > scratch every session instead of getting smarter. Genre rules, step-by-step workflows
158
+ > and reference sheets (frequencies, compression, loudness) ship with the repo either way.
159
+
160
+ ---
161
+
162
+ ## 🚀 Install in 3 steps
163
+
164
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/install-steps.svg" alt="1. Get REAPER, Claude Code and Node.js. 2. Paste one command. 3. Click Run on mcp_bridge.lua in REAPER." width="100%">
165
+
166
+ ### 1 · Get the apps
167
+
168
+ | | | |
169
+ |---|---|---|
170
+ | 🎚️ **REAPER** | your DAW (v6+, v7 recommended) | [reaper.fm](https://www.reaper.fm/) |
171
+ | 🤖 **Claude Code** | the AI you talk to | [claude.com/claude-code](https://claude.com/claude-code) |
172
+ | 🟢 **Node.js 20+** | runs the connector behind the scenes | [nodejs.org](https://nodejs.org/) |
173
+ | 🧠 **LoreKit** *(recommended)* | the memory, so it learns | [lorekit.io](https://lorekit.io) |
174
+ | ➕ **SWS Extensions** *(optional)* | extra REAPER powers | [sws-extension.org](https://www.sws-extension.org/) |
175
+
176
+ ### 2 · Paste these commands
177
+
178
+ Open a terminal, then run:
10
179
 
11
180
  ```bash
12
181
  npm install -g @mthines/reaper-mcp
@@ -14,29 +183,369 @@ reaper-mcp setup # installs the bridge and status page into REAPER
14
183
  reaper-mcp init # connects Claude Code and adds the mix skills
15
184
  ```
16
185
 
17
- Then, in REAPER: **Actions → Show action list → Load ReaScript…**, pick `mcp_bridge.lua` and click **Run**.
186
+ That's it. No clone, no build. To update later, run `npm install -g @mthines/reaper-mcp` again,
187
+ then `reaper-mcp setup`. The bridge window in REAPER also shows an **Update** notice.
188
+
189
+ ### 3 · Click Run in REAPER
190
+
191
+ In REAPER: **Actions → Show action list → Load ReaScript…**, pick **`mcp_bridge.lua`**
192
+ and click **Run**. A small status window opens, showing the bridge is live. 🟢
193
+ Running it again stops the bridge.
18
194
 
19
- Open Claude Code in any folder and try:
195
+ **Now open Claude Code in any folder (your song folder is perfect) and start mixing:**
20
196
 
21
197
  ```
22
198
  /mixer Please gain stage my tracks
23
- /critique Roast my mix
24
199
  ```
25
200
 
26
- ## Something off?
201
+ <details>
202
+ <summary><b>Something not working?</b></summary>
203
+
204
+ <br>
205
+
206
+ - **Run `reaper-mcp doctor`.** It checks the bridge, the skills and the Claude Code config, and says how to fix what's off.
207
+ - **Is the bridge running?** The status window shows 🟢 when it is. If not, run `mcp_bridge.lua` again from REAPER's action list.
208
+ - **Claude Code doesn't see REAPER?** Install Claude Code first, then run `reaper-mcp init` again.
209
+ - **Missing skills?** `reaper-mcp install-skills` copies them into `~/.claude` (it never overwrites files you edited).
210
+ - **Audio analysis (loudness, masking, stems)?** `reaper-mcp setup-sidecar` (needs Python 3.10+).
211
+
212
+ </details>
213
+
214
+ ---
215
+
216
+ ## 🎚️ Meet your engineers
217
+
218
+ Seven skills, each tuned for a job. Type the slash command, or just describe what you
219
+ want and the right one starts.
220
+
221
+ | | Skill | What it does | Try |
222
+ |---|---|---|---|
223
+ | 🎚️ | **`/mixer`** | Does the mixing: gain staging, vocal chains, drum bus, low end, stereo image | `/mixer Build a vocal chain on track 3` |
224
+ | 🔥 | **`/critique`** | "Roast my mix." A measured report of what to fix. **Changes nothing.** | `/critique What's holding this mix back?` |
225
+ | ✂️ | **`/editing`** | Edits notes, arrangement and timing, and compares two versions of a part in lanes | `/editing Make the chorus half-time` |
226
+ | 💿 | **`/mastering`** | A mastering chain on the mix bus, aimed at a platform's loudness | `/mastering Master this for Spotify` |
227
+ | 🎓 | **`/learn-plugin`** | Researches a plugin you own, tests it live and saves it to LoreKit, asking you only what it can't work out | `/learn-plugin JST Gain Reduction Deluxe` |
228
+ | 🧩 | **`/new-extension`** | Builds or updates an [extension](#-extensions-teach-it-your-plugin) that edits a plugin's internals (wavetables, mod matrix, patch state) and proves it live on a scratch track | `/new-extension Serum` |
229
+ | 🗂️ | **`/mix-memory`** | Shows what it remembers, and tidies it up | `/mix-memory What do you know about Pro-C 2?` |
230
+
231
+ ---
232
+
233
+ ## 🧰 What it can control
234
+
235
+ Almost everything in your session. That's **130+ tools**, so it can do the job
236
+ instead of just giving advice:
237
+
238
+ | | | |
239
+ |---|---|---|
240
+ | 🎚️ **Tracks & mixer**: volume, pan, mute/solo, folders, colors, groups & VCAs | 🎛️ **FX & plugins**: add, tweak, bypass, presets, FX chains, track templates | 📈 **Metering**: LUFS, true peak, spectrum, stereo correlation, crest factor |
241
+ | 🔀 **Routing**: sends, buses, sidechains, hardware outputs | 🎹 **MIDI**: write, edit and analyze notes & CC, live MIDI out | ✂️ **Editing**: split, trim, move, fades, takes, stretch markers |
242
+ | 📍 **Arrangement**: markers, regions, tempo map | 〰️ **Automation**: envelopes, points and pooled automation items | 💾 **Project**: save, render, undo/redo, snapshots, REAPER actions |
243
+
244
+ 👉 The main tools by area: **[docs/TOOLS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/TOOLS.md)**
245
+
246
+ ### 🎸 Genre-aware out of the box
247
+
248
+ | Genre | Loudness target | What it leans into |
249
+ |---|---|---|
250
+ | 🎸 Rock | −11 to −9 LUFS | Parallel drum compression, hard-panned guitars |
251
+ | 🎤 Pop | −14 to −10 LUFS | Vocal-forward, two-stage compression, bus glue |
252
+ | 🎧 Hip-Hop | −10 to −7 LUFS | 808 saturation, aggressive vocal comp, mono sub |
253
+ | 🎛️ Electronic | −10 to −6 LUFS | Sidechain pump, mono sub, stereo width |
254
+ | 🎻 Orchestral | −23 to −16 LUFS | Preserved dynamics, hall reverb staging |
255
+ | 🤘 Metal | −11 to −8 LUFS | Scooped guitars, tight drums, four-guitar wall |
256
+
257
+ ---
258
+
259
+ ## 🧩 Extensions: teach it your plugin
260
+
261
+ Out of the box it controls any plugin through its knobs. But some of what makes a sound
262
+ isn't a knob: a synth's **wavetables**, its **modulation matrix**, a guitar rig's **preset
263
+ file**. **Extensions** reach that. They're small add-ons you switch on, and you can have
264
+ Claude build one for the plugin *you* use.
265
+
266
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/extensions.svg" alt="Extensions plug into reaper-mcp through a small versioned API: the core on the left, and the Vital, Helix and your-own extensions on the right." width="100%">
267
+
268
+ > 🎹 *"On the Vital on track 2, route LFO 2 to the filter cutoff at 40% and make it a slow triangle."*
269
+ >
270
+ > 🎸 *"Build me a djent rhythm tone in Helix with a clean, a crunch and a lead snapshot."*
271
+ >
272
+ > 🌊 *"Give this synth a wavetable that morphs from a sine to a bright saw over 64 frames."*
273
+
274
+ | | Extension | What Claude can do with it |
275
+ |---|---|---|
276
+ | 🎹 | **`vital`** | Read a Vital patch and edit its settings, **mod matrix** and **LFO shapes**; build **wavetables** (1-256 frames) from classic shapes or harmonic recipes |
277
+ | 🎸 | **`helix`** | Build and edit Line 6 **Helix presets** with up to 8 snapshots, check them against real models, and load them into Helix Native, **backed up and rolled back** if anything else changed |
278
+ | 🧩 | **yours** | `/new-extension Serum`: Claude researches the plugin's format, probes it on a scratch track, writes the tools **with tests** and proves they change the sound |
279
+
280
+ **Switch one on**, then restart Claude Code:
27
281
 
28
282
  ```bash
29
- reaper-mcp doctor # checks every part and says how to fix it
30
- reaper-mcp status # is the bridge running in REAPER?
283
+ reaper-mcp extension add vital # or: helix
284
+ reaper-mcp extension list # what's installed, and why one can't load
285
+ ```
286
+
287
+ - 🔌 **Opt-in.** Nothing loads unless you add it. `reaper-mcp extension remove vital` takes it out.
288
+ - 🛟 **Same safety as the rest.** Every edit is one undo step, and write tools can preview with a dry run.
289
+ - 🛡️ **A broken extension is skipped**, never a crash, and `reaper-mcp doctor` tells you why.
290
+ - 🧪 **Proven live.** `/new-extension` doesn't finish until the edit shows up in the plugin *and* in the audio.
291
+
292
+ 📖 Full guide (the API, Lua handlers, testing, sharing, troubleshooting): **[docs/EXTENSIONS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/EXTENSIONS.md)**
293
+
294
+ ---
295
+
296
+ ## 🛟 Safe by design
297
+
298
+ - 📸 **Snapshots around every mix task.** The mix skills save one before and after; A/B them in the
299
+ bridge window, or bind `mcp_snapshot_next` / `_prev` / `_quick_save` to keys (setup adds them to the Action List).
300
+ - ↩️ **One change, one undo.** Each edit is labelled `MCP: …` in REAPER's undo history.
301
+ - 🚫 **No surprise pop-ups.** It won't run anything that opens a dialog unless you allow
302
+ it, and it never closes your project or quits REAPER.
303
+ - 👀 **Advice-only mode.** `/critique` never changes your project. The bridge window
304
+ also has a read-only switch and a pause button.
305
+ - 📊 **Bridge status window.** See every action as it happens, with timing and errors,
306
+ in a small window next to REAPER ([see what it shows](#-see-what-your-agent-is-doing)).
307
+
308
+ 📖 What it can and can't do to a session, and what isn't covered: **[docs/SAFETY.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/SAFETY.md)**.
309
+
310
+ ---
311
+
312
+ ## 🔭 See what your agent is doing
313
+
314
+ You shouldn't have to take its word for it. The **bridge window** opens next to REAPER and
315
+ logs every move the agent makes, as it happens: what it did, how long it took and anything
316
+ that went wrong. With several Claude sessions connected, you can see which one did what.
317
+
318
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/bridge-status.png" alt="The MCP Bridge status window: uptime, command count, errors, latency, a commands-per-minute timeline, and a live log of tool calls such as read_track_spectrum, set_track_property and snapshot_save, tagged by session." width="100%">
319
+
320
+ <sub>Demo data. Add <code>?demo</code> to the window's address to explore it without REAPER.</sub>
321
+
322
+ ### Click any call to see what it did
323
+
324
+ Every call opens a drawer in plain words (*"midnight-drive wrote new points into the Volume
325
+ automation on track 5"*) with a picture of the change: **before → after** for edits, a
326
+ readout against your target for measurements.
327
+
328
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/bridge-drawer.png" alt="The bridge window with a call open in the drawer: Write automation, with a volume envelope drawn before and after, and the params the agent sent." width="100%">
329
+
330
+ ### 📈 What it measured
331
+
332
+ <table>
333
+ <tr>
334
+ <td width="50%" valign="top">
335
+
336
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/spectrum.png" alt="The spectrum view: third-octave bands from 25 Hz to 16 kHz as bars, hot bands in amber." width="100%">
337
+
338
+ **Spectrum**<br><sub>Where the energy sits, band by band, judged by perceived loudness. Hot bands turn amber.</sub>
339
+
340
+ </td>
341
+ <td width="50%" valign="top">
342
+
343
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/loudness.png" alt="The loudness view: integrated LUFS against a target range on a scale, with short-term, momentary and true peak readouts and the change since the previous call." width="100%">
344
+
345
+ **Loudness**<br><sub>LUFS against your target, true peak, and how it moved since the last measurement.</sub>
346
+
347
+ </td>
348
+ </tr>
349
+ <tr>
350
+ <td width="50%" valign="top">
351
+
352
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/loudness-curve.png" alt="The loudness curve view: short-term loudness over the length of a song against a target line, with the spans over target shaded." width="100%">
353
+
354
+ **Loudness over time**<br><sub>The whole song's loudness, with the stretches that run over target shaded.</sub>
355
+
356
+ </td>
357
+ <td width="50%" valign="top">
358
+
359
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/masking.png" alt="The masking view: a heat map of track pairs against frequency bands, with the worst conflicts and which track to cut." width="100%">
360
+
361
+ **Masking**<br><sub>Which tracks fight, at which frequency, and which one should give way.</sub>
362
+
363
+ </td>
364
+ </tr>
365
+ <tr>
366
+ <td width="50%" valign="top">
367
+
368
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/stereo-bands.png" alt="The stereo view: correlation per frequency band on a minus one to plus one scale." width="100%">
369
+
370
+ **Stereo, per band**<br><sub>Phase correlation per band. Catches a wide or out-of-phase low end before it hurts.</sub>
371
+
372
+ </td>
373
+ <td width="50%" valign="top">
374
+
375
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/waveform.png" alt="The waveform view: a rendered track drawn on a decibel scale with its peak, RMS and clipped sample count." width="100%">
376
+
377
+ **Waveform**<br><sub>What a rendered track really looks like, with clipping counted.</sub>
378
+
379
+ </td>
380
+ </tr>
381
+ </table>
382
+
383
+ ### 🎛️ What it changed
384
+
385
+ Every edit is drawn **before → after**: new in blue, old dashed or ghosted, removed struck through.
386
+
387
+ <table>
388
+ <tr>
389
+ <td width="50%" valign="top">
390
+
391
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/mixer.png" alt="The mixer view: every track as a fader with its level in dB, pan, and mute, solo and arm badges, grouped by folder." width="100%">
392
+
393
+ **Mixer**<br><sub>The session as a mixer: folders, levels, pans, mute, solo and arm.</sub>
394
+
395
+ </td>
396
+ <td width="50%" valign="top">
397
+
398
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/routing.png" alt="The routing view: a signal-flow diagram of a track's sends, receives and hardware outputs, with added, changed and removed routes marked." width="100%">
399
+
400
+ **Routing**<br><sub>Sends, receives and outputs as signal flow. Thicker wire means louder.</sub>
401
+
402
+ </td>
403
+ </tr>
404
+ <tr>
405
+ <td width="50%" valign="top">
406
+
407
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/automation.png" alt="The automation view: a volume envelope with pooled automation items drawn as blocks tinted by pool." width="100%">
408
+
409
+ **Automation**<br><sub>Envelope points and pooled automation items, before and after.</sub>
410
+
411
+ </td>
412
+ <td width="50%" valign="top">
413
+
414
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/piano-roll.png" alt="The piano roll view: added notes in blue, unchanged notes in grey, removed notes dashed, and a velocity lane." width="100%">
415
+
416
+ **Piano roll**<br><sub>MIDI edits as a piano roll: added, kept and removed notes, with velocity.</sub>
417
+
418
+ </td>
419
+ </tr>
420
+ <tr>
421
+ <td width="50%" valign="top">
422
+
423
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/pins.png" alt="The plugin pins view: track channels wired into a compressor's input pins, with a newly connected sidechain highlighted." width="100%">
424
+
425
+ **Plugin pins**<br><sub>Which track channels feed which plugin pins. Here, a sidechain just got wired in.</sub>
426
+
427
+ </td>
428
+ <td width="50%" valign="top">
429
+
430
+ <img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3/docs/assets/views/render.png" alt="The render view: three rendered versions of a song with a waveform, LUFS, peak and length for each, against a loudness target." width="100%">
431
+
432
+ **Renders**<br><sub>Every rendered file with its LUFS, peak and length against your target.</sub>
433
+
434
+ </td>
435
+ </tr>
436
+ </table>
437
+
438
+ <sub>Illustrative data, drawn by the same components the bridge window uses. There's a view for nearly every tool
439
+ that reads or writes your session.</sub>
440
+
441
+ ---
442
+
443
+ ## 🔒 Privacy & telemetry
444
+
445
+ Hi 👋 reaper-mcp isn't a company — it's just me. I'm a developer who loves making music,
446
+ and I build this in my spare time because it's the tool I wanted for my own sessions 🎛️
447
+
448
+ The catch: I can only test it on my own setup. To make sure it also works on yours —
449
+ other REAPER versions, other plugins, other OSes — reaper-mcp sends **pseudonymous usage
450
+ data** by default: which tools run, whether they fail, and how long they take. A random
451
+ install id groups one machine's calls together. It isn't tied to your name, account or
452
+ computer.
453
+
454
+ **Never sent:** your projects, track or plugin names, settings, file paths, error
455
+ messages, audio or MIDI. I respect your privacy 🙏
456
+
457
+ You're in control: setup asks before anything is sent, and `reaper-mcp telemetry off`
458
+ turns it off for good — no hard feelings. Everything that's collected, and where it
459
+ goes, is in [TELEMETRY.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/TELEMETRY.md).
460
+
461
+ ---
462
+
463
+ ## ❓ FAQ
464
+
465
+ <details>
466
+ <summary><b>Do I need to know how to code?</b></summary>
467
+ <br>
468
+ No. You paste one command to install. After that you type in plain words, the way you
469
+ would say it to an engineer.
470
+ </details>
471
+
472
+ <details>
473
+ <summary><b>Is this voice control?</b></summary>
474
+ <br>
475
+ No. You type to it in Claude Code, like any chat. "Talking" means plain language, not
476
+ a microphone. Nothing listens to you. If you'd rather speak, use your OS dictation or a
477
+ voice-to-text tool; the agent just sees the text.
478
+ </details>
479
+
480
+ <details>
481
+ <summary><b>Will it replace me?</b></summary>
482
+ <br>
483
+ No. It handles the tedious, measurable parts: gain staging, cleaning up clashing
484
+ frequencies, hitting loudness targets. Taste and the final call stay with you, and it
485
+ explains its reasoning so you can push back.
486
+ </details>
487
+
488
+ <details>
489
+ <summary><b>Can it wreck my project?</b></summary>
490
+ <br>
491
+ Every edit is a single undo step, and the mix skills snapshot before and after a task. Use
492
+ <code>/critique</code> or read-only mode if you only want advice. Saving a copy of your project
493
+ before a big session never hurts. <a href="https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/SAFETY.md">What is and isn't guarded</a>.
494
+ </details>
495
+
496
+ <details>
497
+ <summary><b>Which plugins does it work with?</b></summary>
498
+ <br>
499
+ Any plugin REAPER can load (VST, VST3, AU, CLAP, JS). It finds what you have installed
500
+ and reaches for the best tool for each job. The ones it already knows are in the
501
+ <a href="https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/PLUGINS.md">built-in plugin list</a>. When it meets a plugin it doesn't know, it
502
+ researches it, inspects its controls live and saves what it learns to LoreKit. You can
503
+ also teach it one up front with <code>/learn-plugin</code>.
504
+ </details>
505
+
506
+ <details>
507
+ <summary><b>It doesn't support my plugin's patches, wavetables or presets. Now what?</b></summary>
508
+ <br>
509
+ Host parameters already work for any plugin. For anything deeper, build an
510
+ <a href="#-extensions-teach-it-your-plugin">extension</a>: run <code>/new-extension YourPlugin</code> and
511
+ Claude researches the format, writes the tools and tests, and proves them on a scratch track. Today there are
512
+ extensions for Vital and Line 6 Helix.
513
+ </details>
514
+
515
+ <details>
516
+ <summary><b>What does it cost?</b></summary>
517
+ <br>
518
+ reaper-mcp is free and open source (MIT), and so is LoreKit. You need REAPER and a
519
+ Claude plan that includes Claude Code.
520
+ </details>
521
+
522
+ <details>
523
+ <summary><b>Do my audio files get uploaded?</b></summary>
524
+ <br>
525
+ No. It reads meter values and settings from your running session, not your audio files.
526
+ </details>
527
+
528
+ ---
529
+
530
+ ## 🛠️ For developers
531
+
532
+ - 📖 **[docs/REFERENCE.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/REFERENCE.md)**: architecture, install internals, CLI,
533
+ environment variables, telemetry, project structure
534
+ - 🧰 **[docs/TOOLS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/TOOLS.md)**: the main tools by area
535
+ - 🧩 **[docs/EXTENSIONS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/EXTENSIONS.md)**: write, test and share an extension (the API, Lua handlers, Vital and Helix)
536
+ - 🧑‍💻 **[DEVELOPMENT.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/DEVELOPMENT.md)**: build, test, run from source, MCP Inspector
537
+ - 🧪 **[docs/TESTING.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3/docs/TESTING.md)**: end-to-end testing guide
538
+
539
+ ```
540
+ Claude Code ⇄ MCP server (TypeScript) ⇄ file IPC ⇄ Lua bridge in REAPER ⇄ ReaScript API + JSFX meters
31
541
  ```
32
542
 
33
- ## Optional extras
543
+ <div align="center">
34
544
 
35
- - **Memory that learns your plugins and corrections:** connect the free [LoreKit](https://lorekit.io). `/learn-plugin` walks you through it.
36
- - **Audio analysis (loudness, masking, stems):** `reaper-mcp setup-sidecar` (needs Python 3.10+).
545
+ <br>
37
546
 
38
- ## More
547
+ **Made for people who'd rather be making music.** 🎶
39
548
 
40
- The full tour, screenshots, what it can control and how it keeps your session safe are in the [project README](https://github.com/mthines/reaper-mcp#readme). Developers can also install from a clone: see [For developers](https://github.com/mthines/reaper-mcp#%EF%B8%8F-for-developers).
549
+ MIT License
41
550
 
42
- MIT licensed. Usage telemetry is pseudonymous and can be turned off with `reaper-mcp telemetry off`; details in [TELEMETRY.md](https://github.com/mthines/reaper-mcp/blob/main/TELEMETRY.md).
551
+ </div>