Strudelify

You've Got Your Troubles

Fortunes

KeyD♭ majorTempo130 bpm
0:00/0:00
// You've Got Your Troubles — Fortunes
// 130 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 98 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · acoustic bass · "Bass    (BB)"
const bass = note(`<
  ~@2 A@2 B@2 C@2 A@2 D@2 E F G@2 H I H I E@2 G J H@2 K@2 A@2 K@2 L M D@2 N@2 G O D@2 H D E N G@2 H I K@2 A@2 K@2 L@2
  C@2 B@2 K@2 M@2 H I E N G@2 H@4 N@2 G O H I A@2 B@2 C@2 A@4 B@2 C@2 L ~
>`.pickRestart({
  A: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", B: "d2@5 ~ d2 ~ d2@5 ~ d2 ~", C: "f2@5 ~ f2 ~ f2@5 ~ f2 ~", D: "c2", E: "d2@13 ~ d2 ~",
  F: "d2@14 a1 ~", G: "f2@13 ~ f2 ~", H: "c2@13 ~ c2 ~", I: "c2@14 g1 ~", J: "f2@14 c2 ~",
  K: "bb1@5 ~ bb1 ~ bb1@5 ~ bb1 ~", L: "c2@5 ~ c2@2 c2@6 c2@2", M: "g2@5 ~ g2@2 g2@6 g2@2", N: "d2", O: "f2",
})).s("gm_acoustic_bass").gain(0.3)

// chords · piano · "Piano   (BB)"
const piano = note(`<
  ~@2 A@2 B@2 C@2 A@2 D@2 B@2 C@2 E@2 D@2 F@2 G@2 A@2 H@2 A@2 I@2 J K E@2 L@2 G@2 D@2 E@2 L@2 C@2 E@2 M@2 N@2 H@2 O P
  Q@2 F@2 R@2 S T E@2 L@2 U@2 V@2 A@2 W@2 X@2 V@2 D@2 F@2 U@2 A@2 Y@2 Z@2 ~@4
>`.pickRestart({
  A: "[~@6 g3@2 d4@4 g3@2 ~@8 g3 ~ c4@3 c4@2 ~ c4@2, ~ c3@30 ~, ~ g4@3, ~@8 c4@14 ~ a3@5 ~@4, ~@7 e4@5 ~@4]/2",
  B: "[~@6 [d4,e4,a4] ~ e4@5 ~ gb4@8 ~@4 e4@2 d4@2 a3@2, d3, ~@8 a4@23 ~, ~@8 d4@14 a3@7 ~@3]/2", // Dsus2
  C: "[~@6 [f4,g4,c5] ~ [f4,g4,c5]@5 ~ [f4,ab4,c5] ~ [f4,ab4,c5]@5 ~ [f4,g4,c5] ~@7 [f4,g4,c5] ~, f3, ~ c4@6 c4, ~@12 [f4,g4,c5]@3 ~]/2", // Fsus2 Fm Fsus2
  D: "[~@14 g3@7 ~ g3@2 [c4,d4,g4]@2 ~@2 [c4,d4,g4]@2 ~@2, c3@31 ~, ~@6 [c4,d4,g4]@17 ~@3 g3@5 ~]/2", // Csus2
  E: "[~@6 [c4,d4,g4] ~ [c4,d4,g4]@5 ~ [c4,e4,g4] ~ [c4,e4,g4]@5 ~ [c4,d4,g4] ~@7 [c4,d4,g4] ~, c3, ~ g3@6 g3, ~@12 [c4,d4,g4]@3 ~]/2", // Csus2 C Csus2
  F: "[~@14 a3@7 ~ a3@2 [d4,e4,a4]@2 ~@2 [d4,e4,a4]@2 ~@2, d3@31 ~, ~@6 [d4,e4,a4]@17 ~@3 a3@5 ~]/2", // Dsus2
  G: "[~@14 c4@7 ~@7 g4@2 f4@2, f3, ~@3 c4 g4@7 ab4@2 c4@3, ~ c5@3, ~@2 f4@5 ~]/2",
  H: "[~@6 [bb3,c4,f4] ~ [bb3,c4,f4]@5 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@5 ~ [bb3,c4,f4] ~@7 [bb3,c4,f4] ~, bb2, ~ f3@6 f3, ~@12 [bb3,c4,f4]@3 ~]/2", // Bbsus2 Bb Bbsus2
  I: "[~@14 f3@7 ~@7 c4@2 bb3@2, bb2, ~@3 f3 c4@7 d4@2 f3@3, ~ f4@3, ~@2 bb3@5 ~]/2",
  J: "[e4,g4,c5]@6 [d4,g4,c5]@9 ~, c3", K: "a3@5 ~ b3@9 ~, [g2,g3,d4]",
  L: "[~@6 [d4,e4,a4] ~ [d4,e4,a4]@5 ~ [d4,gb4,a4] ~ [d4,gb4,a4]@5 ~ [d4,e4,a4] ~@7 [d4,e4,a4] ~, d3, ~ a3@6 a3, ~@12 [d4,e4,a4]@3 ~]/2", // Dsus2 D Dsus2
  M: "[~@6 [bb3,c4,f4] ~ c4@5 ~ d4@8 ~@4 c4@2 bb3@2 f3@2, bb2, ~@8 f4@23 ~, ~@8 bb3@14 f3@7 ~@3]/2", // Bbsus2
  N: "[~@6 [c4,d4,g4] ~ d4@5 ~ e4@8 ~@4 d4@2 c4@2 g3@2, c3, ~@8 g4@23 ~, ~@8 c4@14 g3@7 ~@3]/2", // Csus2
  O: "d4@5 ~ e4@9 ~, [c3,c4,g4]", P: "e4@6 d4@9 ~, [c3,c4,g4]@15 ~",
  Q: "[~@6 [f4,g4,c5] ~ g4@5 ~ a4@8 ~@4 g4@2 f4@2 c4@2, f3, ~@8 c5@23 ~, ~@8 f4@14 c4@7 ~@3]/2", // Fsus2
  R: "[~@14 f3@7 ~ f3@2 [bb3,c4,f4]@2 ~@2 [bb3,c4,f4]@2 ~@2, bb2@31 ~, ~@6 [bb3,c4,f4]@17 ~@3 f3@5 ~]/2", // Bbsus2
  S: "[b3,d4,g4]@6 [a3,d4,g4]@9 ~, g2", T: "a3@5 ~ b3@9 ~, [g2,g3,eb4]",
  U: "[~@14 c4@7 ~ c4@2 [f4,g4,c5]@2 ~@2 [f4,g4,c5]@2 ~@2, f3@31 ~, ~@6 [f4,g4,c5]@17 ~@3 c4@5 ~]/2", // Fsus2
  V: "[~@14 g3@7 ~@7 d4@2 c4@2, c3, ~@3 g3 d4@7 e4@2 g3@3, ~ g4@3, ~@2 c4@5 ~]/2",
  W: "[~@14 a3@7 ~@7 e4@2 d4@2, d3, ~@3 a3 e4@7 gb4@2 a3@3, ~ a4@3, ~@2 d4@5 ~]/2",
  X: "[~@6 [f4,g4,c5] ~ g4@5 ~ ab4@8 ~@4 g4@2 f4@2 c4@2, f3, ~@8 c5@23 ~, ~@8 f4@14 c4@7 ~@3]/2", // Fsus2
  Y: "[~@6 g3@2 d4@4 g3@2 ~@8 g3 ~ c4@3 c4@2 a3 c4@2, ~ c3@30 ~, ~ g4@3, ~@8 c4@14 ~ a3@5 ~@4, ~@7 e4@5 ~@4]/2",
  Z: "[a3 ~@13 a3@7 ~@11, d3@31 ~, ~@6 [d4,e4,a4]@17 ~@9]/2", // Dsus2
})).s("gm_piano").gain(0.56)

// chords · piano · "Piano   (BB)" · soft notes
const piano_soft = note(`<
  ~@3 A ~@5 A B ~@7 B ~ C ~@4 A ~@3 A ~@10 B ~@19 C ~ D ~@7 E ~@4 A ~@6 B ~ C ~ E ~@2 A ~@3 F G@2 H ~
>`.pickRestart({
  A: "~@13 a3 ~@2", B: "g3 ~@15", C: "a3 ~@15", D: "f3 ~@15", E: "c4 ~@15",
  F: "~@3 a3 [d4,e4,a4] ~ [d4,e4,a4] ~, ~@10 a3@5 ~", // Dsus2
  G: "[~@6 [f4,g4,c5] ~ g4@5 ~ ab4@8 ~@4 g4@2 f4@2 c4@2, f3, ~@8 c5@23 ~, ~@8 f4@14 c4@7 ~@3]/2", // Fsus2
  H: "d4@5 ~ e4@9 ~, [c3,c4,g4]", // C5
})).s("gm_piano").gain(0.24)

// chords · acoustic guitar nylon · "Guitar  (BB)"
const acoustic_guitar_nylon = note(`<
  ~@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 E@2 H@2 I@2 J@2 E@2 K@2 L@2 M@2 N O P@2 I@2 J@2 Q@4 I@2 R@2 S@2 K@2 T@2 U@2 V W X@2
  Y@2 Z@2 AA AB AC@2 AD@2 G@2 AE@2 H@2 F@2 AF@2 P@2 A@2 B@2 AG@2 T@2 D@2 AH@2 C@2 AI ~
>`.pickRestart({
  A: "[~@4 c4@21 ~@5 e4 ~, ~ c3@15, ~@4 e4@25 ~@3, ~@13 c4@3]/2",
  B: "[~@14 a4 ~, ~ d3@14 ~, ~@3 a3@27 ~@2, ~@2 c4@5 gb4@6 c4@2 ~, ~@3 d4@12 ~]/2",
  C: "[~@6 [f4,ab4]@21 ~ [c4,f4,ab4] ~@3, ~ f2@14 ~, ~@2 c4@11 ~@3]/2", // Fm
  D: "[~@6 [e4,g4]@21 ~ [c4,e4,g4] ~@3, ~ c3@14 ~, ~@2 c4@11 ~@3]/2", // Em C
  E: "[c3 ~@4 g3 ~@8 c3@2, e4@6 d4@7 ~ e4@8 d4@9 ~, ~@2 g3@6 ~@10 g3@4 ~@4 g3@5 ~, ~@4 c3@6 ~@2 c3@7 ~ c3@6 ~@6]/2",
  F: "[d3 ~@4 a3 ~@8 d3@2, gb4@6 e4@7 ~ gb4@8 e4@9 ~, ~@2 a3@6 ~@10 a3@4 ~@4 a3@5 ~, ~@4 d3@6 ~@2 d3@7 ~ d3@6 ~@6]/2",
  G: "[f3 ~@12 f3 ~ g4, g4@3 ab4@4 g4@4 ab4@4 ~, ~@2 c4@9 ~ c4@7 ~ c4@7 ~ c4@4, ~@4 f3@5 ~ f3@7 ~ f3@7 ~@7]/2",
  H: "[c3 ~@12 c3 ~ d4, d4@3 e4@4 d4@4 e4@4 ~, ~@2 g3@9 ~ g3@7 ~ g3@7 ~ g3@4, ~@4 c3@5 ~ c3@7 ~ c3@7 ~@7]/2",
  I: "[~@14 a3 d4, d3@9 ~ d3@7 ~ d3@7 ~ d3@4 ~@2, ~@2 a3@9 ~ a3@7 ~ a3@7 ~@5, ~@4 d4@9 ~ e4@7 ~@11, ~@3 a4@8 a4@4 ~]/2",
  J: "[~@15 g4, ~@2 f3@7 ~ f3@7 ~ f3@7 ~ f3@4 ~@2, ~@4 c4@7 ~ c4@7 ~ c4@7 ~ c4@4, ~@3 ab4@4 g4@4 ab4@4 ~]/2",
  K: "[~@6 c4@12 d4@13 ~, ~ bb2@15, ~ f3@7]/2",
  L: "[~@3 d4@2 ~@8 c4 d4 ~, c3@15 ~, e4@3 ~@2 g4@9 ~@2, ~ g3@14 ~, ~@2 c4@5 c5@7 ~@2]/2",
  M: "[~@6 [d4,f4]@21 ~ [bb3,d4,f4] ~@3, ~ bb2@14 ~, ~@2 bb3@11 ~@3]/2", // Dm Bb
  N: "~@6 e4@4 g4@2 e4@3 ~, c3@15 ~, ~@2 g3@13 ~, ~@4 c4@11 ~",
  O: "~@6 f4@4 g4@2 f4@3 ~, g2@15 ~, ~@2 g3@13 ~, ~@4 b3@11 ~",
  P: "[~@15 d4, ~@2 c3@7 ~ c3@7 ~ c3@7 ~ c3@4 ~@2, ~@4 g3@7 ~ g3@7 ~ g3@7 ~ g3@4, ~@3 e4@4 d4@4 e4@4 ~]/2",
  Q: "[~@14 e4@7 ~ g3 a3 c4@2 ~ c4@3 c4 ~, c3@9 ~ c3@17 ~@5, ~@2 g3@9 ~ g3@8 ~@12, ~@2 d4@5 ~@9]/2",
  R: "[~@12 f4@2 ~@8 g4@4 ab4@2 g4@2 f4 ~, ab4@4 f4@5 ~@11 f4@7 ~@5, ~@2 f3@12 ~@2 f3@15 ~, ~@3 c4@6 ~ c4@6 ~@2 c4@6 ~@8, ~@3 g4@3 ~ g4@3 ~@6]/2",
  S: "[~@12 c4@2 ~@8 d4@4 e4@2 d4@2 c4 ~, e4@4 c4@5 ~@11 c4@7 ~@5, ~@2 c3@12 ~@2 c3@15 ~, ~@3 g3@6 ~ g3@6 ~@2 g3@6 ~@8, ~@3 d4@3 ~ d4@3 ~@6]/2",
  T: "[~@6 d4@12 e4@13 ~, ~ c3@15, ~ g3@7]/2", U: "[~@4 bb3@21 ~@5 d4 ~, ~ bb2@15, ~@4 d4@25 ~@3, ~@13 bb3@3]/2",
  V: "~@6 e4 ~, ~@2 c3@13 ~, ~@4 g3@11 ~, ~@3 c4@4 ~", W: "~@6 e4 ~, ~@2 c3@13 ~, ~@4 g3@11 ~, ~@3 bb3@4 ~",
  X: "[~@3 g4@2 ~@8 f4 g4 ~, f3@15 ~, a4@3 ~@2 c5@9 ~@2, ~ c4@14 ~, ~@2 f4@5 f5@7 ~@2]/2",
  Y: "[~@4 d4@21 ~@5 f4 ~, ~ d3@15, ~@4 f4@25 ~@3, ~@13 d4@3]/2",
  Z: "[~@3 c4@2 ~@8 bb3 c4 ~, bb2@15 ~, d4@3 ~@2 f4@9 ~@2, ~ f3@14 ~, ~@2 bb3@5 bb4@7 ~@2]/2",
  AA: "~@3 b3@4 ~, g2@15 ~, ~@2 d3@13 ~, ~@2 g3@5 ~", AB: "~@3 b3@4 ~, g2@15 ~, ~@2 eb3@13 ~, ~@2 g3@5 ~",
  AC: "[~@20 d4@2 e4@4 d4@2 g3@2 d4 ~, ~@2 c3@11 ~ c3@18, ~@4 g3@13 ~ g3@9 ~@5, ~@3 d4@6 ~@7]/2",
  AD: "[~@15 e4, ~@2 d3@7 ~ d3@7 ~ d3@7 ~ d3@4 ~@2, ~@4 a3@7 ~ a3@7 ~ a3@7 ~ a3@4, ~@3 gb4@4 e4@4 gb4@4 ~]/2",
  AE: "[~@4 c4@2 d4@2 c4 ~ d4@2 ~@2 g3@2 ~@12 d4@2 c4@2, ~@2 c3@12 ~@2 c3@13 ~@3, ~@3 g3@9 c4@6 g3@6 ~@2 g3@5 ~, ~@4 g4@7 e4@3 ~@2, ~@20 c4@9 ~@3]/2",
  AF: "[~@4 f4@2 g4@2 f4 ~ g4@2 ~@2 c4@2 ~@12 g4@2 f4@2, ~@2 f3@12 ~@2 f3@13 ~@3, ~@3 c4@9 f4@6 c4@6 ~@2 c4@5 ~, ~@4 c5@7 ab4@3 ~@2, ~@20 f4@9 ~@3]/2",
  AG: "[~@4 c4@21 ~@5 f4 ~, ~ f2@15, ~@4 f4@25 ~@3, ~@13 c4@3]/2",
  AH: "[~@4 c4@21 ~@5 gb4 ~, ~ d3@15, ~@4 gb4@25 ~@3, ~@13 c4@3]/2", AI: "~@3 e4@4 ~, c3@15 ~, ~@2 g3@13 ~, ~@2 c4@5 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · string ensemble 2 · "Strings (BB)"
const string_ensemble_2 = note(`<
  ~@2 A@2 B@2 C@2 A@2 D@2 E@2 F@2 D@4 E@2 F@2 D@2 G@2 A@2 G@2 H I D@2 E@2 F@2 D@4 E@2 F@2 D@2 G@2 A@2 G@2 H@2 J@2 K@2
  G@2 I L D@2 E@2 F@2 D@4 E@2 F@2 D@2 A@2 B@2 C@2 A@4 B@2 C@2 H ~
>`.pickRestart({
  A: "[e5,g5]/2", B: "[gb5,a5]/2", C: "[ab5,c6]/2", D: "[e4,g4]/2", E: "[gb4,a4]/2", F: "[ab4,c5]/2", G: "[d5,f5]/2",
  H: "[e5,g5]", I: "[b4,d5]", J: "[a5,c6]/2", K: "[f5,a5]/2", L: "[b4,eb5]",
})).s("gm_string_ensemble_2").gain(0.19).pan(1)

// other · tremolo strings · "string ensemble"
const tremolo_strings = note("<~@58 A B C D E@3 F ~@32>".pickRestart({
  A: "~@6 a4@2 ab4@3 a4@2 ~ bb4 ~", B: "~@3 a4@11 ~@2", C: "~@6 a4@2 ab4@3 a4@2 ~@2 bb4", D: "~@3 a4@10 ~ a4 ~",
  E: "[bb4@8 a4@2 ~ g4@2 ~ bb4@9 ~ a4@2 g4@2 ~@2 b4@10 a4@2 g4@2 ~@2 b4 ~]/3", F: "~@2 a4@3 ~ g4@9 ~",
})).s("gm_tremolo_strings").gain(0.8)

// other · tremolo strings · "string ensemble"
const tremolo_strings_2 = note("<~@58 A B C D E@3 F ~@32>".pickRestart({
  A: "~@6 f5@2 f5@2 ~ f5@2 ~ f5 ~", B: "~@3 f5@11 ~@2", C: "~@6 f5@2 f5@2 ~ f5@2 ~@2 f5", D: "~@3 f5@10 ~ f5 ~",
  E: "[f5@8 d5@2 ~ d5@2 ~ f5@9 ~ d5@2 d5@2 ~@2 g5@10 e5@2 d5@2 ~@2 g5 ~]/3", F: "~@2 d5@3 ~ d5@9 ~",
})).s("gm_tremolo_strings").gain(0.8)

// other · tremolo strings · "string ensemble"
const tremolo_strings_3 = note("<~@58 A B C D E@3 F ~@32>".pickRestart({
  A: "~@6 c5@2 b4@3 c5@2 ~ c5 ~", B: "~@3 c5@11 ~@2", C: "~@6 d5@2 d5@2 ~ d5@2 ~@2 d5", D: "~@3 d5@10 ~ d5 ~",
  E: "[d5@8 f5@2 ~ bb4@2 ~ d5@9 ~ f5@2 bb4@2 ~@2 d5@10 c5@2 b4@2 ~@2 d5 ~]/3", F: "~@2 b4@3 ~ b4@9 ~",
})).s("gm_tremolo_strings").gain(0.8)

// chords · vibraphone · "vibes"
const vibraphone = note("<~@70 A B C@2 ~@4 D E F@2 ~@16>".pickRestart({
  A: "ab4 ~@5 [f4,d5]@2 [f4,db5]@2 ~ [f4,d5]@2 ~ [ab4,e5] ~", B: "~@2 [f4,d5]@5 ~ [f4,c5]@5 ~ [c4,ab4] ~",
  C: "[~ [c4,ab4]@2 [c4,g4]@29]/2", D: "~@6 [f4,d5]@2 ~ [f4,db5] ~ [f4,d5]@2 ~@2 [ab4,e5]",
  E: "~@3 [f4,d5]@4 ~ [f4,c5]@3 ~ [f4,b4]@2 ~@2", F: "[[f4,d5]@2 ~ [e4,c5]@2 ~ [e4,c5]@23 ~@3]/2",
})).s("gm_vibraphone").gain(0.5).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B A B A B A C D@2 E B D F D F D@2 E C D B@2 F A C A C A G A D@3 B D@2 B D B D@5 G B G A F A G A G A G A G A F A
  B C D@8 F D B D F D@4 A D A G A F A G A C A C A C A ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@2 x", C: "x", D: "x ~@3 x ~@2 x", E: "x!2", F: "x ~@2 x ~ x ~@2", G: "x ~@6 x",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct(`<
  A B ~@8 C@3 ~ C ~ C ~ C@3 ~ C ~ C ~@9 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@17 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@17
>`.pickRestart({
  A: "x!2", B: "x!4", C: "~ x ~ x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A@7 B ~@5 C ~ C ~@3 B ~@3 C A B A B A D A E ~ E ~ E ~@5 E ~ E ~ D ~ D A C A D A D A D A D A C A ~ B E ~ E ~ E ~ E
  ~ C ~@3 C ~ E ~ E A E A D A C A D A B A B A B A ~
>`.pickRestart({
  A: "~ x ~ x", B: "x ~@7 x ~@2 x!3 ~@2", C: "~@8 x!2 ~@2 x ~ x!2", D: "x!3 ~ x ~ x ~ x ~ x ~ x ~@3", E: "x!8",
})).gain(0.5)

// drums · clap
const clap = s("cp").struct("<~@2 [~ x ~ x]!95 ~>").gain(0.5)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@9 A ~@3 B ~@7 A ~ B ~@3 A ~ A ~@9 B ~ B ~@21 B A ~@10 B ~@15 A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x!2 ~",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B A@5 ~ A@3 C A D A D A E A ~ A C A D A ~ A ~ A ~ A ~ A ~ A ~ A C A C A ~ A ~ A ~ A ~ A D A ~ A ~ A ~ A ~ A D A
  C ~@2 A ~ A ~ A ~ A D A C A D A ~ A ~ A ~ A ~ A D A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x!8", B: "x ~ x!6", C: "x", D: "x ~ x!2 ~@12", E: "x!7 ~",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@9 A ~@3 B ~@7 A ~ B ~@3 A ~ A ~@9 B ~ B ~@21 B A ~@10 B ~@15 A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@5 x ~@10", B: "~@3 x!2 ~@3",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A ~@11 B ~ B ~ C ~@5 B ~@5 C ~@15 C ~ C ~ B ~ C ~ C ~ C ~ C ~ B ~@11 B ~@3 B ~@7 C ~ B ~ C ~@8
>`.pickRestart({
  A: "~ x ~@6", B: "~@2 x!2 ~@4", C: "~@7 x",
})).gain(0.5)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@9 A ~@3 B ~@7 A ~ B ~@3 A ~ A ~@9 B ~ B ~@21 B A ~@10 B ~@15 A ~ A ~ A ~@2
>`.pickRestart({
  A: "~ x ~@6", B: "~ x!2 ~@5",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~@2 B A ~ A ~ A ~@3 A B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B A B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A B ~@2 A ~ A ~ A ~ A ~ A B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.5)
// … 17 more lines

More by Fortunes