ablx.directory

Set Snapshot

v0.1.0

Two independent pieces:

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

Set Snapshot

Two independent pieces:

  1. Take Snapshot (a real extension command) — serializes the current Set to JSON: tracks (name, type, mute/solo/arm, devices + parameter values, clips with name/color/position/length/loop state/MIDI note count), scenes, locators, and tempo.
  2. Diff (npm run diff, a plain Node script) — compares two snapshot files and prints a human-readable changelog. Entirely read-only; it never touches Live and doesn't even depend on the SDK, so it runs with Live closed.

Where snapshots are written, and why not "next to the Set file"

The original idea was ./snapshots/<setname>-<timestamp>.json next to the .als file. Two things in this SDK make that impossible as specified:

  • There is no way to read the Set's name or file path. Song and Application expose tracks, scenes, cue points, tempo, and scale info — nothing resembling a file path or Set name.
  • The filesystem permission model explicitly disallows writing to arbitrary project folders. The docs only guarantee two writable directories: context.environment.storageDirectory (persistent) and tempDirectory. Writing elsewhere is called out as unsupported and likely to break once a stricter OS-level sandbox ships.

So snapshots go to <storageDirectory>/snapshots/snapshot-<ISO timestamp>.json instead — the only location this SDK actually commits to keeping writable and private to the extension. <storageDirectory> is a per-extension directory Live manages; the dev-mode terminal (npm start) logs the exact path each time a snapshot is written. Time signature is also omitted from the schema: Song exposes tempo but no Set-level time signature (only a read-only per-Scene numerator/denominator, a different, follow-actions-related thing).

Usage

npm start -- --live "/Applications/Ableton Live 12.4 Beta.app"
# then in Live: right-click any track -> Set Snapshot: Take Snapshot

npm run build
npm run diff -- ~/Library/.../snapshot-2026-08-21T10-00-00.json ~/Library/.../snapshot-2026-08-21T11-30-00.json

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.