@mthines/reaper-mcp 0.19.0 → 0.70.2

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 (116) hide show
  1. package/README.md +19 -570
  2. package/bridge-ui/mcp_bridge.html +129 -0
  3. package/bridge-ui/mcp_bridge.webmanifest +16 -0
  4. package/bridge-ui/mcp_bridge_icon_192.png +0 -0
  5. package/bridge-ui/mcp_bridge_icon_512.png +0 -0
  6. package/bridge-ui/mcp_bridge_sw.js +35 -0
  7. package/claude/agents/plugin-researcher.md +188 -0
  8. package/claude/knowledge/reference/aesthetics-scoring.md +48 -0
  9. package/{knowledge → claude/knowledge}/reference/common-mistakes.md +1 -1
  10. package/claude/knowledge/reference/lorekit-setup.md +36 -0
  11. package/claude/knowledge/reference/memory-protocol.md +377 -0
  12. package/{knowledge → claude/knowledge}/reference/metering.md +5 -5
  13. package/claude/knowledge/reference/perceived-loudness.md +182 -0
  14. package/{knowledge → claude/knowledge}/workflows/editing.md +4 -0
  15. package/{knowledge → claude/knowledge}/workflows/gain-staging.md +21 -23
  16. package/{knowledge → claude/knowledge}/workflows/learn-plugin.md +15 -48
  17. package/{knowledge → claude/knowledge}/workflows/master-bus.md +13 -1
  18. package/claude/knowledge/workflows/section-levels.md +138 -0
  19. package/{knowledge → claude/knowledge}/workflows/session-prep.md +4 -0
  20. package/claude/knowledge/workflows/transient-lighting.md +52 -0
  21. package/claude/skills/critique/SKILL.md +131 -0
  22. package/claude/skills/editing/SKILL.md +281 -0
  23. package/claude/skills/learn-plugin/SKILL.md +210 -0
  24. package/claude/skills/mastering/SKILL.md +151 -0
  25. package/claude/skills/mix-memory/SKILL.md +140 -0
  26. package/claude/skills/mixer/SKILL.md +253 -0
  27. package/claude/skills/new-extension/SKILL.md +324 -0
  28. package/main.js +7843 -1940
  29. package/package.json +17 -15
  30. package/reaper/CLAUDE.md +22 -4
  31. package/reaper/mcp_actions_lib.lua +375 -0
  32. package/reaper/mcp_analyzer.jsfx +27 -12
  33. package/reaper/mcp_arrange_lib.lua +949 -0
  34. package/reaper/mcp_bridge.lua +2321 -758
  35. package/reaper/mcp_edit_views_lib.lua +1378 -0
  36. package/reaper/mcp_envelopes_lib.lua +748 -0
  37. package/reaper/mcp_extensions_lib.lua +55 -0
  38. package/reaper/mcp_fxstate_lib.lua +144 -0
  39. package/reaper/mcp_gain_trace.jsfx +126 -0
  40. package/reaper/mcp_items_lib.lua +877 -0
  41. package/reaper/mcp_lufs_meter.jsfx +16 -13
  42. package/reaper/mcp_midi_lib.lua +555 -0
  43. package/reaper/mcp_mixing_lib.lua +1021 -0
  44. package/reaper/mcp_plan_lib.lua +801 -0
  45. package/reaper/mcp_prefs_lib.lua +127 -0
  46. package/reaper/mcp_project_lib.lua +1088 -0
  47. package/reaper/mcp_recording_lib.lua +595 -0
  48. package/reaper/mcp_render_lib.lua +492 -0
  49. package/reaper/mcp_snapshot_lib.lua +547 -120
  50. package/reaper/mcp_snapshot_next.lua +10 -4
  51. package/reaper/mcp_snapshot_prev.lua +11 -4
  52. package/reaper/mcp_snapshot_quick_save.lua +7 -32
  53. package/reaper/mcp_snapshots_ui_lib.lua +258 -0
  54. package/reaper/mcp_tracks_lib.lua +409 -0
  55. package/sidecar/analysis.py +661 -0
  56. package/sidecar/chords.py +96 -0
  57. package/sidecar/mixcheck.py +295 -0
  58. package/sidecar/requirements-chords.txt +6 -0
  59. package/sidecar/requirements-separation.txt +3 -0
  60. package/sidecar/requirements.txt +17 -0
  61. package/sidecar/separation.py +142 -0
  62. package/sidecar/server.py +622 -0
  63. package/sidecar/tests/test_analysis.py +249 -0
  64. package/sidecar/tests/test_chords.py +117 -0
  65. package/sidecar/tests/test_mixcheck.py +163 -0
  66. package/sidecar/tests/test_separation.py +73 -0
  67. package/sidecar/tests/test_server.py +464 -0
  68. package/sidecar/tests/test_verify.py +243 -0
  69. package/sidecar/tests/test_voice_render.py +268 -0
  70. package/sidecar/tests/test_voice_sketch.py +140 -0
  71. package/sidecar/verify.py +224 -0
  72. package/sidecar/voice_render.py +295 -0
  73. package/sidecar/voice_sketch.py +280 -0
  74. package/claude-agents/critique.md +0 -147
  75. package/claude-agents/editor.md +0 -184
  76. package/claude-agents/levels.md +0 -107
  77. package/claude-agents/mastering.md +0 -129
  78. package/claude-agents/mixer.md +0 -248
  79. package/claude-agents/preflight.md +0 -149
  80. package/claude-agents/producer.md +0 -159
  81. package/claude-agents/setup.md +0 -150
  82. package/claude-agents/stems.md +0 -135
  83. package/claude-rules/architecture.md +0 -39
  84. package/claude-rules/development.md +0 -54
  85. package/claude-rules/lua-bridge.md +0 -50
  86. package/claude-rules/testing.md +0 -42
  87. package/claude-skills/learn-plugin.md +0 -123
  88. package/knowledge/CLAUDE.md +0 -71
  89. package/knowledge/plugins/_template.md +0 -82
  90. package/knowledge/plugins/fabfilter/pro-c-2.md +0 -117
  91. package/knowledge/plugins/fabfilter/pro-l-2.md +0 -95
  92. package/knowledge/plugins/fabfilter/pro-q-3.md +0 -112
  93. package/knowledge/plugins/neural-dsp/helix-native.md +0 -104
  94. package/knowledge/plugins/stock-reaper/js-1175-compressor.md +0 -94
  95. package/knowledge/plugins/stock-reaper/rea-comp.md +0 -100
  96. package/knowledge/plugins/stock-reaper/rea-delay.md +0 -95
  97. package/knowledge/plugins/stock-reaper/rea-eq.md +0 -103
  98. package/knowledge/plugins/stock-reaper/rea-gate.md +0 -99
  99. package/knowledge/plugins/stock-reaper/rea-limit.md +0 -75
  100. package/knowledge/plugins/stock-reaper/rea-verb.md +0 -76
  101. package/knowledge/reference/perceived-loudness.md +0 -122
  102. package/reaper/mcp_snapshot_manager.lua +0 -1001
  103. /package/{knowledge → claude/knowledge}/genres/_template.md +0 -0
  104. /package/{knowledge → claude/knowledge}/genres/electronic.md +0 -0
  105. /package/{knowledge → claude/knowledge}/genres/hip-hop.md +0 -0
  106. /package/{knowledge → claude/knowledge}/genres/metal.md +0 -0
  107. /package/{knowledge → claude/knowledge}/genres/orchestral.md +0 -0
  108. /package/{knowledge → claude/knowledge}/genres/pop.md +0 -0
  109. /package/{knowledge → claude/knowledge}/genres/rock.md +0 -0
  110. /package/{knowledge → claude/knowledge}/reference/compression.md +0 -0
  111. /package/{knowledge → claude/knowledge}/reference/frequencies.md +0 -0
  112. /package/{knowledge → claude/knowledge}/workflows/delivery.md +0 -0
  113. /package/{knowledge → claude/knowledge}/workflows/drum-bus.md +0 -0
  114. /package/{knowledge → claude/knowledge}/workflows/low-end.md +0 -0
  115. /package/{knowledge → claude/knowledge}/workflows/stem-prep.md +0 -0
  116. /package/{knowledge → claude/knowledge}/workflows/vocal-chain.md +0 -0
@@ -1,76 +0,0 @@
1
- ---
2
- name: ReaVerb
3
- fx_match: ["ReaVerb", "VST: ReaVerb", "ReaVerb (Cockos)"]
4
- category: reverb
5
- style: transparent
6
- vendor: Cockos
7
- preference: 32
8
- ---
9
-
10
- # ReaVerb
11
-
12
- ## What it does
13
-
14
- ReaVerb is REAPER's convolution reverb. It uses impulse responses (IR files) to model real acoustic spaces — rooms, halls, chambers, plates — or hardware reverbs. Sound quality is entirely dependent on the IR library loaded. With high-quality IRs it can sound spectacular; with poor IRs it sounds amateurish. It has no built-in algorithmic reverb engine; it is purely a convolution processor. CPU usage is moderate-to-high compared to algorithmic reverbs.
15
-
16
- Key limitation: IRs must be loaded manually, and the agent cannot browse IR files on disk. Use when user has confirmed they have an IR library, or as a fallback knowing the agent will need to ask the user to point it to IR files.
17
-
18
- ## Key parameters by name
19
-
20
- | Parameter | Range | Description |
21
- |-----------|-------|-------------|
22
- | Wet | -inf to +6 dB | Level of reverberant signal |
23
- | Dry | -inf to +6 dB | Level of dry signal passing through |
24
- | Pre-delay | 0–500 ms | Delay before reverb onset — creates separation between dry and wet |
25
- | Stretch | 0.1–10x | Time-stretch the IR — longer = longer reverb tail |
26
- | Start | 0–100% | Where in the IR playback begins — trim early reflections |
27
- | Trim | 0–100% | Where in the IR playback ends — shorten tail |
28
- | Loop | checkbox | Loop the IR tail (for very long reverbs) |
29
-
30
- Note: ReaVerb's main parameter is the loaded IR file, which cannot be set via `set_fx_parameter`. The agent should ask the user to load an IR or confirm which preset room to use.
31
-
32
- ## Recommended settings
33
-
34
- ### Vocal plate reverb (using a plate IR)
35
-
36
- | Parameter | Value | Why |
37
- |-----------|-------|-----|
38
- | Pre-delay | 20–30 ms | Separate verb onset from dry signal |
39
- | Stretch | 0.7–0.9x | Slightly shorter than original IR |
40
- | Wet | -12 to -18 dB | Keep reverb in background |
41
- | Dry | 0 dB | Full dry on insert; or run as send/return |
42
-
43
- Best practice: Run ReaVerb on a dedicated reverb bus (send/return), not as an insert. Set Dry to -inf on the bus channel.
44
-
45
- ### Room reverb on drums (short room IR)
46
-
47
- | Parameter | Value | Why |
48
- |-----------|-------|-----|
49
- | Pre-delay | 5–15 ms | Tight room feel |
50
- | Stretch | 0.5–0.8x | Short room |
51
- | Trim | 40–60% | Cut the tail for tighter sound |
52
- | Wet | -10 to -14 dB | Present but not washy |
53
-
54
- ### Hall reverb on strings/pads
55
-
56
- | Parameter | Value | Why |
57
- |-----------|-------|-----|
58
- | Pre-delay | 30–50 ms | Large hall separation |
59
- | Stretch | 1.0–1.5x | Full or slightly extended tail |
60
- | Wet | -18 to -24 dB | Subtle ambient bloom |
61
- | Dry | -inf dB | Send/return setup |
62
-
63
- ## Presets worth knowing
64
-
65
- ReaVerb ships with no IR files. The user must provide their own IR library. Common free IR sources:
66
- - Voxengo Impulse Responses (free)
67
- - OpenAIR Acoustic Impulse Response Library (free)
68
- - Samplicity Bricasti M7 IRs (free)
69
-
70
- ## When to prefer this
71
-
72
- - When the user has a high-quality IR library and wants to use specific room sounds
73
- - For convolution-based hardware reverb emulations (EMT 140 plate, Lexicon 480L rooms, etc.)
74
- - When exact acoustic space reproduction is required (post-production, sound design)
75
-
76
- Prefer an algorithmic reverb (Valhalla Room, OldSkoolVerb, etc.) when available. Algorithmic reverbs are more flexible for mixing (adjustable size, decay, diffusion) and don't require managing IR files. Only use ReaVerb when convolution character is specifically desired.
@@ -1,122 +0,0 @@
1
- # Perceived Loudness Reference
2
-
3
- Human hearing does not perceive all frequencies equally. A bass note and a vocal at the same dB SPL will sound like very different volumes. This reference helps the agent compensate for psychoacoustic loudness perception when balancing a mix — optimizing for what the listener actually hears, not just what the meters show.
4
-
5
- ## Equal-Loudness Contours (ISO 226:2003)
6
-
7
- Equal-loudness contours (historically "Fletcher-Munson curves") map the SPL required at each frequency to sound equally loud to the human ear. Key takeaways:
8
-
9
- | Frequency Range | Perceived Loudness at Same dB | Implication for Mixing |
10
- |----------------|------------------------------|----------------------|
11
- | 20-80 Hz (sub/bass) | Sounds **much quieter** than meter shows | Bass instruments need higher dB to feel balanced |
12
- | 80-250 Hz (upper bass) | Sounds **somewhat quieter** | Warmth region; needs modest boost over mids |
13
- | 250 Hz-1 kHz (mids) | Sounds **roughly accurate** to meter | Meters are fairly reliable here |
14
- | 1-5 kHz (presence) | Sounds **louder** than meter shows | Most sensitive hearing range — a little goes a long way |
15
- | 2-5 kHz (peak sensitivity) | Sounds **significantly louder** | The ear is 10-15 dB more sensitive here than at 100 Hz |
16
- | 5-8 kHz (sibilance) | Sounds **louder** | Sibilance cuts through even at low levels |
17
- | 8-20 kHz (air) | Sensitivity **drops off** | Needs more energy to be perceived, but fatigues quickly if excessive |
18
-
19
- ### The Critical Insight
20
-
21
- At moderate listening levels (~70-85 dB SPL, typical mixing/monitoring level):
22
- - **3-4 kHz is ~10-15 dB more sensitive** than 100 Hz
23
- - **A snare drum** (energy at 200 Hz + 2-5 kHz) sounds louder than **a bass guitar** (energy at 60-250 Hz) even at the same RMS dB reading
24
- - **Vocals** (fundamental 100-400 Hz, formants at 1-5 kHz) naturally cut through a mix because their energy is in the ear's most sensitive band
25
- - **Kick drum sub** (40-80 Hz) needs significantly more energy than hi-hats (8-12 kHz) to feel "present" — but hi-hats fatigue faster
26
-
27
- ## Perceived Loudness by Instrument
28
-
29
- Instruments ranked by how loud they **sound** relative to their **metered level**, from "sounds louder than meters suggest" to "sounds quieter":
30
-
31
- | Instrument | Dominant Frequency Range | Perceived vs. Metered | Mixing Compensation |
32
- |-----------|------------------------|----------------------|-------------------|
33
- | Vocals | 1-5 kHz (formants) | Sounds **louder** | Can sit 2-4 dB below other elements on meters and still cut through |
34
- | Snare drum | 200 Hz + 2-5 kHz (crack) | Sounds **louder** | Crack frequency is in the sensitive zone; don't over-boost |
35
- | Hi-hat / cymbals | 6-12 kHz | Sounds **moderately louder** | Small dB changes are very audible; mix lower than you think |
36
- | Acoustic guitar | 2-5 kHz (string attack) | Sounds **moderately louder** | Attack frequency carries; back off presence boosts |
37
- | Electric guitar | 1-4 kHz (midrange) | Sounds **about right** | Meter-reading is fairly reliable for perceived level |
38
- | Piano | 250 Hz-4 kHz (wide range) | Sounds **about right** | Depends on register; upper notes sound louder than lower |
39
- | Kick drum | 60-100 Hz (thump) | Sounds **quieter** | Needs 3-6 dB more than meters suggest for balanced feel |
40
- | Bass guitar | 60-250 Hz (fundamental) | Sounds **quieter** | Needs 2-5 dB more on meters than mid-range instruments |
41
- | 808 / sub bass | 30-80 Hz | Sounds **much quieter** | On small speakers, nearly inaudible; rely on harmonics (150-300 Hz) |
42
- | Pads / drones | Varies | Depends on spectral content | Low pads need more level; bright pads need less |
43
-
44
- ## How to Apply This When Mixing
45
-
46
- ### Balance by Perception, Not Meters
47
-
48
- When setting initial track balance:
49
-
50
- 1. **Don't match RMS levels across all tracks** — this makes bass instruments too quiet and presence-range instruments too loud
51
- 2. **Bass instruments should read 3-6 dB hotter** on meters than vocals/guitars to sound "even" in the mix
52
- 3. **Vocals can sit 2-4 dB lower on meters** than the instrumental bed and still sound prominent due to presence-range sensitivity
53
- 4. **Hi-hats and cymbals at -3 dB lower on meters** than you'd expect — they punch through perceptually
54
- 5. **After setting meter levels, always verify with your ears** — meters are a starting point, perception is the target
55
-
56
- ### Gain Staging Adjustments
57
-
58
- The standard -18 dBFS target is a good starting point, but perceived-loudness-aware gain staging considers the instrument's spectral content:
59
-
60
- | Instrument Category | Meter Target (RMS) | Rationale |
61
- |-------------------|-------------------|-----------|
62
- | Sub/bass instruments | -16 to -14 dBFS | Higher on meters to compensate for lower perceived loudness |
63
- | Full-range instruments (piano, guitar) | -18 dBFS | Standard target; spectral content spans perceptual range |
64
- | Mid/presence instruments (vocals, snare) | -19 to -20 dBFS | Lower on meters; presence-range content sounds louder |
65
- | High-frequency instruments (cymbals, shakers) | -20 to -22 dBFS | Much lower on meters; high sensitivity frequencies carry easily |
66
-
67
- These are **starting points** — verify by ear and adjust for genre/arrangement context.
68
-
69
- ### EQ Decisions Informed by Perception
70
-
71
- - **Boosting 2-5 kHz**: Even +1 dB is very audible here. Be conservative — the ear amplifies this range naturally.
72
- - **Cutting 200-400 Hz**: The ear is less sensitive here, so cuts may need to be larger (-3 to -6 dB) to make an audible difference.
73
- - **Boosting sub-bass (30-80 Hz)**: Large boosts (+4-6 dB) may be needed to feel present, but check on multiple speaker systems — headphones and club systems reproduce this range very differently.
74
- - **Air boosts (10-16 kHz)**: Sensitivity drops off, so +2-3 dB can sound subtle. But accumulated boosts across many tracks cause listening fatigue.
75
-
76
- ### Compression and Dynamics
77
-
78
- - **Fast attack on presence-range instruments** (vocals, snare) tames perceived loudness spikes more effectively than on bass instruments
79
- - **Bass compression** with slower attack preserves the transient that helps the ear "locate" the note — critical since the fundamental is in a low-sensitivity range
80
- - **Sidechain filtering** on bus compressors: if the compressor is triggered by low-frequency content, it may pump on bass hits even though those hits don't sound that loud — use a sidechain HPF to make the compressor react to what the listener hears
81
-
82
- ### Monitoring Level Matters
83
-
84
- Equal-loudness contours change shape at different SPL levels:
85
- - **Low monitoring levels** (~65 dB SPL): Bass and treble perception drops off dramatically. Mixes balanced at low volume tend to have too much bass and treble when played loud.
86
- - **Moderate levels** (~75-85 dB SPL): Best for critical balance decisions. The ear's response is most "flat" here.
87
- - **Loud levels** (~90+ dB SPL): Perception flattens further, but ear fatigue sets in quickly. Not reliable for balance.
88
-
89
- **Best practice**: Mix at a moderate, conversational level (~79 dB SPL is often cited). Check at low and high volumes occasionally, but make balance decisions at moderate levels.
90
-
91
- ## Volume-Dependent Perception (The "Loudness Button" Effect)
92
-
93
- At lower playback volumes (casual listening, phone speakers):
94
- - Bass nearly disappears
95
- - Presence range dominates
96
- - The mix sounds "thin" compared to studio monitoring
97
-
98
- At higher playback volumes (club, concert):
99
- - Bass becomes overwhelming
100
- - Presence range can feel harsh
101
- - The mix sounds "boomy" compared to studio monitoring
102
-
103
- **Implication**: A well-balanced mix at moderate monitoring levels translates best across playback systems. Don't chase balance at extreme volumes.
104
-
105
- ## Frequency Masking and Perceived Loudness
106
-
107
- Two instruments in the same frequency range don't just compete for spectral space — they mask each other's perceived loudness:
108
-
109
- - **Kick + bass** competing at 60-120 Hz: Neither sounds as loud as it would solo. Use sidechain compression or frequency separation (kick at 60 Hz, bass at 100 Hz) so each is perceived clearly.
110
- - **Vocals + guitars** competing at 1-4 kHz: Guitars mask vocal presence. Cut guitars 2-4 kHz or boost vocals there — a small EQ move has outsized perceptual impact because this is the sensitivity peak.
111
- - **Multiple instruments in the mud zone** (200-500 Hz): Cumulative energy in a low-sensitivity range creates "mud" — the ear can't separate the sources. HPF everything that doesn't need this range.
112
-
113
- ## Quick Decision Guide
114
-
115
- | Situation | Wrong Approach | Perceived-Loudness-Aware Approach |
116
- |-----------|---------------|----------------------------------|
117
- | Bass feels too quiet | Boost bass until meters match vocals | Boost bass 3-5 dB above vocal meter reading; verify by ear |
118
- | Vocals feel buried | Boost vocal fader until it's the loudest meter | Check for 1-4 kHz masking from guitars/keys; small presence boost goes far |
119
- | Cymbals are harsh | They're not even that loud on meters! | Trust your ears — high-sensitivity frequencies are perceived louder. Pull fader down 2-3 dB |
120
- | Mix sounds thin | Boost everything below 200 Hz | Boost bass instruments specifically; check monitoring level (low volume exaggerates thinness) |
121
- | Mix sounds muddy | Cut all low-mids on every track | Focus cuts on instruments that don't need 200-500 Hz; the ear needs significant cuts here to notice |
122
- | Snare cracks through | But the meter says it's only -20 dBFS! | Normal — snare crack is at 2-5 kHz (peak sensitivity). It sounds right at lower meter readings |