Command line
note list
List notes in a clip
required
Track handle (trk_42) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
required
Scene handle (scn_7) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
note set
Replace all notes in a clip
required
Track handle (trk_42) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
required
Scene handle (scn_7) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
Notes as a JSON array of note objects. Each note: {“pitch”: 0-127 or “C4”, “start_time”: beats, “duration”: beats (>0), “velocity”: 0-127 or “mf”}. Optional: mute (bool), probability (0.0-1.0), velocity_deviation, release_velocity, note_id (read-only). pressure/slide/pitch_bend are accepted but NOT stored — Live does not carry per-note expression in the note object. Example: —json-data ’[{“pitch”:60,“start_time”:0,“duration”:0.25,“velocity”:100}]’
Path to a JSON file containing the same note array as —json-data.
note add
Add notes to a clip
required
Track handle (trk_42) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
required
Scene handle (scn_7) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
Notes as a JSON array of note objects. Each note: {“pitch”: 0-127 or “C4”, “start_time”: beats, “duration”: beats (>0), “velocity”: 0-127 or “mf”}. Optional: mute (bool), probability (0.0-1.0), velocity_deviation, release_velocity, note_id (read-only). pressure/slide/pitch_bend are accepted but NOT stored — Live does not carry per-note expression in the note object. Example: —json-data ’[{“pitch”:60,“start_time”:0,“duration”:0.25,“velocity”:100}]’
Path to a JSON file containing the same note array as —json-data.
note modify
Edit or delete specific notes by note_id
required
Track handle (trk_42) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
required
Scene handle (scn_7) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
note_id to delete from the clip, as reported by ‘vibrai note list —json’. Repeatable.
Notes as a JSON array of note objects. Each note: {“pitch”: 0-127 or “C4”, “start_time”: beats, “duration”: beats (>0), “velocity”: 0-127 or “mf”}. Optional: mute (bool), probability (0.0-1.0), velocity_deviation, release_velocity, note_id (read-only). pressure/slide/pitch_bend are accepted but NOT stored — Live does not carry per-note expression in the note object. Example: —json-data ’[{“pitch”:60,“start_time”:0,“duration”:0.25,“velocity”:100}]’
Path to a JSON file containing the same note array as —json-data.
note remap
Move every note at one pitch to another, server-side (session/arrangement/both)
required
Track handle (trk_42) OR 1-based number (1, 2, …) OR ordinal (first, second, …)
Source MIDI pitch 0-127 (only notes at this pitch move)
Target MIDI pitch 0-127
session, arrangement, or both (default both)
Scene handle (scn_7) OR 1-based number OR ordinal, to limit to one session clip; requires —scope session
MCP tools
list_notes
List all notes in a clip.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim.
String
required
Scene handle from list_scenes, e.g. “scn_7”. Copy verbatim.
write_notes
Replace all notes in a clip with the given list. Each note is an object with exact field names — ‘start_time’, not ‘start’. Returns how many notes were requested vs. actually written.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim.
String
required
Scene handle from list_scenes, e.g. “scn_7”. Copy verbatim.
NoteEvent[]
required
Notes to write (replaces all existing). Each note object: pitch (integer 0-127 or note name e.g. “C4”, required), start_time (number, beats from clip start, required), duration (number, beats, must be > 0, required), velocity (integer 0-127 or dynamic e.g. “mf”, required), mute (boolean, optional), probability (number 0.0-1.0, optional — chance Live plays the note on a given pass), velocity_deviation (number, optional — range Live randomizes velocity within), release_velocity (integer 0-127, optional), note_id (string, read-only — assigned by Live, echo it back to address a note). pressure/slide/pitch_bend are accepted but NOT stored — Live does not carry per-note expression in the note object. Field names are exact — “start_time”, not “start”.
add_notes
Append notes to a clip without removing existing notes. Each note is an object with exact field names — ‘start_time’, not ‘start’. Returns how many notes were requested vs. actually written.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim.
String
required
Scene handle from list_scenes, e.g. “scn_7”. Copy verbatim.
NoteEvent[]
required
Notes to append. Each note object: pitch (integer 0-127 or note name e.g. “C4”, required), start_time (number, beats from clip start, required), duration (number, beats, must be > 0, required), velocity (integer 0-127 or dynamic e.g. “mf”, required), mute (boolean, optional), probability (number 0.0-1.0, optional — chance Live plays the note on a given pass), velocity_deviation (number, optional — range Live randomizes velocity within), release_velocity (integer 0-127, optional), note_id (string, read-only — assigned by Live, echo it back to address a note). pressure/slide/pitch_bend are accepted but NOT stored — Live does not carry per-note expression in the note object. Field names are exact — “start_time”, not “start”.
modify_notes
Edit or delete specific notes by note_id, without rewriting the clip. Get ids from list_notes. Pass modify with notes carrying their note_id and the values you want, and/or remove with ids to delete. At least one is required. Ids are validated first — an unknown id changes NOTHING, so a partial apply cannot leave the clip in a state you did not ask for. Prefer this over write_notes when changing a few notes in a large clip.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim.
String
required
Scene handle from list_scenes, e.g. “scn_7”. Copy verbatim.
NoteEvent[]
Notes to change. Each MUST carry a note_id from list_notes. Each note object: pitch (integer 0-127 or note name e.g. “C4”, required), start_time (number, beats from clip start, required), duration (number, beats, must be > 0, required), velocity (integer 0-127 or dynamic e.g. “mf”, required), mute (boolean, optional), probability (number 0.0-1.0, optional — chance Live plays the note on a given pass), velocity_deviation (number, optional — range Live randomizes velocity within), release_velocity (integer 0-127, optional), note_id (string, read-only — assigned by Live, echo it back to address a note). pressure/slide/pitch_bend are accepted but NOT stored — Live does not carry per-note expression in the note object. Field names are exact — “start_time”, not “start”.
String[]
note_id values to delete from the clip.
remap_pitch
Move every note at from_pitch to to_pitch on one track, server-side — no note round-tripping, all other note fields preserved. Scope ‘session’, ‘arrangement’, or ‘both’ (default both); scene (session scope only) narrows to one session clip. Reports clips_touched/notes_changed. The drum-pad retargeting primitive; see retarget_drums for the automatic kit-swap flow.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim.
Int32
required
Source MIDI pitch 0-127 (only notes at this pitch move)
Int32
required
Target MIDI pitch 0-127
String
‘session’, ‘arrangement’, or ‘both’ (default)
String
Scene handle from list_scenes, e.g. “scn_7”. Optional — limits the remap to one session clip; requires scope=‘session’. Omit (null) to leave the remap unscoped to a single scene.