Strudelify

Go Down Gamblin'

Blood, Sweat & Tears

KeyG minorTempo104 bpm
0:00/0:00
// Go Down Gamblin' — Blood, Sweat & Tears
// 104 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): DISTORTION.
setcpm(104/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 · "ACOU BASS"
const bass = note(`<
  ~@2 A B A B A B A B A B A B A C D@2 A B D@2 A B E F E F E F E F E F A C ~@4 A B A B A B A C D@2 A B D@2 A G@5 H@8 I@16
  J K J K J K J L M N A B M N A B M N A B M ~@2 O@2
>`.pickRestart({
  A: "g2 a2", B: "c3 d3 f3!2 bb2 b2 g2@10", C: "c3 d3 f3!2 bb2 b2 g2@2 ~@8",
  D: "c3@2 c3@2 bb2 c3 c3@2 c3@2 c3@2 bb2 c3 c3@2", E: "g2!4 a2!4", F: "c3 d3 f3!2 bb2 b2 g2@4 g2@2 g2@2 g2@2",
  G: "c3 d3 f3!2 bb2 b2 g2@8 ~@2", H: "g2 g2@2 g2!2 g2@2 g2 g2@2 g2 g2@2 g2 g2@2",
  I: "g2!5 ab2 g2 ab2 g2 ab2 g2 ab2 c3 bb2@3", J: "g2!2 g2@2 a2!2 a2@2", K: "bb2!2 bb2@2 c3@4",
  L: "bb2@2 bb2@2 bb2@4 g3@3 [db3,e3] g2@3 ~, ~@12 b2 ~@3", M: "c3!2 bb2 c3 ~ c3 bb2 c3", N: "~ c3 bb2 c3 ~ c3 bb2 c3",
  O: "[g2@27 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.72)

// other · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~@8 A B A B A B A B C ~ A B D E ~@14 F G H I A B A B A B A B C ~ A B D E ~ J ~@10 K L@3 ~@14 M N O P Q R S T ~@15 U@2
>`.pickRestart({
  A: "g1 ~", B: "c3 ~ f3!2 bb2@2 g2@10", C: "~@4 e3 ~ e3 ~ a3 bb3 ~ g3 ~@4", D: "~@6 d3 e3 ~ bb3 ~ g3 e4 f4 e4 ~",
  E: "~ [c4,g4] [c4,g4]@14", F: "g1@2 ~@2 b1 c2 db2 d2 c2@2 c2!2 c3@3 bb2",
  G: "g2@2 g2!2 ~@2 f3 d3@2 d3 c3 d3 bb2 a2 g2 ~, ~@5 g3@2 ~@9", H: "~ g2 f2 gb2 g2 d2 a2 d2 bb2 d2 c3 d2 db3 d3 f3@2",
  I: "f3@3 ~ g3@3 bb3!2 g3 c4 g3 d4 c4 bb3 ~", J: "~@7 g3", K: "g2 g2@2 g2 ~@3 g2 g2@3 g2 g2@3 ~",
  L: "[[d3,e4] [db3,f4] [c3,gb4] [b2,f4]@21]/3", M: "f4 d4 c4 ~@5 c4 bb3 g3 ~@5", N: "f4 d4 c4 bb3 g3 f3 d3 ~ g3@6 ~@2",
  O: "bb3 a3 g3 ~@5 a4 g4 e4 ~@5", P: "~@2 e4 d4 e4 d4 c4 bb3 c4@6 ~@2", Q: "a4 g4 e4 ~@5 a4 g4 e4 ~@5",
  R: "bb4 g4 a4 g4 bb4 g4 a4 g4 a4 g4 f4 d4 c4 bb3 g3 bb3", S: "c4 bb3 g3 ~ e3 d3 c3 bb2 a3 g3 e3 d3 c4 bb3 g3 bb3",
  T: "e4 d4 c4 bb3 g3 e3 d3 c3 g2@8", U: "[~@4 [f3,g3]@7 ~@5]/2",
})).s("gm_pad_poly").gain(0.31)

// other · pad poly · "POLYSYNTH" · soft notes
const pad_poly_soft = note(`<
  ~@8 A B A B A B A B C ~ A B D ~@16 E ~@2 A B A B A B A B C ~ A B D ~@13 F ~@42
>`.pickRestart({
  A: "~ a2", B: "~ d3 ~@14", C: "~@5 f3 ~ d3 ~@2 a3 ~@5", D: "~@8 a3 ~ a3 ~@4 c4", E: "~@4 gb3 ~@11", F: "~@15 g2",
})).s("gm_pad_poly").gain(0.23)

// other · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note("<~@28 A B C D E F G H ~@71 I ~>".pickRestart({
  A: "b4@2 g5 ~ [g5,ab5] g5 [g5,ab5]!2 g5 f5 d5 ~ [bb4,b4] bb4!2 [bb4,b4]", // Abmaj7 Bmaj7
  B: "d5 e5 g5 a5 g5 f5 [g5,ab5] g5!2 [g5,ab5] g5 f5 g5@2 f5 ~", // Abmaj7
  C: "[g5,ab5] g5!2 [g5,ab5] f5 d5 c5 bb4@3 g4 ~ f4@3 g4", // Abmaj7
  D: "db5 [db5,d5] ~ [db5,d5] c5 [c5,db5] ~ [c5,db5] b4 [b4,c5] ~ [b4,c5] bb4 ~@2 bb4", E: "g4@6 g4 ~ a4@6 ~@2",
  F: "d5@3 bb4 ~@2 g4 ~ g5 ~ bb4 ~ a4 f4 ~ f4", G: "g4@4 ~ b4 c5 b4 [b4,c5]!4 ~ f4 g4@2",
  H: "g5 ~ d5 ~ b4 c5 d5 ~ bb4 ~ f4 ~ d4!2 f4 ~", I: "g1 ~",
})).s("gm_lead_3_calliope").gain(0.33)

// other · lead 3 calliope · "CALLIOPE" · soft notes
const lead_3_calliope_soft = note("<~@28 A B C D ~ E F G ~@73>".pickRestart({
  A: "~@5 ab5 ~@7 b4!2 ~", B: "~@7 ab5!2 ~@7", C: "~ ab5!2 ~@13", D: "~@13 b4 ~@2", E: "~@5 g4 ~@5 b4 ~@2 a4 ~",
  F: "~@12 g4 ~@3", G: "~@5 db5 ~@10",
})).s("gm_lead_3_calliope").gain(0.2)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A B A B A B A B A B A B A B A C D@2 A B D@2 A B E F G H ~@12 A B A B A B A C D@2 A B D@2 A I J K L M ~ N ~ O ~ P ~@4 Q
  R Q S T U@4 V W X Y Z ~@9 AA AB AC ~ AA AB AC AD AE AB AC AF@2 ~@3
>`.pickRestart({
  A: "~@4 g4@2 g4!2 ~@4 g4@2 g4!2, g3 a3", B: "c4 d4 f4!2 bb3 b3 g3@8 ~@2", C: "c4 d4 f4!2 bb3 b3 g3@2 ~@8",
  D: "[c4,g4]@4 [bb3,f4] [c4,g4]@3 [c4,g4]@4 [bb3,f4] [c4,g4]@3", E: "[a4,bb4] b4 g5@2 g5@4 f5 d5 c5@2 bb4@4",
  F: "d5 e5 g5 bb5 g5 f5 g5@9 f5", G: "g5@3 ~ f5 d5 c5 bb4@3 g4@2 bb4@2 c5@2, gb5 ~@15",
  H: "d5!2 ~ d5!2 db5 ~ db5!2 c5 ~ c5 c5@2 bb4@2", I: "c4 d4 f4!2 bb3 b3 g3@6 ~@4",
  J: "[f5,gb5] ~@5 g5 f5 g5 f5 d5 db5 c5 bb4 g4 f4, g5@3 ~@5", K: "g4 gb4 g4 f4 g4 f4 g4 f4@9",
  L: "g4 g4@2 f4 f4@2 e4 e4@3 eb4!2 d4@2 c4@2", M: "d4@3 c4 c4@2 g3 g3@2 g3 g3@2 g3@4", N: "g5!2 f5 g5@3 ~@2",
  O: "g5@2 g5!2 d5 f5 g5!2 d5 f5 g5!2 d5 f5 g5@2", P: "c6 bb5 g5 g5@3 ~@2", Q: "g6@4 f6 d6 c6 b5@5 ~@4",
  R: "g5@2 g5@2 g5 g5@3 b5@4 ~@4", S: "bb5 c6 d6!2 f5 g5 bb5!2 bb5@4 ~@4",
  T: "d6 f6 g6!2 d6 f6 g6!2 d6 f6 g6!2 d6 f6 g6!2",
  U: "[c7@2 bb6@2 g6 f6@2 g6@5 ~@3 c7@3 bb6@2 g6 f6@2 c7@3 bb6@2 g6 f6@2 c7@3 bb6@2 g6 f6@2 g6@5 ~@3 c7@9 g6@2 g6@6]/4",
  V: "f6@2 f6@2 f6 f6@2 b5@5 ~@4", W: "a6 g6 e6 d6 e6@4 e6 d6 f5@2 f5@2 f5@2",
  X: "c6 bb5 g5@2 g5@2 g5@4 g5!2 g5@2 g5@2", Y: "d5 f5 gb5 g5 b5 c6 db6 d6 eb6 e6 g6!2 g6@2 g6@2",
  Z: "g6@2 g6 g6@2 g6 g6@10", AA: "~@12 g4@3 [d4,f4]", AB: "[a3,b3] ~@3 g4@2 g4!2 ~@4 g4@2 g4!2, ~ g3@7 a3@8",
  AC: "c4 d4 f4!2 bb3 b3 g3@10", AD: "[e4,gb4] ~@3 d5@2 d5!2 ~@4 d5@2 d5!2, ~ d4@7 e4@8", AE: "g3 a3 c4!3 d4 g3@10",
  AF: "[g4 a4 c5!3 d5 g4@14 ~@12]/2",
})).s("gm_overdriven_guitar").gain(0.37)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@16 A@2 ~@2 A@2 ~@2 B C D C D C D C D C B E ~@12 A@2 ~@2 A@2 ~@14 F@16 G H G H G H G H I J@3 I J@3 I J@3 I ~ K L ~
>`.pickRestart({
  A: "[g3,c4,e4]!4", B: "g4@4 g4@2 g4 ~ g4@4 g4@2 g4 ~, g3 a3", C: "c4 ~ f4 ~ bb3 ~ g3@10",
  D: "~@4 g4@2 g4 ~ g4@4 g4@2 g4 ~, g3 a3", E: "c4 ~ f4 ~ bb3 ~ g3@2 ~@8",
  F: "g3!5 ab3 g3 ab3 g3 ab3 g3 ab3 [c4,e4] [bb3,d4]@3", G: "[g3,d4,g4] g4 g4@2 g4!2 g4@2", H: "g4 ~ g4@2 g4@4",
  I: "[c4,g4]!2 [bb3,f4] g4 ~ [c4,g4] bb3 [c4,g4]", J: "~ [c4,g4] [bb3,f4] [c4,g4] ~ [c4,g4] [bb3,f4] [c4,g4]",
  K: "~@12 g4@3 f4", L: "e4 g3@7 [b3,d4]@4 g3@4",
})).s("gm_electric_guitar_muted").gain(0.25)

// chords · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@24 A B A B A B A B A B A B ~@49 C ~ C ~ C ~ C D ~@3 D ~@3 D ~@3 D ~@2 E ~
>`.pickRestart({
  A: "~@7 g4 ~@7 g4", B: "~ d4 ~ f4 ~ b3 ~@10", C: "~ g4 ~@6", D: "~@3 c4 ~@2 f4 ~", E: "c4 bb3 ~@6 g3@4 [b3,d4]@4",
})).s("gm_electric_guitar_muted").gain(0.15)

// other · alto sax
const alto_sax = note("<~@56 A B A B A B A C@3 ~@43>".pickRestart({
  A: "e5!4 e5@2 ~@2 e5!8", B: "d5!6 d5@6 ~@4", C: "[d5!6 d5@42]/3",
})).s("gm_alto_sax").gain(0.27)

// other · alto sax · soft notes
const alto_sax_soft = note("<~@56 A ~ A ~ A ~ A ~@46>".pickRestart({
  A: "~@7 e5 ~@8",
})).s("gm_alto_sax").gain(0.16)

// other · trumpet
const trumpet = note(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ B C@2 ~ A D E ~@6 F G H I J K L M ~@5 N ~ N ~ N ~ O C@2 ~ N D E ~ P ~@4 Q R S T@3 ~@18 U V W X
  Y Z AA AB ~@15 AC@2
>`.pickRestart({
  A: "c4 d4 f4!2 bb3@2 g3@10", B: "c4 d4 f4!2 bb3@2 g3@2 ~@8", C: "[~@4 e4 f4 e4 d4 a4 bb4 a4 g4 c5 ~ bb4@18]/2",
  D: "~@6 d4 e4 a4 bb4 a4 g4 e5 f5 e5 g5", E: "~ g5 bb5@14", F: "b4@2 g5 ~ g5 [g5,ab5]!4 f5 d5 ~ bb4 [bb4,b4]!3",
  G: "[b4,d5] e5 g5 a5 g5 f5 g5 [g5,ab5]!4 f5 g5@2 f5 ~", H: "g5 [g5,ab5]!3 [f5,ab5] d5 c5 bb4@3 g4 ~ f4@3 g4",
  I: "db5 d5 ~ d5 c5 db5 ~ db5 b4 c5 ~ c5 bb4 b4 ~ bb4", J: "g4@3 g4 a4@3 ~",
  K: "d5@3 bb4 ~ g4!2 ~ g5 ~ bb4 b4 g4 f4 g4 f4, ~@2 bb4 ~@5", L: "g4@5 b4 c5 b4 [b4,c5]!4 [g4,c5] f4 g4@2",
  M: "g5 ~ d5 ~ b4 [c5,db5] d5 ~ bb4 ~ a4 ~ d4!2 f4 ~", N: "c5 d5 f5!2 bb4@2 g4@10", O: "c5 d5 f5!2 bb4@2 g4@2 ~@8",
  P: "~@7 g6", Q: "bb4 g4@2 a4 ~@3 f4 b4@3 g4 f4@3 g4", R: "e4 f4 gb4 g4@3 ~@2", S: "d6 d6@2 d6 ~@3 d6 d6@3 d6 d6@3 d6",
  T: "[c6!3 d6@21]/3", U: "f5 d5 c5 ~@5 c5 bb4 g4 ~@5", V: "f5 d5 c5 bb4 g4 f4 d4 ~ g4@6 ~@2",
  W: "bb4 a4 g4 ~@5 a5 g5 e5 ~@5", X: "~@2 e5 d5 e5 d5 c5 bb4 c5@6 ~@2", Y: "a5 g5 e5 ~@5 a5 g5 e5 ~@5",
  Z: "bb5 g5 a5 g5 bb5 g5 a5 g5 a5 g5 f5 d5 c5 bb4 g4 bb4", AA: "c5 bb4 g4 ~ e5 d5 c5 bb4 a5 g5 e5 d5 c6 bb5 g5 bb5",
  AB: "e6 d6 e6 d6 e6 d6 e6 d6 g6@8", AC: "[~@8 g6@15 ~@9]/2",
})).s("gm_trumpet").gain(0.4)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ B C@2 ~ A D E ~@6 F G H I J K L M ~@5 N ~ N ~ N ~ O C@2 ~ N D E ~ P ~@4 Q R Q R Q R S T U@2
  ~@14 V W X Y Z AA AB AC ~@15 AD@2
>`.pickRestart({
  A: "c4 d4 f4!2 bb3@2 g3@10", B: "c4 d4 f4!2 bb3@2 g3@2 ~@8", C: "[~@4 e4 f4 e4 d4 a4 bb4 a4 g4 f4 ~ f4@18]/2",
  D: "~@6 d4 e4 a4 bb4 a4 ~ e5 f5 e5 d5", E: "~ d5 f5@14", F: "b4@2 g5 ~ g5 [g5,ab5]!4 f5 d5 ~ bb4 [bb4,b4]!3",
  G: "d5 e5 g5 a5 g5 f5 g5 [g5,ab5]!4 f5 g5@2 f5 ~", H: "g5 [g5,ab5]!3 f5 d5 ~ bb4@3 g4 ~ f4@3 g4",
  I: "db5 d5 ~ d5 c5 db5 ~ db5 b4 c5 ~ c5 bb4 b4 ~ bb4", J: "g4@3 g4 a4@3 ~",
  K: "d5@3 ~ bb4@2 g4 ~@3 bb4 b4 g4 f4 g4 f4", L: "g4@5 b4 c5 b4 [b4,c5]!4 [g4,c5] f4 g4@2",
  M: "g5 ~ d5 ~@2 db5 d5 ~ bb4 ~@3 d4!2 f4 ~", N: "c5 d5 f5!2 bb4@2 g4@10", O: "c5 d5 f5!2 bb4@2 g4@2 ~@8",
  P: "~@14 b4 ~", Q: "bb4 g4@2 a4 ~@3 f4 b4@3 ~ f4@3 g4", R: "e4 ~ gb4 g4@3 ~@2", S: "b5 g5@2 a5 ~@3 g5 b5@3 ~ f5@3 g5",
  T: "e5 ~ gb5 g5@5", U: "f5/2", V: "f5 d5 c5 ~@5 c5 bb4 g4 ~@5", W: "f5 d5 c5 bb4 g4 f4 d4 ~ g4@6 ~@2",
  X: "bb4 a4 g4 ~@5 a5 g5 e5 ~@5", Y: "~@2 e5 d5 e5 d5 c5 bb4 c5@6 ~@2", Z: "a5 g5 e5 ~@5 a5 g5 e5 ~@5",
  AA: "bb5 g5 a5 g5 bb5 g5 a5 g5 a5 g5 f5 d5 c5 bb4 g4 bb4", AB: "c5 bb4 g4 ~ e5 d5 c5 bb4 a5 g5 e5 d5 c6 bb5 g5 bb5",
  AC: "c6 bb5 c6 bb5 c6 bb5 c6 bb5 d6@8", AD: "[~@8 g3@15 ~@9]/2",
})).s("gm_synth_brass_1").gain(0.33)

// other · synth brass 1 · "SYNBRASS 1" · soft notes
const synth_brass_1_soft = note("<~@20 A ~@8 B C ~@2 D ~ E ~@16 A ~@7 A F A F A F G H ~@41>".pickRestart({
  A: "~@11 g4 ~@4", B: "b4 ~@15", C: "~@4 ab5 ~ c5 ~@9", D: "~@3 bb4 ~ g4 ~@2 g5 ~@7", E: "~@4 b4 c5 ~@4 a4 ~@5",
  F: "~ f4 ~@6", G: "~@11 g5 ~@4", H: "~ f5 ~@6",
})).s("gm_synth_brass_1").gain(0.2)

// other · trombone
const trombone = note(`<
  ~@4 A B A B A B A B A B A C D@2 A B E F ~@6 A B A B A B A G ~@4 A B A B A B A C D@2 A B E F ~ H ~@4 I J I J I J K@3
  ~@15 L M N O P Q R S ~@15 T ~
>`.pickRestart({
  A: "~ a2", B: "c3 ~ f3!2 bb2@2 g2@10", C: "c3 ~ f3!2 bb2@2 g2@2 ~@8", D: "[~@4 e3 f3 e3 d3 a3 ~ a3 g3 d4 ~ d4@18]/2",
  E: "~@6 d3 e3 a3 bb3 a3 g3 e4 f4 e4 ~", F: "~ g4 g4@14", G: "c3 ~ f3!2 bb2@2 g2 ~@2 bb2 ~ f2 ~@4", H: "~@7 f4",
  I: "bb3 g3@2 a3 ~@4 b3@3 ~ f3@3 ~", J: "e3 f3 gb3 g3@3 ~@2", K: "[e4 ~ gb4 g4@21]/3", L: "f4 d4 c4 ~@5 c4 bb3 g3 ~@5",
  M: "f4 d4 c4 bb3 g3 f3 d3 ~ g3@6 ~@2", N: "bb3 a3 g3 ~@5 a4 g4 e4 ~@5", O: "~@2 e4 d4 e4 d4 c4 bb3 c4@6 ~@2",
  P: "a4 g4 e4 ~@5 a4 g4 e4 ~@5", Q: "bb4 g4 a4 g4 bb4 g4 a4 g4 a4 g4 f4 d4 c4 bb3 g3 bb3",
  R: "c4 bb3 g3 ~ e3 d3 c3 bb2 a3 g3 e3 d3 c4 bb3 g3 bb3", S: "e4 d4 c4 bb3 g3 e3 d3 c3 g2@8", T: "~ f3",
})).s("gm_trombone").gain(0.33)

// other · trombone · soft notes
const trombone_soft = note(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A B ~@2 A C ~@8 A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A B ~@2 A C ~@7 D ~ D ~ D ~ E ~@42
>`.pickRestart({
  A: "~ d3 ~@14", B: "~@9 bb3 ~@6", C: "~@15 g4", D: "~@7 g3 ~@3 g3 ~@3 g3", E: "~ f4 ~@6",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass_2 = note(`<
  ~@4 A B A B A B A B A B A C D@2 A B E F ~@6 A B A B A B A G H I J K A B A B A B A C D@2 A B E F ~ L ~@10 M N@3 ~@20 O
  P ~@15 Q@2
>`.pickRestart({
  A: "g1 ~", B: "c3 d3 f3!2 bb2@2 g2@10", C: "c3 d3 f3!2 bb2@2 g2@2 ~@8",
  D: "[~@4 e3 f3 e3 d3 a3 bb3 a3 g3 c4 ~ c4@18]/2", E: "~@6 d3 e3 a3 bb3 a3 g3 e4 f4 e4 c4", F: "~ c4 c4@14",
  G: "c3 d3 f3!2 bb2@2 g2 ~@2 bb2 ~ f2 ~@4", H: "g1@4 b1 c2 db2 d2 c2@2 c2!2 c3@3 bb2",
  I: "g2@2 g2!2 gb3 ~ f3 d3@2 d3 c3 d3 bb2 a2 g2 ~, ~@5 g3@2 ~@9",
  J: "~ g2 f2 gb2 g2 d2 a2 d2 bb2 d2 c3 d2 db3 d3 f3@2", K: "f3@3 ~ g3@3 bb3!2 g3 c4 g3 d4 c4 bb3 ~", L: "~@7 g3",
  M: "g2 g2@2 g2 ~@3 g2 g2@3 g2 g2@3 g2", N: "[d3 db3 c3 b2@21]/3", O: "~@4 e3 d3 c3 bb2 a3 g3 e3 d3 c4 bb3 g3 bb3",
  P: "e4 d4 c4 bb3 g3 e3 d3 c3 g2@8", Q: "[g1@25 ~@7]/2",
})).s("gm_tuba").gain(0.39)

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

// drums · rim
const rim = s("rim").struct("<~@12 A ~@5 A ~ A@3 ~@21 A ~@5 A ~ A@3 ~@54>".pickRestart({
  A: "~@3 x!3 ~@2",
})).gain(0.68)
// … 34 more lines

More by Blood, Sweat & Tears