Tap the play button โ browser audio needs exactly one tap, then it runs on its own.
const arp = note("<[c3 g3 b3 e4 g4 e4 b3 g3] [a2 e3 g3 c4 e4 c4 g3 e3] [f2 c3 a3 c4 e4 c4 a3 c3] [g2 d3 b3 d4 g4 d4 b3 d3]>")
.slow(4)
.attack(.02).sustain(.18).release(.5)
stack(
note("<c1 a1 f1 g1>").slow(4)
.s("sine")
.attack(6).sustain(14).release(7)
.gain(.55)
.color("#1d1712"),
note("<[c2,g2,b2] [a1,e2,g2] [f2,c3,e3] [g2,d3,b2]>").slow(4)
.s("supersaw")
.attack(4).sustain(12).release(7)
.lpf(sine.slow(16).range(160,340))
.pan(sine.slow(11).range(.42,.58))
.gain(.2).room(.3).size(.92)
.color("#8e2438"),
note("<[e3,g3,b3] [e3,g3,c4] [f3,a3,c4] [d3,g3,b3]>").slow(4)
.s("tri")
.attack(5).sustain(13).release(8)
.lpf(sine.slow(13).range(420,900))
.pan(sine.slow(9).range(.5,.62))
.gain(.14).room(.4).size(.95)
.color("#2a4d8f"),
arp
.s("tri")
.lpf(sine.slow(8).range(900,2600))
.pan("<.44 .56>")
.gain(.26).room(.35).size(.9)
.delay(.25).delaytime(.375).delayfeedback(.32)
.color("#d9a441"),
arp
.add(-12)
.s("square")
.lpf(sine.slow(10).range(300,680))
.pan(.36)
.gain(.1).room(.3).size(.9)
.color("#8a5a26"),
note("<g5 e6 a5 b5 a5 c6 b5 d6>").slow(2)
.s("sine")
.attack(2).sustain(3).release(5)
.pan(sine.slow(7).range(.3,.7))
.gain(sine.slow(9).range(.03,.1))
.room(.6).size(.95)
.color("#e6cfa0"),
s("bd(3,8)")
.speed(.85).lpf(200)
.gain(.46).room(.18).size(.9)
.color("#171310"),
s("rim(5,16)")
.gain(.14).pan(.6)
.delay(.18).delaytime(.375).delayfeedback(.28)
.room(.3).size(.88)
.color("#2f7a55"),
s("hh(7,32,<3 5 2 7>)")
.hpf(3200).gain(.05).pan(.38)
.room(.2)
.color("#cfd8e3"),
s("cp(3,16)")
.lpf(1500).gain(.06).pan(.55)
.room(.5).size(.92)
.color("#6d4aa8"),
s("sd(2,8)")
.speed(.5).lpf(520)
.gain(.13).room(.45).size(.95)
.color("#3d352c")
)