Strudelify

All American Girls

Sister Sledge

KeyA minorTempo125 bpm
0:00/0:00
// All American Girls — Sister Sledge
// 125 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 F@3 G@2 H@2 I@2 J@6 K L B@2 C@2 D@2 F@3 G@2 H@2 I@2 J@6 K L B@2 C@2 D@2
  E@2 B@2 C@2 D@2 M@2 ~@15 A B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 E@2 N@2 ~@6
>`.pickRestart({
  A: "~@9 [c5,f5,a5]@6 ~", B: "[~ [b4,d5,g5]@2 [d5,g5]@2 ~@2 [c5,e5,a5]@14 ~@4 [c5,f5,a5]@6 ~, ~@3 b4 ~@28]/2",
  C: "[~ [b4,d5,g5]@5 ~ [c5,e5,a5]@15 ~@3 [c5,f5,a5]@7]/2", D: "[~ [b4,d5,g5]@5 ~ [c5,e5,a5]@14 ~@4 [c5,f5,a5]@6 ~]/2",
  E: "[~ [b4,d5,g5]@4 ~@2 [a4,c5,e5,g5]@17 ~ [c5,f5,a5]@6 ~]/2", // G Am7 F
  F: "[~ [b4,d5,g5]@4 ~@2 [a4,c5,e5,g5]@17 ~ [g5,a5,c6,e6]@21 ~@2]/3", // G Am7
  G: "[~ [a5,d6,f#6]@2 ~@2 [a5,d6,f#6]@3 ~ [g5,a5,c6,e6]@23]/2", H: "[~@3 [a5,d6,f#6]@5 ~ [g5,a5,c6,e6]@21 ~@2]/2",
  I: "[~ [a5,d6,f#6]@3 ~ [a5,d6,f#6]@2 ~@2 [g5,a5,c6,e6]@20 ~@3]/2", // D Am7
  J: "[~@3 [a5,d6,f#6]@6 ~@4 f5@2 [d5,g5,b5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~ [c5,e5,a5]@18 ~@4 f5@2 [d5,g5,b5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~ [c5,e5,a5]@8 [b4,d5]@2 [c5,e5,a5]@7 ~@5 f5@2 ~@4 [c5,e5,a5]@2 [c5,e5,a5]@2 [c5,e5,a5]@8 ~, ~@9 [a4,c5]@6 ~@26 [a4,c5]@6 ~@26 [a4,c5]@6 ~@17, ~@9 f5@4 ~@28 f5@4 ~@28 f5@4 ~@19, ~@11 e5@4 ~@28 e5@4 ~@28 e5@4 [d5,g5,b5]@16 ~]/6", // D G Am G Am Bm Am G
  K: "~@9 [a4,c5,f5]@7", L: "~ [b4,d5,g5]@7 ~ [c5,f5,a5]@6 ~", M: "[~ [b4,d5,g5]@4 ~@2 [a4,c5,e5,g5]@17 ~@8]/2",
  N: "[~ [b4,d5,g5]@2 [d5,g5]@2 ~@2 [c5,e5,a5]@14 ~@11, ~@3 b4 ~@28]/2", // G G5 Am
})).s("gm_piano").gain(0.59)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@2 B C@2 D@2 E@3 B C@2 D@2 E@3 B C@2 D@2 F@8 G@3 H@5 I@2 B C@2 D@2 J@8 G@3 H@5 K@2 B C@2 D@2 E@3 B C@2 D@2 L@3 M@2
  N@2 O@2 P@2 Q@2 R@2 S@2 T@2 B C@2 D@2 E@3 B C@2 D@2 E@3 B C@2 D@2 E@3 U ~@6
>`.pickRestart({
  A: "[~@5 d2@2 ~@2 d3@6 d#3@2 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2]/2", B: "~ a2@4 c3@2 a2 c3 d3@5 ~ d3",
  C: "[d#3 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2@2 a2@3 ~ a2@2 c3@2 d3@6 d3]/2",
  D: "[d#3 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2@2 a2@6 a2 c3 d3@4 ~@2 d3]/2",
  E: "[d#3 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2@2 a2@3 ~ c3@2 ~@2 d3@6 d#3@2 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2, ~@7 f#2 ~@40]/3",
  F: "[d#3 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2@2 a2@3 ~ a2@2 ~@2 a2@4 a3 ~ g2@4 g3 ~@3 f#2@4 f#3 ~ d3@2 b2@2 e3@4 e3@2 ~ c3 d3@2 d4 ~@2 b2 c3@2 c4 ~@7 c3@2 b2@2 c3@2 c#3@2 d3 ~ e3@6 ~@4 a3 ~ g2@4 g3 ~@3 f#2@4 f#3 ~ d3@2 b2@2 e3@4 e3@2 ~ c3 d3@2 d4 ~@2 b2 c3, ~@7 f#2 ~@120]/8",
  G: "[~ c4 ~@7 c3@2 b2@2 c3@2 c#3@2 d3 ~ e3@6 f2@2 e2@2 f2@2 b2@4 a2 ~ a2 ~ a2@2 ~@7]/3",
  H: "[~@5 e3@3 ~ f2@2 e2@2 f2@2 b2@3 ~ a2 ~ a2 ~ a2@2 ~@6 g2@2 a2@2 ~@2 e3@3 ~ f2@2 e2@2 f2@2 b2@3 ~ a2 ~ a2 ~ a2@2 ~@6 g2@2 a2@3 ~@5 f2@5 ~@2]/5",
  I: "[~ g2@2 g2@2 ~@4 d3@5 ~ d#3@2 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2]/2",
  J: "[d#3 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2@2 a2@6 ~@2 a2@4 a3 ~ g2@4 g3 ~@3 f#2@4 f#3 ~ d3@2 b2@2 e3@4 e3@2 ~ c3 d3@2 d4 ~@2 b2 c3@2 c4 ~@7 c3@2 b2@2 c3@2 c#3@2 d3 ~ e3@6 ~@4 a3 ~ g2@4 g3 ~@3 f#2@4 f#3 ~ d3@2 b2@2 e3@4 e3@2 ~ c3 d3@2 d4 ~@2 b2 c3, ~@7 f#2 ~@120]/8",
  K: "[~ g2@2 g2@2 ~@4 d3@6 d#3@2 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2]/2",
  L: "[d#3 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2@2 a2@3 ~ a2@2 ~@4 g2@2 f#2@2 f2@2 e2@4 g2@2 ~ a2 ~ a2 g2@2 ~@3, ~@7 f#2 ~@17 a2@4 ~@19]/3",
  M: "[e2 a2@2 b2@2 c3@2 ~@2 a2@2 g2@2 f#2@2 f2@2 e2@4 g2@3 a2 ~ a2 g2 ~@4, ~@13 e2 ~@18]/2",
  N: "[~@2 a2 b2@2 c3@2 ~@2 a2@2 g2@2 f#2@2 f2@2 e2@4 g2@2 ~ a2 ~ a2 g2 ~@4, ~@9 e2 ~@22]/2",
  O: "[~ a2@2 b2@2 ~@4 a2@2 g2@2 f#2@2 f2@2 e2@4 g2@2 ~ a2 ~ a2 g2@2 ~@3]/2",
  P: "[e2 a2@2 b2@2 ~@4 a2@2 g2@2 f#2@2 f2@2 e2@4 g2@2 ~ a2 ~ a2 g2@2 ~@3]/2",
  Q: "[e2 a2@2 b2@2 c3@2 ~@2 a2@2 g2@2 f#2@2 f2@2 e2@4 g2@3 a2 ~ a2 g2 ~@4]/2",
  R: "[~@3 a2@2 b2@2 ~@2 a2@2 g2@2 f#2@2 f2@2 e2@4 g2@3 a2 ~ a2 g2@2 ~@2 e2]/2",
  S: "[a2@2 e2 b2@2 c3@2 ~@3 e2 g2 ~ f#2@2 f2@2 e2@4 g2@2 ~ a2 ~ a2 g2 ~@4, ~@9 a2@2 ~@21]/2",
  T: "[~@3 a2@2 c3@2 ~@2 d3@6 d#3@2 e3@2 g2@2 g#2@2 a2@3 ~ g2@2 a2@2 g2]/2", U: "~ a2@4 ~@11",
})).s("gm_acoustic_bass").gain(0.64)

// chords · brass section · "BRASS 1"
const brass_section = note("<A B C D E F G H ~@24 I@6 J@2 ~@15 I@6 J@2 ~@25 K ~@3 L ~@34>".pickRestart({
  A: "~@15 [e4,e5]", B: "~ [g4,g5] ~ [e4,g4,e5,g5] ~@2 [a4,a5] ~@9", C: "~@15 [c4,c5]",
  D: "~ [d4,d5]@2 [c4,c5] ~ [a3,a4] ~ [a3,a4] ~@3 [g4,a4,g5,a5] ~ [a4,a5] ~@2", E: "~@11 [d4,d5] ~ [e4,e5] ~ [g4,g5]",
  F: "~ [g4,g5]@2 [e4,e5] [g4,g5] ~ [a4,a5] ~@9", G: "~@11 [c4,c5] ~@3 [c4,c5]",
  H: "~ [d4,d5] ~ [c4,c5] ~ [a3,a4] ~ [a3,a4] ~@3 [b4,b5] ~ [c5,c6] ~@2", // D C A B C
  I: "[~@9 a5@2 g5 ~ a5 ~ [b5,d6,g6]@2 ~@2 [e5,a5,c6,e6] ~ [e5,a5,c6,e6]@15 ~@5 a5@2 g5 ~ a5 ~ [b5,d6,g6]@2 ~@2 [e5,a5,c6,e6] ~ [e5,a5,c6,e6]@9 ~ [d5,g5,b5,d6]@2 [e4,e5]@2 ~@8 g5 ~ a5 ~ [b5,d6,g6]@2 ~@2 [e5,a5,c6,e6] ~ [e5,a5,c6,e6]@9 ~@2, ~@9 [c5,e5]@4 ~@28 [c5,e5]@4 ~@20 [a5,c6] ~@7 [c5,e5,a5]@4 ~@19]/6", // G Am G Am G E G Am …
  J: "[~@9 [f5,a5,c6]@4 ~@2 [a5,c6]@2 [g5,b5]@2 [g5,b5,d6]@4 ~@9, ~@15 f5 ~ d6 ~@14]/2", K: "~@3 a5@2 g5@2 a5@2 ~@7",
  L: "~@3 a5@2 g5@2 a5 ~@8",
})).s("gm_brass_section").gain(0.52)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E F G H I B C D E F J K I B C D E F G K L M N M O M P M Q R S ~@2 R S A T U D E F V K W M N M O M P M Q R S
  ~@2 R S A B C D E F J K I B C D E F G K X ~@7 Y Z AA Z AA AB AA Z AC B C D E F J K I B C D E F J K I B C D E F J K I B
  AD ~@6
>`.pickRestart({
  A: "~@11 [e4,f4,a4,c5] ~@2 [f4,a4,c5]!2", // Fmaj7 F
  B: "~ [g4,b4,d5] ~@2 [g4,b4,d5] [b4,d5] ~ [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [a4,e5,g5], ~@7 c5", // G Bm Am A7
  C: "c5 [a4,c5,e5] ~@2 [a4,c5,e5]!2 ~ [g4,a4,b4,d5] ~@3 [f4,a4,c5] ~ [a4,c5] [f4,a4,c5] ~", // Am G F Am F
  D: "[f4,a4] [g4,b4,d5] ~@2 [g4,b4,d5] ~@2 [a4,c5,e5] ~@3 [a4,c5,e5] ~ c5 [a4,c5,e5] ~", // F G Am
  E: "c5 [a4,c5,e5] ~@3 [g4,b4,d5] ~@5 [f4,a4,c5] ~ [f4,a4,c5]!2 ~", // Am G F
  F: "a4 [g4,b4,d5] ~@2 [g4,b4,d5] ~ b4 [a4,c5,e5] ~@3 [a4,c5,e5] ~ c5 [a4,c5,e5] ~", // G Am
  G: "[a4,c5,e5]!2 ~ [a4,c5,e5] ~@3 [g4,b4,d5] ~@3 [f4,a4,c5] ~ a4 [f4,a4,c5] a4", // Am G F
  H: "~ [g4,b4,d5] ~@2 [g4,a#4,b4,d5] ~ [b4,d5] [a4,c5,e5] ~@3 [a4,c5,e5] ~ c5 [a4,c5,e5] ~", // G Bm Am
  I: "c5 [a4,c5,e5] ~ c5 [a4,c5,e5] ~@2 [a4,c5,e5] ~@3 [e4,f4,a4,c5] ~@2 [f4,a4,c5]!2", // Am Fmaj7 F
  J: "[a4,c5,e5] [c5,e5] ~ [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [f4,a4,c5] ~ a4 [f4,a4,c5] a4", // Am C Am F
  K: "~ [g4,b4,d5] ~@2 [g4,b4,d5] ~ [b4,d5] [a4,c5,e5] ~@3 [a4,c5,e5] ~ c5 [a4,c5,e5] ~", // G Bm Am
  L: "c5 [a4,c5,e5] ~ c5 [a4,c5,e5] ~@2 [a4,c5,e5] ~@3 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~", // Am Am7
  M: "~ [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~@3 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~", // Am7
  N: "~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@3 ~@3 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~", // D Am7
  O: "~ [g4,a4,c5,e5] ~ [a4,d5,f#5]@4 ~@4 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~", // Am7 D Am7
  P: "~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@2 ~@4 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~", // D Am7
  Q: "~ [g4,a4,c5,e5] ~ [a4,d5,f#5]@4 ~@9", R: "~@11 [c4,e4,a4]!2 ~@2 [c4,e4,a4]",
  S: "[c4,e4,a4] ~@2 [c4,e4,a4]!2 ~@11", // Am
  T: "~ [g4,b4,d5] ~@2 [g4,b4,d5] [b4,d5] ~ [g4,b4,d5] ~@3 [a4,c5,e5] ~@3 [a4,e5], ~@7 c5", // G Bm G Am A5
  U: "c5 [a4,c5,e5] ~@2 [a4,c5,e5]!2 ~ [g4,b4,d5] ~@3 [f4,a4,c5] ~ [a4,c5] [f4,a4,c5] ~", // Am G F Am F
  V: "[a4,c5,e5] [c5,e5] ~ [a4,c5,e5] ~@3 [g4,b4,d5] ~@3 [f4,a4,c5] ~ a4 [f4,a4,c5] a4", // Am C Am G F
  W: "c5 [a4,c5,e5] ~ c5 [a4,c5,e5] ~@2 [a4,e5] ~@3 [g4,a4,c5,e5] ~@2 [g4,a4,c5,e5] ~", // Am A5 Am7
  X: "c5 [a4,c5,e5] ~ c5 [a4,c5,e5] ~@2 [a4,c5,e5] ~@8", Y: "~@9 [a4,c5,e5] ~@2 [a4,c5,e5] ~ [a4,c5,e5]!2",
  Z: "~ [a4,c5,e5] ~@2 [a4,c5,e5] ~ [a4,c5,e5]!2 ~ [a4,c5,e5] ~@2 [a4,c5,e5] ~ [a4,c5,e5]!2", // Am
  AA: "~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,c5,e5] ~@2 [a4,c5,e5] ~ [a4,c5,e5]!2", // D Am
  AB: "~ [a4,c5,e5] ~@2 [a4,c5,e5] ~ [a4,c5,e5]!2 ~ [a4,c5,e5] ~@2 [a4,c5,e5] ~ [a4,c5,e5] [c5,e5]", // Am C
  AC: "~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [e4,f4,a4,c5] ~@2 [f4,a4,c5]!2", // D Fmaj7 F
  AD: "c5 [a4,c5,e5] ~@14", // Am
})).s("gm_electric_guitar_muted").gain(0.59)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note("<~@24 A@2 B@2 C@2 D@2 E@6 F G ~@7 A@2 B@2 C@2 D@2 E@6 F G ~@64>".pickRestart({
  A: "[~@9 [g4,a4,c5,e5]@21 ~@2]/2", B: "[~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@3 ~ [g4,a4,c5,e5]@23]/2",
  C: "[~@3 [a4,d5,f#5]@5 ~ [g4,a4,c5,e5]@21 ~@2]/2", D: "[~ [a4,d5,f#5]@3 ~ [a4,d5,f#5]@2 ~@2 [g4,a4,c5,e5]@20 ~@3]/2",
  E: "[~@3 [a4,d5,f#5]@6 ~@4 f5@2 [d5,g5,b5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~ [c5,e5,a5]@18 ~@4 f5@2 [d5,g5,b5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~ [c5,e5,a5]@8 [b4,d5]@2 [c5,e5,a5]@7 ~@5 f5@2 [d5,g5,b5]@4 [c5,e5,a5] ~ [c5,e5,a5] ~ [c5,e5,a5]@8 ~, ~@9 [a4,c5]@6 ~@26 [a4,c5]@6 ~@26 [a4,c5]@6 ~@17, ~@9 f5@4 ~@28 f5@4 ~@28 f5@4 ~@19, ~@11 e5@4 ~@28 e5@4 ~@28 e5@4 ~@17]/6", // D G Am G Am Bm Am G …
  F: "~@9 [a4,c5,f5]@7", G: "~ [b4,d5,g5]@7 ~@8",
})).s("gm_epiano2").gain(0.39)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  A B C D E F G H I J@2 K@2 L@2 M@2 J@2 M@2 N@2 O@2 ~@14 I J@2 K@2 L@2 P@2 ~ Q@2 R ~ S@2 T ~@6 I J@2 K@2 L@2 M@2 J@2 M@2
  N@2 U@2 ~@9 V ~@3 W ~@2 J@2 K@2 L@2 M@2 J@2 K@2 L@2 M@2 J@2 K@2 L@2 M@2 X@2 ~@6
>`.pickRestart({
  A: "~@15 [e4,e5]", B: "~ [g4,g5] ~ [e4,g4,e5,g5] ~@2 [a4,a5] ~@9", C: "~@15 [c4,c5]",
  D: "~ [d4,d5]@2 [c4,c5] ~ [a3,a4] ~ [a3,a4] ~@3 [g4,a4,g5,a5] ~ [a4,a5] ~@2", E: "~@11 [d4,d5] ~ [e4,e5] ~ [g4,g5]",
  F: "~ [g4,g5]@2 [e4,e5] [g4,g5] ~ [a4,a5] ~@9", G: "~@11 [c4,c5] ~@3 [c4,c5]",
  H: "~ [d4,d5] ~ [c4,c5] ~ [a3,a4] ~ [a3,a4] ~@3 [b4,b5] ~ [c5,c6] ~@2", I: "~@9 [a4,c5,f5]@7",
  J: "[[b4,d5,g5]@6 [c5,e5,a5]@17 ~@2 [c5,f5,a5]@7]/2", // G Am F
  K: "[[d5,g5,b5]@6 [e5,a5,c6]@13 ~@2 [d5,g5,b5]@4 [c5,f5,a5]@7]/2", // G Am G F
  L: "[[b4,d5,g5]@6 ~ [c5,e5,a5]@17 ~ [c5,f5,a5]@7]/2", // G Am F
  M: "[~ [d5,g5,b5]@6 [e5,a5,c6]@13 ~ [d5,g5,b5]@4 [c5,f5,a5]@7]/2", // G Am G F
  N: "[~ [b4,d5,g5]@6 [c5,e5,a5]@17 ~ [c5,f5,a5]@7]/2", O: "[~ [d5,g5,b5]@5 ~ [e5,a5,c6]@17 ~@8]/2",
  P: "[~ [d5,g5,b5]@6 [e5,a5,c6]@13 ~@12]/2", Q: "[~@13 [a4,b4] c5@4 ~ a4 ~@11 a4]/2", R: "~ c5 e5@6 ~@8, ~@2 d5 ~@13",
  S: "[~@13 [a4,b4,a5,b5] [c5,c6]@4 ~ [a4,a5] ~@11 [a4,a5]]/2", T: "~ [c5,c6] [d5,d6] [e5,e6]@5 ~@8",
  U: "[~ [d5,g5,b5]@5 ~@15 [g4,g5]@2 ~@2 [a4,a5]@2 ~@5, ~@7 [e5,a5,c6]@17 ~@8]/2", V: "~@3 a5@2 g5@2 a5@2 ~@7",
  W: "~@3 a5@2 g5@2 a5 ~@8", X: "[[b4,d5,g5]@6 [c5,e5,a5]@17 ~@9]/2",
})).s("gm_string_ensemble_2").gain(0.4)

// drums · kick
const kick = s("bd").struct("<A B@27 C B@3 C B@2 D B@3 E B@11 C B@3 C B@2 D B@3 E B@30 F G B@25 H ~@6>".pickRestart({
  A: "~@3 x!2 ~@4 x ~@6", B: "~ x ~@7 x ~@6", C: "~ x ~ x ~@5 x ~@6", D: "~ x ~@7 x ~@5 x", E: "~ x ~ x!2 ~@4 x ~@6",
  F: "~ x ~@7 x ~@3 x ~@2", G: "~ x ~ x!3 ~@3 x ~@6", H: "~ x ~@14",
})).gain(0.57)

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

// drums · clap
const clap = s("cp").struct("<A B@27 C B@3 C B@18 C B@3 C B@38 C B@25 ~@7>".pickRestart({
  A: "~@4 x ~@8 x ~@2", B: "~@5 x ~@7 x ~@2", C: "~@13 x ~@2",
})).gain(0.43)

// drums · low tom
const low_tom = s("lt").struct("<~@94 [~@4 x!2 ~@10] ~@32>").gain(0.57)

// drums · hihat
const hihat = s("hh").struct("<[~@9 x!7] [x!16]!35 [x!5 ~@4 x!7] [x!16]!22 [x!5 ~@4 x!7] [x!16]!60 [x!2 ~@14] ~@6>")
  .gain(0.21)

// drums · mid tom
const mid_tom = s("mt").struct("<~@47 [~@6 x!2 ~@8] ~@46 [x!2 ~@14] ~@32>").gain(0.57)

// drums · high tom
const high_tom = s("ht").struct("<~@47 [~@5 x ~@10] ~@79>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 B ~@3 A ~@2 A ~@3 A ~@3 A ~@3 B ~@3 B ~@3 A ~@2 A ~@3 A ~@3 A ~@3 A
  ~@11 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@8
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@3 x ~@12",
})).gain(0.64)

stack(
  piano, bass, brass_section, electric_guitar_muted, epiano2, string_ensemble_2, kick, snare, clap, low_tom, hihat,
  mid_tom, high_tom, crash
)

More by Sister Sledge