Skip to content
Automation
Skill

/midi-cleanup

Use when the user asks to humanize a MIDI part, fix voice leading, quantize notes, clean up timing, fix stuck/duplicate notes, or generally polish a MIDI clip they recorded or wrote. Examples - "humanize this hat", "voice these chords better", "the timing is too stiff", "fix the

From plugin
ableton-skills
2712 skills4 commands
Install
$ npx -y skills add glincker/ableton-skills --skill midi-cleanup --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/midi-cleanup

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when the user asks to humanize a MIDI part, fix voice leading, quantize notes, clean up timing, fix stuck/duplicate notes, or generally polish a MIDI clip they recorded or wrote. Examples - "humanize this hat", "voice these chords better", "the timing is too stiff", "fix the

SKILL.md

midi-cleanup.SKILL.md
name: midi-cleanup
description: Use when the user asks to humanize a MIDI part, fix voice leading, quantize notes, clean up timing, fix stuck/duplicate notes, or generally polish a MIDI clip they recorded or wrote. Examples - "humanize this hat", "voice these chords better", "the timing is too stiff", "fix the voice leading on the strings".

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 chord — usually a step or stay-still
  • Maintain a max interval of an octave between adjacent voices (except bass-tenor which can be wider)
  • For string ensembles: respect ranges (Vln1: G3-G6, Vln2: G3-D6, Vla: C3-A5, Cello: C2-C5, Bass: E1-A3)
  • Avoid parallel fifths and octaves between outer voices (counterpoint baseline)

Apply by reading the current chord notes, computing the optimal voicing for each chord, and rewriting.

D. Quantize (intelligent)

Don't auto-quantize 100% — that destroys feel.

  • Default strength: 75% to 16th-note grid
  • For shuffled genres (hip-hop, lo-fi): 60-70% to a swing grid
  • For tight EDM/house: 90-100% on percussion only, looser on lead/chords
  • Preserve grace notes and intentional pickups (notes within 30 ms of another note ahead of grid)

E. Stuck/duplicate note fix

  • Find notes with duration < 5 ms → delete
  • Find overlapping notes with same pitch → merge or trim to non-overlap
  • Find sustained notes longer than 2 bars in fast parts → suspect, ask user

3. Preview the changes

Before writing, summarize:

> *"I'll humanize velocity ±12 on the 32 hat notes (preserving the 4 accent hits at velocity 110), and add ±8 ms timing variance with a slight late-bias on the off-beats. Apply?"*

4. Apply

Use batch operations if the MCP server supports them (`set_clip_notes` with the full new note array is preferred over per-note edits — atomic, undoable in one Ctrl+Z).

5. Confirm result

  • State what changed
  • Suggest the user listen and tell you if they want more/less of the effect
  • Offer to revert with one command if it doesn't feel right

Don'ts

  • **Don't change pitches** unless doing voice leading — and even then, never the melody/lead voice.
  • **Don't humanize beyond ±25 velocity or ±25 ms** — that becomes noticeable as "bad timing" rather than "human."
  • **Don't quantize at 100%** unless explicitly requested. Loss of feel is the #1 complaint about MIDI.
  • **Don't apply voice leading to a melody.** Voice leading is for chords/pads/inner voices, not the lead line.
  • **Don't touch the velocity 127 hits** — those are intentional accents.
  • **Don't merge a clip you just modified.** Always leave undo on the table.

Example

> User: "The hi-hat sounds too robotic, humanize it"

Steps: 1. Read the hat clip — 32 16th notes, all velocity 100, perfectly on grid. 2. Plan: ±12 velocity (preserve any accents), ±8 ms timing with off-beat late-bias of +3 ms, slight 4% swing. 3. Preview: "32 notes, no existing accents detected. I'll spread velocity 88-112, add 8 ms timing variance, 4% swing on off-beats. Apply?" 4. On confirm, rewrite the clip atomically. 5. Report: "Done. Listen — if it's still too tight, say 'more humanize' and I'll go to ±18 velocity."

Read more
Ships withableton-skills

Claude Skills for Ableton Live producers. Workflows for Claude Code, Cursor, Codex, and Gemini CLI. Pairs with any Ableton MCP server. MIT.

Get the whole plugin

Other skills on ableton-skills.