Clip Sync
Ableton extension to sync MIDI clip patterns across a track
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.
Clip Sync (v0.2.4)
An Ableton Live extension that groups MIDI clips with identical note content on a track, lets you edit one clip and sync that change to the rest of its group, and remembers groups across Live sessions. Works independently in Session and Arrangement view.
Built with @ableton-extensions/sdk. Requires a Beta build of Live 12 with
Extensions support, and Node.js 22 (LTS).
Two commands, both on right-click of a MIDI clip
1. "Find and group duplicate clips" — buckets clips with exactly-identical note content into groups, and saves the grouping. Run this first.
2. "Sync clip to group" — after you edit one clip, right-click it and run this. It copies its now-edited notes into the other members of its group. Then re-saves.
View scoping (Session vs Arrangement)
The two views are handled independently, based on where you invoke the command:
- Grouping is per view. Right-clicking a Session clip groups only the Session clips on that track; right-clicking an Arrangement clip groups only the Arrangement clips. Grouping one view does not disturb the other view's groups.
- Syncing is per view. Editing and syncing from a Session clip only updates other Session clips in that group; syncing from an Arrangement clip only updates Arrangement clips. The two never cross.
Both views' groups are kept side by side (in memory and on disk), so you can maintain independent Session and Arrangement groupings on the same track at the same time.
Workflow
- Right-click a clip in the view you care about → Find and group duplicate clips.
- Edit one clip's notes in Live.
- Right-click that clip → Sync clip to group.
Repeat 2–3 freely; the group refreshes to the edited notes on each sync. You can also close Live, reopen the same project later, edit a clip, and sync directly — the grouping is reloaded from disk.
How cross-session persistence works
The SDK has no persistent clip identifier and no way to read the current project's path, so identity across sessions is synthesized from readable, usually-stable properties:
- Groups are saved to a JSON file in the extension's
storageDirectory(Ableton's documented location for state that should survive sessions), keyed separately per project. - Each project is keyed by a hash of its ordered track names.
- Each clip is keyed by its track name, its view (Session/Arrangement), and
its location — the Session slot index, or the Arrangement timeline position
(
startTime). The view is embedded in the key, so Session and Arrangement groups are inherently separate. Location-based keys are what let the extension re-find the clip you edited, whose note content changed on purpose.
The important guarantee (and its limit)
When reloading a saved group, any member the extension can't confidently match to a clip that's actually present is dropped silently rather than guessed. It will never sync the wrong clip. The worst case is that you re-run Find and group; it never corrupts a clip.
Persistence is reliable as long as you don't move or rename clips or tracks while Live is closed. Moving a clip, reordering/renaming tracks, or changing slot layout between sessions can make a saved member fail to re-match (it's then dropped, per above). Within a session, everything is exact. This limitation is a direct consequence of missing SDK primitives — a persistent clip id and a project-path/id accessor would make it exact across sessions too (worth adding to the SDK feedback list).
Other behavior
- "Duplicate" = exact note identity: pitch, start time, duration, velocity, muted, probability, velocity deviation, release velocity all identical.
- If you edit two clips in one group before syncing, the clip you right-click is the source of truth.
- Loop length/markers are never touched (read-only in the SDK); only notes are copied, so each clip keeps its own loop region.
- Deleted/moved members are skipped safely on sync.
Where the saved file lives
The groups file is clip-sync-groups.json inside the extension's
storageDirectory. Deleting that file resets all saved groups; the extension
recreates it on the next "Find and group".
Rate this extension
One rating per account; you can change it any time.
Comments
No comments yet.