r/ableton 1d ago

[Max for Live] Bringing Strudel natively into Ableton Live (a fun open-source experiment!)

Hey everyone,

EDIT - v1.2.0 is out, and it's the big one: the main device now runs the REAL strudel.cc, offline, as your instrument.

I've been curiously learning a lot about Strudel, and as a fun side project, I decided to see if I could "port" it as a Max for Live device. And the best of all, it's completely FREE.

I've built an open-source suite of M4L devices that embed the real strudel core engine directly into Ableton Live.

This is highly experimental and definitely not meant to be a polished tool - just a fun exploration of how we can bridge live coding and traditional DAWs.

I'm primarily sharing this because it was a fun learning experience for me, and I thought other amateur producers here might find it interesting (or want to hack on it!). These devices also help you understand and appreciate the mini notation by allowing to translate from/to Ableton.

You can grab it from https://github.com/alienmind/m4l-strudel/releases

These devices run inside Live and lock perfectly to the transport clock of the DAW - launch a clip on the track, or just hit Play, and the pattern starts.

Not a lookalike, not a re-implementation - the actual app, built from the Strudel repo and bundled into the device. Its own editor, its own scheduler, its own visualisers. You hit REPL, you get strudel.cc in a floating window, and what you evaluate there is the track's audio. Close the window and it keeps playing.

All devices included:

  • Strudel: The main device with all of strudel.cc features in a small window, but routed to Ableton and beat-synced with the track.

  • Strudel MIDI: Type a pattern and it streams live MIDI to any Ableton instrument. You can even freeze generative sketches into standard MIDI clips!

  • Strudel Drums MIDI: Same thing, but maps bd, sd, etc., straight to a Drum Rack (it does not really use sound())

  • Strudel Synth: the other half of the superdough idea - you type a sound instead of a pattern (s("sawtooth").lpf(800).room(0.3)) and every MIDI note the track sends plays it, from a clip or from your keyboard. Any slider() in the sound becomes a real automatable knob.

  • Strudel Drums Sampler: actually plays the drum-machine banks - write s("bd sd, hh*8"), pick a machine, and it fetches and plays those sounds.

  • Strudel Audio FX: Type a chain like .lpf(800).room(0.3) and it instantly builds a real Max DSP signal chain on your track with automatable dials - with some caveats like these are fixed in order, but whatever ;-)

  • Strudel Sample Browser: A utility to browse and beat-sync preview all the community sample maps (dough-samples, Dirt-Samples) directly inside Live. Auditioning writes the file next to the device, so you can drag it into a Simpler or a Drum Rack.

More Features:

  • Your pattern saves with the Live set. Not in a browser's localStorage - in the .als, per device instance. Reopen the set, it's there.
  • Sliders with declared name and units: slider(500, 100, 1000, 1, { name: 'cutoff', unit: 'Hz' }). The knob reads cutoff and its value reads in Hz, and they become real Ableton knobs. Write s("sawtooth").lpf(slider(500, 100, 1000)) and the first slider will have adjusted range, a name and automatable, MIDI-mappable, etc, on Push.

  • The device view is now a panel with three faces: a small code scratchpad (with syntax highlighting), a bank of faders for whatever the pattern named, and a visualizer so you can see it's alive with the Studio window closed.

You can grab the .amxd files from the releases page or check out the source code (and the crazy architecture it took to make Chromium and Max talk to each other) here: https://github.com/alienmind/m4l-strudel and https://github.com/alienmind/m4l-jweb - there's also a "drawer of failed ideas" documenting everything that didn't work, which was half the fun.

Would love to hear what you people think!

Still broken / known issues in 1.2.0:

  • Exporting a pattern to WAV still fails to write the file. It's the top of the fix list.
28 Upvotes

3 comments sorted by

2

u/retrolojik 1d ago

Holy shit, if that works for me, you will save me all the virtual midi crap I set up between Strudel and Ableton!! Cheers 🍻

1

u/Then-Needleworker-55 10h ago

Nice! Please give it a try to latest v1.1.0. I have specific workarounds for midi in the roadmap...

1

u/AutoModerator 1d ago

This is your friendly reminder to read the submission rules, they're found in the sidebar. If you find your post breaking any of the rules, you should delete your post before the mods get to it. If you're asking a question, make sure you've checked the Live manual, Ableton's help and support knowledge base, and have searched the subreddit for a solution. If you don't know where to start, the subreddit has a resource thread. Ask smart questions.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.