livepilot-arrangement
Constructive arrangement — actually building song structure in Ableton. Use when the user asks to "arrange", "structure a song", "add an intro", "build a verse", "create sections", "scene to arrangement", "record to arrangement", or wants to place clips on the timeline or organize scenes. For analysis of existing structure ("improve transitions", "detect motifs", "analyze composition"), use livepilot-composition-engine instead.
Arrangement — Song Structure and Session Organization
Organize clips into scenes, build arrangements on the timeline, navigate with cue points, and record performances in Ableton Live.
Session View vs Arrangement View
Ableton has two complementary views:
- Session view — a grid of clip slots organized by track (columns) and scene (rows). Clips loop independently. Fire scenes to trigger rows of clips simultaneously. Use for jamming, live performance, and building ideas.
- Arrangement view — a linear timeline where clips play in sequence from left to right. Use for final song structure, recording automation, and export.
Use back_to_arranger to switch from session playback to arrangement playback. When session clips are playing, they override arrangement content on their tracks.
Scene Workflow
Scenes are horizontal rows in session view. Each scene can trigger all its clips at once.
Creating and Managing Scenes
create_scene(index)— insert a new scene at the given positionset_scene_name(scene_index, name)— name scenes after song sections: "Intro", "Verse 1", "Chorus", "Bridge", "Drop", "Outro"set_scene_color(scene_index, color_index)— color-code sections (0-69 palette). Use consistent colors: green for verses, red for choruses, blue for bridges.set_scene_tempo(scene_index, tempo)— set a per-scene tempo change (triggers when scene fires)duplicate_scene(scene_index)— copy a scene for variations. Duplicate, rename, then modify clips in the copy.delete_scene(scene_index)— remove a scene
Firing and Monitoring
fire_scene(scene_index)— launch all clips in a scene simultaneouslyfire_scene_clips(scene_index)— launch only the clips that exist in a scene (skips empty slots)stop_all_clips— stop everything in session viewget_playing_clips— see which clips are currently playing across all tracks
Scene Inspection
get_scenes_info— list all scenes with names, tempos, and colorsget_scene_matrix— see which clips exist in which slots across the entire session grid. Returns a track-by-scene matrix showing clip presence, names, and states.
Arrangement View
Build linear song structures on the timeline.
Creating Arrangement Clips
create_arrangement_clip(track_index, clip_slot_index, start_time, length)— duplicate a session clip into Arrangement View at a specific beat positioncreate_native_arrangement_clip(track_index, start_time, length)— create arrangement clip with full automation envelope (12.1.10+)set_arrangement_clip_name(track_index, clip_index, name)— name arrangement clips for clarityforce_arrangement()— force all tracks to play from arrangement (not session clips)
Arrangement Notes
add_arrangement_notes(track_index, clip_index, notes)— write MIDI notes into an arrangement clipget_arrangement_notes(track_index, clip_index)— read notes from an arrangement clipremove_arrangement_notes(track_index, clip_index, start_time, duration, pitch_start, pitch_end)— clear notes in a regionremove_arrangement_notes_by_id(track_index, clip_index, note_ids)— surgical deletionmodify_arrangement_notes(track_index, clip_index, modifications)— update existing notes by IDduplicate_arrangement_notes(track_index, clip_index, time_offset)— copy notes forwardtranspose_arrangement_notes(track_index, clip_index, semitones, start_time, duration)— pitch shift a region
Arrangement Clips Inspection
get_arrangement_clips(track_index)— list all clips on a track's arrangement timeline with positions, lengths, and names
Arrangement Automation
set_arrangement_automation(track_index, parameter_name, points)— write automation on the arrangement timeline. Points are[{time, value}, ...]pairs at absolute beat positions.
Navigation
Transport Position
jump_to_time(beat_time)— move the playback cursor to a specific beat position on the timelinestart_playback/stop_playback/continue_playback— basic transport control
Cue Points
Cue points are markers on the arrangement timeline for quick navigation.
toggle_cue_point— add or remove a cue point at the current playback positionget_cue_points— list all cue points with their beat positions and namesjump_to_cue(cue_index)— jump to a specific cue point by index
Use cue points to mark section boundaries: place one at beat 0 (Intro), beat 16 (Verse), beat 48 (Chorus), etc. This makes navigation fast during arrangement.
Recording
Live Recording
start_recording— begin recording into the arrangement or session (depends on which view is active and which tracks are armed)stop_recording— stop recordingcapture_midi— retroactive MIDI capture. Grabs whatever was played on armed MIDI tracks even if recording was not active. Live 12 keeps a buffer of recent MIDI input.
Recording Workflow
- Arm tracks with
set_track_arm(track_index, arm=true) - Optionally set input monitoring with
set_track_input_monitoring(track_index, mode) start_recording— records into arrangement if in arrangement view, into session slots if in session view- Play or trigger clips
stop_recording— finalize the take
For retroactive capture: if the user just played something without recording, call capture_midi immediately to grab it.
Section Analysis
get_section_graph— infer song structure from scene names and clip arrangement. Returns a graph of sections with their relationships, durations, and transitions.analyze_composition— deeper structural analysis including phrase lengths, repetition patterns, and harmonic arcsget_phrase_grid— see how phrases align across tracks
Use get_section_graph to understand the current form before adding new sections. It helps identify what is missing (e.g., no bridge, no outro, chorus only appears once).
Common Song Structures
When building arrangements, use these as starting templates:
- Pop: Intro - Verse - Chorus - Verse - Chorus - Bridge - Chorus - Outro
- EDM/Dance: Intro (16 bars) - Build - Drop (16) - Break (8) - Build - Drop (16) - Outro (8)
- Hip-hop: Intro - Verse (16 bars) - Hook (8) - Verse (16) - Hook (8) - Bridge - Hook - Outro
- Lo-fi: Intro (4) - A (8) - B (8) - A (8) - B variation (8) - Outro (4)
Adapt these to the user's needs. Use plan_arrangement from the planner domain for algorithmic structure suggestions, and transform_section to create variations of existing sections.
Section-Aware Sample Roles
plan_arrangement returns sample_hints per section — suggested roles for sample-based elements:
| Section | Default Hints |
|---|---|
| Intro | texture_bed, fill_one_shot |
| Verse | texture_bed, fill_one_shot |
| Build | transition_fx, texture_bed |
| Chorus/Drop | hook_sample, break_layer, fill_one_shot |
| Bridge/Breakdown | texture_bed, transition_fx |
| Outro | texture_bed, fill_one_shot |
Use plan_sample_workflow(section_type=..., desired_role=...) to generate concrete sample plans for each role. Use plan_slice_workflow(intent=..., target_section=...) for slice-based patterns.
When to hand off to composition-engine
This skill covers constructive arrangement. For analytical work — scoring a proposed move, analyzing transitions, inspecting the harmony field, detecting motifs, transforming sections — invoke livepilot-composition-engine. Don't re-implement its tools here; they are documented there with full context.
Reference
Supporting references live in the livepilot-core skill's references/ directory:
livepilot-core/references/ableton-workflow-patterns.md— session/arrangement workflows, song structures by genre, follow actions, clip launch modes, export settings