@mthines/reaper-mcp 0.1.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.
Files changed (42) hide show
  1. package/README.md +281 -0
  2. package/claude-rules/architecture.md +39 -0
  3. package/claude-rules/development.md +54 -0
  4. package/claude-rules/lua-bridge.md +50 -0
  5. package/claude-rules/testing.md +42 -0
  6. package/claude-skills/learn-plugin.md +123 -0
  7. package/knowledge/genres/_template.md +109 -0
  8. package/knowledge/genres/electronic.md +112 -0
  9. package/knowledge/genres/hip-hop.md +111 -0
  10. package/knowledge/genres/metal.md +136 -0
  11. package/knowledge/genres/orchestral.md +132 -0
  12. package/knowledge/genres/pop.md +108 -0
  13. package/knowledge/genres/rock.md +117 -0
  14. package/knowledge/plugins/_template.md +82 -0
  15. package/knowledge/plugins/fabfilter/pro-c-2.md +117 -0
  16. package/knowledge/plugins/fabfilter/pro-l-2.md +95 -0
  17. package/knowledge/plugins/fabfilter/pro-q-3.md +112 -0
  18. package/knowledge/plugins/neural-dsp/helix-native.md +104 -0
  19. package/knowledge/plugins/stock-reaper/js-1175-compressor.md +94 -0
  20. package/knowledge/plugins/stock-reaper/rea-comp.md +100 -0
  21. package/knowledge/plugins/stock-reaper/rea-delay.md +95 -0
  22. package/knowledge/plugins/stock-reaper/rea-eq.md +103 -0
  23. package/knowledge/plugins/stock-reaper/rea-gate.md +99 -0
  24. package/knowledge/plugins/stock-reaper/rea-limit.md +75 -0
  25. package/knowledge/plugins/stock-reaper/rea-verb.md +76 -0
  26. package/knowledge/reference/common-mistakes.md +307 -0
  27. package/knowledge/reference/compression.md +176 -0
  28. package/knowledge/reference/frequencies.md +154 -0
  29. package/knowledge/reference/metering.md +166 -0
  30. package/knowledge/workflows/drum-bus.md +211 -0
  31. package/knowledge/workflows/gain-staging.md +165 -0
  32. package/knowledge/workflows/low-end.md +261 -0
  33. package/knowledge/workflows/master-bus.md +204 -0
  34. package/knowledge/workflows/vocal-chain.md +246 -0
  35. package/main.js +755 -0
  36. package/package.json +44 -0
  37. package/reaper/install.sh +50 -0
  38. package/reaper/mcp_analyzer.jsfx +167 -0
  39. package/reaper/mcp_bridge.lua +1105 -0
  40. package/reaper/mcp_correlation_meter.jsfx +148 -0
  41. package/reaper/mcp_crest_factor.jsfx +108 -0
  42. package/reaper/mcp_lufs_meter.jsfx +301 -0
@@ -0,0 +1,165 @@
1
+ ---
2
+ name: Gain Staging
3
+ id: gain-staging
4
+ description: Set all track levels to -18 dBFS average before processing begins
5
+ ---
6
+
7
+ # Gain Staging
8
+
9
+ ## When to Use
10
+
11
+ At the START of every mix session, before any FX are inserted. Proper gain staging ensures:
12
+ - All dynamics processors (compressors, limiters) operate in their optimal range
13
+ - No internal overloads within the FX chain
14
+ - Consistent headroom through the signal path
15
+ - The mix bus has 6–10 dB of headroom before any limiting
16
+
17
+ Run this workflow when:
18
+ - Starting a new mix from raw tracks
19
+ - After the session has grown (new tracks added, volumes changed)
20
+ - When the mix bus is regularly clipping or hitting 0 dBFS
21
+ - When compressors are not reacting as expected (threshold may be wrong due to staging)
22
+
23
+ ## Prerequisites
24
+
25
+ - REAPER session is open with all tracks
26
+ - Audio is playing or has been played (meters have registered levels)
27
+ - No FX chains yet (or FX bypassed for the staging pass)
28
+ - Transport is set to a representative section of the song (dense chorus, not just intro silence)
29
+
30
+ ## Step-by-Step
31
+
32
+ ### Step 1: Save a snapshot before starting
33
+
34
+ Use `snapshot_save` to capture the current state before any changes.
35
+
36
+ ```
37
+ tool: snapshot_save
38
+ params:
39
+ name: "pre-gain-staging"
40
+ description: "State before gain staging workflow"
41
+ ```
42
+
43
+ ### Step 2: Get all tracks
44
+
45
+ ```
46
+ tool: list_tracks
47
+ ```
48
+
49
+ Identify: track count, track names, folder structure (look for bus/folder tracks).
50
+
51
+ Skip tracks that are:
52
+ - Mix bus / master bus
53
+ - Reverb/delay return buses
54
+ - Folder tracks (their volume is set separately)
55
+
56
+ ### Step 3: Play a representative section
57
+
58
+ ```
59
+ tool: play
60
+ ```
61
+
62
+ Play the densest, most representative section of the song (usually the chorus). Let it play for at least 10 seconds to build up meter readings.
63
+
64
+ ### Step 4: Read meters for all tracks
65
+
66
+ ```
67
+ tool: read_track_meters
68
+ params:
69
+ trackIndex: [each track index]
70
+ ```
71
+
72
+ Record: peak level (dBFS), RMS level (dBFS) for each track.
73
+
74
+ Target levels:
75
+ - **Average/RMS**: -18 dBFS (±3 dB acceptable)
76
+ - **Peak**: -12 dBFS (not exceeding -6 dBFS)
77
+
78
+ If a track reads:
79
+ - Average of -30 dBFS → needs gain increase
80
+ - Average of -8 dBFS → needs gain reduction
81
+ - Peak of -3 dBFS → dangerously hot, reduce gain
82
+
83
+ ### Step 5: Calculate gain adjustments
84
+
85
+ For each track:
86
+ ```
87
+ gain_adjustment_dB = -18 - current_average_dBFS
88
+ ```
89
+
90
+ Example: Track averages -24 dBFS → needs +6 dB
91
+ Example: Track averages -10 dBFS → needs -8 dB
92
+
93
+ Round to nearest 0.5 dB for practical purposes.
94
+
95
+ ### Step 6: Apply gain adjustments via track fader
96
+
97
+ ```
98
+ tool: set_track_property
99
+ params:
100
+ trackIndex: [n]
101
+ property: "volume"
102
+ value: [gain_adjustment_dB]
103
+ ```
104
+
105
+ Note: `set_track_property` with `volume` takes dB values. The fader is the correct place to set gain stage — not per-plugin input gain — so that the signal is correct before any processing.
106
+
107
+ Apply to each track in order.
108
+
109
+ ### Step 7: Verify mix bus headroom
110
+
111
+ After adjusting all tracks, read the mix bus meter:
112
+
113
+ ```
114
+ tool: read_track_meters
115
+ params:
116
+ trackIndex: [mix bus index — usually the last or master track]
117
+ ```
118
+
119
+ Target: Mix bus should peak at -6 to -3 dBFS. If it's hitting 0 dBFS, pull all track faders down proportionally (or reduce master fader by the excess dB).
120
+
121
+ ### Step 8: Check instrument relationships
122
+
123
+ Re-play the chorus section. Listen for:
124
+ - Does the kick still hit harder than the snare? (relative levels should still feel musical)
125
+ - Do vocals still sit over the instruments? (if not, the relative balance was off before; adjust individual tracks)
126
+
127
+ If relative balance is wrong, apply additional individual adjustments AFTER the gain staging is complete. Gain staging sets the floor; the mix is built on top of it.
128
+
129
+ ### Step 9: Save post-staging snapshot
130
+
131
+ ```
132
+ tool: snapshot_save
133
+ params:
134
+ name: "post-gain-staging"
135
+ description: "Gain staged — all tracks at -18 dBFS average"
136
+ ```
137
+
138
+ ## FX Chain Order (for the gain staging process itself)
139
+
140
+ This workflow requires no FX. It uses only fader adjustments. After completion, insert FX in this order:
141
+
142
+ 1. Input gain trim (if using a gain plugin rather than the fader)
143
+ 2. EQ
144
+ 3. Compression
145
+ 4. Saturation / excitement
146
+ 5. Output trim
147
+
148
+ Each stage should receive signal at approximately -18 dBFS average for optimal plugin behavior.
149
+
150
+ ## Verification
151
+
152
+ After completing gain staging:
153
+
154
+ 1. Play the mix — average meter on mix bus should read approximately -18 to -12 dBFS RMS
155
+ 2. Peak on mix bus should not exceed -6 dBFS in the chorus
156
+ 3. Individual tracks should all be within ±6 dB of each other before mixing decisions (unless intentionally quiet elements like room mics)
157
+ 4. No individual track should be peaking above -6 dBFS before faders
158
+
159
+ ## Common Pitfalls
160
+
161
+ - **Using clip gain vs fader**: Gain staging is done with the fader or a dedicated trim plugin, not clip gain (which bakes the level into the audio). Faders allow re-visiting.
162
+ - **Staging with FX active**: Compressors and limiters on a track will affect the meter reading. Bypass all FX or stage to the raw audio level.
163
+ - **Ignoring bus tracks**: A drum bus that's receiving 8 inputs at -18 dBFS each will be summing to a much higher level. The bus fader controls the drum bus output level — check and adjust it.
164
+ - **Single-moment readings**: Read meters over a representative 10+ second passage, not a single snapshot that may catch silence or a single loud peak.
165
+ - **Not checking after gain staging**: Always play the mix after staging to confirm balance feels correct. The numbers are targets, not rules — use ears to verify.
@@ -0,0 +1,261 @@
1
+ ---
2
+ name: Low-End Management
3
+ id: low-end
4
+ description: Fix and optimize the bass and sub frequencies in a mix
5
+ ---
6
+
7
+ # Low-End Management
8
+
9
+ ## When to Use
10
+
11
+ When the mix has low-frequency problems: too much bass, too little punch, muddy low-mids, kick and bass fighting each other, or bass that doesn't translate to small speakers. This is one of the most common mixing problems, especially for home studio mixes on desktop speakers with poor low-frequency response.
12
+
13
+ Use this workflow when:
14
+ - User says "the bass is muddy" or "too much low end"
15
+ - User says "I can't hear the bass on earbuds/small speakers"
16
+ - Kick drum is losing against bass guitar or vice versa
17
+ - Mix sounds fine in the studio but thin or boomy elsewhere
18
+ - User says "there's rumbling bass" or "the low end is out of control"
19
+
20
+ ## Prerequisites
21
+
22
+ - Gain staging complete
23
+ - All bass-producing tracks identified (kick, bass guitar, 808, synth bass, low keys)
24
+ - Transport playing through a representative section (not intro silence)
25
+ - Mix is audible (not just metered in silence)
26
+
27
+ ## Step-by-Step
28
+
29
+ ### Step 1: Save snapshot
30
+
31
+ ```
32
+ tool: snapshot_save
33
+ params:
34
+ name: "pre-low-end"
35
+ description: "Before low-end management"
36
+ ```
37
+
38
+ ### Step 2: Identify all low-frequency tracks
39
+
40
+ ```
41
+ tool: list_tracks
42
+ ```
43
+
44
+ Identify every track contributing below 200 Hz:
45
+ - Kick drum
46
+ - Bass guitar / synth bass / 808
47
+ - Piano (left hand)
48
+ - Organ bass
49
+ - Pads with sub content
50
+ - Room mics (indirect bass)
51
+
52
+ These tracks are the "low-end family" and need to be managed together, not individually in isolation.
53
+
54
+ ### Step 3: Spectrum analysis on each bass track
55
+
56
+ For each bass-producing track:
57
+
58
+ ```
59
+ tool: read_track_spectrum
60
+ params:
61
+ trackIndex: [track index]
62
+ ```
63
+
64
+ Record the approximate peak frequencies and energy distribution. Look for:
65
+ - Where is the fundamental energy concentrated?
66
+ - Is there energy below 30 Hz (ultra-sub — usually unwanted rumble)?
67
+ - Where is the 200–400 Hz "mud zone" energy?
68
+
69
+ ### Step 4: Apply aggressive HPF to non-bass instruments
70
+
71
+ The most effective low-end cleanup is removing bass from instruments that don't need it.
72
+
73
+ For each non-bass track (guitar, piano high range, vocals, synths, cymbals):
74
+
75
+ ```
76
+ tool: add_fx
77
+ params:
78
+ trackIndex: [track index]
79
+ fxName: "Pro-Q3" # or ReaEQ
80
+ ```
81
+
82
+ Apply HPF at appropriate frequency (from reference/frequencies.md):
83
+
84
+ | Instrument | HPF Frequency | Notes |
85
+ |------------|--------------|-------|
86
+ | Lead vocals | 80–100 Hz | |
87
+ | Backing vocals | 100–120 Hz | |
88
+ | Electric guitar (rhythm) | 80–120 Hz | Higher for metal |
89
+ | Electric guitar (lead) | 80–100 Hz | |
90
+ | Acoustic guitar | 80–120 Hz | |
91
+ | Piano (if not bass role) | 80 Hz | |
92
+ | Pads/synths | 80–150 Hz | Depends on register |
93
+ | Snare | 100–150 Hz | |
94
+ | Overheads | 200–400 Hz | Often 300+ Hz for tight overhead sound |
95
+ | Room mics | 80–200 Hz | Depends on room character |
96
+ | Any FX return | 100–200 Hz | Prevent verb/delay muddying bass |
97
+
98
+ ```
99
+ tool: set_fx_parameter
100
+ # Set Band 1 Type to HPF
101
+ # Set Band 1 Frequency to target value (normalized)
102
+ # Set Band 1 Slope to 24 dB/oct
103
+ ```
104
+
105
+ This step alone often resolves 80% of low-end problems.
106
+
107
+ ### Step 5: Define the kick-bass relationship
108
+
109
+ Kick and bass guitar must occupy different frequency zones or use sidechain compression to share the space dynamically. There are two approaches:
110
+
111
+ **Approach A: Frequency splitting (static)**
112
+
113
+ Assign each instrument to a specific zone:
114
+ - Kick owns: 50–80 Hz (the punch/thump)
115
+ - Bass guitar owns: 80–150 Hz (the warmth and note)
116
+
117
+ On kick drum EQ:
118
+ ```
119
+ tool: set_fx_parameter
120
+ # Boost 60–70 Hz (+2 to +3 dB Bell)
121
+ # Cut bass guitar's zone 100–150 Hz (-2 dB Bell)
122
+ ```
123
+
124
+ On bass guitar EQ:
125
+ ```
126
+ tool: set_fx_parameter
127
+ # Boost 100–120 Hz (+2 dB Bell)
128
+ # Dip at 60–80 Hz (-2 dB Bell) where kick lives
129
+ ```
130
+
131
+ **Approach B: Sidechain compression (dynamic)**
132
+
133
+ Kick triggers compression on the bass guitar — every time the kick hits, the bass ducks slightly, creating a rhythmic pump that's characteristic of many modern genres.
134
+
135
+ ```
136
+ tool: add_fx
137
+ params:
138
+ trackIndex: [bass guitar index]
139
+ fxName: "Pro-C2"
140
+ ```
141
+
142
+ - Enable sidechain input from kick track
143
+ - Ratio: 4:1–6:1
144
+ - Attack: 1–5 ms (very fast, duck immediately)
145
+ - Release: 50–150 ms (release before next kick)
146
+ - Threshold: Set for 3–8 dB GR per kick hit
147
+
148
+ ### Step 6: Mono sum below 100 Hz (critical for translation)
149
+
150
+ Bass below 100 Hz must be in mono for proper playback on:
151
+ - Club sound systems (sub is mono)
152
+ - Car audio (single sub)
153
+ - Earbuds (stereo below 80 Hz causes imaging problems)
154
+ - Bluetooth speakers
155
+
156
+ Method A: Use a mid/side EQ to isolate the side channel and high-pass it at 100 Hz (removing bass from the sides):
157
+
158
+ ```
159
+ tool: add_fx
160
+ params:
161
+ trackIndex: [master bus or bass track]
162
+ fxName: "Pro-Q3"
163
+ ```
164
+
165
+ In Pro-Q 3:
166
+ - Add a band, set to Side channel only
167
+ - Set band type to Low Cut (HPF)
168
+ - Frequency: 100 Hz
169
+ - Slope: 24 dB/oct
170
+
171
+ This removes bass from the side information while leaving mid bass intact — effectively mono-summing below 100 Hz.
172
+
173
+ Method B: Ensure bass tracks (kick, bass guitar) are themselves mono. Check that they are not panned or spread. A bass guitar should be center (0% pan).
174
+
175
+ ### Step 7: Cut the mud zone (250–500 Hz)
176
+
177
+ The "mud zone" (250–500 Hz) is where most low-end muddiness lives. Multiple instruments stacking in this zone creates congestion.
178
+
179
+ For each instrument with significant energy in this zone (check spectrum from Step 3):
180
+
181
+ ```
182
+ tool: set_fx_parameter
183
+ # On each instrument's EQ:
184
+ # Add Bell band at 300–400 Hz
185
+ # Gain: -2 to -4 dB
186
+ # Q: 0.8–1.2 (wide cut)
187
+ ```
188
+
189
+ The cumulative effect of cutting each instrument -2 to -3 dB in this zone clears the mud without making any single instrument sound thin.
190
+
191
+ ### Step 8: Control sub rumble below 30 Hz
192
+
193
+ Any energy below 30 Hz is inaudible on most speakers but wastes headroom and causes distortion in amplifiers.
194
+
195
+ On the master bus (or on bass-heavy individual tracks):
196
+
197
+ ```
198
+ tool: add_fx
199
+ params:
200
+ trackIndex: [master bus or bass guitar]
201
+ fxName: "Pro-Q3"
202
+ ```
203
+
204
+ Apply HPF at 25–30 Hz with 12–24 dB/oct slope. This removes inaudible sub rumble without affecting the musical bass content.
205
+
206
+ ### Step 9: Bass translation check
207
+
208
+ Play the mix and check how it translates on different systems. The agent can report spectrum readings to simulate this:
209
+
210
+ ```
211
+ tool: read_track_spectrum
212
+ params:
213
+ trackIndex: [master bus]
214
+ ```
215
+
216
+ Check if bass energy (60–250 Hz) is balanced against midrange (500 Hz–2 kHz):
217
+ - Bass-heavy: 60–250 Hz reads significantly higher than mids
218
+ - Too thin: 60–250 Hz reads much lower than mids
219
+ - Balanced: Within 6–10 dB of each other
220
+
221
+ For small-speaker translation, ensure the 150–300 Hz range has content — this is where bass is "heard" on phone speakers.
222
+
223
+ ### Step 10: Save snapshot
224
+
225
+ ```
226
+ tool: snapshot_save
227
+ params:
228
+ name: "post-low-end"
229
+ description: "Low-end management complete: HPF applied, kick-bass relationship defined, mono sum below 100 Hz"
230
+ ```
231
+
232
+ ## FX Chain Order (relevant to low-end management)
233
+
234
+ Per bass instrument track:
235
+ 1. **HPF** (on all non-bass instruments — removes unnecessary low-end)
236
+ 2. **EQ** (frequency splitting — define kick vs bass zones)
237
+ 3. **Compressor** with sidechain (kick triggers bass ducking — optional but common)
238
+ 4. **Saturation** (for bass guitar — adds harmonics for small-speaker translation)
239
+
240
+ On master bus:
241
+ 1. **HPF at 25–30 Hz** (remove inaudible rumble)
242
+ 2. **Mid/Side HPF on side channel at 100 Hz** (enforce mono bass)
243
+
244
+ ## Verification
245
+
246
+ After completing low-end management:
247
+
248
+ 1. Mix bus spectrum should show smooth bass response, not a single boomy peak
249
+ 2. Kick should be clearly distinguishable from bass guitar rhythm at all dynamics
250
+ 3. Bass should still be audible when listening on phone speakers or earbuds (check 150–300 Hz)
251
+ 4. No audible rumble in quiet sections (floor noise, mic hum)
252
+ 5. Bass translation: if you can feel the kick and hear the bass note on small speakers, the low end is translating
253
+
254
+ ## Common Pitfalls
255
+
256
+ - **Only fixing one instrument**: Low-end mud is cumulative. Cutting 2 dB from the bass guitar alone does nothing if 8 other tracks are adding to the mud. The HPF sweep across all non-bass instruments is the most powerful step.
257
+ - **HPF too high on bass instruments**: Cutting the bass guitar above 60 Hz will make it disappear. The bass guitar IS the bass — preserve its fundamental.
258
+ - **Stereo bass below 100 Hz**: Wide bass causes playback problems on mono systems. Always verify bass is mono below 100 Hz.
259
+ - **Boosting bass vs cutting mud**: It is tempting to boost the bass to make it louder. Instead, cut the mud (250–500 Hz on competing instruments) — the bass will appear to come forward without actually being louder.
260
+ - **Not checking kick-bass relationship separately**: Listen to kick and bass guitar alone together. They should lock and complement each other, not fight. If they fight, the frequency zones are overlapping.
261
+ - **Missing sub-30 Hz content**: Low-end rumble below 30 Hz is inaudible but eats headroom. Always apply a gentle HPF on the master bus.
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: Master Bus
3
+ id: master-bus
4
+ description: Build the final mix bus processing chain for delivery
5
+ ---
6
+
7
+ # Master Bus
8
+
9
+ ## When to Use
10
+
11
+ When the mix is ready for final processing before export. The master bus chain adds the final glue compression, tonal shaping, and limiting that brings the mix to competitive loudness and prepares it for streaming delivery.
12
+
13
+ Use this workflow when:
14
+
15
+ - The mix is complete and all tracks are balanced
16
+ - The user says "master this mix" or "prepare for delivery"
17
+ - The mix needs to meet a specific LUFS target (Spotify -14, YouTube -14, Apple Music -16, club -8 to -6)
18
+ - The mix bus has headroom (peaking at -6 to -3 dBFS before this chain)
19
+
20
+ Important distinction: This is mix bus mastering (mixing the master), not mastering from a stereo file. Full mastering from a 2-track bounce requires different tools and more headroom. This workflow is appropriate for delivering a final mix from a REAPER session.
21
+
22
+ ## Prerequisites
23
+
24
+ - Mix is balanced (all elements sitting correctly)
25
+ - Gain staging is complete (mix bus peaks at -6 to -3 dBFS before this chain)
26
+ - Genre is known (LUFS target depends on genre)
27
+ - No existing processing on the master bus (or existing chain is documented and will be replaced)
28
+
29
+ ## Step-by-Step
30
+
31
+ ### Step 1: Save snapshot
32
+
33
+ ```
34
+ tool: snapshot_save
35
+ params:
36
+ name: "pre-master-bus"
37
+ description: "Mix ready for master bus chain"
38
+ ```
39
+
40
+ ### Step 2: Check current mix bus headroom
41
+
42
+ ```
43
+ tool: read_track_meters
44
+ params:
45
+ trackIndex: [master bus / mix bus index — usually last track or master]
46
+ ```
47
+
48
+ Play the loudest section (usually chorus). Record the peak level.
49
+
50
+ If the mix bus is peaking above -3 dBFS: reduce all tracks or the master bus fader before proceeding. You need headroom for the master bus chain to work without clipping.
51
+ If the mix bus is peaking above -3 dBFS: reduce all tracks or the master bus fader before proceeding. You need headroom for the master bus chain to work without clipping.
52
+
53
+ If the mix bus is below -12 dBFS average: gain staging may be off — consider re-running the gain-staging workflow first.
54
+
55
+ Ideal pre-master-bus level: -8 to -6 dBFS peaks, -18 to -14 dBFS average RMS.
56
+
57
+ ### Step 3: Add glue compressor
58
+
59
+ Select: Pro-C 2 Classic mode preferred, ReaComp as fallback.
60
+
61
+ ```
62
+ tool: add_fx
63
+ params:
64
+ trackIndex: [master bus index]
65
+ fxName: "Pro-C2"
66
+ ```
67
+
68
+ Settings (transparent glue — very subtle):
69
+
70
+ | Parameter | Value | Why |
71
+ | ------------- | ----------------- | --------------------------------- |
72
+ | Style | Classic (VCA) | Warm, cohesive glue |
73
+ | Ratio | 2:1 | Gentle |
74
+ | Attack | 10–30 ms | Preserve transients |
75
+ | Release | Auto | Program-dependent — musical |
76
+ | Threshold | Set for 1–2 dB GR | Very light touch |
77
+ | Knee | 6–12 dB | Maximum transparency |
78
+ | Sidechain HPF | 80 Hz | Prevent bass from over-triggering |
79
+
80
+ Play the loudest section. Adjust threshold until GR meter shows 1–2 dB maximum reduction. This should be nearly inaudible but make the mix feel more cohesive when bypassed and engaged.
81
+
82
+ ### Step 4: Add EQ (optional — corrective only)
83
+
84
+ Only add if the mix has identifiable frequency imbalances that couldn't be fixed at the track level.
85
+
86
+ ```
87
+ tool: add_fx
88
+ params:
89
+ trackIndex: [master bus index]
90
+ fxName: "Pro-Q3" # or ReaEQ — use linear phase mode for mastering
91
+ ```
92
+
93
+ Common master bus EQ moves (use sparingly, max ±2 dB):
94
+
95
+ | Move | When to Use |
96
+ | ---------------------------------------------- | -------------------------------------- |
97
+ | Low shelf cut at 60 Hz, -1 to -2 dB | Mix is bass-heavy, lacking clarity |
98
+ | Bell cut at 250–400 Hz, -1 to -2 dB | Mix sounds muddy or congested |
99
+ | Bell cut at 2–4 kHz, -0.5 to -1 dB | Mix sounds harsh on extended listening |
100
+ | High shelf boost at 10–12 kHz, +0.5 to +1.5 dB | Mix sounds dull or lacks air |
101
+
102
+ Use Pro-Q 3 in Linear Phase mode on the master bus to avoid phase distortion at low frequencies.
103
+
104
+ ### Step 5: Add limiter for loudness target
105
+
106
+ Select: Pro-L 2 preferred, ReaLimit as fallback.
107
+
108
+ ```
109
+ tool: add_fx
110
+ params:
111
+ trackIndex: [master bus index]
112
+ fxName: "Pro-L2"
113
+ ```
114
+
115
+ Determine LUFS target from genre:
116
+
117
+ - Spotify / YouTube streaming: -14 LUFS integrated, -1.0 dBTP
118
+ - Apple Music: -16 LUFS integrated, -1.0 dBTP
119
+ - Club / EDM: -8 to -6 LUFS integrated, -0.3 dBTP
120
+ - Hip-hop: -10 to -7 LUFS integrated, -0.3 dBTP
121
+ - Film/TV/broadcast: -23 LUFS (EBU R128)
122
+
123
+ Settings for streaming (-14 LUFS):
124
+
125
+ | Parameter | Value | Why |
126
+ | ------------ | ----------------------- | ------------------------------- |
127
+ | Style | Transparent or Allround | Clean limiting |
128
+ | Output Level | -1.0 dBFS | -1 dBTP ceiling |
129
+ | ISP | on | True peak detection |
130
+ | Transients | 40–60% | Preserve some punch |
131
+ | Lookahead | 1–4 ms | |
132
+ | LUFS Target | -14 LUFS | Set via the built-in LUFS meter |
133
+
134
+ Play the full song and check the integrated LUFS reading. The integrated LUFS is calculated over the full song, not a short section.
135
+
136
+ Adjust Input Gain on Pro-L 2 to hit the target:
137
+
138
+ - If integrated reads -17 LUFS and target is -14: add +3 dB Input Gain
139
+ - If integrated reads -11 LUFS and target is -14: reduce Input Gain by 3 dB
140
+
141
+ Watch the GR meter on the limiter:
142
+
143
+ - Average 0.5–2 dB GR: Good — the mix is being lightly limited
144
+ - Average 4+ dB GR: The mix is too loud before the limiter; reduce compressor stage or fix upstream
145
+
146
+ ### Step 6: Check mono compatibility
147
+
148
+ ```
149
+ tool: read_track_spectrum
150
+ params:
151
+ trackIndex: [master bus index]
152
+ ```
153
+
154
+ Play the mix while mentally imagining it summed to mono. If there are frequency-specific dips (comb filtering), it indicates phase issues from stereo reverbs or wide processing. Flag to user if significant problems are found.
155
+
156
+ The Correlation Meter JSFX (if installed) will show this directly: values near +1.0 = good mono compatibility; values near 0 or negative = phase issues.
157
+
158
+ ### Step 7: Verify delivery specs
159
+
160
+ | Check | Target |
161
+ | --------------- | -------------------------------------------- |
162
+ | Integrated LUFS | Genre target (see Step 5) |
163
+ | True peak | -1.0 or -0.3 dBTP (genre dependent) |
164
+ | Crest factor | 8+ dB for mixed music; 12+ dB for orchestral |
165
+ | Low end mono | No audible phase problems below 100 Hz |
166
+ | Stereo width | Correlation > 0.7 on full mix |
167
+
168
+ ### Step 8: Save final snapshot
169
+
170
+ ```
171
+ tool: snapshot_save
172
+ params:
173
+ name: "master-complete"
174
+ description: "Master bus chain complete — ready for export"
175
+ ```
176
+
177
+ ## FX Chain Order (on the master bus)
178
+
179
+ 1. **Glue compressor** (VCA, very light — 1–2 dB GR)
180
+ 2. **EQ** (optional — linear phase, corrective only, ±2 dB max)
181
+ 3. **Saturation** (optional — extremely subtle, adds harmonic density)
182
+ 4. **Limiter** (brickwall, LUFS targeting, true peak detection)
183
+
184
+ Optionally before the compressor:
185
+
186
+ - **Multiband compressor** (only if specific frequency bands need control that single-band comp can't handle)
187
+ - **Stereo imager** (only if mono compatibility is poor — careful)
188
+
189
+ ## Verification
190
+
191
+ 1. Play the full mix A/B against a pre-master-bus snapshot — the master chain should make the mix sound fuller and more cohesive, not just louder
192
+ 2. Check the limiter's GR: should be gentle, not constant heavy limiting
193
+ 3. Export a 30-second clip and check on headphones, phone speaker, and car audio
194
+ 4. Verify LUFS integrated reading matches the target platform
195
+ 5. Check that transients are still felt (kick punch, snare snap) despite limiting
196
+
197
+ ## Common Pitfalls
198
+
199
+ - **Master bus too loud before the chain**: If peaks are above -3 dBFS before the limiter, the limiter is doing too much work. Fix the mix upstream.
200
+ - **Heavy glue compression + heavy limiting**: Double processing. If the compressor is doing 4+ dB GR and the limiter is doing 4+ dB GR, the mix is being over-squashed. Choose one.
201
+ - **Linear phase EQ artifacts**: Linear phase EQ adds pre-ringing at low frequencies with heavy processing. Keep EQ moves subtle on the master bus.
202
+ - **Chasing loud**: Increasing the limiter's Input Gain to match a loud reference track can destroy the dynamics and make the mix sound flat. Trust the LUFS target.
203
+ - **Exporting without checking LUFS**: Integrated LUFS requires measuring the entire song. A 30-second check is not sufficient for integrated measurement. Play the full song with the LUFS meter running.
204
+ - **Not saving a pre-master snapshot**: Always save a snapshot before adding master bus processing. The user may want to A/B compare.