example.com/path/to/article
000 points · username · 0 hours ago
example.com563 points · 136 comments · 9 months ago · terryds
DigitalDopamine
faxmeyourcode
simonw
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/
i_gumby
EDIT: fixed link to not have trailing semicolon.
raphar
Coding Trance Music from Scratch (Again) [video]: https://www.youtube.com/watch?v=iu5rnQkfO6M
It´s a well done programming and music performance
neom
Here's the fork on GitHub: https://github.com/VibesDIY/strudel
Here's a preview of what it would look like when merged: https://strudel.use-vibes.com/
Here he is playing around with the preview: https://www.youtube.com/watch?v=0oJhnkWDafM
wouterjanl
WhyOhWhyQ
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.
ubidefeo
stagas
How to Synthesize a House Loop[0]
[0]: https://loopmaster.xyz/tutorials/how-to-synthesize-a-house-l...
proc0
<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>
mvkel
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
pragma_x
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.
mclau153
kimjune01
hamasho
dennis16384
DJ_Dave live events are the best illustration for all of it. If you love electronic music, ever touched any generative art, and know basic coding this is for you.
toboramai
ubidefeo
dfltr
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.
arvinsim
dprophecyguy
https://strudel.cc/#CnNldGNwbSg3Mi8yKQoKbGV0IGJhc3MgPSBub3Rl...
jarth9
jquaint
I find I get close to something ready to perform... but then the webapp starts struggling and I find myself back at the drawing board.
I get the sense I'm not using it right and making the DSP work much harder than it needs to :P
[deleted]
stuhlmueller
macmac
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."
bobim
But this is way too taxing for my linux boxes that are ending stuttering quite badly sometimes. Are you all using macs or something?
dr_kiszonka
note("c4 e4 g4 c5").sound("triangle")
zitterbewegung
caliweed
danvoell
oceansky
This resource is very helpful
mberning
dekhn
rob74
DevAhmadBilal
rfl890
bibimsz