Strudelify

Don't Touch Me

Dalla

KeyC majorTempo112 bpm
0:00/0:00
// Don't Touch Me — Dalla
// 112 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · fretless bass
const bass = note(`<
  ~@38 A B A B A B A B C D E ~ A B A B A B A B C F G@2 H@2 I J K I L M H@2 I J K I K N O P ~@2 Q ~@2 Q R P ~ Q ~ S ~@13
  H@2 I J K I L H@2 I J K I L H@2 I J K I L T ~@3
>`.pickRestart({
  A: "c2@3 ~@3 a1 ~ c2 ~ c2@2 ~@2 a1@2", B: "c2 ~ a1 ~ c2 ~@3 c3 ~@3 g2@3 ~", C: "f1@2 ~@4 f1 ~ f1@4 ~@4",
  D: "~@6 f1 ~ f1@4 ~@4", E: "~@6 g1 ~ g1@4 ~@4", F: "~@6 f1 ~ f1 ~ f1@4 ~@2", G: "g1@2 ~@4 g1 ~ g1@4 ~@4",
  H: "c2 ~@5 c1 ~ c1@4 ~@4", I: "g2 ~@5 g1 ~ g1@4 ~@4", J: "a2 ~@5 a1 ~ a1@4 ~@4", K: "f2 ~@5 f1 ~ f1@4 ~@4",
  L: "f2 ~@5 f1 ~ f1@4 ~@2 f1 ~", M: "g1 ~ g1 ~ g1 ~ g1@4 ~@6", N: "g2 ~@5 g1 ~ g1@7 ~",
  O: "g1@2 a1 ~ a1@2 g1@2 a1@2 ~@6", P: "a1 g1 ~@6", Q: "~ d1 a1 g1 ~@4", R: "a2@2 g1 ~ a1@2 g1@2 a1@2 ~@6",
  S: "~ d1 a1 g1 a1 ~@3", T: "g1 ~@5 g1@5 ~@5",
})).s("gm_fretless_bass").gain(0.42)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@4 B@4 C@4 D@2 E@2 ~ F@8 G@2 H@2 I@2 J K L J M J ~ C@8 N@2 O@2 C@8 N@2 O@2 I@2 J K L P Q R I@2 J K L P Q R S@2 T@2
  S@2 U@2 S@2 T@2 S@2 V@2 ~ W B@4 X@5 I@2 J K L J M I@2 J K L J M I@2 J K L J M Y Z@2 ~
>`.pickRestart({
  A: "[~ b3 d4 c4, [e3,g3]]/4", B: "[c4 b3 d4 c4, [e3,g3]]/4", C: "[c4 b3 d4 c4, [c2,e3,g3]]/4",
  D: "[e4 d4, [f2,f3,a3]]/2", E: "[g2,f3,b3,e4]/2", F: "[c1,c2]/4", G: "[f1,f2]/2", H: "[g1,g2]/2",
  I: "[[g3,c4,e4] [a3,d4,f4], c2]/2", J: "[g2,g3,b3,d4]", K: "[a2,g3,c4,e4]", L: "[f2,a3,c4,e4]", M: "[f2,f3,a3,c4]",
  N: "[[e4,c5,e5] [d4,a4,d5], [f2,f3,a3]]/2", O: "[[e4,e5] [d4,d5], [g2,f3,b3,b4]]/2", P: "[g2,a3,b3,e4]",
  Q: "[f2,f3,a3,e4]", R: "e4 d4, [g2,f3,b3]", S: "[a2,g3,c4,e4]/2", T: "[a#2,f3,c4,d4]/2", U: "[d3,f3,c4,d4]/2",
  V: "[[d3,f3,c4,d4]@7 ~]/2", W: "[c3,g3,e4]", X: "[c4@16 b3@16 d4@45 ~@3, [c2,e3,g3]@77 ~@3]/5", Y: "[g2,f3,b3,d4]",
  Z: "[~@3 [c2,e3,g3,c4]@13]/2", // C
})).s("gm_synth_strings_1").gain(0.14)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@17 A B C B C B C B D E D F@8 G ~ H I J B C I J B D K L M H I J B C I J B D K L N@8 O@8 P ~@27 Q@7 R@6 S@8 P ~@3
>`.pickRestart({
  A: "[g3,c4,g4]@2 ~@2 [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~", // C5
  B: "[g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4]@2", // C5
  C: "~@2 [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~", // C5
  D: "~@2 [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~", // Am7
  E: "[a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4]@2", // Am7
  F: "[[a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~@3 [e4,g4]@8 ~@6 c4@3 ~@5 f4@4 ~@4 a3@2 ~@14 b3@2 ~@14 c4@4 ~@4 e4@4 ~@4 a3@2 ~@14 b3@2 ~@6 e4@4 e4@2 ~@2 a3@2, ~@15 [g3,c4]@8 ~@3 g4@8 a3@12 ~@4 g3@8 ~@8 a3@14 ~@2 a3@12 ~@4 g3@6 ~@10 a3@5 ~@9, ~@28 e4@7 ~ d4@8 d4@6 ~@4 d4@6 d4@7 ~ c4@10 ~@6 c4@8 c4@6 ~@2 b3@6 ~@10 c4@5 ~@3 c4@4, ~@42 f4@6 ~@10 g4@8 ~@4 e4@6 e4@6 ~@8 e4@5 ~@7 d4@6 d4@6 ~@14, ~@74 g4@5 ~@27 g4@6 ~@16]/8", // Am7 Em C5
  G: "[g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4]@2", // G5
  H: "[g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~ [g3,c4,g4] ~", // C5
  I: "[g3,b3,g4] ~ [g3,b3,g4] ~ [g3,b3,g4] ~ [g3,b3,g4] ~ [g3,b3,g4] ~ [g3,b3,g4] ~ [g3,b3,g4] ~ [g3,b3,g4]@2", // G
  J: "~@2 [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~ [g3,d4,g4] ~", // G5
  K: "[a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4] ~ [a3,d4,g4]@2", // Dsus4
  L: "~@2 [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~", // Em
  M: "[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4]@2", // G
  N: "[[b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~@3 [e4,g4]@8 ~@6 c4@3 ~@5 f4@4 ~@4 a3@2 ~@14 b3@2 ~@14 c4@4 ~@4 e4@4 ~@4 a3@2 ~@14 b3@2 ~@6 e4@4 e4@2 ~@2 a3@2, ~@15 [g3,c4]@8 ~@3 g4@8 a3@12 ~@4 g3@8 ~@8 a3@14 ~@2 a3@12 ~@4 g3@6 ~@10 a3@5 ~@9, ~@28 e4@7 ~ d4@8 d4@6 ~@4 d4@6 d4@7 ~ c4@10 ~@6 c4@8 c4@6 ~@2 b3@6 ~@10 c4@5 ~@3 c4@4, ~@42 f4@6 ~@10 g4@8 ~@4 e4@6 e4@6 ~@8 e4@5 ~@7 d4@6 d4@6 ~@14, ~@74 g4@5 ~@27 g4@6 ~@16]/8", // G Em C5
  O: "[~@6 d4@4 ~@4 g3!2 [e4,g4]@8 ~@6 c4@3 ~@5 f4@4 ~@4 a3@2 ~@14 b3@2 ~@14 c4@4 ~@4 e4@4 ~@4 a3@2 ~@14 b3@2 ~@6 e4@4 e4@2 ~@2 a3@2, ~@2 g3@6 ~@4 b3@3 c4@8 ~@5 e4@7 ~ d4@8 d4@6 ~@4 d4@6 d4@7 ~ c4@10 ~@6 c4@8 c4@6 ~@2 b3@6 ~@8 a3@5 ~@9, ~@2 b3@3 d4@3 ~@5 g4@4 a3@6 ~@2 g3@4 ~@4 a3@7 ~ a3@6 ~@2 g3@3 ~@12, ~@42 f4@6 ~@10 g4@8 ~@4 e4@6 e4@6 ~@8 e4@5 ~@7 d4@6 d4@6 ~@2 c4@5 ~@3 c4@4, ~@74 g4@5 ~@27 g4@6 ~@16]/8", // Em
  P: "~@3 d4@2 ~@2 g3, ~ g3@3 ~@2 b3@2, ~@2 b3@3 d4@3",
  Q: "[g4@7 ~@7 c4@3 ~@5 f4@4 ~@4 a3@2 ~@14 b3@2 ~@14 c4@4 ~@4 e4@4 ~@4 a3@2 ~@14 b3@2 ~@6 e4@4 e4@2 ~@2 a3@2, ~@10 g4@8 a3@12 ~@4 g3@8 ~@8 a3@14 ~@2 a3@12 ~@4 g3@6 ~@10 a3@5 ~@9, ~@12 e4@7 ~ d4@8 d4@6 ~@4 d4@6 d4@7 ~ c4@10 ~@6 c4@8 c4@6 ~@2 b3@6 ~@10 c4@5 ~@3 c4@4, ~@26 f4@6 ~@10 g4@8 ~@4 e4@6 e4@6 ~@8 e4@5 ~@7 d4@6 d4@6 ~@14, ~@58 g4@5 ~@27 g4@6 ~@16]/7",
  R: "[g4@7 ~@7 c4@3 ~@5 f4@4 ~@4 a3@2 ~@14 b3@2 ~@14 c4@4 ~@4 e4@4 ~@4 a3@2 ~@14 b3@2, ~@5 g4@4 a3@6 ~@2 g3@4 ~@4 a3@7 ~ a3@6 ~@2 g3@3 ~@4, ~@12 e4@7 ~ d4@8 d4@6 ~@4 d4@6 d4@7 ~ c4@10 ~@6 c4@8 c4@6 ~@2 b3@6 ~@6, ~@26 f4@6 ~@10 g4@8 ~@4 e4@6 e4@6 ~@8 e4@5 ~@7 d4@6 d4@4, ~@58 g4@5 ~@27 g4@6]/6",
  S: "[~@6 e4@4 e4@2 c4@2 ~@2 [e4,g4]@8 ~@6 c4@3 ~@5 f4@4 ~@4 a3@2 ~@14 b3@2 ~@14 c4@4 ~@4 e4@4 ~@4 a3@2 ~@14 b3@2 ~@6 e4@4 e4@2 ~@2 a3@2, ~@2 a3@5 ~@7 a3@2 ~@12 e4@7 ~ d4@8 d4@6 ~@4 d4@6 d4@7 ~ c4@10 ~@6 c4@8 c4@6 ~@2 b3@6 ~@8 a3@5 ~@9, ~@4 c4@5 ~@6 g3@8 ~@11 a3@12 ~@4 g3@8 ~@8 a3@14 ~@2 a3@12 ~@4 g3@6 ~@24, ~@15 c4@3 ~@8 g4@8 ~@8 f4@6 ~@10 g4@8 ~@4 e4@6 e4@6 ~@8 e4@5 ~@7 d4@6 d4@6 ~@2 c4@5 ~@3 c4@4, ~@74 g4@5 ~@27 g4@6 ~@16]/8", // Em
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.3)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@29 A ~ A ~ A ~@7 B ~ B ~ B ~ C ~ C ~ B ~ B ~ B ~ B ~ C D C A ~ A ~ A ~@3 A ~ A ~ A ~@30 A ~ A ~ A ~@2 A ~ A ~ A ~@2
  A@10 ~
>`.pickRestart({
  A: "~@2 c4!4 ~@10", B: "~ e3 [g3,c4] ~ c4 ~@11", C: "e4 ~ d4 ~ e4 ~ d4 ~ e4 ~ d4 f4 ~@4",
  D: "e4 ~ d4 ~ e4 ~ d4 ~ e4 ~ d4 ~@5",
})).s("gm_electric_guitar_muted").gain(0.21).pan(0.7)

// chords · piano
const piano = note(`<
  ~@24 A B C@2 ~@17 A B ~ D@2 ~@7 A B ~ D@2 ~@16 E F@3 G@3 H I J@3 K@4 L M@2 L N L N ~ L N ~@26
>`.pickRestart({
  A: "~@8 c5@3 d5@2 ~ e5@2", B: "~ e5@5 a4@9 ~", C: "[~@8 c5@3 d5@2 ~ e5@6 ~@12]/2", D: "[e5@11 ~ d5@2 g4@8 ~@10]/2",
  E: "~@2 b3 c4@2 b3@3, a2@15 ~, ~@2 e3@13 ~",
  F: "[~@6 b3@9 ~@5 c4@2 ~@22 a#2@4, a2@8 a#2@7 ~@9, ~ c4@2 ~@9 f3@2 f3@2 ~@2 f3@2 ~ f3@2 ~, ~@2 e3@7 f3@2 d3@4 ~ d3@4 d3@2 ~@2, ~@13 c4@2 d4@2 c4@2 a#3@2 ~@3]/3",
  G: "[~@4 a3@2 c4@4 ~@12 c4@9 ~@3 a3@2 ~@2 a3@2 ~@6 f3@2, a2@7 ~@3 e3@7 ~@4 a3@2 ~, ~@2 e3@13 ~ e4@16 ~@4 e4@4 f4@4 e4@4, ~@5 a3@4 a3@2 ~@5 d3@7 ~]/3",
  H: "~@3 a3 ~@3 d3, d3@13 ~@3, ~ f3@2 ~@2 a3@2 ~, ~ d4 f4 f3", I: "~@2 b3 c4@2 b3@3, a2@7 ~, ~@2 e3@13 ~",
  J: "[~@6 b3@9 ~@5 c4@2 ~@22 a#2@4, a2@16 a#2@14 ~@2 a#2@11 ~@5, ~ c4@2 ~@9 f3@2 f3@2 ~@2 f3@2 ~ f3@2 ~, ~@2 e3@7 f3@2 d3@4 ~@5 d3@2 ~@2, ~@13 c4@2 d4@2 c4@2 a#3@2 ~@3]/3",
  K: "[~@4 a3@2 c4@4 ~@12 c4@9 ~@3 a3@2 ~@2 a3@2 ~@6 a2@3 d2@9 ~@6, a2@7 ~@3 e3@7 ~@4 f3@2 ~@9, ~@2 e3@13 ~ e4@16 ~@4 e4@4 f4@4 ~@20, ~@10 a3@8 a3@4 ~@10 d3@11 ~ d3@5 ~@15]/4",
  L: "~@7 g4", M: "[e4@2 g4 [c4,e4]@6 ~@7, [c3,g3]@9 ~@7]/2", N: "e4@4 g4@2 e4@5 ~@5",
})).s("gm_piano").gain(0.33).pan(0.3)

// other · synth brass 2
const synth_brass_2 = note(`<
  ~ A B ~@3 C D ~@2 C D ~@5 C D ~ E ~ F ~@2 G H I ~@9 J ~@4 K@2 ~@8 K@2 ~@2 K@2 ~@32 L M N O ~@36
>`.pickRestart({
  A: "~@12 g4 ~ e4 ~", B: "~@2 g4 ~ e4 ~@11", C: "~@14 g4 ~", D: "e4 ~@3 g4 ~ e4 ~@9",
  E: "~@4 g4 ~ e4 ~@3 g4 ~ d4 ~ e4 ~", F: "~@4 g4 ~ e4 ~@3 g4 ~@3 e4 ~", G: "~@4 e4 ~ a4 ~@3 e4 ~ f4 ~ g4 ~",
  H: "~@2 e4 ~ f4 ~ g4 ~@9", I: "~@4 e4 ~ g4 ~@3 e4 ~ f4 ~ g4 ~", J: "~@2 e4 ~ f4 ~ g4 e4 ~@2 e4 ~ f4 ~ g4 e4",
  K: "[~@14 g6@4 e6 ~ f6 ~ g6 c6 ~@8]/2", L: "~@2 d3@2 e3 ~ d3 ~ e3@2 d3@2 e3 ~ e3 ~",
  M: "~@3 d3 e3 ~@3 e3@2 d3@2 e3 ~ e3 ~", N: "~@2 d3@2 e3@2 ~@8 e3 ~", O: "~ d3 ~@6",
})).s("gm_synth_brass_2").gain(0.21).pan(0.3)

// other · synth brass 2 · soft notes
const synth_brass_2_soft = note(`<
  ~@37
  [~@2 c4 ~ d4 ~ e4 c4 ~@2 c4 ~ d4 ~ e4 c4]
  ~@53
  [~@6 d3 ~@9]
  [~@6 d3@2 e3@2 d3@2 e3 ~@3]
  [~@4 e3 ~ d3@2 e3@2 d3@2 e3 ~ e3 ~]
  [~@2 d3@2 e3@2 d3@2 e3@2 d3@2 e3 ~ e3 ~]
  ~@35
>`).s("gm_synth_brass_2").gain(0.09).pan(0.3)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@78 A@4 B C D E F G H@2 I@4 ~ J@3 ~@2 K L M@3 N O P Q R@3 S@3 T U@2 V@4 W@2 ~@6
>`.pickRestart({
  A: "[~@4 c5@7 b4 a4@3 ~ e4@11 ~ e5@13 e5@3 d5@14 ~@2 c6@4, ~@15 g4@2 ~@47]/4", B: "c6@10 b5@2 ~ a5@2 g5",
  C: "~ e5@11 c6@4", D: "d6@13 ~@3", E: "~@2 e4 c4 d4 e4 g4 a4", F: "c5@3 a4", G: "e4",
  H: "[d5@10 c5 d5@2 ~ a4@12 ~ a5@5, ~@13 c5@2 ~@17]/2",
  I: "[c6@10 b5@2 a5 ~@19 a5@20 ~@12, ~@7 g5 ~@24, ~@15 e5@30 ~@19]/4", J: "[~ c4@4 ~]/3",
  K: "~@8 d5 [c5,e5] d5 c5 [d5,e5] c5 [d5,e5] c5", // C Dsus2
  L: "e5 [c5,d5] e5 [c5,d5] e5 [c5,d5] e5 d5 [c5,e5] d5 c5 e5 ~ e5 ~ e5", M: "[~ e5 ~@10 g5@22 ~@14]/3", N: "~ g3@3",
  O: "f3", P: "g3", Q: "a3@7 a4@7 g4@2", R: "[e4 ~ a3 c4@7 a3@2 d4@2 ~ d4@12 ~ d4@2 c4@8 g4@10]/3", S: "c5/3",
  T: "~@7 a4@7 g4@2", U: "[e4 ~ a3 c4@7 a3@2 d4@2 ~ d4@12 ~@5]/2",
  V: "[g4@4 f4@2 e4@4 c4@4 d4@8 ~ e4@5 ~ e4@2 f4@4 e4@2 f4@2 g4@5 ~ g4 a4 c5@2 a4 ~ c5 d5 c5 ~ d5 e5 d5 e5 f5 e5 f5 g5 f5, ~@14 d4 ~@17]/4",
  W: "[g5 a5 g5 a5 c6@19 ~@9]/2",
})).s("gm_overdriven_guitar").gain(0.17).pan(0.6)

// other · overdriven guitar · soft notes · Csus2 C Dsus2 Csus2
const overdriven_guitar_soft = note(`<
  ~@100
  [~@7 e5 ~@8]
  [~@11 d5 c5 ~ [c5,d5] ~]
  [[c5,d5] ~ d5 [c5,e5] d5 c5 [d5,e5] c5 e5 [c5,d5] e5 [c5,d5] ~@4]
  ~@27
>`).s("gm_overdriven_guitar").gain(0.09).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~@29 A B C A D C D C ~@25 A B C A D C D C A B C A D C D C ~@27 A B C A D C D A B C A D C D A B C A D C D E ~@3
>`.pickRestart({
  A: "[c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4] ~", // C
  B: "[d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [d4,f4] ~", // Dm
  C: "[b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~ [b3,d4] ~", // Bm
  D: "[a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~", // Am
  E: "[g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3] ~", // G
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@17 [x!4]!20 ~ [x!4]!57 ~@10 [x!4]!24 x>").gain(0.54)

// drums · snare
const snare = s("sd").struct("<~@25 A@4 B@8 ~ B@39 A ~@4 A@12 ~@11 B@24 ~>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x",
})).gain(0.42)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@94 [~ x ~ x]!11 ~@25>").gain(0.18)

// drums · low tom
const low_tom = s("lt").struct("<~@83 A ~@5 A ~@3 A ~@10 B ~@25>".pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", B: "~@15 x",
})).gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@18 A B C D@4 E@12 ~ F@24 E@8 F@25 ~@10 F@7 E@7 F@10 G>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x!3", D: "x!4", E: "x!8", F: "x!7 ~", G: "x",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@17 [x!8] [x!6 ~ x] [x!2 ~ x!3 ~ x] [x!2 ~ x ~ x ~ x] [~ x ~ x ~ x ~ x]!4 ~@105>")
  .gain(0.12)

// drums · mid tom
const mid_tom = s("mt").struct("<~@104 [x ~@2 x ~@2 x ~ x ~ x ~@2 x!2 ~] ~@25>").gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<~@38 A@24 ~@8 A@25 ~@10 A@7 ~@7 A@10 ~>".pickRestart({
  A: "~@7 x",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<~@104 [~@3 x] ~@25>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@11 A ~@33 B ~@7 B ~@34 B ~@6 B ~@6 B ~@9 B>".pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.36)

// drums · congas
const congas = s("conga:13").struct("<~@94 [x ~@6 x!2 ~@6 x]!35 ~>").gain(0.58)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@94
  [~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~]!11
  [~ x ~@3 x ~@3 x ~@3 x ~@2]!7
  [~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~]!17
  ~
>`).gain(0.58)

// drums · congas · soft notes
const congas_soft = s("conga:18").struct("<~@105 [~ x ~ x ~ x ~ x]!7 ~@18>").gain(0.38)

// … 14 more lines

More by Dalla