MIDI Utilities — 13 tools for editing notes that already exist
The bridge changed — reinstall reaper_mcp_bridge.lua in REAPER (Actions → run it once per session, as before).
Every new tool takes the same optional filter — a pitch range, an onset window in beats from the item start, and a channel — so you can target a phrase without selecting anything by hand. Timing is in beats, pitch in semitones, and each tool is a single undo step.
Added
- transpose_midi_notes — shift pitch; a note pushed outside 0–127 is left where it is (
skipped), never wrapped. - snap_midi_notes_to_scale — snap off-key notes onto a scale (14 named scales, or a custom interval list); a tie resolves toward the middle of the selection so a line doesn't drift.
- quantize_midi_notes — snap onsets to the project bar/beat grid, with
strengthandswing. - nudge_midi_notes — shift notes in time; lengths preserved.
- stretch_midi_notes — scale timing about a fixed pivot (half-time, double-time, any ratio).
- legato_midi_notes — run each note's end to the next onset, or set every note to one length.
- humanize_midi_notes — seeded, reproducible timing + velocity jitter (same take + same seed = byte-identical).
- strum_midi_notes — roll a chord out into a strum; invents no notes.
- ramp_midi_note_velocities — linear velocity ramp across a phrase (a chord keeps one velocity).
- scale_midi_note_velocities — multiply, set, or compress velocities toward a pivot.
- set_midi_note — edit one note's pitch, velocity, timing, or channel.
- get_selected_midi_notes — read the notes selected in REAPER's editor.
- remove_overlapping_midi_notes — trim or delete overlapping same-pitch notes. The only one here that removes notes, and the only one flagged
destructive.
Changed
- Every returned MIDI note now carries
start_beat/end_beat(item-relative beats) alongside the existingstart_time/end_timeseconds — onget_midi_notestoo. No field was removed; a position you read back feeds the new beat filters directly. - Timing is computed in quarter-notes, so the tools behave correctly on tempo-mapped projects.
Removed
- Five dead, unreachable MIDI handlers (
QuantizeItem,TransposeMIDINotes,QuantizeMIDINotes,HumanizeMIDITiming,AnalyzeMIDIPattern) — unreachable from every public entry point, so no shipped behavior changes.
Full detail in CHANGELOG.md.