Strudelify
Baby Don't Forget My Number cover art

1989 · All or Nothing

Baby Don't Forget My Number

Milli Vanilli

KeyA♭ majorTempo100 bpm
0:00/0:00
// Baby Don't Forget My Number — Milli Vanilli
// 100 bpm, 4/4, key Ab major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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, A@4 for four bars: edit a riff to change every repeat.

// bass · piano · "A.PIANO 1"
const bass = note(`<
  ~@5 A B C D E F E@3 F E@3 F E G H I J K L M N M O M P M Q R S R T U ~@12 V W V X E@5 F E G H I J L M N M O M P M Q R S
  R T U ~@10 V X Y Z Y Z AA AB AC AB AD AE AF AG AH AI AJ AK AL AM AJ AK AN
>`.pickRestart({
  A: "e1 ~@2 e1 ~@2 e1@3 ~ e1 ~ e1!2 d1@2", B: "a1 ~@2 a1 ~@2 a1 ~@5 a1!2 d1@2", C: "e1 ~@2 e1 ~@2 e1@5 ~ e1!2 d1@2",
  D: "a1 ~@9 d1@5 ~", E: "e1@2 e1!3 ~ e1@3 ~ e1 ~@3 e1 ~", F: "e1 ~ e1!3 ~ e1@3 ~ e1 ~@3 e1 ~", G: "e1@2 e1!3 ~ e1 ~@9",
  H: "~@2 e1@2 ~ e1 ~@2 e1@2 ~ e1 ~ e1 e2 e1", I: "~@2 e1 ~@2 e1 ~@2 e1@2 ~ e1 ~@2 e1 ~",
  J: "~@2 e1 ~@2 e1 ~@2 e1@3 gb1@3 ab1 ~", K: "a2@3 a2 ~@2 a2 ~@3 a1 ~@2 a2 ~@2", L: "d2@3 d2 ~@2 d2 ~@3 d2 ~@2 d2 ~@2",
  M: "e1 ~@3 ab1 ~@3 a1@2 ~ ab1@2 ~ ab1 ~", N: "d1 ~ d1 ~ gb1 ~@3 g1 ~@2 gb1@3 gb1 ~",
  O: "d1 ~ d1 ~ gb1 ~@3 g1 ~@2 g1@2 ~ gb1 ~", P: "b1 ~ b1@2 ~@4 d2 d1 d2@3 d1 d2@2",
  Q: "d1 ~ d1 ~@2 d1 gb1 ~ g1 ~@2 gb1@3 d1 ~", R: "e1 ~@3 ab1 ~@3 a1 ~@2 ab1@4 ~",
  S: "d1 ~ d1 ~@2 d1 gb1 ~ g1 ~@3 gb1@2 ~@2", T: "b1 ~ b1 ~@2 b1@2 ~ d2 ~ d2@3 d1 d2@2",
  U: "e1 ~@3 ab1 ~@3 a1@3 b1@3 ~@2", V: "e1 ~@2 e1 ~@2 e1 ~@9", W: "a1 ~@2 a1 ~@2 a1 ~@9", X: "a1@3 d1@4 ~",
  Y: "~@8 db2 ~@3 e2 ~@3", Z: "~@2 e2 ~ d2@2 ~@2 db2 ~@7", AA: "~@8 e1 ~@3 ab1 ~@3",
  AB: "a1@2 ~ ab1@2 ~ ab1 ~ d1 ~ d1 ~ gb1 ~@3", AC: "g1 ~@2 gb1@3 gb1 ~ e1 ~@3 ab1 ~@3",
  AD: "g1 ~@2 g1@2 ~ gb1 ~ e1 ~@3 ab1 ~@3", AE: "a1@3 ab1@2 ~ ab1 ~ b1 ~ b1@2 ~@4",
  AF: "d2 d1 d2@3 d1 d2@2 e1 ~@3 ab1 ~@3", AG: "a1@3 ab1@2 ~ ab1 ~ d1 ~ d1 ~@2 d1 gb1 ~",
  AH: "g1 ~@2 gb1@3 d1 ~ e1 ~@3 ab1 ~@3", AI: "a1 ~@2 ab1@4 ~ d1 ~ d1 ~@2 d1 gb1 ~",
  AJ: "g1 ~@3 gb1@2 ~@2 e1 ~@3 ab1 ~@3", AK: "a1 ~@2 ab1@4 ~ b1 ~ b1 ~@2 b1@2 ~",
  AL: "d2 ~ d2@3 d1 d2@2 e1 ~@3 ab1 ~@3", AM: "a1@3 b1@3 ~@2 d1 ~ d1 ~@2 d1 gb1 ~", AN: "d2 ~ d2@3 d1 d2@2 e1 ~ e1 ~@5",
})).s("gm_piano").gain(0.46)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A B A B A B C D ~@8 E@3 F G H G I@2 J ~ K ~ K ~ K ~ K ~ K ~@2 L M L M L M N O L M L M P Q R S ~@4 E@3 F G H G T J ~
  K ~ K ~ K ~ K ~ K ~@2 L M L M L M N O L M R U ~@5 V ~ W ~ W ~ W ~ W ~ W ~@3 W X
>`.pickRestart({
  A: "[e5,ab5,b5]!5 ~ [e5,ab5,b5] ~@7 [d5,gb5,a5] ~", B: "[db5,e5,a5]!5 ~ [db5,e5,a5] ~@9",
  C: "[e5,ab5,b5]!5 ~ [e5,ab5,b5] ~ gb5@2 ab5@4 [d5,gb5,a5] ~, ~@7 e5", // E D
  D: "[db5,e5,a5]!5 ~ [e3,gb3,a3,d4,e4]@8 [e3,gb3,a3,d4,e4] ~, ~@6 [db5,e5,a5] ~@9", // A D A
  E: "[e5,a5] [d5,gb5] [b4,e5] [gb5,b5] [d5,gb5] [b4,e5] [b4,gb5] [e5,a5] [d5,gb5] [b4,e5] [d5,gb5] [b4,e5] [d5,gb5] [e5,a5] [b4,gb5] [a4,e5]", // A5 D E5 B5 D E5 B5 A5 …
  F: "[e5,a5] [d5,gb5] [b4,e5] [gb5,b5] [d5,gb5] [b4,e5] [b4,gb5] [e5,a5] ~@8", G: "e4 e2 ~@6",
  H: "[a4,db5,e5]!5 ~ [a4,d5,e5]@4 [a4,db5,e5] ~@5", // A Asus4 A
  I: "[[a4,db5,e5]!5 ~ [a4,d5,e5]@4 [a4,db5,e5] ~@3 [a3,d4,gb4]@17 ~]/2", J: "~@8 [e4,a4,b4,e5,a5,b5]@4 [ab4,ab5] ~@3",
  K: "~@4 [a4,a5]@2 [ab4,ab5] ~, ~@4 [e4,b4,e5,b5]@3 ~", // A Ab E5
  L: "[b3,e4,ab4] ~ [e2,e3] ~ [b3,e4,ab4] ~ [e2,e3] ~ [a3,d4,gb4] ~ [d2,d3] ~ [a3,d4,gb4] ~ [d2,d3] ~", // E D
  M: "[a3,db4,e4] ~ a2 ~ [a3,db4,e4] ~ a2 ~ [a3,db4,e4] ~ a2 ~ [a3,db4,e4] ~ a2 ~", // A
  N: "[b3,e4,ab4] ~ e3 ~ [b3,e4,ab4] ~ e3 ~ [b3,e4,a4] ~ e3 ~ [b3,e4,a4] ~ e3 ~", // E Esus4
  O: "[b3,e4,ab4] ~ e3 ~ [b3,e4,ab4] ~ e3 ~ [a3,d4,gb4] ~ d3 ~ [a3,d4,gb4] ~ d3 ~", P: "[e5,ab5,b5]!5 ~@11",
  Q: "[db5,e5,a5]!5 ~@11", R: "[e5,ab5,b5]!5 ~@9 [db5,e5,a5]@2",
  S: "[e5,a5] ~ [db5,e5,a5] ~@3 [d5,gb5,a5]@9 ~, db5 ~@7", T: "[a3,d4,gb4]@15 ~",
  U: "~@2 [db5,e5,a5] ~@3 [d5,gb5,a5]@9 ~", V: "[e4,a4,b4,e5,a5,b5]@4 [ab4,ab5] ~@11",
  W: "[a4,a5]@2 [ab4,ab5] ~@5, [e4,b4,e5,b5]@3 ~@5", X: "~@8 [e3,b3,e4] ~ [e3,b3,e4] ~@5",
})).s("gm_epiano2").gain(0.3).pan(0.8)

// chords · accordion
const accordion = note(`<
  ~@5 A@2 B@2 C D E F C D E F C D E G H I H J@2 K L M N K O P Q R S R T U ~ V ~ W ~ V ~@2 X Y Z Y AA Y Z AB C D E F C D
  E G H I H AC K L M N K O P Q R S R T U ~ V ~ W ~ V ~@2 X Y X AD AE AF AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AQ AR AU
>`.pickRestart({
  A: "[ab5@2 ~@2 ab5@2 e5@2 gb5@2 ab5@3 ~ gb5@4 e5@4 ~@2 b4@2 e5@4 ~@2, ~@24 ab4 ~@7]/2",
  B: "[ab5@3 ~ ab5@2 e5@2 gb5@2 ab5@4 e5@8 [e3,gb3,a3,d4,e4]@8 [e3,gb3,a3,d4,e4] ~]/2", // D
  C: "[b3,d4,gb4,b4]@2 ~ [b3,d4,gb4,b4] ~@2 [b3,d4,gb4,b4] ~@3 [b3,d4,gb4,b4]!2 ~@2 [b3,d4,gb4,b4] ~", // Bm
  D: "[b3,d4,gb4,b4,db5]@2 ~ [b3,d4,gb4,b4] ~@2 [b3,d4,gb4,b4] ~@3 [b3,d4,gb4,b4]!2 ~ [b3,d4,gb4,b4]!2 [b3,d4,gb4]", // Bm
  E: "[b3,d4,gb4,b4]@3 [b3,d4,gb4,b4] ~@2 [b3,d4,gb4,b4] ~@3 [b3,d4,gb4,b4]!2 ~@2 [b3,gb4,b4] ~", // Bm B5
  F: "[b3,d4,gb4,b4,db5]@2 ~ [b3,d4,gb4,b4] ~@2 [b3,d4,gb4,b4] ~@3 [b3,d4,gb4,b4]!2 ~ [b3,d4,gb4,b4]!3", // Bm
  G: "[b3,d4,gb4,b4,db5]@2 ~ [b3,d4,gb4,b4] ~@2 [b3,d4,gb4,b4] ~@9", // Bm
  H: "[b3,e4,ab4] ~ e2 ~@2 e2 ~@2 e2@2 ~@3 e3 e2 ~, e3 ~@7", I: "~@6 [a3,d4,gb4]@4 [a3,db4,e4] ~@5",
  J: "[~@6 [a3,d4,gb4]@4 [a3,db4,e4] ~@3 [a3,d4,gb4]@17 ~]/2", // D A D
  K: "[b3,e4,ab4]@3 ~ ab2 ~@3 a2@2 ~ ab2@2 ~ ab2 ~, e2 ~@15", // E
  L: "[d2,a3,d4,gb4] ~ [d2,a3,d4,gb4] ~ gb2 ~@3 g2 ~@2 gb2@3 gb2 ~", // D
  M: "[b3,e4,ab4]@2 [b3,e4,ab4] ~ ab2 ~@3 a2@2 ~ ab2@2 ~ ab2 ~, e2 ~@15", // E
  N: "[a3,d4,gb4]@2 d2 ~ gb2 ~@3 g2 [a3,d4,gb4] ~@2 [a3,d4,gb4] ~ gb2 ~, d2 ~@10 g2@2 ~@3", // D
  O: "[d4,gb4,a4]@2 [d4,gb4,a4] ~@5 d3 d2 d3@3 d2 d3@2, b2 ~ b2@2 ~@12", // D
  P: "[e2,b3,e4,ab4] ~ [b3,e4,ab4] ~ ab2 ~@3 a2@3 ab2@2 ~ ab2 ~", // E
  Q: "[a3,d4,gb4]@2 [d2,a3,d4,gb4] ~@2 d2 gb2 ~ g2 ~@2 gb2@3 d2 ~, d2 ~@15", // D
  R: "[b3,e4,ab4]@2 ~@2 ab2 ~@3 a2 ~@2 ab2@4 ~, e2 ~@15", // E
  S: "[d2,a3,d4,gb4] ~ [d2,a3,d4,gb4] ~@2 d2 gb2 ~ g2 ~@3 gb2@2 ~@2", // D
  T: "[d4,gb4,b4]@2 [b2,d4,gb4,b4] ~@2 b2@2 ~ d3 ~ d3@3 d2 d3@2, b2 ~@15", U: "e2 ~@3 ab2 ~@3 a2@3 b2@3 ~@2",
  V: "~@2 [d4,gb4,a4] ~@3 [a3,d4,gb4]@3 ~ [a3,db4,e4]@4 ~@2", W: "~@6 [gb3,a3,d4]@3 ~ [e3,a3,db4]@3 ~@3",
  X: "ab4 ~@5 ab4!2 gb4 ~ ab4@3 ~ e4@2", Y: "~@6 b3!3 ~ e4@3 ~ ab4@2", Z: "~@6 ab4!2 gb4 ~ ab4@3 ~ e4@2",
  AA: "ab4@2 ~@4 ab4!2 gb4 ~ ab4@3 ~ e4@2", AB: "e4 ~@7", AC: "[a3,d4,gb4]@15 ~", AD: "e4 ~@15",
  AE: "~@8 db3 ~@3 e3 ~@3", AF: "~@2 e3 ~ d3@2 ~@2 db3 ~@7", AG: "~@8 [b3,e4,ab4]@3 ~ ab2 ~@3, ~@8 e2 ~@7",
  AH: "a2@2 ~ ab2@2 ~ ab2 ~ [d2,a3,d4,gb4] ~ [d2,a3,d4,gb4] ~ gb2 ~@3", // D
  AI: "g2 ~@2 gb2@3 gb2 ~ [b3,e4,ab4]@2 [b3,e4,ab4] ~ ab2 ~@3, ~@8 e2 ~@7", // E
  AJ: "a2@2 ~ ab2@2 ~ ab2 ~ [a3,d4,gb4]@2 d2 ~ gb2 ~@3, ~@8 d2 ~@7", // D
  AK: "g2 [a3,d4,gb4] ~@2 [a3,d4,gb4] ~ gb2 ~ [b3,e4,ab4]@2 ~@2 ab2 ~@3, ~@3 g2@2 ~@3 e2 ~@7", // D E
  AL: "a2@3 ab2@2 ~ ab2 ~ [d4,gb4,a4]@2 [d4,gb4,a4] ~@5, ~@8 b2 ~ b2@2 ~@4", // D
  AM: "d3 d2 d3@3 d2 d3@2 [e2,b3,e4,ab4] ~ [b3,e4,ab4] ~ ab2 ~@3", // E
  AN: "a2@3 ab2@2 ~ ab2 ~ [a3,d4,gb4]@2 [d2,a3,d4,gb4] ~@2 d2 gb2 ~, ~@8 d2 ~@7", // D
  AO: "g2 ~@2 gb2@3 d2 ~ [b3,e4,ab4]@2 ~@2 ab2 ~@3, ~@8 e2 ~@7", // E
  AP: "a2 ~@2 ab2@4 ~ [d2,a3,d4,gb4] ~ [d2,a3,d4,gb4] ~@2 d2 gb2 ~", // D
  AQ: "g2 ~@3 gb2@2 ~@2 [b3,e4,ab4]@2 ~@2 ab2 ~@3, ~@8 e2 ~@7", // E
  AR: "a2 ~@2 ab2@4 ~ [d4,gb4,b4]@2 [b2,d4,gb4,b4] ~@2 b2@2 ~, ~@8 b2 ~@7", AS: "d3 ~ d3@3 d2 d3@2 e2 ~@3 ab2 ~@3",
  AT: "a2@3 b2@3 ~@2 [d2,a3,d4,gb4] ~ [d2,a3,d4,gb4] ~@2 d2 gb2 ~", AU: "d3 ~ d3@3 d2 d3@2 ~@8",
})).s("gm_accordion").gain(0.31).pan(0.3)

// chords · lead 1 square · "SQUAREWAVE"
const lead_1_square = note(`<
  ~ A B C D ~@2 E@2 F@8 G@4 ~ H ~ I@2 J K L M L N L O P Q P R S ~ T ~ U ~ T ~@6 V W V X F@4 Y@3 Z ~ H ~ AA J K L M L N L
  O P Q P R S ~ T ~ U ~ T ~@4 AB X ~@4 AC AD AE AF AG AH AI AJ AK@8 AL
>`.pickRestart({
  A: "e4 ~ b3 e3 ~ e3 b3 e3 ~ e4 ~ e4 b3 e3 b3 e3", B: "b3 e4 ~ e4 ~ e4 b3 e3 ~ e3 ~ e3 b3 e3 b3 e4",
  C: "e4 b3 e3 b3 e3 ~ e4 ~@2 b3 ~ e3 e4 b3 e3 b3", D: "e3 b3 e4 ~@2 e4 b3 e3 ~ e3 ~ e3 b3 e3 e4 b3",
  E: "[ab6@2 ab6 e6 gb6 ab6@2 e6@2 ~@7]/2", F: "[e2@63 ~]/4", G: "[~@4 [d5,e5,a5]@3 ~, e2@55 ~@9]/4",
  H: "~@6 [a3,d4,gb4]@4 [a3,db4,e4] ~@5", I: "[~@6 [a3,d4,gb4]@4 [a3,db4,e4] ~@3 [a3,d4,gb4]@17 ~]/2",
  J: "e2 ~@3 ab2 ~@3 a2@2 ~@2 [ab4,ab5] ~ ab2 ~, ~@8 [e4,a4,b4,e5,a5,b5]@5 ~@3, ~@11 ab2@2 ~@3", // Ab Esus4
  K: "d2 ~ d2 ~ gb2 ~@3 g2 ~@2 gb2@3 gb2 ~",
  L: "e2 ~@3 ab2 ~@3 [a2,a4,a5]@3 ~ [ab4,ab5]@2 ab2 ~, ~@4 [e4,b4,e5,b5]@3 ~, ~@11 ab2@2 ~@3", // A Ab E5
  M: "d2 ~ d2 ~ gb2 ~@3 g2 ~@2 g2@2 ~ gb2 ~", N: "b2 ~ b2@2 ~@4 d3 d2 d3@3 d2 d3@2",
  O: "d2 ~ d2 ~@2 d2 gb2 ~ g2 ~@2 gb2@3 d2 ~",
  P: "e2 ~@3 ab2 ~@3 [a4,a5]@3 ~ [ab4,ab5]@2 ~@2, ab6, ~@4 [e4,b4,e5,b5]@3 ~, ~@8 a2 ~@2 ab2@4 ~", // A Ab E5
  Q: "d2 ~ d2 ~@2 d2 gb2 ~ g2 ~@3 gb2@2 ~@2, gb6", R: "b2 ~ b2 ~@2 b2@2 ~ d3 ~ d3@3 d2 d3@2, gb6",
  S: "e2 ~@3 ab2 ~@3 a2@3 b2@3 ~@2, [gb6,b6]", T: "~@2 [d4,gb4,a4] ~@3 [a3,d4,gb4]@3 ~ [a3,db4,e4]@4 ~@2",
  U: "~@6 [gb3,a3,d4]@3 ~ [e3,a3,db4]@3 ~@3", V: "b5", W: "a5@3 db6", X: "db6@8 d6@4 db6@3 ~, a5@15 ~, b5 ~@15",
  Y: "[~@2 [d5,e5,a5], e2]/3", Z: "[e2,d5,e5,a5] ~", AA: "[a3,d4,gb4]@15 ~", AB: "b5, db6 ~@15",
  AC: "~@8 e2 ~@3 ab2 ~@3",
  AD: "a2@2 ~@2 [ab4,ab5] ~ ab2 ~ d2 ~ d2 ~ gb2 ~@3, [e4,a4,b4,e5,a5,b5]@5 ~@11, ~@3 ab2@2 ~@11", // Ab Esus4
  AE: "g2 ~@2 gb2@3 gb2 ~ e2 ~@3 ab2 ~@3",
  AF: "[a4,a5]@3 ~ [ab4,ab5]@2 ab2 ~ d2 ~ d2 ~ gb2 ~@3, [e4,b4,e5,b5]@3 ~@5, a2@2 ~ ab2@2 ~@11", // A Ab E5
  AG: "g2 ~@2 g2@2 ~ gb2 ~ e2 ~@3 ab2 ~@3",
  AH: "[a2,a4,a5]@3 ~ [ab4,ab5]@2 ab2 ~ b2 ~ b2@2 ~@4, [e4,b4,e5,b5]@3 ~@5, ~@3 ab2@2 ~@11", // A Ab E5
  AI: "d3 d2 d3@3 d2 d3@2 e2 ~@3 ab2 ~@3",
  AJ: "[a2,a4,a5]@3 ~ [ab4,ab5]@2 ab2 ~ d2 ~ d2 ~@2 d2 gb2 ~, [e4,b4,e5,b5]@3 ~@5, ~@3 ab2@2 ~@11", // A Ab E5
  AK: "[g2 ~@2 gb2@3 d2 ~ e2 ~@3 ab2 ~@3 [a4,a5]@3 ~ [ab4,ab5]@2 ~@2 d2 ~ d2 ~@2 d2 gb2 ~ g2 ~@3 gb2@2 ~@2 e2 ~@3 ab2 ~@3 [a4,a5]@3 ~ [ab4,ab5]@2 ~@2 b2 ~ b2 ~@2 b2@2 ~ d3 ~ d3@3 d2 d3@2 [e2,gb6] ~@3 ab2 ~@3 a2@3 b2@3 ~@2 [d2,ab6] ~ d2 ~@2 d2 gb2 ~ g2 ~@3 gb2@2 ~@2 e2 ~@3 ab2 ~@3 [a4,a5]@3 ~ [ab4,ab5]@2 ~@2 b2 ~ b2 ~@2 b2@2 ~, ~ ab6@2 gb6@2 ab6@2 gb6@2 b6@2 gb6@2 ab6@2 gb6, ~@8 [e4,b4,e5,b5]@3 ~@13 [e4,b4,e5,b5]@3 ~@29 [e4,b4,e5,b5]@3 ~@5, ~@16 a2 ~@2 ab2@4 ~@25 a2 ~@2 ab2@4 ~@57 a2 ~@2 ab2@4 ~@9]/8", // A Ab A Ab Esus2 Ddim A Ab …
  AL: "d3 ~ d3@3 d2 d3@2 [e3,b3,e4] ~ [e3,b3] ~@5, ~@5 e4 ~@2", // E5
})).s("gm_lead_1_square").gain(0.27).pan(0.9)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@11 A ~@7 A ~@17 B ~@19 A ~@3 A ~@16 B ~@24 C ~@7 D>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@3 x ~@4", C: "~ x ~@2", D: "x!3 ~@13",
})).gain(0.22)

// drums · clap
const clap = s("cp").struct("<~@21 [~ x ~ x]!18 ~@24 [~ x ~ x]!17 ~@16 [~@3 x] [~ x ~ x]!15 [~ x ~@2]>").gain(0.74)

// drums · low tom
const low_tom = s("lt").struct("<A ~@19 B ~@5 C@13 ~@23 B ~@4 C@13 ~@12 D ~@3 E C@15 F>".pickRestart({
  A: "~@4 x!4", B: "~@14 x!2", C: "~ x ~ x", D: "~ x ~@2", E: "~@3 x", F: "~@2 x ~ x!2 ~@2",
})).gain(0.74)

// drums · hihat
const hihat = s("hh").struct("<A B@8 C@11 D C@5 E@13 B@16 C@7 D C@4 E@13 B@12 F@4 E@16 G>".pickRestart({
  A: "~@2 x!2", B: "x!5 ~ x ~", C: "~@3 x ~@3 x ~@3 x ~@3 x", D: "~@3 x ~@3 x ~@8", E: "x!4", F: "x ~ x ~ x!4",
  G: "x!2 ~@2",
})).gain(0.74)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ A@8 ~@17 B@13 A@16 ~@12 B@13 A@12 C D@3 E B@15 F>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~@6", B: "~ x ~@3 x ~@3 x ~@3 x ~@2", C: "~@9 x ~ x ~ x ~ x", D: "~ x ~@7 x ~ x ~ x ~ x",
  E: "~ x ~@7 x ~@3 x ~@2", F: "~ x ~@3 x ~@10",
})).gain(0.22)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@9 x ~ x ~ x ~ x] ~@19 [~@12 x!2 ~@2] ~@41 [~@12 x!2 ~@2] ~@29 x ~@20>").gain(0.74)

// drums · open hat
const open_hat = s("oh").struct("<~ A@8 B@11 C B@18 A@16 B@7 C B@17 A@12 D C@3 B@16 C>".pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4", D: "~@3 x ~@4",
})).gain(0.74)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@24 A ~@4 A ~@7 A ~@7 A ~@24 A ~@7 A ~@7 A ~@3 B ~@3 B ~@7 B ~@4 B ~@3
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.74)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@8 B@11 C D@5 ~@13 A@16 B@7 C D@4 ~@13 A@12 E A@3 F ~@16>".pickRestart({
  A: "x!16", B: "x!8", C: "x!5 ~@3", D: "~@2 x!2 ~@12", E: "~@8 x!8", F: "x!8 ~@8",
})).gain(0.37)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@9 A@11 B C D C D E F@13 ~@16 A@7 B C D E@2 F@13 ~@16 G F@15 H>".pickRestart({
  A: "x!16", B: "x!9 ~@7", C: "~@2 x!2 ~@2 x!2 ~@2 x!5 ~", D: "~@2 x!2 ~@2 x!2 ~@2 x!6", E: "x!4 ~@2 x!2 ~@2 x!5 ~",
  F: "x!8", G: "~@4 x!4", H: "x!4 ~@4",
})).gain(1.12)
// … 5 more lines

More by Milli Vanilli