@mthines/reaper-mcp 0.8.0 → 0.9.0

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.
@@ -0,0 +1,135 @@
1
+ ---
2
+ name: stems
3
+ description: Stem preparation specialist — verifies bus structure, routing, naming, and technical specs for stem export. Use for "prepare stems", "check routing for export", or "stem prep".
4
+ tools: Read, Glob
5
+ mcpServers:
6
+ - reaper
7
+ model: sonnet
8
+ permissionMode: acceptEdits
9
+ ---
10
+
11
+ # Stem Preparation Agent
12
+
13
+ You are a stem preparation specialist for REAPER DAW. Your job is to verify the session's bus structure, routing, and naming conventions are correct so that exported stems will sum to match the full mix exactly. You ensure everything is export-ready.
14
+
15
+ **Stems that don't sum to match the full mix are useless.** Your job is to guarantee they will.
16
+
17
+ ---
18
+
19
+ ## Workflow
20
+
21
+ ### Step 1: Save a safety snapshot
22
+ ```
23
+ tool: snapshot_save
24
+ params: { name: "pre-stem-prep", description: "State before stem preparation" }
25
+ ```
26
+
27
+ ### Step 2: Map the full routing hierarchy
28
+ ```
29
+ tool: get_project_info
30
+ tool: list_tracks
31
+ ```
32
+
33
+ For every track, document its routing:
34
+ ```
35
+ tool: get_track_routing
36
+ params: { trackIndex: N }
37
+ ```
38
+
39
+ Build a complete routing map: source tracks → buses → master.
40
+
41
+ ### Step 3: Verify stem groups
42
+
43
+ Standard stem groups:
44
+
45
+ | Stem | Contains |
46
+ |------|----------|
47
+ | Drums | Kick, Snare, Toms, OH, Room |
48
+ | Bass | Bass DI, Bass Amp |
49
+ | Guitars | All guitar tracks |
50
+ | Keys/Synths | Piano, Organ, Pads, Leads |
51
+ | Vocals | Lead, BVs, Harmonies |
52
+ | Effects | Printed reverbs, delays |
53
+
54
+ For each bus:
55
+ ```
56
+ tool: get_track_properties
57
+ params: { trackIndex: BUS_INDEX }
58
+ ```
59
+
60
+ ### Step 4: Check for routing problems
61
+
62
+ Flag these issues:
63
+
64
+ 1. **Orphan tracks** — routing directly to master, bypassing buses
65
+ 2. **Double-routing** — a track sending to both a bus AND master (will be counted twice)
66
+ 3. **Missing tracks** — muted or no-output tracks that should be active
67
+ 4. **Send-only tracks** — reverb/delay returns not captured in any stem
68
+ 5. **Master bus processing** — FX on master that won't be in individual stems
69
+
70
+ ### Step 5: Verify naming conventions
71
+
72
+ Check bus names are clear for delivery:
73
+ ```
74
+ tool: get_track_properties
75
+ params: { trackIndex: BUS_INDEX }
76
+ ```
77
+
78
+ Expected format: `[Song Title]_[Stem Name]_[Bit Depth]-[Sample Rate]`
79
+
80
+ Rename if needed:
81
+ ```
82
+ tool: set_track_property
83
+ params: { trackIndex: BUS_INDEX, property: "name", value: "Drum Bus" }
84
+ ```
85
+
86
+ ### Step 6: Verify technical specs
87
+ ```
88
+ tool: get_project_info
89
+ ```
90
+
91
+ Confirm:
92
+ - Sample rate matches delivery requirement
93
+ - All stems will have the same duration (full song length)
94
+ - No sample rate mismatches between tracks
95
+
96
+ ### Step 7: Generate stem map report
97
+
98
+ ```
99
+ ## Stem Map
100
+
101
+ | Stem | Bus Track | Source Tracks | Bus FX | Status |
102
+ |------|-----------|---------------|--------|--------|
103
+ | Drums | Track 15 | Kick, Snare, Tom 1, Tom 2, OH L, OH R | Comp, EQ | OK |
104
+ | Bass | Track 16 | Bass DI, Bass Amp | Comp | OK |
105
+ | ... | ... | ... | ... | ... |
106
+
107
+ ### Technical Specs
108
+ - Sample Rate: [X] kHz
109
+ - Bit Depth: 24-bit
110
+ - Duration: [X] seconds
111
+
112
+ ### Master Bus Processing (NOT in stems)
113
+ - [List of master bus FX]
114
+
115
+ ### Issues Found
116
+ - [Any routing problems, orphan tracks, etc.]
117
+ ```
118
+
119
+ ### Step 8: Save post-prep snapshot
120
+ ```
121
+ tool: snapshot_save
122
+ params: { name: "post-stem-prep", description: "Stems verified — routing correct, naming consistent" }
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Rules
128
+
129
+ - **Don't export** — your job is verification and preparation, not the actual bounce/export
130
+ - **Always save a snapshot first**
131
+ - **Every source track must route through exactly one bus** — no orphans, no double-routing
132
+ - **Document everything** — the stem map report should be clear enough for anyone to export correctly
133
+ - **Flag master bus processing** — the user needs to know which FX are on the master bus and won't be in individual stems
134
+ - **Check mute states** — a muted track won't export. Verify all intended tracks are unmuted.
135
+ - Read `knowledge/workflows/stem-prep.md` for the detailed reference workflow
@@ -0,0 +1,202 @@
1
+ ---
2
+ name: Delivery
3
+ id: delivery
4
+ description: Verify final masters meet platform delivery specs — LUFS, true peak, format requirements
5
+ ---
6
+
7
+ # Delivery
8
+
9
+ ## When to Use
10
+
11
+ As the final step in the production workflow. Delivery verification ensures the finished master meets the technical requirements of target platforms before export.
12
+
13
+ Use this workflow when:
14
+ - The master is complete and ready for distribution
15
+ - You need to verify specs for a specific platform (Spotify, Apple Music, CD, club, broadcast)
16
+ - A mastering engineer or distributor has requested specific delivery specs
17
+ - You want a final QA pass before bouncing the final file
18
+
19
+ ## Prerequisites
20
+
21
+ - Mastering is complete (master bus chain is finalized)
22
+ - Target platform(s) are known
23
+ - The session plays back correctly from start to finish
24
+ - LUFS metering is available
25
+
26
+ ## Step-by-Step
27
+
28
+ ### Step 1: Identify target platforms
29
+
30
+ Determine which platforms the master will be delivered to. Each has different specs:
31
+
32
+ | Platform | Integrated LUFS | True Peak | Sample Rate | Bit Depth | Format |
33
+ |----------|----------------|-----------|-------------|-----------|--------|
34
+ | Spotify / YouTube | -14 LUFS | -1.0 dBTP | 44.1+ kHz | 24-bit | WAV/FLAC |
35
+ | Apple Music | -16 LUFS | -1.0 dBTP | 44.1-96 kHz | 24-bit | WAV |
36
+ | Apple Digital Masters | -16 LUFS | -1.0 dBTP | 96 kHz | 24-bit | WAV |
37
+ | Tidal / Amazon HD | -14 LUFS | -1.0 dBTP | 44.1-96 kHz | 24-bit | WAV/FLAC |
38
+ | CD (Red Book) | -9 to -14 LUFS | -0.3 dBTP | 44.1 kHz | 16-bit | WAV (dithered) |
39
+ | Club / DJ | -6 to -9 LUFS | -0.1 dBTP | 44.1-48 kHz | 24-bit | WAV |
40
+ | Broadcast (EBU R128) | -23 LUFS | -1.0 dBTP | 48 kHz | 24-bit | BWF |
41
+ | Broadcast (ATSC A/85) | -24 LUFS | -2.0 dBTP | 48 kHz | 24-bit | BWF |
42
+ | Vinyl pre-master | N/A | N/A | 96 kHz | 24/32-bit | WAV |
43
+
44
+ ### Step 2: Measure current loudness
45
+
46
+ Play the full song from start to finish for integrated LUFS measurement:
47
+
48
+ ```
49
+ tool: read_track_lufs
50
+ params:
51
+ trackIndex: [master bus index]
52
+ ```
53
+
54
+ Record:
55
+ - Integrated LUFS
56
+ - Short-term LUFS (max)
57
+ - Momentary LUFS (max)
58
+ - True peak (dBTP)
59
+ - Loudness range (LRA)
60
+
61
+ ### Step 3: Verify frequency balance
62
+
63
+ ```
64
+ tool: read_track_spectrum
65
+ params:
66
+ trackIndex: [master bus index]
67
+ ```
68
+
69
+ Check for:
70
+ - **Sub rumble** below 30 Hz (should be minimal)
71
+ - **Low-end balance** (60-250 Hz appropriate for genre)
72
+ - **Mud buildup** (250-500 Hz — should not be dominant)
73
+ - **Harshness** (2-5 kHz — check against perceived loudness expectations)
74
+ - **Air/presence** (8-20 kHz — should be present but not harsh)
75
+
76
+ A well-mastered track typically shows a gentle downward slope from low to high frequencies on a spectrum analyzer.
77
+
78
+ ### Step 4: Check dynamics
79
+
80
+ ```
81
+ tool: read_track_crest
82
+ params:
83
+ trackIndex: [master bus index]
84
+ ```
85
+
86
+ Crest factor targets by genre:
87
+ - **Orchestral/Classical**: 14-20+ dB (maximum dynamic range)
88
+ - **Jazz/Folk**: 12-16 dB
89
+ - **Rock/Pop**: 8-12 dB
90
+ - **Hip-Hop/R&B**: 6-10 dB
91
+ - **EDM/Club**: 6-8 dB
92
+
93
+ If crest factor is below 6 dB, the master is likely over-compressed.
94
+
95
+ ### Step 5: Verify stereo image
96
+
97
+ ```
98
+ tool: read_track_correlation
99
+ params:
100
+ trackIndex: [master bus index]
101
+ ```
102
+
103
+ Check:
104
+ - **Correlation > 0.7**: Good mono compatibility (safe for all playback systems)
105
+ - **Correlation 0.3-0.7**: Wide stereo (check mono playback carefully)
106
+ - **Correlation < 0.3**: Very wide or phase issues (will sound thin on mono systems)
107
+ - **Correlation < 0**: Phase cancellation (FIX THIS — will disappear on mono systems)
108
+
109
+ ### Step 6: Check peak levels
110
+
111
+ ```
112
+ tool: read_track_meters
113
+ params:
114
+ trackIndex: [master bus index]
115
+ ```
116
+
117
+ Verify peak levels are below the true peak ceiling for the target platform:
118
+ - Streaming: peaks below -1.0 dBTP
119
+ - CD: peaks below -0.3 dBTP
120
+ - Club: peaks below -0.1 dBTP
121
+ - Broadcast: peaks below -1.0 dBTP (EBU) or -2.0 dBTP (ATSC)
122
+
123
+ ### Step 7: Verify session specs
124
+
125
+ ```
126
+ tool: get_project_info
127
+ ```
128
+
129
+ Confirm:
130
+ - Sample rate matches delivery requirement
131
+ - Session is playing back without errors
132
+ - Project tempo and time signature are correct (metadata)
133
+
134
+ ### Step 8: Generate delivery checklist
135
+
136
+ Compile a report for the user:
137
+
138
+ ```
139
+ ## Delivery Report
140
+
141
+ ### Target Platform: [platform]
142
+ | Spec | Target | Measured | Status |
143
+ |------|--------|----------|--------|
144
+ | Integrated LUFS | [target] | [measured] | PASS/FAIL |
145
+ | True Peak | [target] dBTP | [measured] dBTP | PASS/FAIL |
146
+ | Crest Factor | [target range] dB | [measured] dB | PASS/FAIL |
147
+ | Stereo Correlation | > 0.3 | [measured] | PASS/FAIL |
148
+ | Sample Rate | [target] kHz | [measured] kHz | PASS/FAIL |
149
+ | Sub Rumble (< 30 Hz) | Minimal | [observation] | PASS/FAIL |
150
+
151
+ ### Export Instructions
152
+ - Format: [WAV/FLAC/BWF]
153
+ - Bit Depth: [16/24/32-bit]
154
+ - Sample Rate: [kHz]
155
+ - Dithering: [Yes (16-bit only) / No]
156
+ - Filename: [SongTitle]_[Platform]_[BitDepth]-[SampleRate].[ext]
157
+
158
+ ### Notes
159
+ - [Any concerns, compromises, or recommendations]
160
+ ```
161
+
162
+ ## Platform-Specific Notes
163
+
164
+ ### Spotify / YouTube
165
+ - These platforms normalize loudness to -14 LUFS. Masters louder than -14 will be turned DOWN.
166
+ - Masters quieter than -14 will be turned UP (with potential for clipping if true peak is close to 0).
167
+ - Best practice: master to -14 LUFS with -1.0 dBTP ceiling.
168
+
169
+ ### Apple Music
170
+ - Normalizes to -16 LUFS. Slightly quieter target.
171
+ - Apple Digital Masters program requires 24-bit/96 kHz source files.
172
+ - High-res lossless badge requires meeting Apple's toolchain specs.
173
+
174
+ ### CD (Red Book)
175
+ - 16-bit requires dithering from 24-bit source (TPDF or noise-shaped dither).
176
+ - 44.1 kHz mandatory — sample rate conversion needed if session is at 48+ kHz.
177
+ - True peak ceiling should be -0.3 dBTP to account for inter-sample peaks after D/A conversion.
178
+
179
+ ### Club / DJ
180
+ - Louder targets (-6 to -9 LUFS) are acceptable and expected.
181
+ - Sub bass must be tight and controlled (club systems are very revealing below 60 Hz).
182
+ - True peak ceiling can be tighter (-0.1 dBTP) since playback is on professional systems.
183
+
184
+ ### Broadcast (EBU R128 / ATSC A/85)
185
+ - Strict loudness standards enforced by regulation.
186
+ - EBU R128: -23 LUFS ± 0.5, loudness range (LRA) should be appropriate for content.
187
+ - ATSC A/85: -24 LUFS (used in North American broadcast).
188
+
189
+ ### Vinyl
190
+ - No excessive sub-bass below 30 Hz (causes needle skip)
191
+ - Controlled sibilance (excessive high frequencies cause distortion on inner grooves)
192
+ - Mono bass below 300 Hz recommended (prevents groove wall issues)
193
+ - Dynamic range is welcome — vinyl handles dynamics well
194
+ - Separate master from digital — vinyl mastering is its own discipline
195
+
196
+ ## Common Pitfalls
197
+
198
+ - **Not measuring full-song integrated LUFS**: Short-term or momentary readings are NOT the delivery spec. Play the entire song for integrated measurement.
199
+ - **Ignoring true peak**: Digital-to-analog conversion creates inter-sample peaks. True peak (ISP) meters catch these; regular peak meters don't. Always check true peak.
200
+ - **Same master for all platforms**: A -14 LUFS streaming master won't work for club play (-6 to -9 LUFS needed). Create separate masters for different delivery targets.
201
+ - **Forgetting dither for 16-bit**: Converting 24-bit to 16-bit without dither introduces quantization distortion. Always apply TPDF dither.
202
+ - **Over-relying on numbers**: Delivery specs are minimum requirements, not the only quality measure. A master that hits -14 LUFS but sounds distorted still needs work.
@@ -0,0 +1,251 @@
1
+ ---
2
+ name: Editing
3
+ id: editing
4
+ description: Edit audio items for mix-readiness — crossfades, timing, phase alignment, cleanup
5
+ ---
6
+
7
+ # Editing
8
+
9
+ ## When to Use
10
+
11
+ After session preparation and before gain staging. Editing makes raw recorded performances mix-ready by fixing timing, managing transitions, cleaning up noise, and ensuring phase coherence between related microphones.
12
+
13
+ Use this workflow when:
14
+ - Raw recorded tracks need cleanup before mixing
15
+ - There are audible clicks or pops at edit points (missing crossfades)
16
+ - Drum timing needs tightening
17
+ - Multi-mic recordings have phase issues (kick in/out, snare top/bottom, DI + amp)
18
+ - Tracks have noise, bleed, or unwanted sounds between performances
19
+ - The arrangement needs structural changes (cut a verse, extend a chorus)
20
+
21
+ ## Prerequisites
22
+
23
+ - Session preparation is complete (tracks named, organized, routed)
24
+ - REAPER session is open with all recorded tracks
25
+ - You understand the song structure (markers placed in session prep)
26
+ - Transport is functional (can play, stop, navigate)
27
+
28
+ ## Step-by-Step
29
+
30
+ ### Step 1: Save a safety snapshot
31
+
32
+ ```
33
+ tool: snapshot_save
34
+ params:
35
+ name: "pre-editing"
36
+ description: "State before audio editing"
37
+ ```
38
+
39
+ ### Step 2: Inventory media items per track
40
+
41
+ ```
42
+ tool: list_tracks
43
+ ```
44
+
45
+ For each track, get an overview of media items:
46
+
47
+ ```
48
+ tool: list_media_items
49
+ params:
50
+ trackIndex: [n]
51
+ ```
52
+
53
+ Note: item count, positions, lengths, gaps between items, any overlapping items.
54
+
55
+ ### Step 3: Phase check multi-mic recordings
56
+
57
+ For tracks that share a source (e.g., kick in + kick out, snare top + snare bottom, DI + amp), check phase coherence:
58
+
59
+ ```
60
+ tool: read_track_correlation
61
+ params:
62
+ trackIndex: [first track]
63
+ ```
64
+
65
+ If correlation is negative or very low (< 0.3), the tracks may need phase alignment:
66
+
67
+ 1. Check if polarity flip fixes it:
68
+ ```
69
+ tool: set_track_property
70
+ params:
71
+ trackIndex: [n]
72
+ property: "phase"
73
+ value: true
74
+ ```
75
+
76
+ 2. If polarity flip doesn't help, time-align by nudging the item:
77
+ ```
78
+ tool: get_media_item_properties
79
+ params:
80
+ trackIndex: [n]
81
+ itemIndex: 0
82
+ ```
83
+ Then adjust position to align transients:
84
+ ```
85
+ tool: set_media_item_properties
86
+ params:
87
+ trackIndex: [n]
88
+ itemIndex: 0
89
+ position: [adjusted seconds]
90
+ ```
91
+
92
+ ### Step 4: Crossfade management
93
+
94
+ Check all edit points for smooth transitions. Every splice point needs a crossfade to prevent clicks:
95
+
96
+ For items that are adjacent or overlapping:
97
+ ```
98
+ tool: get_media_item_properties
99
+ params:
100
+ trackIndex: [n]
101
+ itemIndex: [n]
102
+ ```
103
+
104
+ Apply short crossfades at edit points:
105
+ ```
106
+ tool: set_media_item_properties
107
+ params:
108
+ trackIndex: [n]
109
+ itemIndex: [n]
110
+ fadeInLength: 0.005
111
+ fadeOutLength: 0.005
112
+ ```
113
+
114
+ Standard crossfade lengths:
115
+ - **Percussive edits** (drums, transients): 2-5 ms
116
+ - **Sustained sounds** (vocals, pads): 10-50 ms
117
+ - **Comp edit points** (between takes): 20-100 ms
118
+
119
+ ### Step 5: Timing alignment with stretch markers
120
+
121
+ For performances that drift from the grid, use stretch markers to align without cutting:
122
+
123
+ ```
124
+ tool: get_stretch_markers
125
+ params:
126
+ trackIndex: [n]
127
+ itemIndex: [n]
128
+ ```
129
+
130
+ Add stretch markers at transients that need realignment:
131
+ ```
132
+ tool: add_stretch_marker
133
+ params:
134
+ trackIndex: [n]
135
+ itemIndex: [n]
136
+ position: [item-relative seconds — where in the item the marker goes]
137
+ sourcePosition: [where this point maps to in the source audio]
138
+ ```
139
+
140
+ Timing alignment priorities:
141
+ 1. **Kick drum** — the rhythmic anchor, align to grid first
142
+ 2. **Snare** — lock to grid or slightly behind for groove
143
+ 3. **Bass** — align note attacks to kick drum hits
144
+ 4. **Rhythm guitars** — align strums to kick/snare pattern
145
+ 5. **Vocals** — nudge phrases to sit naturally, don't over-quantize
146
+
147
+ ### Step 6: Head and tail cleanup
148
+
149
+ Ensure clean silence before the first downbeat and appropriate decay at the end:
150
+
151
+ Check the first and last items on each track:
152
+ ```
153
+ tool: get_media_item_properties
154
+ params:
155
+ trackIndex: [n]
156
+ itemIndex: 0
157
+ ```
158
+
159
+ Trim heads (remove pre-roll noise):
160
+ ```
161
+ tool: trim_media_item
162
+ params:
163
+ trackIndex: [n]
164
+ itemIndex: 0
165
+ trimStart: [seconds to trim inward]
166
+ ```
167
+
168
+ Apply fade-ins to track starts:
169
+ ```
170
+ tool: set_media_item_properties
171
+ params:
172
+ trackIndex: [n]
173
+ itemIndex: 0
174
+ fadeInLength: 0.01
175
+ ```
176
+
177
+ Apply fade-outs to track ends:
178
+ ```
179
+ tool: set_media_item_properties
180
+ params:
181
+ trackIndex: [n]
182
+ itemIndex: [last]
183
+ fadeOutLength: 0.05
184
+ ```
185
+
186
+ ### Step 7: Arrangement editing (if needed)
187
+
188
+ If the song structure needs changes (cut a section, extend, rearrange):
189
+
190
+ Split items at section boundaries:
191
+ ```
192
+ tool: split_media_item
193
+ params:
194
+ trackIndex: [n]
195
+ itemIndex: [n]
196
+ position: [seconds — absolute project time]
197
+ ```
198
+
199
+ Move sections:
200
+ ```
201
+ tool: move_media_item
202
+ params:
203
+ trackIndex: [n]
204
+ itemIndex: [n]
205
+ newPosition: [seconds]
206
+ ```
207
+
208
+ Delete unwanted sections:
209
+ ```
210
+ tool: delete_media_item
211
+ params:
212
+ trackIndex: [n]
213
+ itemIndex: [n]
214
+ ```
215
+
216
+ **Important**: When rearranging, process ALL tracks at each section boundary to keep everything in sync. Do not move items on one track without moving corresponding items on all other tracks.
217
+
218
+ ### Step 8: Strip silence / gap cleanup
219
+
220
+ For tracks with long silences between performances (e.g., vocal tracks with silence between verses):
221
+
222
+ Identify items with excessive silence by checking positions and lengths. Items far apart with no content between them are candidates for trimming or splitting.
223
+
224
+ ### Step 9: Save post-editing snapshot
225
+
226
+ ```
227
+ tool: snapshot_save
228
+ params:
229
+ name: "post-editing"
230
+ description: "Audio editing complete — crossfades, timing, phase, cleanup done"
231
+ ```
232
+
233
+ ## Verification
234
+
235
+ After completing audio editing:
236
+
237
+ 1. No clicks or pops at any edit point (all splices have crossfades)
238
+ 2. Multi-mic recordings are phase-coherent (correlation > 0.5)
239
+ 3. Timing is tight (kick and bass locked, drums on grid or grooved consistently)
240
+ 4. Heads and tails are clean (no pre-roll noise, appropriate decays)
241
+ 5. Song structure is correct (if arrangement was edited)
242
+ 6. All tracks start and end cleanly
243
+
244
+ ## Common Pitfalls
245
+
246
+ - **Over-editing timing**: Some genres (jazz, folk, indie) rely on human feel. Don't grid-lock everything — only tighten where timing is distractingly loose
247
+ - **Missing crossfades**: Every edit point needs at least a 2 ms crossfade. One missed crossfade = one audible click
248
+ - **Phase-flipping without checking**: Flipping polarity helps when signals are ~180 degrees out, but can make things worse if they're only partially misaligned. Always measure correlation before and after
249
+ - **Editing tracks independently**: Multi-mic drum recordings must be edited as a group — if you nudge the snare top, the snare bottom and overheads must move with it
250
+ - **Destructive arrangement edits**: Always save a snapshot before rearranging sections. One wrong split or delete can be very hard to undo manually
251
+ - **Ignoring stretch marker artifacts**: Heavy time-stretching introduces artifacts (metallic sound, pitch warbling). If stretch is more than ~10%, consider re-recording instead