5 ms·
Nice work on Scheme for Max! Much less impressive, but I spent a bit of time building a simple M4L device a while back using Typescript, and put some effort in
by tomduncalf 5y ago
Nice work on Scheme for Max!
Much less impressive, but I spent a bit of time building a simple M4L device a while back using Typescript, and put some effort into figuring out how to make TS play nice(r) with the M4L API (the JS support in Max is pretty basic).
I never got around to splitting it out into its own reusable module but it might be of interest to anyone interested in playing with scripting Ableton from Max, but not interested in learning Max’s visual programming paradigm: https://github.com/tomduncalf/livefader https://github.com/tomduncalf/livefader
Would be interested to know how Ableton’s scriptability compares to some other DAWs… I know Tracktion and Bitwig have some degree of JS support, and Reaper has its own scripting language. Personally I’d love it Ableton made the Python API etc. a bit more official but I can of course understand why they don’t.
- iainctduncan 5y agothanks! :-)
- PaulDavisThe1st 5y agoArdour uses Lua as its scripting language. But then of course, it's also 100% open source, so you don't have to rely on what is made accessible via the scripting language. You can just change the actual source. Of course, some people don't see things that way: https://discourse.ardour.org/t/is-open-source-a-diversion-from-what-users-really-want/102665 https://discourse.ardour.org/t/is-open-source-a-diversion-fr...
- gavinray 5y ago> "Would be interested to know how Ableton’s scriptability compares to some other DAWs… I know Tracktion and Bitwig have some degree of JS support, and Reaper has its own scripting language. Personally I’d love it Ableton made the Python API etc. a bit more official but I can of course understand why they don’t." There's nothing that really holds a candle to REAPER's scripting API. For interpreted scripts, it supports Lua/Python/Eel (simple C-like language): https://mespotin.uber.space/Ultraschall/Reaper_Api_Documentation.html https://mespotin.uber.space/Ultraschall/Reaper_Api_Documenta... It also has a C/C++ native extension API, and a community Rust API. I have translated the API into C# and D. https://github.com/justinfrankel/reaper-sdk/blob/main/sdk/reaper_plugin_functions.h https://github.com/justinfrankel/reaper-sdk/blob/main/sdk/re... https://github.com/helgoboss/reaper-rs https://github.com/helgoboss/reaper-rs The total number of (stock) API functions is ~1,000. Some core parts of REAPER itself like it's piano roll and media browser are written using it's own plugin API. It supports making audio plugins with GUI's that hot-reload and have a realtime variable + debugger panel using the Eel language (called "JSFX"). Many of the user-created JSFX are better than paid plugins I've used. https://www.reaper.fm/sdk/js/js.php https://www.reaper.fm/sdk/js/js.php The scripting community is very large and active. https://forum.cockos.com/forumdisplay.php?f=3 https://forum.cockos.com/forumdisplay.php?f=3 It has an in-DAW IDE with intellisense. There are multiple community GUI frameworks, including bindings to ImGui, etc. https://forum.cockos.com/showthread.php?p=2416501 https://forum.cockos.com/showthread.php?p=2416501 https://github.com/cfillion/reaimgui https://github.com/cfillion/reaimgui Really blows your mind. (I am familiar with the docs for Tracktion's JS API, know about Studio One's hush-hush JS scripting, Renoise's Lua scripting, Ardour's scripting, etc.)
- tomduncalf 5y agoWow, impressive, I had no idea the scripting capability was quite so deep. I’ll be reading up on this some more, many thanks for the great post and all the links!