@mthines/reaper-mcp 0.19.0 → 0.70.3-beta.86.1
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 +448 -490
- package/bridge-ui/mcp_bridge.html +129 -0
- package/bridge-ui/mcp_bridge.webmanifest +16 -0
- package/bridge-ui/mcp_bridge_icon_192.png +0 -0
- package/bridge-ui/mcp_bridge_icon_512.png +0 -0
- package/bridge-ui/mcp_bridge_sw.js +35 -0
- package/claude/agents/plugin-researcher.md +188 -0
- package/claude/knowledge/reference/aesthetics-scoring.md +48 -0
- package/{knowledge → claude/knowledge}/reference/common-mistakes.md +1 -1
- package/claude/knowledge/reference/lorekit-setup.md +36 -0
- package/claude/knowledge/reference/memory-protocol.md +377 -0
- package/{knowledge → claude/knowledge}/reference/metering.md +5 -5
- package/claude/knowledge/reference/perceived-loudness.md +182 -0
- package/{knowledge → claude/knowledge}/workflows/editing.md +4 -0
- package/{knowledge → claude/knowledge}/workflows/gain-staging.md +21 -23
- package/{knowledge → claude/knowledge}/workflows/learn-plugin.md +15 -48
- package/{knowledge → claude/knowledge}/workflows/master-bus.md +13 -1
- package/claude/knowledge/workflows/section-levels.md +138 -0
- package/{knowledge → claude/knowledge}/workflows/session-prep.md +4 -0
- package/claude/knowledge/workflows/transient-lighting.md +52 -0
- package/claude/skills/critique/SKILL.md +131 -0
- package/claude/skills/editing/SKILL.md +281 -0
- package/claude/skills/learn-plugin/SKILL.md +210 -0
- package/claude/skills/mastering/SKILL.md +151 -0
- package/claude/skills/mix-memory/SKILL.md +140 -0
- package/claude/skills/mixer/SKILL.md +253 -0
- package/claude/skills/new-extension/SKILL.md +324 -0
- package/main.js +7843 -1940
- package/package.json +17 -15
- package/reaper/CLAUDE.md +22 -4
- package/reaper/mcp_actions_lib.lua +375 -0
- package/reaper/mcp_analyzer.jsfx +27 -12
- package/reaper/mcp_arrange_lib.lua +949 -0
- package/reaper/mcp_bridge.lua +2321 -758
- package/reaper/mcp_edit_views_lib.lua +1378 -0
- package/reaper/mcp_envelopes_lib.lua +748 -0
- package/reaper/mcp_extensions_lib.lua +55 -0
- package/reaper/mcp_fxstate_lib.lua +144 -0
- package/reaper/mcp_gain_trace.jsfx +126 -0
- package/reaper/mcp_items_lib.lua +877 -0
- package/reaper/mcp_lufs_meter.jsfx +16 -13
- package/reaper/mcp_midi_lib.lua +555 -0
- package/reaper/mcp_mixing_lib.lua +1021 -0
- package/reaper/mcp_plan_lib.lua +801 -0
- package/reaper/mcp_prefs_lib.lua +127 -0
- package/reaper/mcp_project_lib.lua +1088 -0
- package/reaper/mcp_recording_lib.lua +595 -0
- package/reaper/mcp_render_lib.lua +492 -0
- package/reaper/mcp_snapshot_lib.lua +547 -120
- package/reaper/mcp_snapshot_next.lua +10 -4
- package/reaper/mcp_snapshot_prev.lua +11 -4
- package/reaper/mcp_snapshot_quick_save.lua +7 -32
- package/reaper/mcp_snapshots_ui_lib.lua +258 -0
- package/reaper/mcp_tracks_lib.lua +409 -0
- package/sidecar/analysis.py +661 -0
- package/sidecar/chords.py +96 -0
- package/sidecar/mixcheck.py +295 -0
- package/sidecar/requirements-chords.txt +6 -0
- package/sidecar/requirements-separation.txt +3 -0
- package/sidecar/requirements.txt +17 -0
- package/sidecar/separation.py +142 -0
- package/sidecar/server.py +622 -0
- package/sidecar/tests/test_analysis.py +249 -0
- package/sidecar/tests/test_chords.py +117 -0
- package/sidecar/tests/test_mixcheck.py +163 -0
- package/sidecar/tests/test_separation.py +73 -0
- package/sidecar/tests/test_server.py +464 -0
- package/sidecar/tests/test_verify.py +243 -0
- package/sidecar/tests/test_voice_render.py +268 -0
- package/sidecar/tests/test_voice_sketch.py +140 -0
- package/sidecar/verify.py +224 -0
- package/sidecar/voice_render.py +295 -0
- package/sidecar/voice_sketch.py +280 -0
- package/claude-agents/critique.md +0 -147
- package/claude-agents/editor.md +0 -184
- package/claude-agents/levels.md +0 -107
- package/claude-agents/mastering.md +0 -129
- package/claude-agents/mixer.md +0 -248
- package/claude-agents/preflight.md +0 -149
- package/claude-agents/producer.md +0 -159
- package/claude-agents/setup.md +0 -150
- package/claude-agents/stems.md +0 -135
- package/claude-rules/architecture.md +0 -39
- package/claude-rules/development.md +0 -54
- package/claude-rules/lua-bridge.md +0 -50
- package/claude-rules/testing.md +0 -42
- package/claude-skills/learn-plugin.md +0 -123
- package/knowledge/CLAUDE.md +0 -71
- package/knowledge/plugins/_template.md +0 -82
- package/knowledge/plugins/fabfilter/pro-c-2.md +0 -117
- package/knowledge/plugins/fabfilter/pro-l-2.md +0 -95
- package/knowledge/plugins/fabfilter/pro-q-3.md +0 -112
- package/knowledge/plugins/neural-dsp/helix-native.md +0 -104
- package/knowledge/plugins/stock-reaper/js-1175-compressor.md +0 -94
- package/knowledge/plugins/stock-reaper/rea-comp.md +0 -100
- package/knowledge/plugins/stock-reaper/rea-delay.md +0 -95
- package/knowledge/plugins/stock-reaper/rea-eq.md +0 -103
- package/knowledge/plugins/stock-reaper/rea-gate.md +0 -99
- package/knowledge/plugins/stock-reaper/rea-limit.md +0 -75
- package/knowledge/plugins/stock-reaper/rea-verb.md +0 -76
- package/knowledge/reference/perceived-loudness.md +0 -122
- package/reaper/mcp_snapshot_manager.lua +0 -1001
- /package/{knowledge → claude/knowledge}/genres/_template.md +0 -0
- /package/{knowledge → claude/knowledge}/genres/electronic.md +0 -0
- /package/{knowledge → claude/knowledge}/genres/hip-hop.md +0 -0
- /package/{knowledge → claude/knowledge}/genres/metal.md +0 -0
- /package/{knowledge → claude/knowledge}/genres/orchestral.md +0 -0
- /package/{knowledge → claude/knowledge}/genres/pop.md +0 -0
- /package/{knowledge → claude/knowledge}/genres/rock.md +0 -0
- /package/{knowledge → claude/knowledge}/reference/compression.md +0 -0
- /package/{knowledge → claude/knowledge}/reference/frequencies.md +0 -0
- /package/{knowledge → claude/knowledge}/workflows/delivery.md +0 -0
- /package/{knowledge → claude/knowledge}/workflows/drum-bus.md +0 -0
- /package/{knowledge → claude/knowledge}/workflows/low-end.md +0 -0
- /package/{knowledge → claude/knowledge}/workflows/stem-prep.md +0 -0
- /package/{knowledge → claude/knowledge}/workflows/vocal-chain.md +0 -0
package/README.md
CHANGED
|
@@ -1,593 +1,551 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/docs/assets/logo-dark.svg">
|
|
5
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/docs/assets/logo.svg" alt="reaper-mcp" width="360">
|
|
6
|
+
</picture>
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
"Please gain stage my tracks"
|
|
7
|
-
"The chorus needs more energy — make the vocals cut through"
|
|
8
|
-
"I hear some low-end rumble, can you fix that?"
|
|
9
|
-
"Roast my mix — what could be improved?"
|
|
10
|
-
```
|
|
8
|
+
<br><br>
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
# Interactive guided setup (recommended)
|
|
16
|
-
npx @mthines/reaper-mcp init
|
|
12
|
+
<br>
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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.
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
1. Installing the REAPER bridge (Lua + JSFX analyzers)
|
|
24
|
-
2. Installing AI mix knowledge and agents
|
|
25
|
-
3. Configuring Claude Code settings (auto-allows all 80 REAPER tools)
|
|
26
|
-
4. Optionally creating a project-local `.mcp.json`
|
|
18
|
+
<br>
|
|
27
19
|
|
|
28
|
-
|
|
20
|
+
[](https://www.reaper.fm/)
|
|
21
|
+
[](https://claude.com/claude-code)
|
|
22
|
+
[](https://lorekit.io)
|
|
23
|
+
[](#-install-in-3-steps)
|
|
24
|
+
[](https://github.com/mthines/reaper-mcp/blob/v0.70.3-beta.86.1/LICENSE)
|
|
29
25
|
|
|
30
|
-
|
|
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)
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
Claude Code
|
|
34
|
-
├── MCP Tools (80) ──→ controls REAPER in real-time
|
|
35
|
-
│ ├── Track management (list, get/set properties, arm, phase, input)
|
|
36
|
-
│ ├── FX management (add/remove, get/set parameters, enable/offline, presets)
|
|
37
|
-
│ ├── Transport (play, stop, record, cursor position)
|
|
38
|
-
│ ├── Metering (peak/RMS, FFT spectrum, LUFS, correlation, crest factor)
|
|
39
|
-
│ ├── Selection (selected tracks, time selection)
|
|
40
|
-
│ ├── Markers & regions (list, add, delete)
|
|
41
|
-
│ ├── Tempo map (all tempo/time sig changes)
|
|
42
|
-
│ ├── Envelopes (list, read/write automation points)
|
|
43
|
-
│ ├── MIDI editing (14 tools: notes, CC, items, analysis, batch ops)
|
|
44
|
-
│ ├── Media items (11 tools: properties, split, move, trim, stretch)
|
|
45
|
-
│ ├── Plugin discovery (list installed FX, search, presets)
|
|
46
|
-
│ ├── Snapshots (save/restore/delete mixer state for A/B comparison)
|
|
47
|
-
│ └── Routing (sends, receives, bus structure)
|
|
48
|
-
│
|
|
49
|
-
└── Mix Engineer Knowledge ──→ knows HOW to use those tools
|
|
50
|
-
├── Plugin knowledge (ReaEQ, Pro-Q 3, Helix Native, etc.)
|
|
51
|
-
├── Genre rules (rock, pop, hip-hop, electronic, orchestral, metal)
|
|
52
|
-
├── Workflows (gain staging, vocal chain, drum bus, mastering)
|
|
53
|
-
└── Reference (frequencies, compression, LUFS targets, perceived loudness, common mistakes)
|
|
54
|
-
```
|
|
28
|
+
</div>
|
|
55
29
|
|
|
56
|
-
|
|
30
|
+
---
|
|
57
31
|
|
|
58
|
-
|
|
59
|
-
Claude Code ←stdio→ MCP Server (TypeScript) ←JSON files→ Lua Bridge (REAPER)
|
|
60
|
-
│
|
|
61
|
-
ReaScript API ←─┘
|
|
62
|
-
gmem[] shared memory ←── JSFX Analyzers
|
|
63
|
-
```
|
|
32
|
+
## 💬 Just type what you hear
|
|
64
33
|
|
|
65
|
-
|
|
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):
|
|
66
38
|
|
|
67
|
-
|
|
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."*
|
|
68
48
|
|
|
69
|
-
|
|
49
|
+
Here's what happens next:
|
|
70
50
|
|
|
71
|
-
|
|
72
|
-
- [Node.js](https://nodejs.org/) 20+
|
|
73
|
-
- [SWS Extensions](https://www.sws-extension.org/) (recommended — enables plugin discovery and enhanced features)
|
|
51
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
74
52
|
|
|
75
|
-
|
|
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.
|
|
76
56
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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-beta.86.1/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.
|
|
80
107
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- **Claude Code Settings** — auto-allows all 80 REAPER tools (no permission prompts)
|
|
85
|
-
- **Project Config** — `.mcp.json` for the current directory (opt-in)
|
|
108
|
+
</td>
|
|
109
|
+
</tr>
|
|
110
|
+
</table>
|
|
86
111
|
|
|
87
|
-
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 🔍 How it works
|
|
115
|
+
|
|
116
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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-beta.86.1/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-beta.86.1/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-beta.86.1/docs/PLUGINS.md) ([how it works](https://github.com/mthines/reaper-mcp/blob/v0.70.3-beta.86.1/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-beta.86.1/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:
|
|
88
179
|
|
|
89
180
|
```bash
|
|
90
|
-
|
|
91
|
-
|
|
181
|
+
npm install -g @mthines/reaper-mcp
|
|
182
|
+
reaper-mcp setup # installs the bridge and status page into REAPER
|
|
183
|
+
reaper-mcp init # connects Claude Code and adds the mix skills
|
|
92
184
|
```
|
|
93
185
|
|
|
94
|
-
|
|
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.
|
|
95
188
|
|
|
96
|
-
|
|
189
|
+
### 3 · Click Run in REAPER
|
|
97
190
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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.
|
|
194
|
+
|
|
195
|
+
**Now open Claude Code in any folder (your song folder is perfect) and start mixing:**
|
|
101
196
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
npx @mthines/reaper-mcp install-skills --project # project-local alternative
|
|
197
|
+
```
|
|
198
|
+
/mixer Please gain stage my tracks
|
|
105
199
|
```
|
|
106
200
|
|
|
107
|
-
|
|
201
|
+
<details>
|
|
202
|
+
<summary><b>Something not working?</b></summary>
|
|
108
203
|
|
|
109
|
-
|
|
110
|
-
- `mcp_bridge.lua` — persistent Lua bridge script
|
|
111
|
-
- `mcp_snapshot_manager.lua` — snapshot manager GUI (save/restore/delete from REAPER)
|
|
112
|
-
- `mcp_analyzer.jsfx` — FFT spectrum analyzer
|
|
113
|
-
- `mcp_lufs_meter.jsfx` — ITU-R BS.1770 LUFS meter
|
|
114
|
-
- `mcp_correlation_meter.jsfx` — stereo correlation analyzer
|
|
115
|
-
- `mcp_crest_factor.jsfx` — dynamics/crest factor meter
|
|
204
|
+
<br>
|
|
116
205
|
|
|
117
|
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
-
|
|
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+).
|
|
122
211
|
|
|
123
|
-
|
|
212
|
+
</details>
|
|
124
213
|
|
|
125
|
-
|
|
214
|
+
---
|
|
126
215
|
|
|
127
|
-
|
|
128
|
-
2. **Actions > Show action list > Load ReaScript**
|
|
129
|
-
3. Select `mcp_bridge.lua` from your REAPER Scripts folder
|
|
130
|
-
4. Click **Run** — the bridge runs persistently in the background
|
|
216
|
+
## 🎚️ Meet your engineers
|
|
131
217
|
|
|
132
|
-
|
|
218
|
+
Seven skills, each tuned for a job. Type the slash command, or just describe what you
|
|
219
|
+
want and the right one starts.
|
|
133
220
|
|
|
134
|
-
|
|
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?` |
|
|
135
230
|
|
|
136
|
-
|
|
137
|
-
npx @mthines/reaper-mcp doctor
|
|
138
|
-
```
|
|
231
|
+
---
|
|
139
232
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
## MCP Tools (80)
|
|
143
|
-
|
|
144
|
-
### Project & Tracks
|
|
145
|
-
|
|
146
|
-
| Tool | Description |
|
|
147
|
-
|------|-------------|
|
|
148
|
-
| `get_project_info` | Project name, tempo, time sig, sample rate, transport state |
|
|
149
|
-
| `list_tracks` | All tracks with volume, pan, mute/solo, arm, phase, FX count, routing |
|
|
150
|
-
| `get_track_properties` | Detailed track info + full FX chain list |
|
|
151
|
-
| `set_track_property` | Set volume (dB), pan, mute, solo, recordArm, phase, input |
|
|
152
|
-
|
|
153
|
-
### FX Management
|
|
154
|
-
|
|
155
|
-
| Tool | Description |
|
|
156
|
-
|------|-------------|
|
|
157
|
-
| `add_fx` | Add FX by name (partial match: "ReaEQ", "Pro-Q 3") |
|
|
158
|
-
| `remove_fx` | Remove FX from chain by index |
|
|
159
|
-
| `get_fx_parameters` | List all FX params with values and ranges |
|
|
160
|
-
| `set_fx_parameter` | Set FX parameter (normalized 0.0-1.0) |
|
|
161
|
-
| `set_fx_enabled` | Enable or disable (bypass) an FX plugin |
|
|
162
|
-
| `set_fx_offline` | Set FX online/offline (offline = no CPU, preserves settings) |
|
|
163
|
-
| `list_available_fx` | Discover all installed plugins (VST, VST3, JS, CLAP, AU) |
|
|
164
|
-
| `search_fx` | Fuzzy search installed plugins by name |
|
|
165
|
-
| `get_fx_preset_list` | List available presets for an FX |
|
|
166
|
-
| `set_fx_preset` | Load a preset by name |
|
|
167
|
-
|
|
168
|
-
### Transport
|
|
169
|
-
|
|
170
|
-
| Tool | Description |
|
|
171
|
-
|------|-------------|
|
|
172
|
-
| `play` | Start playback |
|
|
173
|
-
| `stop` | Stop playback/recording |
|
|
174
|
-
| `record` | Start recording |
|
|
175
|
-
| `get_transport_state` | Play/record/pause, cursor positions, tempo, time sig |
|
|
176
|
-
| `set_cursor_position` | Move edit cursor to position (seconds) |
|
|
177
|
-
|
|
178
|
-
### Selection & Navigation
|
|
179
|
-
|
|
180
|
-
| Tool | Description |
|
|
181
|
-
|------|-------------|
|
|
182
|
-
| `get_selected_tracks` | Currently selected tracks with indices and names |
|
|
183
|
-
| `get_time_selection` | Time/loop selection start, end, length |
|
|
184
|
-
| `set_time_selection` | Set the time selection range |
|
|
185
|
-
|
|
186
|
-
### Markers & Regions
|
|
187
|
-
|
|
188
|
-
| Tool | Description |
|
|
189
|
-
|------|-------------|
|
|
190
|
-
| `list_markers` | All project markers (index, name, position, color) |
|
|
191
|
-
| `list_regions` | All regions (index, name, start/end, color) |
|
|
192
|
-
| `add_marker` | Add marker at position with optional name/color |
|
|
193
|
-
| `add_region` | Add region with start/end, optional name/color |
|
|
194
|
-
| `delete_marker` | Delete a marker by index |
|
|
195
|
-
| `delete_region` | Delete a region by index |
|
|
196
|
-
|
|
197
|
-
### Tempo Map
|
|
198
|
-
|
|
199
|
-
| Tool | Description |
|
|
200
|
-
|------|-------------|
|
|
201
|
-
| `get_tempo_map` | All tempo/time sig changes (position, BPM, time sig, linear) |
|
|
202
|
-
|
|
203
|
-
### Envelopes / Automation
|
|
204
|
-
|
|
205
|
-
| Tool | Description |
|
|
206
|
-
|------|-------------|
|
|
207
|
-
| `get_track_envelopes` | List envelopes on a track (name, point count, active/visible/armed) |
|
|
208
|
-
| `get_envelope_points` | Get automation points with pagination |
|
|
209
|
-
| `insert_envelope_point` | Insert automation point (time, value, shape, tension) |
|
|
210
|
-
| `delete_envelope_point` | Delete an automation point by index |
|
|
211
|
-
|
|
212
|
-
### Metering & Analysis
|
|
213
|
-
|
|
214
|
-
| Tool | Description |
|
|
215
|
-
|------|-------------|
|
|
216
|
-
| `read_track_meters` | Peak/RMS L/R in dB |
|
|
217
|
-
| `read_track_spectrum` | FFT frequency bins (auto-inserts analyzer) |
|
|
218
|
-
| `read_track_lufs` | Integrated/short-term/momentary LUFS + true peak |
|
|
219
|
-
| `read_track_correlation` | Stereo correlation, width, mid/side levels |
|
|
220
|
-
| `read_track_crest` | Crest factor (peak-to-RMS ratio) |
|
|
221
|
-
|
|
222
|
-
### MIDI Editing (14 tools)
|
|
223
|
-
|
|
224
|
-
| Tool | Description |
|
|
225
|
-
|------|-------------|
|
|
226
|
-
| `create_midi_item` | Create empty MIDI item on a track |
|
|
227
|
-
| `list_midi_items` | List MIDI items with position, length, note/CC counts |
|
|
228
|
-
| `get_midi_notes` | Get notes with pagination (offset/limit) |
|
|
229
|
-
| `analyze_midi` | Per-pitch velocity stats, histogram, machine gun detection |
|
|
230
|
-
| `insert_midi_note` / `insert_midi_notes` | Insert single or batch notes |
|
|
231
|
-
| `edit_midi_note` / `edit_midi_notes` | Edit single or batch notes |
|
|
232
|
-
| `delete_midi_note` | Delete a note by index |
|
|
233
|
-
| `get_midi_cc` / `insert_midi_cc` / `delete_midi_cc` | CC event management |
|
|
234
|
-
| `get_midi_item_properties` / `set_midi_item_properties` | MIDI item props |
|
|
235
|
-
|
|
236
|
-
### Media Item Editing (11 tools)
|
|
237
|
-
|
|
238
|
-
| Tool | Description |
|
|
239
|
-
|------|-------------|
|
|
240
|
-
| `list_media_items` | List items on a track (position, length, name, volume, type) |
|
|
241
|
-
| `get_media_item_properties` | Detailed properties (fades, play rate, pitch, source) |
|
|
242
|
-
| `set_media_item_properties` / `set_media_items_properties` | Set single or batch |
|
|
243
|
-
| `split_media_item` | Split at position, returns left/right info |
|
|
244
|
-
| `delete_media_item` / `move_media_item` / `trim_media_item` | Edit operations |
|
|
245
|
-
| `add_stretch_marker` / `get_stretch_markers` / `delete_stretch_marker` | Time-stretching |
|
|
246
|
-
|
|
247
|
-
### Snapshots (A/B Testing)
|
|
248
|
-
|
|
249
|
-
Snapshots capture your full mixer state: track volumes, pans, mute/solo, FX chains (all parameter values, enabled/offline states, presets), and send levels. Use them to A/B compare mix decisions or revert to a known-good state.
|
|
250
|
-
|
|
251
|
-
| Tool | Description |
|
|
252
|
-
|------|-------------|
|
|
253
|
-
| `snapshot_save` | Save current mixer state (volumes, pans, FX params, sends, mutes) |
|
|
254
|
-
| `snapshot_restore` | Restore a saved snapshot (smart FX matching — only restores params if plugin names match) |
|
|
255
|
-
| `snapshot_list` | List all saved snapshots with metadata |
|
|
256
|
-
| `snapshot_delete` | Delete a saved snapshot by name |
|
|
257
|
-
|
|
258
|
-
You can also manage snapshots directly in REAPER using the **Snapshot Manager** GUI (`mcp_snapshot_manager.lua`) — load it as a ReaScript action for a visual list with save/restore/delete buttons.
|
|
259
|
-
|
|
260
|
-
For quick A/B testing, bind these action scripts to keyboard shortcuts in REAPER:
|
|
261
|
-
|
|
262
|
-
| Script | Purpose | Suggested Key |
|
|
263
|
-
|--------|---------|---------------|
|
|
264
|
-
| `mcp_snapshot_quick_save.lua` | Save snapshot instantly (auto-named) | `Ctrl+Shift+S` |
|
|
265
|
-
| `mcp_snapshot_next.lua` | Restore next snapshot (wraps around) | `Ctrl+Right` |
|
|
266
|
-
| `mcp_snapshot_prev.lua` | Restore previous snapshot (wraps around) | `Ctrl+Left` |
|
|
233
|
+
## 🧰 What it can control
|
|
267
234
|
|
|
268
|
-
|
|
235
|
+
Almost everything in your session. That's **130+ tools**, so it can do the job
|
|
236
|
+
instead of just giving advice:
|
|
269
237
|
|
|
270
|
-
|
|
|
271
|
-
|
|
272
|
-
|
|
|
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 |
|
|
273
243
|
|
|
274
|
-
|
|
244
|
+
👉 The main tools by area: **[docs/TOOLS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3-beta.86.1/docs/TOOLS.md)**
|
|
275
245
|
|
|
276
|
-
|
|
246
|
+
### 🎸 Genre-aware out of the box
|
|
277
247
|
|
|
278
|
-
|
|
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 |
|
|
279
256
|
|
|
280
|
-
|
|
281
|
-
| ---------------- | --------------- | ------------------------------------------------------------------------- |
|
|
282
|
-
| **Mix Engineer** | `@mix-engineer` | General-purpose mix agent — analyzes, suggests, and executes any mix task |
|
|
283
|
-
| **Gain Stage** | `@gain-stage` | Perceived-loudness-aware gain staging with proper headroom |
|
|
284
|
-
| **Mix Analyzer** | `@mix-analyzer` | "Roast my mix" — analysis only, no changes, produces detailed report |
|
|
285
|
-
| **Master** | `@master` | Mastering chain targeting specific LUFS/platform standards |
|
|
257
|
+
---
|
|
286
258
|
|
|
287
|
-
|
|
259
|
+
## 🧩 Extensions: teach it your plugin
|
|
288
260
|
|
|
289
|
-
|
|
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.
|
|
290
265
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
```
|
|
266
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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."*
|
|
299
273
|
|
|
300
|
-
|
|
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:
|
|
301
281
|
|
|
302
282
|
```bash
|
|
303
|
-
|
|
283
|
+
reaper-mcp extension add vital # or: helix
|
|
284
|
+
reaper-mcp extension list # what's installed, and why one can't load
|
|
304
285
|
```
|
|
305
286
|
|
|
306
|
-
|
|
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.
|
|
307
291
|
|
|
308
|
-
|
|
292
|
+
📖 Full guide (the API, Lua handlers, testing, sharing, troubleshooting): **[docs/EXTENSIONS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3-beta.86.1/docs/EXTENSIONS.md)**
|
|
309
293
|
|
|
310
|
-
|
|
311
|
-
- **Pre-approved REAPER tools** — no permission prompts for every MCP call
|
|
312
|
-
- **Scoped MCP access** — only the `reaper` MCP server is loaded
|
|
313
|
-
- **Embedded reference data** — frequency bands, LUFS targets, compression settings
|
|
294
|
+
---
|
|
314
295
|
|
|
315
|
-
|
|
296
|
+
## 🛟 Safe by design
|
|
316
297
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
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)).
|
|
323
307
|
|
|
324
|
-
|
|
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-beta.86.1/docs/SAFETY.md)**.
|
|
325
309
|
|
|
326
|
-
|
|
310
|
+
---
|
|
327
311
|
|
|
328
|
-
|
|
329
|
-
2. Makes all changes
|
|
330
|
-
3. Saves an "After" snapshot
|
|
331
|
-
4. You can restore either with `snapshot_restore` to A/B compare, or use the Snapshot Manager GUI in REAPER
|
|
312
|
+
## 🔭 See what your agent is doing
|
|
332
313
|
|
|
333
|
-
|
|
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.
|
|
334
317
|
|
|
335
|
-
|
|
318
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
336
319
|
|
|
337
|
-
|
|
338
|
-
@mix-engineer This is a hip-hop track — please gain stage and check the 808
|
|
339
|
-
@mix-engineer Mix this rock song — make sure the guitars are wide and the drums punch
|
|
340
|
-
```
|
|
320
|
+
<sub>Demo data. Add <code>?demo</code> to the window's address to explore it without REAPER.</sub>
|
|
341
321
|
|
|
342
|
-
|
|
322
|
+
### Click any call to see what it did
|
|
343
323
|
|
|
344
|
-
|
|
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.
|
|
345
327
|
|
|
346
|
-
The
|
|
328
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
347
329
|
|
|
348
|
-
###
|
|
330
|
+
### 📈 What it measured
|
|
349
331
|
|
|
350
|
-
|
|
332
|
+
<table>
|
|
333
|
+
<tr>
|
|
334
|
+
<td width="50%" valign="top">
|
|
351
335
|
|
|
352
|
-
|
|
353
|
-
| ---------------------------------------------------- | ----------------------- | ---------- |
|
|
354
|
-
| ReaEQ, ReaComp, ReaDelay, ReaVerb, ReaGate, ReaLimit | Stock | 30-50 |
|
|
355
|
-
| FabFilter Pro-Q 3, Pro-C 2, Pro-L 2 | Premium EQ/Comp/Limiter | 85-92 |
|
|
356
|
-
| Line 6 Helix Native | Amp Sim | 82 |
|
|
357
|
-
| JS: 1175 Compressor | Character Comp | 50 |
|
|
336
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
358
337
|
|
|
359
|
-
|
|
338
|
+
**Spectrum**<br><sub>Where the energy sits, band by band, judged by perceived loudness. Hot bands turn amber.</sub>
|
|
360
339
|
|
|
361
|
-
|
|
340
|
+
</td>
|
|
341
|
+
<td width="50%" valign="top">
|
|
362
342
|
|
|
363
|
-
|
|
343
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
364
344
|
|
|
365
|
-
|
|
366
|
-
You: /learn-plugin
|
|
367
|
-
Claude: What plugin would you like me to learn about?
|
|
368
|
-
You: JST Gain Reduction Deluxe — it's a VCA compressor from Joey Sturgis Tones
|
|
369
|
-
Claude: [asks about parameters, presets, usage]
|
|
370
|
-
Claude: Created knowledge/plugins/jst/gain-reduction-deluxe.md
|
|
371
|
-
```
|
|
345
|
+
**Loudness**<br><sub>LUFS against your target, true peak, and how it moved since the last measurement.</sub>
|
|
372
346
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
Processing decisions adapt to the genre:
|
|
378
|
-
|
|
379
|
-
| Genre | LUFS Target | Key Characteristics |
|
|
380
|
-
| ---------- | ----------- | ----------------------------------------------- |
|
|
381
|
-
| Rock | -11 to -9 | Parallel drum compression, hard-panned guitars |
|
|
382
|
-
| Pop | -14 to -10 | Vocal-forward, two-stage compression, bus glue |
|
|
383
|
-
| Hip-Hop | -10 to -7 | 808 saturation, aggressive vocal comp, mono sub |
|
|
384
|
-
| Electronic | -10 to -6 | Sidechain pump, sub mono, stereo width |
|
|
385
|
-
| Orchestral | -23 to -16 | Preserve dynamics, hall reverb staging |
|
|
386
|
-
| Metal | -11 to -8 | V-scoop guitars, tight drums, 4-guitar wall |
|
|
387
|
-
|
|
388
|
-
## Autonomous Mode (Allow All Tools)
|
|
389
|
-
|
|
390
|
-
By default Claude Code asks permission for each MCP tool call. The `init` command (and `install-skills`) automatically configures `settings.json` to allow all 80 REAPER tools. If you need to set this up manually, add to your project's `.claude/settings.json` (or `~/.claude/settings.json` for global):
|
|
391
|
-
|
|
392
|
-
```json
|
|
393
|
-
{
|
|
394
|
-
"permissions": {
|
|
395
|
-
"allow": [
|
|
396
|
-
"mcp__reaper__get_project_info",
|
|
397
|
-
"mcp__reaper__list_tracks",
|
|
398
|
-
"mcp__reaper__get_track_properties",
|
|
399
|
-
"mcp__reaper__set_track_property",
|
|
400
|
-
"mcp__reaper__add_fx",
|
|
401
|
-
"mcp__reaper__remove_fx",
|
|
402
|
-
"mcp__reaper__get_fx_parameters",
|
|
403
|
-
"mcp__reaper__set_fx_parameter",
|
|
404
|
-
"mcp__reaper__list_available_fx",
|
|
405
|
-
"mcp__reaper__search_fx",
|
|
406
|
-
"mcp__reaper__get_fx_preset_list",
|
|
407
|
-
"mcp__reaper__set_fx_preset",
|
|
408
|
-
"mcp__reaper__play",
|
|
409
|
-
"mcp__reaper__stop",
|
|
410
|
-
"mcp__reaper__record",
|
|
411
|
-
"mcp__reaper__get_transport_state",
|
|
412
|
-
"mcp__reaper__set_cursor_position",
|
|
413
|
-
"mcp__reaper__read_track_meters",
|
|
414
|
-
"mcp__reaper__read_track_spectrum",
|
|
415
|
-
"mcp__reaper__read_track_lufs",
|
|
416
|
-
"mcp__reaper__read_track_correlation",
|
|
417
|
-
"mcp__reaper__read_track_crest",
|
|
418
|
-
"mcp__reaper__snapshot_save",
|
|
419
|
-
"mcp__reaper__snapshot_restore",
|
|
420
|
-
"mcp__reaper__snapshot_list",
|
|
421
|
-
"mcp__reaper__snapshot_delete",
|
|
422
|
-
"mcp__reaper__get_track_routing",
|
|
423
|
-
"mcp__reaper__set_fx_enabled",
|
|
424
|
-
"mcp__reaper__set_fx_offline",
|
|
425
|
-
"mcp__reaper__get_selected_tracks",
|
|
426
|
-
"mcp__reaper__get_time_selection",
|
|
427
|
-
"mcp__reaper__set_time_selection",
|
|
428
|
-
"mcp__reaper__list_markers",
|
|
429
|
-
"mcp__reaper__list_regions",
|
|
430
|
-
"mcp__reaper__add_marker",
|
|
431
|
-
"mcp__reaper__add_region",
|
|
432
|
-
"mcp__reaper__delete_marker",
|
|
433
|
-
"mcp__reaper__delete_region",
|
|
434
|
-
"mcp__reaper__get_tempo_map",
|
|
435
|
-
"mcp__reaper__get_track_envelopes",
|
|
436
|
-
"mcp__reaper__get_envelope_points",
|
|
437
|
-
"mcp__reaper__insert_envelope_point",
|
|
438
|
-
"mcp__reaper__delete_envelope_point",
|
|
439
|
-
"mcp__reaper__create_midi_item",
|
|
440
|
-
"mcp__reaper__list_midi_items",
|
|
441
|
-
"mcp__reaper__get_midi_notes",
|
|
442
|
-
"mcp__reaper__analyze_midi",
|
|
443
|
-
"mcp__reaper__insert_midi_note",
|
|
444
|
-
"mcp__reaper__insert_midi_notes",
|
|
445
|
-
"mcp__reaper__edit_midi_note",
|
|
446
|
-
"mcp__reaper__edit_midi_notes",
|
|
447
|
-
"mcp__reaper__delete_midi_note",
|
|
448
|
-
"mcp__reaper__get_midi_cc",
|
|
449
|
-
"mcp__reaper__insert_midi_cc",
|
|
450
|
-
"mcp__reaper__delete_midi_cc",
|
|
451
|
-
"mcp__reaper__get_midi_item_properties",
|
|
452
|
-
"mcp__reaper__set_midi_item_properties",
|
|
453
|
-
"mcp__reaper__list_media_items",
|
|
454
|
-
"mcp__reaper__get_media_item_properties",
|
|
455
|
-
"mcp__reaper__set_media_item_properties",
|
|
456
|
-
"mcp__reaper__set_media_items_properties",
|
|
457
|
-
"mcp__reaper__split_media_item",
|
|
458
|
-
"mcp__reaper__delete_media_item",
|
|
459
|
-
"mcp__reaper__move_media_item",
|
|
460
|
-
"mcp__reaper__trim_media_item",
|
|
461
|
-
"mcp__reaper__add_stretch_marker",
|
|
462
|
-
"mcp__reaper__get_stretch_markers",
|
|
463
|
-
"mcp__reaper__delete_stretch_marker"
|
|
464
|
-
]
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
```
|
|
347
|
+
</td>
|
|
348
|
+
</tr>
|
|
349
|
+
<tr>
|
|
350
|
+
<td width="50%" valign="top">
|
|
468
351
|
|
|
469
|
-
The
|
|
352
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
470
353
|
|
|
471
|
-
|
|
354
|
+
**Loudness over time**<br><sub>The whole song's loudness, with the stretches that run over target shaded.</sub>
|
|
472
355
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
| `npx @mthines/reaper-mcp init` | Interactive guided setup (recommended for new users) |
|
|
476
|
-
| `npx @mthines/reaper-mcp init --yes` | Non-interactive setup — install everything with defaults |
|
|
477
|
-
| `npx @mthines/reaper-mcp init --yes --project` | Non-interactive setup + create `.mcp.json` in current directory |
|
|
478
|
-
| `npx @mthines/reaper-mcp serve` | Start MCP server in stdio mode (default when no command given) |
|
|
479
|
-
| `npx @mthines/reaper-mcp setup` | Install Lua bridge + JSFX into REAPER |
|
|
480
|
-
| `npx @mthines/reaper-mcp install-skills` | Install AI knowledge + agents globally |
|
|
481
|
-
| `npx @mthines/reaper-mcp install-skills --project` | Install into current project directory |
|
|
482
|
-
| `npx @mthines/reaper-mcp doctor` | Verify everything is configured correctly |
|
|
483
|
-
| `npx @mthines/reaper-mcp status` | Check bridge connection |
|
|
356
|
+
</td>
|
|
357
|
+
<td width="50%" valign="top">
|
|
484
358
|
|
|
485
|
-
|
|
359
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
486
360
|
|
|
487
|
-
|
|
488
|
-
npm install -g @mthines/reaper-mcp
|
|
489
|
-
reaper-mcp init
|
|
490
|
-
```
|
|
361
|
+
**Masking**<br><sub>Which tracks fight, at which frequency, and which one should give way.</sub>
|
|
491
362
|
|
|
492
|
-
|
|
363
|
+
</td>
|
|
364
|
+
</tr>
|
|
365
|
+
<tr>
|
|
366
|
+
<td width="50%" valign="top">
|
|
493
367
|
|
|
494
|
-
|
|
368
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/docs/assets/views/stereo-bands.png" alt="The stereo view: correlation per frequency band on a minus one to plus one scale." width="100%">
|
|
495
369
|
|
|
496
|
-
|
|
497
|
-
{
|
|
498
|
-
"mcpServers": {
|
|
499
|
-
"reaper": {
|
|
500
|
-
"command": "npx",
|
|
501
|
-
"args": ["@mthines/reaper-mcp", "serve"]
|
|
502
|
-
}
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
```
|
|
370
|
+
**Stereo, per band**<br><sub>Phase correlation per band. Catches a wide or out-of-phase low end before it hurts.</sub>
|
|
506
371
|
|
|
507
|
-
|
|
372
|
+
</td>
|
|
373
|
+
<td width="50%" valign="top">
|
|
508
374
|
|
|
509
|
-
|
|
375
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
510
376
|
|
|
511
|
-
|
|
377
|
+
**Waveform**<br><sub>What a rendered track really looks like, with clipping counted.</sub>
|
|
512
378
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
"reaper": {
|
|
517
|
-
"command": "npx",
|
|
518
|
-
"args": ["tsx", "/path/to/reaper-mcp/apps/reaper-mcp-server/src/main.ts", "serve"]
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
```
|
|
379
|
+
</td>
|
|
380
|
+
</tr>
|
|
381
|
+
</table>
|
|
523
382
|
|
|
524
|
-
|
|
383
|
+
### 🎛️ What it changed
|
|
525
384
|
|
|
526
|
-
|
|
385
|
+
Every edit is drawn **before → after**: new in blue, old dashed or ghosted, removed struck through.
|
|
527
386
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
387
|
+
<table>
|
|
388
|
+
<tr>
|
|
389
|
+
<td width="50%" valign="top">
|
|
531
390
|
|
|
532
|
-
|
|
391
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
533
392
|
|
|
534
|
-
|
|
535
|
-
- **Windows**: `%APPDATA%/REAPER`
|
|
536
|
-
- **Linux**: `~/.config/REAPER`
|
|
393
|
+
**Mixer**<br><sub>The session as a mixer: folders, levels, pans, mute, solo and arm.</sub>
|
|
537
394
|
|
|
538
|
-
|
|
395
|
+
</td>
|
|
396
|
+
<td width="50%" valign="top">
|
|
539
397
|
|
|
540
|
-
|
|
541
|
-
reaper-mcp/
|
|
542
|
-
├── apps/
|
|
543
|
-
│ ├── reaper-mcp-server/ # MCP server (80 tools, esbuild bundle)
|
|
544
|
-
│ └── reaper-mix-agent/ # AI mix agent (knowledge loader, plugin resolver)
|
|
545
|
-
├── libs/protocol/ # Shared TypeScript types
|
|
546
|
-
├── knowledge/ # AI mix engineer knowledge base
|
|
547
|
-
│ ├── plugins/ # Plugin-specific knowledge (extensible)
|
|
548
|
-
│ ├── genres/ # Genre mixing conventions
|
|
549
|
-
│ ├── workflows/ # Step-by-step mixing workflows
|
|
550
|
-
│ └── reference/ # Frequency, compression, metering, perceived loudness cheat sheets
|
|
551
|
-
├── reaper/ # Files installed into REAPER
|
|
552
|
-
│ ├── mcp_bridge.lua # Persistent Lua bridge
|
|
553
|
-
│ ├── mcp_snapshot_manager.lua # Snapshot manager GUI (save/restore/delete)
|
|
554
|
-
│ ├── mcp_snapshot_*.lua # Snapshot action scripts (next/prev/quick-save + shared lib)
|
|
555
|
-
│ ├── mcp_analyzer.jsfx # FFT spectrum analyzer
|
|
556
|
-
│ ├── mcp_lufs_meter.jsfx # LUFS meter (BS.1770)
|
|
557
|
-
│ ├── mcp_correlation_meter.jsfx # Stereo correlation meter
|
|
558
|
-
│ └── mcp_crest_factor.jsfx # Crest factor meter
|
|
559
|
-
├── docs/TESTING.md # End-to-end testing guide
|
|
560
|
-
└── nx.json # Nx workspace config
|
|
561
|
-
```
|
|
398
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
562
399
|
|
|
563
|
-
|
|
400
|
+
**Routing**<br><sub>Sends, receives and outputs as signal flow. Thicker wire means louder.</sub>
|
|
564
401
|
|
|
565
|
-
|
|
402
|
+
</td>
|
|
403
|
+
</tr>
|
|
404
|
+
<tr>
|
|
405
|
+
<td width="50%" valign="top">
|
|
566
406
|
|
|
567
|
-
|
|
568
|
-
# Reinstall bridge files into REAPER
|
|
569
|
-
npx @mthines/reaper-mcp setup
|
|
570
|
-
```
|
|
407
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/docs/assets/views/automation.png" alt="The automation view: a volume envelope with pooled automation items drawn as blocks tinted by pool." width="100%">
|
|
571
408
|
|
|
572
|
-
|
|
409
|
+
**Automation**<br><sub>Envelope points and pooled automation items, before and after.</sub>
|
|
573
410
|
|
|
574
|
-
|
|
575
|
-
|
|
411
|
+
</td>
|
|
412
|
+
<td width="50%" valign="top">
|
|
576
413
|
|
|
577
|
-
|
|
414
|
+
<img src="https://raw.githubusercontent.com/mthines/reaper-mcp/v0.70.3-beta.86.1/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%">
|
|
578
415
|
|
|
579
|
-
|
|
416
|
+
**Piano roll**<br><sub>MIDI edits as a piano roll: added, kept and removed notes, with velocity.</sub>
|
|
580
417
|
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
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-beta.86.1/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-beta.86.1/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-beta.86.1/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-beta.86.1/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-beta.86.1/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-beta.86.1/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-beta.86.1/docs/TOOLS.md)**: the main tools by area
|
|
535
|
+
- 🧩 **[docs/EXTENSIONS.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3-beta.86.1/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-beta.86.1/DEVELOPMENT.md)**: build, test, run from source, MCP Inspector
|
|
537
|
+
- 🧪 **[docs/TESTING.md](https://github.com/mthines/reaper-mcp/blob/v0.70.3-beta.86.1/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
|
|
587
541
|
```
|
|
588
542
|
|
|
589
|
-
|
|
543
|
+
<div align="center">
|
|
544
|
+
|
|
545
|
+
<br>
|
|
546
|
+
|
|
547
|
+
**Made for people who'd rather be making music.** 🎶
|
|
590
548
|
|
|
591
|
-
|
|
549
|
+
MIT License
|
|
592
550
|
|
|
593
|
-
|
|
551
|
+
</div>
|