ablx.directory

Groove DNA

v0.2.1

Extracts the micro-timing and velocity feel from one or more MIDI clips into a reusable template, then imprints that feel onto other MIDI clips — independent of their pitch content.

Remy MazmanianNo ratings yet

Unverified listing. This repo is new or has little community activity and the developer has not claimed it. Extensions run code inside Live — read the source, check the author, and only install things you trust.

README · rendered from GitHubView source

Groove DNA

Extracts the micro-timing and velocity feel from one or more MIDI clips into a reusable template, then imprints that feel onto other MIDI clips — independent of their pitch content.

  1. Right-click one or more MIDI clips (or a whole track) and choose Extract Groove DNA. It reads every unmuted note, builds a 32-slot (one bar, 1/32-note resolution) timing/velocity/duration profile, and shows you what it found — note count, detected feel, and an editable name (pre-filled from the clip, or its track when the clip is unnamed, which is Live's own default state). Nothing is written to disk until you confirm. If there's nothing to extract, it says so rather than failing silently.
  2. Right-click the clip(s) or track you want to imprint it onto and choose Apply Groove DNA…. Pick a template, a strength (0-100%, an exact blend between the clip's original timing and the template's), a grid resolution, an optional humanize amount, and — only if you explicitly turn off "Preserve pitch content" — an optional scale constraint. Preview writes the result into a temporary copy (a new take lane for Arrangement clips, the next empty slot for Session clips) so you can audition it without touching the original. Apply overwrites the target clip(s) in place as a single undo step. Saved templates can be renamed or deleted from the same dialog.

Pure analysis/transform logic lives in src/analysis and src/transforms (unit-tested, zero SDK imports — see npm test); everything that touches Live lives in src/sdk; the modal is src/ui/modal.html + src/ui/buildModalHtml.ts.

Known limitations (deliberate scope, not oversights)

  • The groove cycle is fixed at one bar of 4/4 (4 beats). The SDK exposes no Set-level time signature — only a read-only per-Scene numerator/denominator (the same gap set-snapshot's README documents) — so there's no reliable signal to size the cycle from. Multi-bar source clips are folded into that one cycle (a bar 2 downbeat contributes to the same slot as a bar 1 downbeat), which is also what makes an extracted template reusable on target clips of any length.
  • No triplet grid option in the Apply modal. Only straight 1/4, 1/8, 1/16, and 1/32 are offered. The template's internal 32-slot resolution captures ordinary human timing feel fine even for triplet-heavy source material; there just isn't a triplet-aware readout in the UI yet.
  • Preview can't stay open for iterative tweaking. showModalDialog's only documented way for a webview to report back to the extension is close_and_send — there's no "send an update without closing" message. So Preview closes the dialog, creates the temporary copy, and that's it; adjusting further means reopening Apply Groove DNA… on the original clip(s) again. Rename and delete hit the same limit, but there the dialog is reopened automatically afterwards, so the round trip is mostly invisible — that isn't possible for Preview, whose whole point is to let you go listen to the result.
  • Arrangement take-lane (comping) selections aren't resolved. Resolving an Arrangement selection's selected_lanes back to a MidiTrack is straightforward by re-scanning song.tracks, but doing the same for a TakeLane would need its owning track, which nothing in this SDK version exposes. A lane that resolves to a TakeLane is silently skipped rather than guessed at.

Where things are stored

<storageDirectory>/grooves/<id>.json (one file per template) plus an index.json alongside them for fast listing, and <storageDirectory>/preferences.json for your last-used Apply settings — mirroring set-snapshot's reasoning for why storage lives under the extension's own directory rather than next to the .als file.

Run in dev mode

npm start -- --live "/Applications/Ableton Live 12.4 Beta.app"

Tests

npm test

Rate this extension

One rating per account; you can change it any time.

No ratings yet — be the first

Comments

Sign in to join the discussion.Sign in

No comments yet.