Readit News logoReadit News
amanzi · 4 months ago
There are some pretty amazing live coding sessions of Strudel on YouTube. Some examples:

https://www.youtube.com/watch?v=HkgV_-nJOuE

https://www.youtube.com/watch?v=HkgV_-nJOuE

mettamage · 4 months ago
Switch Angel is awesome. She also has some Instagram tutorials.
fragmede · 4 months ago
Dj Dave is the other creator I've found doing strudel content.

https://youtu.be/E1K6Sv-oIb0

guskel · 4 months ago
So random seeing her mentioned here today. I just discovered her yesterday, saw a Youtube short where she's operating a Eurorack synth at Switched On in Austin, TX. It's a cool little synth shop that's worth checking out if you're ever in town. Looks like they've moved locations recently though.
jkingsman · 4 months ago
This was one of my favorites -- with the voice filter the narration feels like it's part of the song which I found especially fun.

https://www.youtube.com/watch?v=GWXCCBsOMSg

lyu07282 · 4 months ago
That channel has been all over my recommendations, it's awesome so much skill!
QuantumNomad_ · 4 months ago
You accidentally pasted the same link twice. What was the second link meant to be? Would like to see it also :)
amanzi · 4 months ago
DJ Dave - someone else posted a link above.

(silly copy/paste error!)

tines · 4 months ago
Someone should remix the audio in this video, including vocals.
raffael_de · 4 months ago
Strudel is a JavaScript port of TidalCycles (Haskell). While TC uses SuperCollider for the synthesis, Strudel uses superdough which seems to be a custom implementation. I'm currently learning SuperCollider sclang and waiting for a version upgrade to have a reason to submit it here - usually some of the discussion is quite insightful. Anyway sclang is the PHP of music - just uglier and less consistent. But it's also powerful and and quite fun.
awongh · 4 months ago
In the supercollider forum there is talk about a wasm port of supercollider: https://scsynth.org/t/webassembly-support/3037

I wonder if that could be used at some point.

nucleogenesis · 4 months ago
I was goofing around with TidalCycles and really wanted to use it for the Haskell syntax but Strudel’s interface is so slick I suffer the JS syntax.

Thanks for mentioning superdough I hadn’t seen it anywhere while I was playing with all of the above. Piqued my curiosity :)

jsmith45 · 4 months ago
Might be worth checking out Tidal's Mondo Notation, which while not quite Haskell syntax is far closer to it, being a proper functional style notion, that unifies with mini notation, so no need for wrapping many things in strings.

Looks like this:

    mondo`
    $ note (c2 # euclid <3 6 3> <8 16>) # *2 
    # s "sine" # add (note [0 <12 24>]*2)
    # dec(sine # range .2 2) 
    # room .5
    # lpf (sine/3 # range 120 400)
    # lpenv (rand # range .5 4)
    # lpq (perlin # range 5 12 # \* 2)
    # dist 1 # fm 4 # fmh 5.01 # fmdecay <.1 .2>
    # postgain .6 # delay .1 # clip 5

    $ s [bd bd bd bd] # bank tr909 # clip .5
    # ply <1 [1 [2 4]]>

    $ s oh*4 # press # bank tr909 # speed.8
    # dec (<.02 .05>*2 # add (saw/8 # range 0 1)) # color "red"
    `
If actual tidal notation is important, that has been worked on, and would look like:

    await initTidal()
    tidal`
    d1 
    $ sub (note "12 0")
    $ sometimes (|+ note "12")
    $ jux rev $ voicing $ n "<0 5 4 2 3(3,8)/2>*8"
    # chord "<Dm Dm7 Dm9 Dm11>"
    # dec 0.5 # delay 0.5 # room 0.5 # vib "4:.25"
    # crush 8 # s "sawtooth" # lpf 800 # lpd 0.1
    # dist 1

    d2 
    $ s "RolandTR909_bd*4, hh(10,16), oh(-10,16)"
    # clip (range 0.1 0.9 $ fast 5 $ saw)
    # release 0.04 # room 0.5
    `
Only the actually implemented functions, and implemented custom operators are available even when that works, so not all tidal code can necessarily be imported.

But it is currently broken on the REPL site because of https://codeberg.org/uzu/strudel/pulls/1510 and https://codeberg.org/uzu/strudel/issues/1335

1313ed01 · 4 months ago
When I last played with SuperCollider I used Overtone, that wraps everything in a Closure API. With that you use s-expressions instead of sclang to define your sounds. I am not sure what the state of Overtone is these days, but there seems to still be some activity: https://overtone.github.io/
zahlman · 4 months ago
sclang came across to me as something like a hybrid of Smalltalk and Ruby. It's indeed very "inconsistent" and weirdly familiar-yet-alien, but I would consider it a lot more elegant than PHP.
awongh · 4 months ago
This is cool because a lot of the current tools are a bit old and I feel a bit like they suffer from NIH (not invented here) syndrome, where what is actually needed is for things to just be in javascript.

This wasn’t possible as much when the last gen of tools came out (sonic pi etc) but I think the time is right.

The next iteration that would be cool is a true two-way interface between the visualizations and the code. Right now the slider is a really awesome element, for example. I think Bret Victor would be proud.

lovehashbrowns · 4 months ago
I'm not very musically inclined but this is what I was able to make:

$: arrange( [4, "<sh09_bd>(4,8)"], [4, "<sh09_bd>(4,8)"], [1, "<sh09_bd mfb512_sd>(6,6)"] ).s().fast(2).layer(x=>x.add("0,2")).gain(".4!2 .5").phaser(2).phasercenter("<4000 800 4000 4000>")

$: s("gm_tinkle_bell").distort("<1 2 1 2:.5>").crush("<8 8 8 6 6 8 8>").chop(4)

$: arrange( [2, "<c4 e4 g4>(3,8)"], [1, "<f4 a4 c5>(3,8)"], [1, "<c4 e4 g4>(3,8)"] ).note().chop(4).fast(4).distort("<3:.5>").phaser(4).phasercenter("<800>").fm(4).fmdecay("<.05 .05 .1 .2>").fmsustain(.4)._scope()

I don't know what half this stuff does but it was still so much fun and this is probably one of my favorite projects ever. What made it most fun for me is that the reference docs are in the page so it's really easy to pick something at random and just see what it does.

chwzr · 4 months ago
Oh and there is flok[1] which combines the strudel repl with visuals from hydra. Also there are sclang and other algorave environments available. Everything is synced (with crdts i guess) so it’s live collaborative. Which is nice to remotely jam with friends

[1] https://flok.cc

yaxu · 3 months ago
You can also use hydra in the standard strudel repl, and vice-versa.
mkesper · 4 months ago
And quite new dilber.io: https://github.com/Omodaka9375/Dilber
fragmede · 4 months ago
Also Gibber: http://gibber.cc/
polotics · 4 months ago
zahlman · 4 months ago

  Uncaught (in promise) ReferenceError: AudioContext is not defined
    ln https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
    W https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
    un https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
    c https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
What would I need to change in my security settings for this?

ako · 4 months ago
This being text based makes it really easy to have AI generate the music. Now waiting for Strudel agent that will transcribe music into strudel notation.
zahlman · 4 months ago
I like doing my own composition, but AI being able to just do sound design from a prompt ("hey can you make a synth that sounds like the lead from XYZ song but buzzier, add parameters to control ABC") would be revolutionary.
fragmede · 4 months ago
Yes that's possible. Here's Sonnet 4.5 for your request: https://claude.ai/share/5672940d-99b3-4b01-9a9f-fb22ca59fa41

What the implications are for music, I don't know.

dragonwriter · 4 months ago
> This being text based makes it really easy to have AI generate the music.

It's already really easy for AI to generate music without using text as an intermediate format.

noman-land · 4 months ago
Before long we can get agents to listen to the music, too. Then based on our prior data can tell us how much we liked it.
fragmede · 4 months ago
That'll save me so much time listening to music!