Skip to content

v1.3.2 — Call-Path Audit Fixes

Choose a tag to compare

@david-cilluffo david-cilluffo released this 12 Jun 16:42

Important fix release — recommended for all Windows users. A systematic audit of every tool's bridge call path. 158 tools, all live-verified against REAPER 7.74.

Headline fix: bridge JSON decoder corrupted Windows paths

Escape sequences were unescaped with sequential replacements and no \\ handling, so any path segment starting with r, n, t, b, or f after a backslash was silently mangled (e.g. ...\Temp\reaper.wav rendered to ...\Temp\_eaper.wav). This affected every string argument crossing the bridge on Windows — including import_audio, open_project, and render_project paths — since the project's first release. Now a proper single-pass decoder.

Fixed (were silently broken — calling nonexistent APIs or pointer-requiring APIs through the generic fallback)

  • MIDI: delete_midi_note, clear_midi_item, get_midi_item
  • Item editing: split_item (returns the new item index), duplicate_item
  • Envelopes: add_envelope_point, get_envelope_point_count, get_envelope_points, delete_envelope_point, clear_envelope, arm_track_envelope
  • Project: get_undo_state, set_time_signature, render_project (dialog-free rendering with explicit bounds/format)

Changed

  • render_project gains an explicit overwrite parameter: an existing target file returns a clean error unless overwrite=True. REAPER's behavior on existing files (prompt vs auto-increment) is a user preference, and its overwrite prompt blocks unattended rendering.
  • get_fx_presets returns the preset count + current preset (REAPER's API cannot enumerate preset names — noted in the response).
  • save_fx_preset and render_region now return clear documented errors instead of failing silently: REAPER has no API to save named FX presets (workaround suggested), and region rendering is deferred to the v1.9 render suite (workaround: render_project with explicit bounds).

Note: update your installed bridge — copy the new reaper_mcp_bridge.lua over the old one and restart the script in REAPER.

Full changelog: https://github.com/TwelveTake-Studios/reaper-mcp/blob/main/CHANGELOG.md