Skip to main content
Set-wide mixing: return tracks, bulk mix application, profile-driven placement advice, and the mixing-knowledge reference.

Command line

mix returns

List the set’s return tracks (the names —send accepts)

mix apply

Apply a whole mix at once, keyed by part type
Mix entry as part_type=dB, optionally with pan and sends: pad=-12:pan=-0.3:send=A-Reverb=-9. Repeatable.
Path to the .vibrai file (default: <current-directory-name>.vibrai in the working directory). Without one, binding falls back to track-name hints.

mix profiles

List the available mix profiles

mix suggest

Suggest level, pan, depth and corrective moves per part type
Also print the corrective EQ and compressor moves for each part.
Also print the profile’s technique blocks (compressor setup, serial vs parallel compression, harshness check, drum impact).
Mix profile to use (default: default). See vibrai mix profiles.
Part type to include, e.g. bass. Repeatable. Omit to use the loaded project’s parts, or the whole profile when there is none.
Path to the .vibrai file (default: <current-directory-name>.vibrai in the working directory).

mix apply-profile

Apply a mix profile’s level, pan and depth to the open set
Return-track name carrying the depth reverb, e.g. A-Reverb (see vibrai mix returns). Without it, level and pan are applied and depth is reported as a warning rather than written.
Report what would be written without writing it.
Mix profile to use (default: default). See vibrai mix profiles.
Part type to include, e.g. bass. Repeatable. Omit to use the loaded project’s parts, or the whole profile when there is none.
Path to the .vibrai file (default: <current-directory-name>.vibrai in the working directory).

mix advice

Look up mixing guidance: compression, reverb, low-end, tool choice
compression, reverb, low-end or tool-choice. Omit to list the topics.
Narrow the topic: a compression source (kick) or part type (bd), or a reference entry (pre-delay, phase-cancellation).

mix compress

Write a source’s compression starting points onto a compressor
required
Track handle (trk_42) OR 1-based number (1, 2, …) OR ordinal (first, second, …).
required
Device ID, 1-based chain position, or a name substring — the compressor to write to.
Compression source: kick, snare, bass, vocal, guitar, piano — or a part type such as bd.
Report the writes without making them. The device is still read, so the skips are real.

MCP tools

get_track_mixer

Read a track’s mixer state: volume (both dB and Live’s raw 0.0-1.0), pan, mute, solo, arm, and every send with its return-track name. Address the track by its liveset_id handle from list_tracks (e.g. trk_42).
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim; not a position number.

set_track_mixer

Set any subset of a track’s mixer state. Omitted fields are left untouched. Volume takes EITHER volume_db (preferred, e.g. -6) OR volume_raw (Live’s 0.0-1.0) — passing both is an error. A fader runs to +6 dB (unity at raw 0.85); a send runs to 0 dB. Sends are addressed by return-track name as “name=dB” pairs, e.g. [“A-Reverb=-12”]. Returns the post-write state, so the reported volume is what actually landed rather than what was requested.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim; not a position number.
Nullable`1
Volume in dB, e.g. -6.0. Maximum +6. Mutually exclusive with volume_raw.
Nullable`1
Volume as Live’s normalized 0.0-1.0 (0.85 is unity). Mutually exclusive with volume_db.
Nullable`1
Pan, -1.0 (hard left) to 1.0 (hard right).
Nullable`1
Mute the track.
Nullable`1
Solo the track. Solo is additive — Live does not clear other soloed tracks.
Nullable`1
Arm the track for recording. Group, return and master tracks cannot be armed.
String[]
Send levels as “return_name=dB” pairs, e.g. [“A-Reverb=-12”, “B-Delay=-18”]. Use list_returns to see the available names.

apply_mix

Apply a whole mix in one call, keyed by part type. Each entry is “part_type=dB” (e.g. “bass=-6”), optionally with pan and sends: “pad=-12:pan=-0.3:send=A-Reverb=-9”. Resolves part types to tracks via the loaded project when there is one (exact), or track-name hints when there isn’t (heuristic) — the result reports which path ran. Part types with no matching track come back as warnings, not errors.
String[]
required
Mix entries, e.g. [“bass=-6”, “lead=-3”, “pad=-12:send=A-Reverb=-9”].
String
Path to the .vibrai project to bind part types against (defaults to <current-directory-name>.vibrai in the working directory). When no project is found, binding falls back to track-name hints and says so.

list_returns

List the set’s return tracks with their index and name. These names are what set_track_mixer and apply_mix accept in their sends arguments.

list_mix_profiles

List the available mix profiles. A profile carries starting-point placement (level, pan, depth) per part type plus corrective EQ and dynamics advice. Drop a file at ~/.vibrai/mix-profiles/<name>.yaml to add or shadow one.

suggest_mix

Suggest a mix without changing anything. Returns, per part type: a starting level in dB, a pan position, a depth tier and the reverb send that expresses it, plus the corrective EQ moves and compressor settings that belong on that part — each with the reason attached. Also returns the profile’s global rules (headroom, the 2-5 kHz harsh band, return-track guidance) and its technique blocks (serial vs parallel compression, compressor setup, harshness check). Part types come from parts if given, else from the loaded project, else the whole profile. The EQ/compressor numbers are DISPLAY units and are advice, not a write: apply them with set_device_param and check the display_value it reports back. Use apply_mix_profile to apply the level/pan/send half for real.
String
Profile name (default: “default”). See list_mix_profiles.
String[]
Part types to advise on, e.g. [“bass”, “lead”, “hi_hat”]. Omit to use the loaded project’s parts, or the whole profile when there is none.
String
Path to the .vibrai project whose part types to advise on (defaults to <current-directory-name>.vibrai in the working directory).

apply_mix_profile

Apply a mix profile’s PLACEMENT to the open set: level and pan per part type, plus a reverb send when reverb_return names a return track. Part types resolve to tracks exactly as apply_mix does — through the loaded project when there is one, by track-name hint when there isn’t — and the result says which path ran. The profile’s EQ and compressor advice is NOT applied; suggest_mix reports it so you can apply it with set_device_param, where Live reports back the display_value that landed. Pass dry_run to see what would be written.
String
Profile name (default: “default”). See list_mix_profiles.
String[]
Part types to apply, e.g. [“bass”, “lead”]. Omit to use the loaded project’s parts, or the whole profile when there is none.
String
Return-track name that carries the depth reverb, e.g. “A-Reverb” (see list_returns). Without it, level and pan are applied and depth is reported as a warning rather than written.
String
Path to the .vibrai project to bind part types against (defaults to <current-directory-name>.vibrai in the working directory).
Boolean
Report what would be written without writing it.

get_mix_advice

Look up Vibrai’s mixing knowledge. Topics: “compression” (compressor starting points per source, plus the fast/slow attack continuum), “reverb” (what each parameter does to the tail), “low_end” (the five ways kick and bass fight, and the fix for each), “tool_choice” (whether a problem wants EQ, compression, dynamic EQ or automation). Call with no topic for the index. Narrow with subject — a compression source (“kick”) or part type (“bd”), or a reference entry (“pre_delay”, “phase_cancellation”). This is guidance with defaults, not measurement: ~/.vibrai/mix-advice/<topic>.yaml overrides any of it.
String
One of compression, reverb, low_end, tool_choice. Omit for the topic index.
String
Narrows the topic: a compression source (“kick”) or part type (“bd”), or a reference entry id (“pre_delay”).

apply_compression_preset

Write a source’s compression starting points — Attack, Release and Ratio — onto a compressor already loaded on a track. Source is a name (“kick”, “vocal”, “bass”, “snare”, “guitar”, “piano”) or a part type that maps to one (“bd”, “snare”, “bass”). Threshold is deliberately NOT written: it depends on the incoming level, which no table can know. A parameter the device does not expose, or whose units clearly differ (a Release choice list in seconds against a millisecond table), is skipped with a warning rather than clamped — the call fails only if nothing at all is writable. Pass dry_run to see the writes without making them. Use get_mix_advice for the ranges these starting points sit in.
String
required
Track handle from list_tracks, e.g. “trk_42”. Copy verbatim; not a position number.
String
required
Device ID, 1-based chain position, or a name substring — the compressor to write to.
String
required
Compression source: kick, snare, bass, vocal, guitar, piano — or a part type such as “bd”.
Boolean
Report the writes without making them. The device is still read, so the reported skips are real.