I spent my day hacking on this to see what it’s capable of (built a simple little tool that displays MIDI clips as sheet music: https://github.com/madisonrickert/ableton-sheet-music-extens...)
My initial take on its strengths/weaknesses:
- Strong: Using the TS/JS ecosystem to render UI and tools
- Medium: Creating custom application windows in a web view. Window management features are pretty limited currently (can’t resize or render a native “close” button on the window chrome)
- Strong: Creating custom control panels for integrating with external services (like pushing and pulling audio clips or midi to/from an external service)
- Weak: Anything real-time, that’s still the domain of Max4Live or other control APIs, so don’t expect playback automation
- Medium: Tinkering with the Ableton project, clips, tracks, etc. API surface is still incomplete. Like I can read warp markers but not create them, for example. And I can’t access the global time signature settings.
The extensions are pretty aggressively sandboxed, and I appreciate that security consciousness in this season of the js ecosystem. It’s a hassle though if you want to save or load files outside of your little sandbox folder.
For people into this sort of thing, another option is using my foss Max extension, Scheme for Max, to script Live through the live API using Scheme.
https://www.youtube.com/watch?v=j0sKBA-Pv2c&t=1s
The live object model is MUCH nicer to use in a lisp, as basically you do everything by making dynamic lists to represent what you want to access! There are examples in the Scheme for Max help file.
(Also, Scheme for Max can run in the scheduler thread, unlike JS in Max. Though of course calls to the Live API are deferred to the lower priority thread anyway)
I need to check this out, I bounced off Max 3 times now because I find the GUI approach so tedious
Somewhat unrelated, but the number of times I have invoked Ableton as a metaphor of challenging the status quo is quite high. I was a Cubase user before Ableton showed up and completely upended the DAW world. And they've kept going.
This is just what I've been looking for. I never warmed to Max for Live for mods. But the extensions SDK I can get behind.
Also the fact that Ableton has stayed independent (and bought Cycling '74, maker of Max/MSP) is IMO critical to their ongoing success...Compare to how Native Instruments and iZoptope are mere rent-seeking shadows of their founders' visions since PE/VC took over.
One of the features that got me hooked on Ableton Live was how easy it was to do "analog style" audio recording of whatever you're hearing in realtime...not bounce, render, or sample to another device (it can do all of these too). For the master bus - just create an audio track, arm for recording and set input to "Resampling". Can do the same with any number of tracks/groups. This is critical to me for capturing ideas in realtime and continually reprocessing/resampling as I go.
I was astonished when I first started making digital music 20 years ago that this isn't a standard feature in every DAW. Some DAWs (REAPER, Bitwig, AudioMulch) do this as easily, others (Logic, Reason) have workarounds.
Native Instruments is bankrupt, unfortunately.
I've used the same metaphor for AI tools. The incumbents keep adding features to the old paradigm (like Cubase did). Then someone comes along and rethinks the interaction model entirely (like Ableton with Session View). AI tools are in that
transition moment right now — most are just adding AI to old workflows, not rethinking the workflow itself.
Wish we could get some native compatiblity with Linux. The closest I've gotten on NixOS was with Bitwig, with a simple compatability script I wrote: https://github.com/ArikRahman/Nixwig
A couple of times I've tried somewhat seriously to build "google docs for ableton" (meaning two people editing the same project on different computers, seeing each other's edits in realtime). Frustratingly I decided it was impossible to do a really good job of it back then. This sounds like it might finally make it doable!
Ha yeah I have considered the same. There’s not enough info exposed via the Python or Max APIs (or indeed this one) to sync all the state you’d care about so I think the only option would be syncing the actual als files (which are zipped XML) which means you’d only be able to sync at save points
We should talk - I'm building a new DAW with this in mind :)
Don't kick yourself. It's not possible with Google Docs either. All these collaborative document editors have been mostly gimmicks/wastes of time.
This is cool - feels great that there's a growing long-term incentive to implement open SDKs and APIs, for the sake of agent-forward prosumers, in the spirit of earlier internet stuff that used to do it but stopped.
Yes! Glad to see someone else having this thought. Will be interesting to see how it plays out
I've often felt as though the way to make a DAW that competes with Ableton today would be to build the entire UI around composable scripted modules.
Far too much of Ableton's secret sauce is hidden away behind Max for Live and top-tier pricing only features. This is a great step in the right direction.
There is zero "secret sauce" in max for live.
Ableton and Max are totally separate codebases, and "Max for Live" is just a ~VST interface between them.
I do agree that "scriptable Ableton" would be far better for production and sound design than Max, because they make all the hard parts easy: MIDI, sequencing, mixing, etc.
In Max, you have to build everything from scratch, every time.
I think we're talking past each other.
I don't own Max for Live. If I want to use it, I either need to upgrade to Ableton Suite for $500 or I need to upgrade to Standard and buy Max for Live separately (also $500).
There's a huge ecosystem of tools that are implemented as Max for Live packages which I cannot access because I haven't paid the toll.
I see that even this new Extensions SDK is only available to people who have paid for the full Suite edition.
I'd describe that as a market opportunity.
FWIW you should be "able to" get 2ndhand Ableton Suite licenses for significantly less...IIRC I paid ~$350 a few years ago.
Yeah. How does ableton handle the transfer? Do you mail them the transfer request, they generate a new key and mail it to the new owner?
>Far too much of Ableton's secret sauce is hidden away behind Max for Live
The other way around. Ableton exposes some internal modules to Max for Live as Max for Live modules.
What Ableton gets from Max for Live is not internals, but basically a few Ableton-only Max-built plugins, that could as well use VST underneath.
I answered this in a different branch of the thread, but you're kind of missing my point. I don't own Max for Live, so the large ecosystem of useful tools that I'd enjoy trying out is unavailable to me.
It's not about special powers, just being forced to pay the gatekeeper to the otherwise free/OSS ecosystem.
Max/MSP has always been a paid tool. There was never a situation when you were going to be able to participate without paying.
This sounds a little like you're complaining that you cannot watch all of the free Youtube content because you don't want to pay for the device that will display it.
That is... not a good analogy at all.
What it is, though, is a misguided attempt to move the goal posts on what I actually said, which is that a huge amount of the value of Ableton is gatekept behind paid addons.
If a DAW was structured like Blender or KiCAD and designed from the ground up to be extensible (or minimal!) then you wouldn't have any impetus to try to shame people who haven't paid a gate toll to execute software people have contributed to the public domain.
You're describing reaper. Super great for scripting
i could see this being something that AI takes a bite out of in the coming years
i've been making my own vst instruments and effects with faust, and codex knocks it out of the park; it's basically a trivial task
the only problem is that i have to use software that's external to DAWs. it's only a matter of time before this is first class in DAWs
Among the first examples they show Paulstretch for Live. I remember using Audacity to apply it in the past because it wasn't easily available in other DAWs :)
Try slowing the PSX opening sound by 5x to 10x, you won't regret it.
This is great to see. Not widely known, but it's already been possible to write Python extensions for Ableton using the LOM, which I was doing via ClyphXPro. But this looks easier!
Yeah, that was what got me into Live in the first place! Writing custom control surfaces in python from the reverse engineered stuff.
Nice to see they have put out options they will officially support though. I do admire that instead of saying "no you can't" they just said "we know those open python example scripts our there and we won't comment on them". :-)
I hate max so much. I wish this could extend to the push 3, I've been working on an orchid clone.
It would be TRIVIAL in any other language, but noooo, I have to write a fucking max patch and deal with their trash visual syntax and runtime.
FWIW you can bypass quite a lot of the Max visual stuff by using the JS support, which now finally supports modern JS (the v8 object). A lot of the LOM (Live API) is exposed there though you will no doubt need to use Max objects for some stuff. They also have web UI support with jweb.
I get the frustration coming to Max as a regular developer, but actually when I bothered to learn it was one of the most rewarding uses of time and I find it really quite fun to work in (and frustrating sometimes of course! But the JS support helps). You just need to forget everything you know about programming lol
>Extensions are built on the NodeJS platform, a free, open-source, cross-platform JavaScript runtime environment.
I applied for a job with them and proposed this exact thing about 8 years ago (got auto-rejected, I would've been very happy to work on it).
But I'm glad to see they finally did it.
I would imagine nearly every programmer who has ever used a DAW has thought “this would be cool to have its own scripting language.”
They already had Python. Mentioning an architecturally obvious idea in a job application is likely to read as insulting, because it presumes their engineers weren’t already aware of that possibility.
I'd love to read those cover letters then.
Then I can make a meaningful comparison.
You could already use Node through M4L. I'm not clear on what this adds that wasn't already possible.
With M4L you need to implement your feature in a device and add it to your project. My Ableton project template has a bunch of these on my main track. With extensions you use a context menu as the entry point which will hopefully be more lightweight. Hopefully they'll expose more of the object model over time and let us trigger these via keyboard/midi shortcuts.
M4L is basically a plugin sdk. It loads as a VST would (roughly), just with access to Ableton UI elements.
Ableton Extentions if a first class api to Live, kind of like AppleScript.
They made extensions first class, chose JavaScript as the primary language, and chose node.js as its runtime.
Woot, javascript in live, now we can have supply chain attacks in our daws; yay.