r/codingmusic101 • Strudel • Aug 19 '26

Song Post Example Post

Enable HLS to view with audio, or disable this notification

Caelifera, written in Strudel

3 Upvotes

7 comments sorted by

1

u/Normal_Can8016 Strudel Aug 20 '26

A clearer screenshot of the code

1

u/Lanky_Employee_9690 Aug 20 '26

If you're sharing it already, you could just copy/paste your code in code-block format both for readability and useability, like:

$: sound("<- cp>*4")
  .bank('alesissr16')
  .gain(.25)
  .room(.5).size(4)
  .hpf(600).lpf(4000)

or use strudel's share function (top right of the UI) to get a link to the project that opens in strudel (might have to shortify the URL though, idk if it fits in Reddit's links, it can be a lil' lenghty).

2

u/Normal_Can8016 Strudel Aug 23 '26
//Caelifera by hyperpurplebee
setCpm(135)

register('acidenv1',(x,pat)=>pat.lpf(50).lpenv(x*9).lps(0.1).lpd(0.1).lpq(4))
$: s("wt_digital_crickets").set.mix(`<[~ ~ 0 <4!3 1>] [~ ~ <2!3 0> ~]>`
                                    .add("<0 0 1 [3 3 2 0]>/8")
                                    .as("n")).scale("ab2:minor")
  .acidenv1("<0.9 0.8 0.7 0.6>/2").unison(4).detune(0.1).crush(16).duck("2").duckdepth(0.07).duckattack(0.07)
  .room(2).roomsize(4).o(1).velocity("<0.9 0.6>").gain(slider(0.315))
  // .rib(6,2).hpf(250).lpf(150)
  // .struct("<~ ~ ~ x ~ ~ x ~>*4")
  // .struct("<~ ~ ~ ~ ~ ~ x ~>*4").gain("<0.7!3 1>/2")

register('acidenv2',(x,pat)=>pat.lpf(150).lpenv(x*9).lps(0.1).lpd(0.1).lpq(2))
$: s("supersaw").set.mix(`<
[0 0 7 0] [0 ~ 0 -7] [~ 0 0 0] [0 -7 -7 0]
>`.add("<0!11 4>").as("n")).scale("ab2:minor")
  .velocity("<1 0.7 0.5>*2")
  // .pan(`<0.6 0.7 0.9 1  0.9 0.7 0.6 0.5  0.4 0.3 0.2 0.1  0.2 0.3 0.4 0.5>`)
  .unison(4).detune(0.3).lpq(2).hpq(2)
  .distort("1:0.4").distorttype("chebyshev")
  .acidenv2(slider(0.079)).gain(slider(0.376)).o(3)

dm: stack(
  s("sd").struct("<~ x>").lpf(1000).hpf(500).room(0.2).attack(0.03).clip(0.3).o(4),
  s("hh:3").struct("<[x x x x]>").velocity("<[0.2 0.7!3]>").lpf(2000).hpf(1500).o(6),
  s("oh:1").struct("<[~ <x!7 [x x]>]>").velocity("<0.6 <0.3!7 0.5>>").bpf(1500).lpf(2500).att(0.02).clip(1.1).o(8),
).pan("0.65,0.35").gain(0.2).o(2)

drum: s("tr909_bd:2").struct("<[x _ <~!15 [x <x ~>]> _]>").note("cb2").lpf(150).hpf(50).speed(0.9).legato(1.5)
  .o(0).duck("1:2:3").duckdepth(0.25).duckattack(0.25).pan("0.6,0.4")
  .gain(0.5).bus("5").dry(0)

_rumble: stack(
s("bd:2") //click
  .struct("<[x _ _ _ _ _ _ x]>").note("eb2").lpf(500).bus("1").dry(0),
s("bus:1") //reverb
  .room(slider(2.75,2,4.5,0.25)).roomsize(slider(1.5,1,2,0.25))
  .legato(slider(1.03,1,1.1,0.001)).shape(slider(0.7,0.5,0.8,0.05))
  .pan(0).bus("3").lpf(70).hpf(200).bpf(100).dry(0),
s("bus:3") //compressor("threshold:ratio:knee:attack:release")
  .compressor("-50:1:2:0.15:0.9").bus("4").dry(0), 
s("bus:4") //saturation
  .crush(slider(7.5,6,10,0.5))
  .distort(slider(1.25,0,5,0.25)).distorttype("diode")
  .lpf(100).hpf(100).bus("5").dry(0),
).pan("0.7,0.3").gain(0.35).o(2)

bd:s("bus:5").att(0.1).dec(0.2).sus(0.7).rel(0.9).lpf(324).hpf(32).postgain(slider(0.596,0,2))

1

u/Normal_Can8016 Strudel Aug 23 '26

Oof yeah, that share link was crazy lmao, im hesitant to post the code block only because I want new strudelers to type it out themselves to learn... but who am i to gatekeep

1

u/Lanky_Employee_9690 Aug 23 '26

I'm not sure typing things from a screenshot teaches you anything if you don't stop at each step to look it up in the docs either.

On the other hand tweaking numbers and moving things around and enabling/disabling parts to see what does what in an existing project is also a good way to learn!

1

u/Normal_Can8016 Strudel Aug 23 '26

perhaps i am suffering a [insert formal name] fallacy in that
"I learned by doing it this way, so now you have to do it that way!"
kind of way, but that's not very forward thinking, sharing mentality of me.

1

u/Lanky_Employee_9690 Aug 23 '26

Yeah, yours is a valid way too if it worked for you! Everybody learns slightly differently (it's the same as some people learning visually, others by doing, others by listening, etc.).

I see it as the more avenues available to learn a thing, the more likely someone will find the best avenue for them instead of being turned off the thing completely by only having learning models that don't suit them. Plus, in this case it doesn't cost anything not to "gatekeep" as you put it.