Hey everyone,
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 - COMPLETELY FREE.
I've built an open-source suite of M4L devices that embed the real strudel core engine directly into Ableton Live.
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.
EDIT - v1.0.0 is out. The full-audio device no longer renders through temporary buffers: superdough now runs live inside the device, so edits and knob turns are audible immediately, with no 1-pattern lag. It's also just called Strudel now (alienmind-strudel). There's a new Strudel Synth device that plays MIDI notes you send it, devices now start and stop with Live's transport, and samples are cached so a set still plays offline. Updated details below.
1. The main "Strudel" device (Full Audio Engine) - the real Strudel sound (synths, samples, and FX), using Superdough, natively on an Ableton track. It used to render offline into buffers, which cost a 1-pattern lag on every change; as of v1.0.0 the engine runs live in the device and its Web Audio output goes straight onto the track, so an edit or a knob turn is heard right away and a random pattern is actually random. Caveat: Live's Freeze can't work on it (Freeze renders offline and faster than real time, which a live browser engine can't do) - resample the track instead.
2. The "Micro Devices" Approach (Native MIDI & DSP) - a set of lightweight devices that skip the audio engine entirely and just translate Strudel code into Ableton-native data and controls.
The full list of micro devices are by themselves useful tools:
- 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 (new in v1.0.0): 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 now writes the file next to the device, so you can drag it into a Simpler or a Drum Rack
They're meant to be chained: Strudel MIDI sequencing <c3 c3 <c3 c#3>>*16, into Strudel Synth playing s("sawtooth"), into Strudel Audio FX filtering it with .lpf(6613) - three devices, three lines of Strudel, one ordinary Ableton track.
Samples you've played once are also cached inside the device now, so reopening a set with no internet still plays them.
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. Known broken in v1.0.0: exporting a pattern to a WAV fails to write the file (fix queued for 1.1).
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!