From livepilot
This skill should be used when the user asks to "load a device", "add an effect", "find a plugin", "device chain", "rack", "preset", "sound design setup", "load instrument", "find a synth", or wants to browse, load, and configure devices in Ableton Live.
How this skill is triggered — by the user, by Claude, or both
Slash command
/livepilot:livepilot-devicesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Load instruments, effects, and plugins into Ableton Live tracks. Every device operation follows one discipline: search first, verify after.
Load instruments, effects, and plugins into Ableton Live tracks. Every device operation follows one discipline: search first, verify after.
The device atlas contains 1,305 devices with sonic descriptions, recipes, and recommendations. Always start here:
atlas_search(query) — find devices by name, sound character, or genreatlas_device_info(device_id) — full parameters, recipes, gotchas, pairingsatlas_suggest(intent, genre) — "I need a warm pad" → ranked device+recipe combosatlas_chain_suggest(role, genre) — full device chain for a track role (instrument + effects)load_browser_item(uri) or find_and_load_device(name)batch_set_parameters(params) from the atlas entryget_device_info(track_index, device_index) — check health flagsIf the atlas doesn't have a device (newly installed plugin, user sample), fall back to the browser workflow below.
Use the browser workflow when the atlas doesn't have what you need:
search_browser(path, name_filter) — returns a list of matching items with exact URIsload_browser_item(uri) — pass the exact URI string from search resultsCommon search paths:
path="Instruments" — synths, samplers, instrument rackspath="Drums" — drum racks, drum kits, percussionpath="Audio Effects" — reverb, delay, compressor, EQ, saturatorpath="MIDI Effects" — arpeggiator, chord, scale, randompath="Sounds" — preset sounds organized by categorypath="Samples" — audio samples, one-shots, loopsCombine path with name_filter to narrow results. Example: search_browser(path="Drums", name_filter="808 Kit").
NEVER invent device or preset names. A hallucinated name like "echomorph-hpf" or "Drift Pad Wonk" will crash the load. Always search first, then use the exact URI from results.
For the full URI grammar reference (the three forms — FileId, bare-name, path-style — failure modes, and discovery recipe), see references/load_browser_item-uri-grammar.md.
Use find_and_load_device(name) ONLY for these simple built-in effects:
For everything else — instruments, racks, presets, AU/VST plugins — use the browser workflow. The shortcut matches greedily and can load a sample file instead of a synth when names overlap (e.g., "Drift" matches "Synth Bass Drift Pad Wonk Bass.wav" before the Drift synthesizer).
After loading any device, verify it actually works:
get_device_info(track_index, device_index) on the newly loaded deviceparameter_count — if the device is an AU/VST plugin (class_name contains "PluginDevice") and parameter_count is 1 or less, the plugin is dead. The shell loaded but the DSP engine crashed.health_flags for opaque_or_failed_plugin (dead or untweakable AU/VST) or sample_dependent (needs source audio)plugin_host_status and mcp_sound_design_readymcp_sound_design_ready is false: delete the device with delete_device, replace it with a native Ableton alternative, and report the failure to the userDead plugin recovery pattern:
get_device_info → parameter_count <= 1 on PluginDevice?
→ delete_device(track_index, device_index)
→ search_browser for native alternative
→ load_browser_item with replacement URI
→ report failure and substitution to user
Use walk_device_tree(track_index) to see the full nested structure of racks on a track — Instrument Racks, Audio Effect Racks, and Drum Racks with all their chains and sub-devices.
Use get_rack_chains(track_index, device_index) to inspect individual rack chain contents. For Drum Racks, this reveals which pads have samples loaded and which chains exist. An empty Drum Rack (zero chains) produces silence.
Set chain volumes with set_chain_volume(track_index, device_index, chain_index, volume) to balance rack layers.
NEVER load a bare "Drum Rack" — it is an empty container with zero chains and produces silence. Always load a kit preset through the browser:
search_browser(path="Drums", name_filter="Kit")
Pick a real kit from results: "909 Core Kit", "808 Core Kit", "Boom Bap Kit", "Lo-Fi Kit", etc. These come pre-loaded with samples on their pads.
After loading any Drum Rack preset, verify with get_rack_chains that chains exist and have named pads like "Bass Drum", "Snare", "Hi-Hat".
When the user asks for a custom kit ("build me a minimal-techno kit", "make a Dilla-style boom-bap kit from these samples"), use add_drum_rack_pad — NOT repeated load_browser_item calls.
Why this matters (BUG-2026-04-22 #1): Calling load_browser_item repeatedly on a track that contains a Drum Rack does NOT add new pads. The first call creates a chain at note 36; every subsequent call REPLACES the existing chain instead of appending to the next pad. After 7 sequential drops you end up with exactly 1 chain — only the last sample. This is a Live API limitation, not something to work around with retry loops.
The canonical workflow:
# 1. Make sure a Drum Rack exists on the track. Either:
# - Load a preset kit and clear it, or
# - insert_device(track_index=N, device_name="Drum Rack") for an empty rack
# 2. For each sample:
add_drum_rack_pad(
track_index=N,
pad_note=36, # 36=Kick, 38=Snare, 42=Closed HH, 46=Open HH
file_path="/abs/path/to/sample.wav",
)
add_drum_rack_pad does the full atomic build per pad: insert_rack_chain → set_drum_chain_note → insert empty Simpler into the chain → load sample via the native Live 12.4 replace_sample API with nested addressing. Returns {ok, chain_index, pad_note, nested_device_index} so you can verify and chain further calls.
Requires Live 12.4+ (uses native nested-sample loading). On older versions returns an error directing the caller to the legacy separate-tracks workaround.
For nested-Simpler operations on existing pads (e.g., adjust loop points after the kit is built), replace_simpler_sample and load_sample_to_simpler accept chain_index and nested_device_index for explicit deep addressing.
These devices load "successfully" with many parameters but produce zero audio without source material. Since MCP tools cannot load samples into third-party plugin UIs, NEVER use these as standalone instruments:
Use self-contained synthesizers instead — these produce sound immediately from MIDI input alone:
If granular textures are needed: use Wavetable with aggressive wavetable position modulation, Operator with FM feedback and short envelopes, or load a Simpler/Sampler preset (not the bare instrument) from the Sounds browser.
For Simpler devices that already have samples loaded:
load_sample_to_simpler(track_index, device_index, file_path) — load audio into Simplerreplace_simpler_sample(track_index, device_index, file_path) — swap the current sample. Only works on Simplers that already have a sample loaded.crop_simpler(track_index, device_index) — trim sample to current start/end pointsreverse_simpler(track_index, device_index) — reverse the loaded sampleget_simpler_slices(track_index, device_index) — retrieve auto-detected slice points (Slice mode)set_simpler_playback_mode(track_index, device_index, playback_mode) — switch modes: 0=Classic, 1=One-Shot, 2=Slice. Optional: slice_by (0=Transient, 1=Beat, 2=Region, 3=Manual), sensitivity (0.0-1.0, Transient only)warp_simpler(track_index, device_index, beats) — warp sample to fit N beatsFor slice-based production, use plan_slice_workflow:
plan_slice_workflow(file_path=..., intent="rhythm") — generates a complete workflow with Simpler setup, slice mapping, and MIDI notesrhythm, hook, texture, percussion, melodicManual slice workflow: load sample → set_simpler_playback_mode(playback_mode=2) → get_simpler_slices → program MIDI notes targeting slice indices (C3 = slice 0, C#3 = slice 1, etc.)
insert_device(track_index, device_name) — insert native device by name (10x faster than browser, 12.3+)insert_rack_chain(track_index, device_index) — add chain to Instrument/Audio/Drum Rackset_drum_chain_note(track_index, device_index, chain_index, note) — assign MIDI note to Drum Rack chainadd_drum_rack_pad(track_index, pad_note, file_path) — atomic single-pad build (chain + note + Simpler + sample). 12.4+. Use this for custom kit construction; see the "Custom Drum Rack Construction" section above.move_device(track_index, device_index, new_index) — reorder devices on a trackget_plugin_parameters(track_index, device_index) — all AU/VST plugin parametersmap_plugin_parameter(track_index, device_index, parameter_index) — map for automationget_plugin_presets(track_index, device_index) — list plugin presetsAbleton's parameter names are inconsistent across devices. When set_device_parameter or batch_set_parameters errors with "Parameter 'X' not found," the response already lists the first 20 available names — read it and pick the right one. Common surprises:
| You'd expect | Actual name | Where |
|---|---|---|
Width | Stereo Width | Utility |
Cutoff | Filter Freq / Frequency | Various filters — check per-device |
Resonance | Filter Resonance / Q | Same |
Drive | Drive (Saturator) but Drive Amount (some racks) | Saturator vs racks |
Mix | Dry/Wet | Almost every native effect |
Volume | Volume (mixer) but Sample Volume / Out Volume | On certain devices |
When in doubt, call get_device_parameters(track_index, device_index) first — it returns the exact name of every parameter and the name field is what set_device_parameter accepts.
After loading any effect, verify its key parameters are not at pass-through defaults:
Dry/Wet should be > 0 (typically 20-40% for subtle, 60-100% for creative)Dry/Wet > 0, Feedback set appropriatelyThreshold below signal level, Ratio > 1:1Drive > 0 dBGain at target value, Width as neededUse get_device_parameters to read current values, then set_device_parameter or batch_set_parameters to configure. Use toggle_device to bypass/enable devices for A/B comparison.
get_device_presets(track_index, device_index) — list available presets for the loaded deviceget_plugin_parameters(track_index, device_index) — see all AU/VST plugin parametersget_plugin_presets(track_index, device_index) — list presets for AU/VST pluginsmap_plugin_parameter(track_index, device_index, parameter_index) — map a plugin parameter for automationConsult references/device-atlas/ in the livepilot-core skill for the full corpus of 280+ instruments, 139 drum kits, and 350+ impulse responses. The atlas contains real browser URIs, preset names, and sonic descriptions. Use it as your lookup table before loading any device — never guess a name that is not in the atlas or in browser search results.
npx claudepluginhub dreamrec/livepilot --plugin livepilotCore discipline for LivePilot — agentic production system for Ableton Live 12. 467 tools across 56 domains. This skill should be used whenever working with Ableton Live through MCP tools. Provides golden rules, tool speed tiers, error handling protocol, and pointers to domain and engine skills.
Provides techniques and best practices for Max for Live development, including Live Object Model access with live.path/object/observer, device namespaces, pattr persistence, and Push2 mapping.
Deep expertise in audio effects for sound design and mixing. Covers distortion/saturation taxonomy, modulation effects, time-based processing, creative effect chains, and effects automation. Use this skill whenever the user wants to choose effects, design sounds, build effect chains, make creative processing decisions, add warmth or grit (saturation/distortion), set up reverb or delay, create specific sonic textures (ethereal, lo-fi, massive, underwater), understand the science behind effects (harmonics, comb filtering, all-pass filters), or automate effects for dynamic transitions. Also use when the user asks about making something "bigger," "wider," "warmer," or "more interesting" -- those are effects engineering questions even if they don't mention specific plugins.