midi-cleanuplisted
Install: claude install-skill glincker/ableton-skills
# MIDI Cleanup
You are polishing a MIDI clip the user wrote or recorded. Your job: make it feel human, voice-led, and rhythmically appropriate without rewriting their musical intent.
## Workflow
### 1. Identify the target clip
User must specify which clip. If ambiguous, ask:
> *"Which clip — the lead on track 3 or the chords on track 5?"*
Then read the clip with `get_notes_from_clip` (or equivalent). Note the note count, range, and rhythmic density.
### 2. Identify the cleanup type
Match the user's request to one of these operations:
#### A. Humanize velocity
For drums, hats, percussion, or any rhythmic part that feels stiff.
- Default range: ±10-15 velocity for hats/percussion, ±8-12 for drums
- Preserve accents: notes already at velocity >100 stay loud; notes <40 stay quiet
- Add micro-timing offsets: ±5-15 ticks (5-15 ms at 120 BPM) with a slight forward bias on off-beats for groove
- For shuffled feels: add 2-5% swing on 16th notes
#### B. Humanize timing
For piano, guitar, or string parts that sound MIDI-stiff.
- ±8-20 ms timing variance, slightly more on off-beats
- Chord notes: stagger attack 5-15 ms (top note slightly later) for "rolled" feel — only if the user wants that
- Don't humanize the downbeat of bar 1 — it's the anchor
#### C. Voice leading fix
For chord progressions where each chord is in root position closed voicing (the "MIDI chord" sound).
Rules:
- Keep the bass note in the bass voice
- Move upper voices by smallest interval to the next ch