Strudelify

The Happening

The Supremes

KeyG majorTempo173 bpm
0:00/0:00
// The Happening — The Supremes
// 173 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(173/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 · electric bass pick
const bass = note(`<
  A@8 B C D E F G H I J K B C D E F G H I J K L M@2 N@2 O@2 P@2 Q R S T U B C D E F G H I J K B C D E F G H I J K L M@2
  N@2 O@2 P@2 Q R S V@8 W@8 X Y Z AA AB AC AD AE AF AG X Y Z AA AB AC AD AE AF AG X Y Z AA AB AC AD AE AF AG X Y ~
>`.pickRestart({
  A: "[g1@4 g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@3 ~ g1@4 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@3 ~ g1@4 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@3 ~ g1@4 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@3 ~ g1]/8",
  B: "~@7 b1@3 ~ e2 d2@3 ~", C: "c2@4 ~@3 e2@3 ~ a2 g2@3 g2", D: "d2@4 ~@3 f#2@3 ~ b2 a2@3 d2",
  E: "g2@3 g2 b1@4 a1@4 d2@4", F: "g1@4 ~@3 b1@3 ~ e2 d2@3 ~", G: "c2@4 ~@3 c2 a1@4 f1@4",
  H: "a#1@4 ~@3 d2@3 ~ g2 f2@4", I: "d#2@4 ~@3 g2@3 ~ c3 a#2@4", J: "g#1@4 ~@3 g#1@4 ~ d#2@4",
  K: "~@3 d2@4 ~ e2@3 ~ f#2@4", L: "g2@3 ~ d2@3 ~ f1@3 ~ f#1@3 ~",
  M: "[g1@3 ~ g2@4 f#2@3 e2@4 d2@4 ~@4 f#2@4 b2 a2@3 d2]/2", N: "[d2@3 d2 c2@4 b1@3 a1@4 g1@8 b1@4 e2 d2@3 b1]/2",
  O: "[g1@4 g1@4 a1@3 a#1@4 b1@8 d#2@4 g#2 f#2@3 f#2]/2", P: "[b1@4 g1@4 f#1@3 f1@4 e1@8 g1@4 b1 b1@3 b1]/2",
  Q: "g1 g2 f#2 e2", R: "f#2 d2", S: "f#2@4 e2@3 c2@4 e2 d2@4", T: "b1 ~@3 d2@2 d2@2", U: "d2!4",
  V: "[g1@3 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@4 g1@4 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@4 g1@4 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@4 g1@4 ~ g1@4 a#1@3 g1@4 c2@4 ~ g1@4 d2@3 c2@4 g#1]/8",
  W: "[~@4 g#1@4 b1@3 g#1@4 c#2@4 ~ g#1@4 d#2@3 c#2@4 g#1@4 ~ g#1@4 b1@3 g#1@4 c#2@4 ~ g#1@4 d#2@3 c#2@4 g#1@4 ~ g#1@4 b1@3 g#1@4 c#2@4 ~ g#1@4 d#2@3 c#2@4 g#1@4 ~ g#1@4 b1@3 g#1@4 c#2@4 ~ g#1@4 d#2@3 c#2@4 g#1]/8",
  X: "~@7 c2@3 ~ f2 d#2@3 ~", Y: "c#2@4 ~@3 f2@3 ~ a#2 g#2@3 g#2", Z: "d#2@4 ~@3 g2@3 ~ c3 a#2@3 d#2",
  AA: "g#2@3 g#2 c2@4 a#1@4 d#2@4", AB: "g#1@4 ~@3 c2@3 ~ f2 d#2@3 ~", AC: "c#2@4 ~@3 c#2 a#1@4 f#1@4",
  AD: "b1@4 ~@3 d#2@3 ~ g#2 f#2@4", AE: "e2@4 ~@3 g#2@3 ~ c#3 b2@4", AF: "a1@4 ~@3 a1@4 ~ e2@4",
  AG: "~@3 d#2@4 ~ f2@3 ~ g2@4",
})).s("gm_electric_bass_pick").gain(0.62)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@8 ~@21 B@2 C@2 D@2 E@2 F G H I ~@22 B@2 C@2 D@2 E@2 F G H J@8 K@8 ~@33
>`.pickRestart({
  A: "[[g3,g4]@4 [g3,g4]@4 [a#3,a#4]@3 [g3,g4]@4 [c4,c5]@4 ~ [g3,g4]@4 [d4,d5]@3 [c4,c5]@3 ~ [g3,g4]@4 ~ [g3,g4]@4 [a#3,a#4]@3 [g3,g4]@4 [c4,c5]@4 ~ [g3,g4]@4 [d4,d5]@3 [c4,c5]@3 ~ [g3,g4]@4 ~ [g3,g4]@4 [a#3,a#4]@3 [g3,g4]@4 [c4,c5]@4 ~ [g3,g4]@4 [d4,d5]@3 [c4,c5]@3 ~ [g3,g4]@4 ~ [g3,g4]@4 [a#3,a#4]@3 [g3,g4]@4 [c4,c5]@4 ~ [g3,g4]@4 [d4,d5]@3 [c4,c5]@3 ~@2]/8", // G A# G C G D C G …
  B: "[~@4 [g3,g4]@4 [f#3,f#4]@3 [e3,e4]@4 [d3,d4]@16 ~]/2", C: "[~@4 c3@4 b2@3 a2@4 g2@16 ~]/2",
  D: "[~@4 b3@4 c#4@3 d4@4 d#4@16 ~]/2", E: "[~@4 b3@4 b3@3 a3@4 g3@16 ~]/2", F: "~ g3 f#3 e3", G: "f#3 d3",
  H: "f#3@4 e3@3 c3@4 e3 d3@4", I: "b2 ~@7",
  J: "[g3@4 g3@4 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 ~, b2 ~@63]/8",
  K: "[g#3@4 g#3@4 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 ~]/8",
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(1)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@8 B C D B@2 E F G H D B C D B@2 E F G H D ~@2 D@2 B@2 I@2 J K ~@4 B C D B@2 E F G H D B C D B@2 E F G H D ~@2 D@2
  B@2 I@2 J K ~@2 A@8 L@8 H M G H@2 N I O P G H M G H@2 N I O P G H M G H@2 N I O P G H M ~
>`.pickRestart({
  A: "[g3@4 g3@4 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 g3@5 g3@3 g3 g3@3 g3@4 ~]/8",
  B: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~", C: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~", D: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~",
  E: "~@2 [c4,e4,g4] ~@3 [a3,c4,f4] ~", F: "~@2 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~",
  G: "~@2 [a#3,d#4,g4] ~@3 [a#3,d#4,g4] ~", H: "~@2 [c4,d#4,g#4] ~@3 [c4,d#4,g#4] ~",
  I: "~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", J: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~", K: "~@2 [b3,e4,g4] ~@5",
  L: "[g#3@4 g#3@4 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 g#3@5 g#3@3 g#3 g#3@3 g#3@4 ~]/8",
  M: "~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~", N: "~@2 [c#4,f4,g#4] ~@3 [a#3,c#4,f#4] ~",
  O: "~@2 [b3,e4,g#4] ~@3 [b3,e4,g#4] ~", P: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0)

// other · trombone
const trombone = note(`<
  ~@3 A@5 B C D@2 E F G@2 H I B C D@2 E F G@2 H I J K L@4 M@4 ~@2 N@2 B C D@2 E F G@2 H I B C D@2 E F G@2 H I J K L@4
  M@4 ~@2 O@3 ~ O@3 ~ P@3 ~ P@3 ~ Q R S@2 T U V@2 W X Q R S@2 T U V@2 W X Q R S@2 T U V@2 W X Q R ~
>`.pickRestart({
  A: "[~@15 g3@32 g3@32 ~]/5", B: "~@4 f#5@3 g5@2 ~@7", C: "~@4 g5@3 a5@2 ~@7", D: "[d5@20 f#5@3 g5@2 ~@7]/2", E: "d5",
  F: "e5 c5", G: "[d5@8 ~@3 d5 f5@3 d#5@2 ~@3 d#5@6 ~@2 c#5@4]/2", H: "c5@3 ~@5", I: "~@3 c6@5 b5@3 ~ a5@3 ~",
  J: "~@2 f5 f#5", K: "g5 ~@7", L: "[~@20 c4@3 ~ b3@3 a3@3 ~@2 b3@32, d4@31 g3@16 ~@17]/4",
  M: "[~@20 b3@3 ~ b3@3 a3@3 ~@2 g4@24 ~@8, f#4@31 g3@16 ~@17]/4", N: "[~ d3@7]/2", O: "g2/3", P: "g#2/3",
  Q: "~@4 g5@3 g#5@2 ~@7", R: "~@4 g#5@3 a#5@2 ~@7", S: "[d#5@20 g5@3 g#5@2 ~@7]/2", T: "d#5", U: "f5 c#5",
  V: "[d#5@8 ~@3 d#5 f#5@3 e5@2 ~@3 e5@6 ~@2 d5@4]/2", W: "c#5@3 ~@5", X: "~@3 c#6@5 c6@3 ~ a#5@3 ~",
})).s("gm_trombone").gain(0.25).pan(1)

// other · trombone
const trombone_2 = note(`<
  ~@3 A@5 B C D@2 E F G@2 H I B C D@2 E F G@2 H I J K L@2 M@2 L@2 N@2 ~@2 O@2 B C D@2 E F G@2 H I B C D@2 E F G@2 H I J
  K L@2 M@2 L@2 N@2 ~@2 P@3 Q@2 ~@2 R@8 ~ S T U@2 V W X@2 Y Z S T U@2 V W X@2 Y Z S T U@2 V W X@2 Y Z S T ~
>`.pickRestart({
  A: "[~@15 g4@4 ~ g4@4 a#4@3 g4@2 ~@2 c5@4 ~ g4@4 d5@3 c5@3 ~ g4@2 ~@3 g4@4 a#4@3 g4@2 ~@2 c5@4 ~ g4@4 d5@3 c5@2 ~@3]/5",
  B: "~@4 f#4@3 g4@2 ~@7", C: "~@4 g4@3 a4@2 ~@7", D: "[d4@20 f#4@3 g4@2 ~@7]/2", E: "d4", F: "e4 c4",
  G: "[d4@8 ~@3 d4 f4@3 d#4@2 ~@3 d#4@6 ~@2 c#4@4]/2", H: "c4@3 ~@5", I: "~@3 c5@5 b4@3 ~ a4@3 ~", J: "~@2 f4 f#4",
  K: "g4 ~@7", L: "f#4/2", M: "g4/2", N: "[g4@3 ~]/2", O: "[~ d2@7]/2", P: "[g4@40 a#4@2 ~ e4@3 ~ e4]/3",
  Q: "[e4@3 g4@25 ~@4]/2",
  R: "[[g4,b4]@3 [g4,b4]@3 ~@2 [g4,b4]@3 [g4,b4]@3 ~ [d#3,b4]@16 c#3@16 d#3@16 c#3@16 d#3@16 c#3@16 d#3@16 c#3, ~@15 g#4@3 ~@110]/8", // G G#m
  S: "~@4 g4@3 g#4@2 ~@7", T: "~@4 g#4@3 a#4@2 ~@7", U: "[d#4@20 g4@3 g#4@2 ~@7]/2", V: "d#4", W: "f4 c#4",
  X: "[d#4@8 ~@3 d#4 f#4@3 e4@2 ~@3 e4@6 ~@2 d4@4]/2", Y: "c#4@3 ~@5", Z: "~@3 c#5@5 c5@3 ~ a#4@3 ~",
})).s("gm_trombone").gain(0.29).pan(0)

// other · tenor sax
const tenor_sax = note(`<
  ~@8 A B C D E F G@2 H I J B C D E F G@2 H I K L ~@12 A B C D E F G@2 H I J B C D E F G@2 H I K L ~@12 M N O@2 ~ P@8 ~
  Q R S T C U V@2 W X Y R S T C U V@2 W X Y R S T C U V@2 W X Y R ~
>`.pickRestart({
  A: "~@4 d4@3 e4@2 ~@2 b3@4 ~", B: "~@4 b3@3 c4@2 ~@7", C: "c4", D: "b3@4 d4@3 e4@2 ~@7", E: "b3", F: "c4@2 a3 f3",
  G: "[a#3@4 ~@7 a#3 c4@3 d#4@2 ~@3 a#3@6 ~@2 a#3@4]/2", H: "g#3@3 ~@5", I: "~@3 d3@5 e4@3 ~ f#4@3 ~",
  J: "g4@3 ~ d4@3 e4@2 ~@2 b3@4 ~", K: "g4@3 ~@5 a3@4 a#3@4", L: "b3 ~@7", M: "~@8 a#4@2 ~ e4@3 ~ e4", N: "e4@3 g4@13",
  O: "g4/2",
  P: "[[g4,b4]@3 [g4,b4]@3 ~@2 [g4,b4]@3 [g4,b4]@3 ~ b4@16 d#4@16 d#4@16 d#4@16 d#4@16 d#4@16 d#4@16 d#4, ~@15 g#4@3 ~@110]/8", // G
  Q: "~@4 d#4@3 f4@2 ~@2 c4@4 ~", R: "~@4 c4@3 c#4@2 ~@7", S: "c#4", T: "c4@4 d#4@3 f4@2 ~@7", U: "c#4@2 a#3 f#3",
  V: "[b3@4 ~@7 b3 c#4@3 e4@2 ~@3 b3@6 ~@2 b3@4]/2", W: "a3@3 ~@5", X: "~@3 d#3@5 f4@3 ~ g4@3 ~",
  Y: "g#4@3 ~ d#4@3 f4@2 ~@2 c4@4 ~",
})).s("gm_tenor_sax").gain(0.19).pan(1)

// other · flute
const flute = note("<~@30 A@2 B@2 C@2 D@2 ~@26 A@2 B@2 C@2 D@2 ~@2 E@8 ~@41>".pickRestart({
  A: "[~@4 d7@2 d#7@2 e7@3 f7@4 f#7@16 ~]/2", B: "[~@2 d7 d#7 e7 d#7 d7 d7@8 ~]/2", C: "[~@2 b7!2 a7!3 a7@8 ~]/2",
  D: "[~@4 g7@2 g7@2 g7@2 g7@3 ~ g7@8 ~@10]/2", E: "[g6@23 d6 g6@3 a6@4 a#6@4 g6@24 ~@5]/4",
})).s("gm_flute").gain(0.02).pan(1)

// other · flute
const flute_2 = note(`<
  ~@3 A@5 B C D E F G H I J K L C D E F G H I J K M ~ N@2 O@2 P@2 Q@2 ~@4 B C D E F G H I J K L C D E F G H I J K M ~
  N@2 O@2 P@2 Q@2 ~@2 R@8 ~@2 S@6 T U V W X Y Z AA AB AC AD U V W X Y Z AA AB AC AD U V W X Y Z AA AB AC AD U ~
>`.pickRestart({
  A: "[~@15 g6@4 ~ g6@4 a#6@3 g6@2 ~@2 c7@4 ~ g6@4 d7@3 c7@3 ~ g6@2 ~@3 g6@4 a#6@3 g6@2 ~@2 c7@4 ~ g6@4 d7@3 c7@2 ~@3]/5",
  B: "~@11 b4 d5@4", C: "c5@4 ~@7 a5 g5@4", D: "f#5@4 ~@3 e5@4 f#5 e5@4", E: "d5@4 ~@3 c5 b4@4 ~@4", F: "a#5 b5 g#5 a5",
  G: "g5@3 f#5 f5@3 e5@4 ~ a5@4", H: "f5@5 ~@2 d5@4 ~@5", I: "~@4 g5@3 f#5 g5@3 d#5 f5@4", J: "d#5@7 c5@4 ~@5",
  K: "~@3 c5 c5@3 ~ b4@4 a4@4", L: "g4@4 ~@7 b4 d5@4", M: "g4 ~@3", N: "[~@4 d6@2 d#6@2 e6@3 f6@4 f#6@16 ~]/2",
  O: "[~@2 d6 d#6 e6 d#6 d6 d6@8 ~]/2", P: "[~@2 b6!2 a6!3 a6@8 ~]/2", Q: "[~@4 g6@2 g6@2 g6@2 g6@3 ~ g6@8 ~@10]/2",
  R: "[g6@23 d6 g6@3 a6@4 a#6@4 g6@24 ~@5]/4", S: "[~@4 b6@3 ~ c#7@3 b6@3 ~ g#6@16 ~]/2", T: "~@11 c5 d#5@4",
  U: "c#5@4 ~@7 a#5 g#5@4", V: "g5@4 ~@3 f5@4 g5 f5@4", W: "d#5@4 ~@3 c#5 c5@4 ~@4", X: "b5 c6 a5 a#5",
  Y: "g#5@3 g5 f#5@3 f5@4 ~ a#5@4", Z: "f#5@5 ~@2 d#5@4 ~@5", AA: "~@4 g#5@3 g5 g#5@3 e5 f#5@4", AB: "e5@7 c#5@4 ~@5",
  AC: "~@3 c#5 c#5@3 ~ c5@4 a#4@4", AD: "g#4@4 ~@7 c5 d#5@4",
})).s("gm_flute").gain(0.02).pan(0)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@8 A B C A@2 D E F G ~ A B C A@2 D E F G ~ H ~@13 A B C A@2 D E F G ~ A B C A@2 D E F G ~ H ~@27 G I F G@2 J K L M ~
  G I F G@2 J K L M ~ G I F G@2 J K L M ~ G I ~
>`.pickRestart({
  A: "[d4,g4,b4]@4 [d4,g4,b4]@3 [d4,g4,b4] [d4,g4,b4]@3 [d4,g4,b4] [d4,g4,b4]@3 [d4,g4,b4]", // G
  B: "[e4,g4,c5]@4 [e4,g4,c5]@3 [e4,g4,c5] [e4,g4,c5]@3 [e4,g4,c5] [e4,g4,c5]@3 [e4,g4,c5]", // C
  C: "[f#4,a4,d5]@4 [f#4,a4,d5]@3 [f#4,a4,d5] [f#4,a4,d5]@3 [f#4,a4,d5] [f#4,a4,d5]@3 [f#4,a4,d5]", // D
  D: "[e4,g4,c5]@4 [e4,g4,c5]@3 [e4,g4,c5] [f4,a4,c5]@3 [f4,a4,c5] [f4,a4,c5]@3 [f4,a4,c5]", // C F
  E: "[d4,f4,a#4]@4 [d4,f4,a#4]@3 [d4,f4,a#4] [d4,f4,a#4]@3 [d4,f4,a#4] [d4,f4,a#4]@3 [d4,f4,a#4]", // A#
  F: "[g4,a#4,d#5]@4 [g4,a#4,d#5]@3 [g4,a#4,d#5] [g4,a#4,d#5]@3 [g4,a#4,d#5] [g4,a#4,d#5]@3 [g4,a#4,d#5]", // D#
  G: "[d#4,g#4,c5]@4 [d#4,g#4,c5]@3 [d#4,g#4,c5] [d#4,g#4,c5]@3 [d#4,g#4,c5] [d#4,g#4,c5]@3 [d#4,g#4,c5]", // G#
  H: "[d4,g4,b4] ~@3", // G
  I: "[f4,g#4,c#5]@4 [f4,g#4,c#5]@3 [f4,g#4,c#5] [f4,g#4,c#5]@3 [f4,g#4,c#5] [f4,g#4,c#5]@3 [f4,g#4,c#5]", // C#
  J: "[f4,g#4,c#5]@4 [f4,g#4,c#5]@3 [f4,g#4,c#5] [f#4,a#4,c#5]@3 [f#4,a#4,c#5] [f#4,a#4,c#5]@3 [f#4,a#4,c#5]", // C# F#
  K: "[d#4,f#4,b4]@4 [d#4,f#4,b4]@3 [d#4,f#4,b4] [d#4,f#4,b4]@3 [d#4,f#4,b4] [d#4,f#4,b4]@3 [d#4,f#4,b4]", // B
  L: "[g#4,b4,e5]@4 [g#4,b4,e5]@3 [g#4,b4,e5] [g#4,b4,e5]@3 [g#4,b4,e5] [g#4,b4,e5]@3 [g#4,b4,e5]", // E
  M: "[e4,a4,c#5]@4 [e4,a4,c#5]@3 [e4,a4,c#5] [e4,a4,c#5]@3 [e4,a4,c#5] [e4,a4,c#5]@3 [e4,a4,c#5]", // A
})).s("gm_electric_guitar_muted").gain(0.4).pan(0)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@4 [~ x ~ x]!3 [~ x ~@2] ~@64 [~ x ~@2] ~@50>").gain(0.78)

// drums · low tom
const low_tom = s("lt").struct("<~@89 [~@12 x!2 ~ x] ~@33>").gain(0.78)

// drums · high tom
const high_tom = s("ht").struct("<~@41 [~@7 x] ~@39 [~@7 x] ~@41>").gain(0.78)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@9 A ~@23 A ~@9 A ~@37 A ~@9 A ~@9 A ~@3>".pickRestart({
  A: "~@3 x ~@12",
})).gain(0.78)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 A@20 B C A@11 ~ A@20 B C A@17 ~ A@7 ~ A@32 ~>".pickRestart({
  A: "~@3 x", B: "~@2 x!2", C: "x",
})).gain(0.78)

stack(
  bass, acoustic_guitar_steel, electric_guitar_clean, trombone, trombone_2, tenor_sax, flute, flute_2,
  electric_guitar_muted, kick, snare, hihat, low_tom, high_tom, crash, tambourine
)

More by The Supremes