# Compose Music

> Create structured electronic music sketches and Ableton-ready composition specs with drum grids, chords, basslines, melodies, arrangements, MIDI note JSON, and loop-to-song handoff plans. Use for composition, arrangement, repair, and Ableton implementation planning; not for pure Ableton command lookup or mixing-only advice.

- Skill: `6uclz1/compose-music` (Agent Skill, multi-file: 46 files)
- Install (CLI): `npx skillmds@latest add 6uclz1/compose-music`
- Raw SKILL.md: https://api.skillmd.com/api/skills/6uclz1/compose-music/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: 6uclz1 (https://skillmd.com/u/6uclz1)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/6uclz1/compose-music

---


# Compose Music

## Scope

Use this skill as the composition layer above `$ableton-cli`: decide the music first, then hand deterministic Ableton operations to `$ableton-cli`.

Do not use this skill for pure Ableton command lookup, installation, transport control, browser inspection, or mixing-only advice. Use `$ableton-cli` directly for DAW operation and a mixing-focused skill or general answer for mix-only work.

## Output Modes

Choose the smallest output mode that satisfies the request:

- **Idea Mode**: for brainstorming, options, constraints, or high-level composition advice. Return only the directly useful ideas.
- **Pattern Mode**: for drum grids, basslines, chord loops, melody motifs, or MIDI JSON for a narrow musical unit. Return only the requested pattern material.
- **Song Sketch Mode**: for loop-to-song expansion, arrangement plans, and complete human-readable sketches that do not need Ableton execution. Return the relevant song sections.
- **Ableton Handoff Mode**: for "make this in Ableton", "implement", "generate clips", "MIDI JSON", or handoff requests. Return a concise human plan plus `composition_spec`.
- **Sample Handoff Mode**: for user-owned audio such as Amen-style break samples. Return `sample_assets`, `audio_loop` or `sliced_audio` tracks, and keep local paths out of browser fields.
- **Cut-up Idea Mode**: for cut-up, sample chop, vocal chop, sliced break, glitch collage, break edit, or IDM-style resequencing ideas. Return BPM, sample roles, slice grain, drum anchor, bass relationship, section shape, and rights/overcrowding risks.
- **Cut-up Pattern Mode**: for 1-4 bar chop patterns. Return only the slice grid, trigger notes or trigger-note strategy, edit moves, and kick/sample collision notes.
- **Cut-up Song Sketch Mode**: for 32-64 bar sample-chop arrangements. Return sections, density, slice roles, drum/sample call-response, bass entries, silence, reverse, stutter, and fills.
- **Cut-up Ableton Handoff Mode**: for implementing cut-up material in Ableton. Return concise plan, `composition_spec`, `sample_asset_plan`, `slice_plan`, `cutup_trigger_notes`, `ableton_handoff_plan` intent, and validation checklist.
- **Repair Mode**: for fixing an existing loop, arrangement, bassline, melody, or chord progression. Return diagnosis, edited material, and minimal execution notes.

Default assumptions when the user gives no constraints:
- Meter: `4/4`
- Tempo: `120 BPM`
- Tonality: `minor` or `dorian`
- Loop target: `8 bars`
- Arrangement target: `32` or `64 bars`
- Genre: choose one focused electronic direction and state it.
- Track count: 5 tracks: `Drums`, `Bass`, `Chords`, `Lead`, `Texture/FX`.

Cut-up defaults when the user gives no constraints:
- Genre: `cut-up electronic`
- Tempo: `132 BPM`
- Key/mode: `D minor`
- Arrangement target: `32 bars`
- Source roles: `vocal_or_melodic_sample`, `drum_loop_or_break`, `texture_sample`.
- Track count: 6 tracks: `Drums`, `Sample Source`, `Cutup Rack`, `Bass`, `Chords/Stabs`, `Texture/FX`.

Assume defaults for missing tempo, key, meter, genre, length, and track count. Ask at most one clarifying question only when the missing constraint would materially change the result or create conflicting deliverables.

## Core Workflow

Follow this sequence for song sketches and Ableton handoffs:

1. **Brief**: lock genre, tempo, emotional intent, key/mode, track count, and one creative constraint.
2. **Beat**: create a 16-step or 2-bar drum grid before detailed sound design.
3. **Pitch Palette**: choose tonic, scale or mode, and allowed non-diatonic notes.
4. **Harmony**: choose a chord loop, roman numerals, voicing range, and harmonic rhythm.
5. **Bassline**: reinforce the harmony while relating to or contrasting with the drum pattern.
6. **Melody**: write a short identifiable motif, then create variations.
7. **Structure**: expand the loop into sections using 4, 8, or 16 bar blocks.
8. **Ableton Handoff**: specify tracks, clips, note grids, scene names, and arrangement durations.
9. **Finish**: apply subtraction, commitment, and completion prompts.

For Cut-up / Sampling Mode, use this sequence:

1. Confirm or assume source material, then state whether execution requires user-provided or cleared audio.
2. Decide rights/safety status: `original`, `cleared`, `royalty_free`, `private_test`, or `unknown`.
3. Choose slicing method: `transient`, `beat`, `region`, `manual`, or `slice_count`.
4. Build a stable drum anchor before dense slice edits.
5. Build a 1-bar slice motif using only 3-5 slices.
6. Build a 2-bar answer by changing only the final beat.
7. Add bass after confirming kick/sample space.
8. Expand into sections with density, mute moves, silence, reverse, stutter, and boundary fills.
9. Emit `composition_spec` with `source_material`, `slice_plan`, `cutup_pattern`, and `rights_status` for Ableton handoff requests.
10. Convert to `ableton_handoff_plan` before any `$ableton-cli` operation.

Do not invent local audio paths, Ableton browser URIs, sample names, or preset names. If no audio is supplied, use a placeholder such as `<user-provided-audio-path>` and state that execution requires a user-provided or cleared audio file.

## Output Contract

For full song sketches, produce these sections:

- **Composition Brief**: genre, BPM, meter, key/mode, constraint, reference energy.
- **Pattern Grid**: drum grid, bass rhythm, melody motif, and bar lengths.
- **Harmony Map**: chords, roman numerals, voicings, harmonic rhythm, tension/release notes.
- **Section Plan**: Intro, Build, Break, Drop/Hook, Variation, Outro with bar counts and active parts.
- **Ableton Execution Notes**: track names, clip lengths, scene names, MIDI note JSON strategy, and `$ableton-cli` handoff notes.
- **Finish Checklist**: decisions to commit, parts to remove, renders or bounces to make, and completion criteria.

For Ableton Handoff Mode, always include:

- A concise human-readable plan.
- A fenced JSON block named `composition_spec`.
- A validation checklist.
- No hard-coded browser paths, rack names, device presets, local file paths, or fake URIs.
- User samples referenced through `sample_assets`, never through `browser_query`.

Read `references/output-contracts.md` and `references/composition-spec-schema.md`; validate against `references/composition_spec.schema.json` before producing the final handoff.

For narrow requests, return only the relevant sections; do not emit the full song-sketch template.

## Validation Rules

Before finalizing Ableton-ready material, verify:

- Section bar counts sum to the requested length.
- MIDI notes use valid `pitch`, `start_time`, `duration`, `velocity`, and `mute` fields.
- Bass and kick are designed as one composite low-end part.
- Browser targets are search queries or placeholders, not hard-coded paths, rack names, device presets, local file paths, or fake URIs.
- User-owned samples use `sample_assets` with `path_ref`, `root_env` plus `relative_path`, or a private manifest. Do not emit `/Users/...`, `file://...`, or sample filenames in `browser_query` or `handoff.browser_queries`.
- Audio-backed tracks set `source_type` to `audio_loop` or `sliced_audio`, use `sample_ref`, and include `audio_clip` or fixed-grid `slice_plan` as appropriate.
- Cut-up tracks may instead use `source_material` with a placeholder path, `slice_plan.method`, `slice_plan.max_slices`, `slice_plan.start_pad_midi`, and `cutup_pattern.slice_map`.
- `rights_status` is required for source material and sample handoff assets. Stop public, commercial, or distribution-oriented output when `rights_status` is `unknown`.
- `composition_spec.handoff.browser_queries` repeats the browser search intent and remains path-free.
- Section plans include density, foreground/midground/background roles, add/mute moves, and transition events when arranging a complete song.
- Narrow requests do not return unrelated full-contract sections.
- Complete arrangements use the section fields from `references/arrangement-energy-curves.md`: `foreground`, `midground`, `background`, `identity_carrier`, `move`, and `transition_event`.
- Melody motifs name `rhythm_cell`, `pitch_cell`, and `variation_strategy` when the user asks for melodic material.
- Harmony maps name tension and release points with `tension_bar`, `resolution_bar`, and any `outside_notes` when those choices are present.
- Basslines state `kick_relationship` as `avoid`, `double`, `answer`, or `intentional_overlap`.
- Track sound choices describe `sound_intent` and `shape_intent`; `browser_query` remains a broad search phrase only.

Use bundled scripts when deterministic conversion or validation is useful:

- `scripts/grid_to_notes.py`: 16-step or 32-step drum grid to Ableton note JSON; each row may use `steps` or the equivalent `grid` alias. Use `--payload` when swing, shuffle, humanization, or polymeter metadata must survive handoff.
- `scripts/breakbeat_pattern_to_notes.py`: fixed-grid Amen/breakbeat slice index patterns to Ableton trigger note JSON.
- `scripts/cutup_pattern_to_notes.py`: symbolic cut-up patterns such as `S01`, `.`, `rest`, or `S03*4` to Ableton trigger note JSON.
- `scripts/chords_to_notes.py`: tonic, mode, roman numerals, explicit chord quality, borrowed chords, inversions, slash chords, and extensions to chord note JSON.
- `scripts/validate_composition_spec.py`: validate Ableton-ready `composition_spec`.
- `scripts/resolve_sample_assets.py`: resolve private sample asset manifests or environment variable references outside generated specs.
- `scripts/composition_spec_to_handoff_plan.py`: convert a valid `composition_spec` into `ableton_handoff_plan` JSON for `$ableton-cli` workflows.

## Reference Selection

- Read `references/learning-music-system.md` when starting from scratch, teaching the user, or structuring the work from rhythm through song form.
- Read `references/music-theory-toolkit.md` when choosing keys, scales, modes, chords, voicings, seventh chords, or harmonic functions.
- Read `references/creative-strategies.md` when the user is blocked, over-editing, stuck in loops, or needs a finish plan.
- Read `references/pattern-recipes.md` when generating concrete drum, harmony, bass, or melody patterns.
- Read `references/ableton-composition-bridge.md` when the output should be executable or easily translated with `$ableton-cli`.
- Read `references/output-contracts.md` when the user asks for Ableton-ready implementation, MIDI JSON, or structured handoff.
- Read `references/composition-spec-schema.md` when building or checking `composition_spec` fields and validation rules.
- Read `references/ableton-handoff-plan-schema.md` when converting `composition_spec` into an intermediate `ableton_handoff_plan`.
- Read `references/eval-cases.md` when running regression-style prompt checks.
- Read `references/genre-playbooks.md` when selecting genre defaults or making genre-specific decisions.
- Read `references/arrangement-energy-curves.md` when expanding loops into 32-, 64-, 96-, or 128-bar forms.
- Read `references/sound-design-intent.md` when choosing role-based sound targets without naming fixed presets.
- Read `references/quality-rubric.md` when evaluating a draft or running regression-style checks.

## Ableton Handoff

Do not duplicate the `$ableton-cli` command catalog. Hand off intent and structured data:

- Preflight intent: wait-ready, doctor if needed, then tracks list.
- Browser search intent by role, for example `Drum Rack`, `Kit`, `Operator bass`, `Drift bass`, `Wavetable pad`, `Analog keys`; resolve exact paths or URIs only from active `$ableton-cli` search results.
- Track plan: default order `0 Drums`, `1 Bass`, `2 Chords`, `3 Lead`, `4 Texture/FX`.
- Clip plan: scene clips with lengths in bars and beats.
- Audio clip plan: user sample audio placement, warp, loop, gain, and source asset id.
- Slice plan: fixed-grid slicing, Drum Rack trigger pad range, and trigger note source.
- Notes: inline note JSON or a path to a generated notes file.
- Arrangement: scene names, start bars, durations, density, active tracks.
- Safety: prefer dry-run or plan-first execution, inspect JSON command results, and stop on non-zero `$ableton-cli` exit codes.
- Finish: save/export target if requested.

When the user asks to implement a sketch, produce or use `ableton_handoff_plan` as the intermediate artifact before any DAW operation.

Always avoid hard-coding browser item paths, Drum Rack kits, or device targets. Ask `$ableton-cli` workflows to search the active Ableton browser catalog first, then use returned paths or URIs.

For requests like "make a 170 BPM jungle Amen break using my local sample", do not generate or bundle the Amen audio. Reference the user's sample with `sample_assets`, choose `audio_loop` for warp/loop placement or `sliced_audio` for fixed-grid Drum Rack slicing, and prefer plan/dry-run Ableton execution before modifying Live.

## Composition Rules

- Separate generation from editing: create several options before judging them.
- Prefer simple, playable material before advanced theory.
- Keep kick and bass clear by treating the low end as one composite part.
- Use foreground, middle ground, and background roles while composing, not only while mixing.
- Build the maximal-density section first when arrangement is unclear.
- Finish imperfect sketches instead of abandoning them.

