Gary Extension
v0.1.0this is my first ableton extension. trying to keep it tightly scoped here on github.
sa3 ableton extension
stable audio 3 generation, transformation, and continuation directly inside Ableton Live arrangement selections.
update: this repo now contains a very experimental branch where we are embedding stable audio 3 directly into the extension with the
libsa3from sa3.cpp — no separate backend process. it's still in heavy testing (CUDA / VULKAN / and very shortly Metal builds).if you just want to use the local http requests with pytorch, just grab the
.ablxin themainbranch here.
UPDATE: oops, i misunderstood how easy it was to use just the .ablx file if you disable developer mode. if you only want to use the extension, install gary-extension.ablx inside Ableton Live beta with Developer Mode off.
fair warning...you still need an SA3 backend while generating, either Gary4local or the backend in this repo. but you do not need to run the Ableton extension host from a terminal unless you're building on top of this.
2nd warning...untested on macOS. plz let me know if it works/doesn't work on apple silicon.
this is an early V1 built against the Ableton Extensions SDK beta. the long-term idea is much larger: model workflows that feel native inside Live instead of forcing the user to leave the DAW, record into a plugin, drag files around, or manually line generated audio back up on the timeline. for now, this repo is intentionally focused on stable audio 3.
what it do
the extension adds three right-click actions on audio-track arrangement selections:
Gary SA3: Transform SelectionGary SA3: Continue SelectionGary SA3: Generate Selection
transform renders the selected audio range, sends it to an SA3 backend, and replaces the selected region by default.
continue renders the selected audio range, asks SA3 for a longer inpaint continuation, and replaces from the selection start with the returned source-plus-continuation clip.
generate uses the selected arrangement duration to create audio from text and places the result at the selected start.
ableton's undo restores the previous timeline state, which makes the replace workflow feel surprisingly natural.
backend
this repo is local-first. The public branch defaults to:
http://localhost:8006
the dialog keeps an editable backend URL field, so you can point it at any compatible SA3 server you control.
tested today with the Gary4local companion app:
https://github.com/betweentwomidnights/gary-localhost-installer
the standalone backend in backend/ was extracted from Gary4local's services/sa3/api.py so people can run a small API wrapper around their existing official Stable Audio 3 checkout. The goal is to stay as close as possible to upstream:
https://github.com/Stability-AI/stable-audio-3
if you do not have a suitable GPU and want hosted access, open an issue or reach out. you can use our remote backend if you ask nicely, and if you're clever enough, you'll figure out how gary4juce talks to it anyway.
backend contract
the extension expects an SA3-compatible HTTP backend with:
GET /healthGET /lorasGET /promptsPOST /generatePOST /transformPOST /continueGET /poll_status/<session_id>
the local backend also preserves useful output-shaping environment variables from gary4local, including latent scaling, peak normalization, and a gentle limiter. these handle some of the loudness issues i get from my loras.
backend extraction is now in backend/. start with backend/README.md; the local SA3 setup uses uv and installs the official upstream stable audio 3 repo into the backend venv.
LoRA setup is documented in backend/LORAS.md, including registry JSON, prompt dice files, and API checks.
ableton beta sequence
easiest install
this is the path if you just want to use the extension:
- Download the Ableton Live beta from: https://ableton.github.io/extensions-sdk/
- Download gary-extension.ablx from this repo.
- Open Ableton Live beta.
- In Preferences -> Extensions, make sure Developer Mode is disabled.
- Install the
.ablxextension from Live's extension UI. - Restart Ableton Live beta if the menu entries do not appear.
- Make sure an SA3 backend is running at
http://localhost:8006, or edit the backend URL in the extension dialog.
developer mode
this sequence matters if you are building from source or running Ableton's dev host:
- Download the Ableton Live beta and Ableton Extensions SDK from: https://ableton.github.io/extensions-sdk/
- Copy the SDK tarballs into vendor/ and run
npm install. - Package the extension with
npm run package:ablx, or use a provided.ablxrelease artifact. - Open Ableton Live beta first.
- Enable Developer Mode in Preferences -> Extensions.
- Install the
.ablxextension from Live's extension UI. - Restart Ableton Live beta.
- After Live has restarted and knows the extension is installed, run:
npm start
in our Windows 11 beta testing, running npm start before Live had seen and installed the extension meant the context-menu entries did not appear. the reliable developer-mode order was: install in Live, restart Live, then start the dev host from the terminal.
Ableton SDK setup
this repo does not vendor Ableton's SDK packages.
- Download the Ableton Extensions SDK beta from Ableton.
- Copy these tarballs into vendor/:
ableton-extensions-sdk-1.0.0-beta.0.tgzableton-extensions-cli-1.0.0-beta.0.tgz
- Install dependencies:
npm install
build
npm run build
package an installable .ablx:
npm run package:ablx
the package is written to dist/gary-extension.ablx.
developer host
run in Live developer mode:
npm start
before npm start, create a local .env file from .env.example. this is required unless you pass --live manually:
cp .env.example .env
on macOS, .env should usually contain:
EXTENSION_HOST_PATH=/Applications/Ableton Live 12 Beta.app
on Windows, .env should usually contain one of:
EXTENSION_HOST_PATH=C:\ProgramData\Ableton\Live 12 Beta
EXTENSION_HOST_PATH=C:\ProgramData\Ableton\Live 12 Beta\Program\Ableton Live.exe
EXTENSION_HOST_PATH can point at the Live install root, Live executable/app bundle, ExtensionHost directory, or ExtensionHostNodeModule.node.
for the most reliable tested Windows 11 Live 12 beta workflow:
- Open Live first.
- Confirm Developer Mode is enabled in Preferences -> Extensions.
- Run
npm start.
this uses Ableton's stock extensions-cli run path.
the explicit stock CLI path is also available:
npm run start:cli
the Windows bootstrap we used during early testing is available as:
npm run start:win
on the tested Windows setup, the custom scripts/run-dev-host.cjs path has been more reliable than extensions-cli run. it relaunches itself with Ableton's bundled Program\ExtensionHost\node.exe before loading ExtensionHostNodeModule.node.
on macOS, if you want to pass Live's .app path directly:
npm run start:cli -- --live "/Applications/Ableton Live 12 Beta.app"
passing --live overrides .env, which is useful for quick debugging. plain npm start needs .env.
avoid --inspect unless you are attaching a debugger. in this SDK beta, --inspect uses a break-on-start debugging mode, so the Extension Host can print Started: Extension Host while the extension code itself is still paused. if the extension activates, Ableton's Extension Host log should include lines like:
[gary-sa3] activate
[gary-sa3] registered context menu
on macOS, the Extension Host log lives under:
~/Library/Preferences/Ableton/Live x.x.x/ExtensionHost.txt
if Live is running, developer mode is enabled, and the host is started but those gary-sa3 log lines never appear, the extension entrypoint is not activating yet. if the log lines do appear but the menu is missing, make sure you are selecting an arrangement time range on an audio track and right-clicking that selected arrangement area.
status
this is beta SDK exploration, not a polished product. expect the repo shape, install flow, and backend wrapper to change quickly while we learn what Ableton Extensions can really do.
Rate this extension
One rating per account; you can change it any time.
Comments
No comments yet.