AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Ableton Humanize

skill-korben00-ableton-producer-skills-ableton-humanize · by Korben00

This skill should be used when the user asks to "humanize this MIDI", "add swing", "apply a groove", "make it less robotic/quantized", "loosen the timing", or "shape the velocities" of an existing MIDI clip in Ableton Live. Reads a clip's notes and rewrites them with micro-timing, swing, and velocity dynamics.

No reviews yet
0 installs
2 views
0.0% view→install

Install

$ agentstack add skill-korben00-ableton-producer-skills-ableton-humanize

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-korben00-ableton-producer-skills-ableton-humanize)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Ableton Humanize? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Ableton Humanize

Make stiff, grid-locked MIDI feel played-by-a-human by reading an existing clip and rewriting its notes with micro-timing offsets, swing, and velocity dynamics. The "lazy" lofi feel and a tight funk pocket are both just controlled deviations from the grid.

When to use

Triggers: "humanize", "add swing/groove", "less robotic", "shape velocities". To generate new parts use the composition/groove skills; this one transforms an existing clip.

Process

  1. Use ableton-live-runner for build/run/kill + scaffold.
  2. Read the target clip's notes (clip.notes). Operate in place (rewrite the same clip) or write

a humanized copy — confirm which with the user.

  1. Apply transformations (let the user pick intensity; keep it subtle by default):
  • Timing jitter — nudge each note startTime by a small random offset (±0.005–0.02 beats).
  • Swing — push notes on off-beat subdivisions later (8th swing: +0.04–0.08; 16th swing

smaller). Decide the subdivision from the note grid.

  • Feel offset — a constant lean: drag the whole part slightly late (laid-back) or early (on

top). Drums often want snare-late, kick-on.

  • Velocity dynamics — accent strong beats, soften off-beats/ghosts; add ±gentle variation;

optionally a slow swell across a phrase.

  • Duration variation — vary note lengths slightly (legato vs staccato) for realism.
  1. Clamp — keep startTime >= 0, velocities in 1–127, and don't let jitter create flams unless

wanted. Write the array back with clip.notes = newNotes.

Code pattern

const rand = (a) => (Math.random() * 2 - 1) * a;
function humanize(notes, { jitter = 0.012, swing = 0.06, velVar = 6, drag = 0 } = {}) {
  return notes.map(n => {
    const isOff = Math.round((n.startTime % 1) * 2) % 2 === 1; // on an 8th off-beat?
    return {
      ...n,
      startTime: Math.max(0, n.startTime + rand(jitter) + drag + (isOff ? swing : 0)),
      velocity: Math.max(1, Math.min(127, Math.round((n.velocity ?? 90) + rand(velVar)))),
    };
  });
}

Limits

  • This shifts note events, not Ableton's Groove Pool (no groove-template API). For consistent swing

across many clips, consider baking the same offsets.

  • Over-humanizing muddies tight genres — default to subtle, increase on request.

See ableton-drum-groove, ableton-topline.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.