DigitalDopamine 13 hours ago

Loved playing with it! https://strudel.cc/?qVv8Cr0OD6cc

  • abhinavmir 10 hours ago

    I shed an actual tear. I dreamed of days like this. I got close, building a small language for generating generic music, but with decay, sawtooth and stuff? It's a functional DAW.

  • xrd 13 hours ago

    This is so incredible, musically, visually and didactically. Absolutely amazing. Absolutely amazing.

  • simonw 10 hours ago

    That demo is excellent. You can uncomment some lines at the bottom and hit alt+enter (or click the Update button) to add visualization effects too.

  • rodrigodlu 12 hours ago

    Wow, I started learning recently, I didn't know you can change the theme.

    Also this music brings really good vibes!

    I get more motivated when I can see it working directly and change some code here and there!

    Thanks for sharing.

  • alabhyajindal 11 hours ago

    Amazing! Though I can't get the theme to stop changing while the music is playing. Is there a setting I'm missing?

    • yayitswei 11 hours ago

      Looks like the theme changes are part of the arrangement (see lines 135-149).

  • mettamage 11 hours ago

    Well that song was my digital dopamine for the day. Couldn’t stop bobbing my head while in a busy train

  • smrq 11 hours ago

    That's absolutely sick. I love seeing a full arrangement like this as opposed to destructive live coding--that's cool too, but I don't really vibe with it as a workflow. Definitely taking some inspiration from this.

  • chrislo 11 hours ago

    Love this! Patterning the theme is such a great idea.

  • oceansky 6 hours ago

    Not recommended for people prone to seizures

  • dallen33 10 hours ago

    This is absolutely insane.

  • l0c0b0x 12 hours ago

    Great work! I'm saving this one (I have it in a loop rn on my big screen).

  • mazswojejzony 12 hours ago

    This is great! I'm not really into electro, but I really like this one!

  • butlike 10 hours ago

    You made an entire performance. Good, good job

    • squarefoot 8 hours ago

      I found that annoying on the editor, but if used on a 2nd screen to build graphics programmatically (fractals, etc), or via an external port to drive RGB LEDs arrays or matrices, results could be spectacular. Imagine fractals driven by music or a giant spectrum analyzer made of LED strips.

  • ubidefeo 10 hours ago

    love how you change the style as it plays. the custom font is a nice touch :)

  • josittas 13 hours ago

    Very cool! Thank you for sharing :)

  • globalnode 6 hours ago

    That made me smile, well done and thanks Lennard! (do recommend setting colors = False though)

  • lioeters 13 hours ago

    That was a lovely experience.

faxmeyourcode 13 hours ago

I've run across more and more strudel musicians (developers?) doing a kind of live coding performance art and posting clips on tiktok and reels. It's really entertaining to watch. I've been meaning to dabble in it.

  • ashwindharne 11 hours ago

    I went to a basement party/rave recently where the DJ was live-coding strudel, was incredibly cool to see in person. people would watch them type out new lines in anticipation of a beat drop

    Pretty cool to see this post, I had no idea where to find more info about it!

  • grantmuller 11 hours ago

    Another live-coding environment that is quite nice (Haskell-based) is TidalCycles: https://tidalcycles.org

    I wrote a whole album of material about 10 years ago with it, just remastered/re-released it. It's a fun way to write music while on an airplane!

    • lomase 11 hours ago

      Strudel is TidalCycles but in javascript.

      • cpill 8 hours ago

        yeah, but TidalCycles doesn't have the interactive code that shows you what is playing or have inline sliders :P

        • venturecruelty 4 hours ago

          Strudel doesn't have all of the advanced features of TidalCycles. It really just depends on what you need. Strudel is easier to get started with, and definitely more visual/immediate, but TidalCycles has the full power of Haskell, longer history, and more advanced tooling. Either way, it's really nice to see people getting more involved in programmatic music, regardless of which tool they use. :)

  • venturecruelty 4 hours ago

    Algorave definitely seems to be having a moment! I know the scene has been around for a while (live chiptune shows have been a thing for years), but it seems like the Strudel-specific live coding shows are rapidly becoming popular. I love to see it. As someone who likes both programming and music, it's awesome to see people mix both and get fantastic results.

  • xdc0 12 hours ago

    It's fun to watch and somehow more approachable to me than a big program with lots of menus and virtual knobs.

  • ge96 9 hours ago

    Would be curious licensing on music you produce with it eg. can you use it, record the session then put it on YT no copyright.

simonw 10 hours ago

I've been seeing a few links to Strudel recently so I went digging to see how old the project is - looks like it launched in April 2022 https://loophole-letters.vercel.app/strudel

It came out of the same team as Tidal Cycles, a Haskell live-coding music tool which was first released around 2009. https://tidalcycles.org/docs/around_tidal/tidal_history/

  • pragma_x 5 hours ago

    IIRC, that team are also (now) live-music-coding veterans, which in turn has informed how Strudel is built. It's not just a project that does stuff, it's a pretty well crafted instrument that is ideal for these performances.

    As an engineer, I love letting the requirements shape the solution, but this is just on a whole other level.

  • Sammi 8 hours ago

    Such a good example of why everything is becoming js. Because it's where the users are. Anything that isn't in js will just languish comparatively.

    Everything is becoming js because everything is becoming js.

    • tormeh 8 hours ago

      Have you taken a look at how to install the Haskell variant? It's a full-on recipe, or a docker container. I'd take a desktop application over a website any day, but that was not on the menu. It was an SPA vs a devops exercise. Of course the SPA wins.

      • Sammi 8 hours ago

        Yes. The web wins on deployment every time.

        • nightski 7 hours ago

          Steam wins for games imho.

    • venturecruelty 4 hours ago

      Tidal Cycles is hardly languishing. Not everything needs a billion users and VC funding.

i_gumby 13 hours ago

There's also a neovim plugin for those who want to play around with this locally https://github.com/gruvw/strudel.nvim ; it essentially launches strudel in a browser but synchronizes the strudel and nvim editors.

EDIT: fixed link to not have trailing semicolon.

  • rodrigodlu 12 hours ago

    Is there a way (like a CSS rule or something similar) that when you look at the main strudel window, it only shows the piano rolls, punch cards, sliders, etc - but not the code?

    Maybe with just the comments? This would be killer, since I have dual displays, and on one I can just focus on the code, the other one can have all the visual stuff.

    I'm using this plugin, but having the code twice distracts me a lot (but I prefer the original neovim instead the integrated vim mode inside strudel).

    Thanks in advance!

    • ebertucc 12 hours ago

      I'm not using the plugin, but this hides the code in the browser:

      .cm-line span { outline: none !important; color: transparent; background: transparent !important; }

    • i_gumby 12 hours ago

      I've only just started playing around with it, so I don't know enough about it unfortunately. You could open an issue against the repo; the plugin owner might be able to answer your question.

raphar 13 hours ago

I posted this link, some days ago:

Coding Trance Music from Scratch (Again) [video]: https://www.youtube.com/watch?v=iu5rnQkfO6M

It´s a well done programming and music performance

  • venturecruelty 4 hours ago

    A slightly older Switch Angel trance video is how I learned about Strudel/TidalCycles: https://www.youtube.com/watch?v=GWXCCBsOMSg. Her narration over top makes it the perfect trance track. "More chaos brings more power. More power brings more control." I desperately want a clean sample of that.

  • canyp an hour ago

    Tangent, but...is that her real/natural voice? It's like studio-level female vocals for Hardstyle without even trying. I am mesmerized.

    Edit: it looks like she has a filter on. I'm an audio noob so I can't tell.

  • a1ff00 12 hours ago

    +1 Switch Angels performances

    • Jarmsy 11 hours ago

      Increase the duck attack!

      • venturecruelty 4 hours ago

        "The key... the key... it has to be... G... (minor)."

  • danvoell 11 hours ago

    this is awesome. The only code instruction video instructions that I have watched that doubled as a song. At first I thought it was the Euro dance hall lyrics and then I realized it was actually the code instructions.

  • illwrks 7 hours ago

    This is an excellent example. It also highlights how if I tried this it would sound terrible as I lack have vocabulary to describe what I want, and how that relates to the code.

  • l0c0b0x 12 hours ago

    Yeah, thanks for both posts. I love the narration with the live coding (like a conversation with voice and code). If I can get to that level, I'll die a happy man.

  • mbStavola 10 hours ago

    Every time I watch one of her performances, I smile when she says "... with the scope."

pragma_x 5 hours ago

I've been following this project with great interest.

Quite possibly one of the most interesting things is just how competent the REPL is. It does some things that no other programming environment does in a prompt, all centered around real-time processing:

- All code in the prompt is being constantly evaluated - What parts of expressions are currently in use are highlighted - Visualization widgets sit side-by-side with the code

That last one is playfully rendered as pseudo-TUI "graphics", but is also presented with no borders or chrome around it. That's in sharp contrast to notebooks like Jypyter or Mathematica. They use minimal screen real-estate which also minimizes scrolling. If you look at videos of using this live, the ability to navigate the REPL quickly is crucial for performances.

So it's a lot like a kind of step-wise debugger, only more minimalist and moving at the (slow) speed of the music.

Ever since seeing Strudel, I've wondered what various programming sandboxes would be like if they could visually demonstrate operations in slow-motion.

arvinsim 34 minutes ago

I have just discovered Strudel last month. Even as an owner of Ableton, there is just something compelling about coding music in.

WhyOhWhyQ 10 hours ago

Let me introduce you to a good time.

Step 1: https://strudel.cc/workshop/getting-started/ . Click play on coastline" @by eddyflux

Step 2: Listen for a while

Step 3: setcps(.75) -> setcps(1.5)

Step 4: Listen :)

That is the extent of my strudel knowledge, but damn this is cool.

  • WhyOhWhyQ 10 hours ago

    I was trying to make it automatically randomly choose between the normal speed and twice speed after a long time. I think appending

    .fast(chooseCycles(1, 2).slow(128))

    at the very end does it. But I'm not actually sure. Would a strudel user mind informing me how this is done? Also, I was hoping to make it automatically shift the key, but I couldn't figure it out.

  • a_t48 10 hours ago

    Sadly doesn't even run at all on safari. "Importing a module script failed." :(

    • Towaway69 7 hours ago

      Also worked find on my Safari 18.6

      uBlock/uMatrix perhaps? At least that was for me the issue on Firefox.

    • artimaeis 8 hours ago

      Running fine here on Safari 26.1 (Tahoe 26.1).

dr_kiszonka an hour ago

Strudel is great! But... are these really chords?

note("c4 e4 g4 c5").sound("triangle")

  • IAmGraydon 15 minutes ago

    What do you mean? Yes that is a C Major chord.

ubidefeo 11 hours ago

I have submitted a talk for FOSDEM26 on Live Coding Music and Hardware with Strudel and MicroPython. Hope to get in :)

  • Archit3ch 2 hours ago

    MicroPython? Are you doing digitally-controlled analog? :)

  • venturecruelty 4 hours ago

    Good luck! That sounds like a fantastic talk. Please do submit a post if you end up doing it. :D

badmonster 9 hours ago

Live-coding music environments like Strudel are powerful because they externalize the creative process. When your composition is visible code, you can iterate faster, debug musical ideas, and even collaborate in ways traditional DAWs don't support. Code-as-instrument is genuinely innovative.

mvkel 11 hours ago

I was excited to see this, but then realized only chapter 1 is done out of what ultimately will/should be a 25 chapter tome.

Strudel docs leave something to be desired as well.

What I've found to be the most useful so far is to ask an LLM to make a line of whatever: a beat, a synth, etc., tweak it, then layer it.

It gives a really good sense of how to architect a song file, which is missing from the little snippets in the strudel docs

wouterjanl 10 hours ago

Allow me to use this post to give big kudos to the maintainers of Strudel for having put together a brilliant set of official docs. I found them incredibly well put together and hence really useful to learn. I have played around with Strudel many evenings and I am always amazed about how intuitive Strudel is to create beats and sounds, to the point that I prefer to create music in Strudel over the established DAW software. I would love for there to be a good bridge between producing sounds and beats with Strudel code and structurering and mastering an entire track. This is missing in Strudel since it’s clearly build for a live coding environment. Any tips from users about ways or tools to make this bridge are always welcome!

bobim 4 hours ago

True that compared to FoxDot, Sardine or Tidal, the syntax and visualization are just making the whole thing a real pleasure to use.

But this is way too taxing for my linux boxes that are ending stuttering quite badly sometimes. Are you all using macs or something?

  • AnyTimeTraveler 2 hours ago

    Weird. My android phone is 3+ years old and was not a flagship when I got it. It had a little problem with stuttering on more complex examples. It sounded like it was running out of things that can play at the same time, but scrolling was still smooth. It didn't feel like it was pinning my phone's cpu. On my laptop, it didn't break a sweat with firefox and pipewire. Are you sure it's not a config issue?

proc0 5 hours ago

Love Strudel, trying to learn it but inevitably you also need some musical foundation. It's a fascinating blend of specialties. Also I found AI is complete garbage at generating Strudel. Here is my weak attempt at Beethoven:

<pre> const SCALE = 'C#:minor' const CPM = 56 const SOUND = 'piano'

$: arrange( [4, n("<-7, 0>.25")], [4, n("<-8, -1>.25")],

  [2, n("<-9, -2>*.5")],
  [2, n("<-11, -4>*.5")],
  
  [4, n("<-10, -3>*.5")],
  
  [4, n("<0, -3, -7>*.25")],
  [4, n("<-1#, -3, -8#>*.25")],
  
  [2, n("<-2, -9>*.5")],
  [2, n("<-6, -13>*.5")],
  
  [4, n("<-3, -10>*.5")],
  
  [4, n("<0, -7>*.25")],
).sound(SOUND) .scale(SCALE) .cpm(CPM);

$: arrange( [8, n("4 7 9")],

  [2, n("5 7 9")], 
  [2, n("5 8b 10")],
  
  [1, n("4*.1 6# 10")], 
  [1, n("4 7 9")],
  [1, n("4 7 8")], 
  [1, n("3 6# 8")],
  
  [1, n("0 2 5")],
  [2, n("2 7 9")],
  [1, n("2 7 9, 11 - - 11")],
  
  [1, n("2 8 10, 11 -")],
  [2, n("2 8 10")],
  [1, n("2 8 10, 11 - - 11")],

  [1, n("2 7 9, 11 -")],
  [1, n("2 7 9")],
  [1, n("1 7 10, 12 - -")],
  [1, n("1 7 10")],

  [1, n("2 4 9, 11 - -")],
  [1, n("2 4 9")],
  [1, n("3 4 8, 10 - -")],
  [1, n("3 4 8, 13 - -")],

  [1, n("2 4 9, 9 -")],
  [3, n("2 4 9")],
).sound(SOUND) .scale(SCALE) .cpm(CPM);

</pre>

dfltr 10 hours ago

Strudel is dope and a ton of fun, but every single piece of its interface seems determined to confuse people who already know music theory and composition.

That's not really a point against it, it's a great tool and it's a ton of fun, but I wish there was a way to use it that at least kind of sort of mapped back to traditional music notation, especially rhythm notation.

  • pierrec 9 hours ago

    It would be unergonomic, if not painful, to use a western classical approach to rhythm in a programming environment. Alex McLean, the main author of Tidal/Strudel, is very much into Indian classical, and this is reflected in the approach to rhythm. IMO this is an good choice, and people who know music theory and composition should feel right at home, assuming we're talking about the right theory.

    When it comes to pitch (and I guess we agree on this) Strudel is firmly on the western traditional side. It generally assumes 12-tone equal temperament, uses ABC notation, has built-in facilities to express chords using their classical names...

    Meanwhile I'm over here programming music where I express all frequencies as fractions or monzos. I find this better suited to a music programming environment, but this might be more personal.

jarth9 11 hours ago

Strudel is my favorite music coding environment. I mostly play on acoustic instruments but coding music has been really helpful as I try to learn music theory. Being able to just play in the browser without setup helps me focus on the music and less on fiddling with the tool. And it supports vim key bindings!

oceansky 6 hours ago

I've been trying to compose music with Strudel after some years attempting to play the guitar and the piano.

This resource is very helpful

macmac 11 hours ago

I love this approach to learning music.

A nitpick: Isn't the below statement wrong? I thought "RolandTR909" was the name of the soundbank which is used for both bd and sd?

"bd is bass drum (also called kick-drums), sd is snare drum. RolandTR909 is the name of the sound."

rfl890 8 hours ago

Did anyone else think this article was gonna teach you how to play music using strudel (the food) somehow?

zitterbewegung 12 hours ago

Strudel is a great tool and is helping me to make EDM from scratch. There are good tutorials and music that is easy to get started or to make something really interesting.

bibimsz 6 hours ago

when AI takes over the world it will communicate with itself with a tonal language communicated in Strudel