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.
I made Lambda Musika[0][1] a long time ago and its elevator pitch is literally "Lambda Musika, the functional DAW" (as in functional programming).
Check the teal button at the bottom for other examples!
I don't use it that much anymore (Strudel's language is truly expressive) but I still reach for it when I want to do sound design, since Strudel is more like a sequencer (where Lambda Musika lacks).
SwitchAngel always makes their songs live so I never got it, but now I understand.
Coding Trance Music from Scratch (Again) [video]: https://www.youtube.com/watch?v=iu5rnQkfO6M
It´s a well done programming and music performance
She is using https://strudel.cc/
I learned it's more important to know how the big sound pieces fit together and what you can do by tweaking them. Have many, many different versions of the big pieces doesn't really matter.
I also came away wishing that Bitwig had a strudel mode. Every time anyone does anything in the grid, they'd be better off with a strudel equivalent. I think.
Edit: it looks like she has a filter on. I'm an audio noob so I can't tell.
https://youtu.be/iJUNznsc4JI?t=168
She did a lot of live EDM parties during the peak Mallorca et al party island times.
EDIT: fixed link to not have trailing semicolon.
Now with no added punctuation!
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!
.cm-line span { outline: none !important; color: transparent; background: transparent !important; }
Note that there is also a feature to inject your own custom CSS into the page.
You can also run in headless mode to not launch the browser window. Hope it helps :)
She's using a live computational notebook as an instrument.
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."
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
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.
uBlock/uMatrix perhaps? At least that was for me the issue on Firefox.
.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.
You can change the global tempo with something like
.cps("[0.75|1.75]")
and make it happen less often like
.cps("[0.75|1.75]/8")
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.
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.
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/
Everything is becoming js because everything is becoming js.
Javascript runs on ~70% of all devices worldwide.
As an engineer, I love letting the requirements shape the solution, but this is just on a whole other level.
Edit: oh right! Also the toplap documentary from 2005 has some actual video of early live coding performances from this community. https://archive.org/details/toplap-documentary
https://strudel.cc/#CnNldGNwbSg3Mi8yKQoKbGV0IGJhc3MgPSBub3Rl...
This resource is very helpful
<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>
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.
But this is way too taxing for my linux boxes that are ending stuttering quite badly sometimes. Are you all using macs or something?
Chromium is better at it than Firefox though.
Maybe this 5800X3D needs a buff up...
Maybe the issue is you touched too much?
A 5800X3D is freaking power house. It's not a hardware issue. You can run "fast trance" on a laptop twice the age of your CPU.
> How to Synthesize a House Loop[0]
[0]: https://loopmaster.xyz/tutorials/how-to-synthesize-a-house-l...
note("c4 e4 g4 c5").sound("triangle")
I think OP's point is that the very definition of a chord is a bunch of notes played at the same time.
This might better be described as arpeggiating C#m second inversion or even C#m/G# in the right over C# in the left...
This is getting possibly-weird but you could call it an arpeggiation of G#sus4(#5)/C#
This may be a pedantic clarification, but that is the definition
In the eyes of the Common Practice two simultaneous notes are not chords; in rock they most definitely are; in EDM you don't even care, since timbre is all that matters; in jazz you'd say "it depends" (e.g. might even be a triad with an omitted 5th... depending on context!)
Music theory is too post-hoc.
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.
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
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
It is usually worth trying the dev version at: https://warm.strudel.cc/
although I think that's close to the live version at the moment.
faxmeyourcode•2mo ago
xdc0•2mo ago
grantmuller•2mo ago
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•2mo ago
cpill•2mo ago
venturecruelty•2mo ago
ashwindharne•2mo ago
Pretty cool to see this post, I had no idea where to find more info about it!
ge96•2mo ago
venturecruelty•2mo ago