Strudelify

Blame It on the Boogie

Michael Jackson

KeyC majorTempo117 bpm
0:00/0:00
// Blame It on the Boogie — Jackson Michael
// 117 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(117/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 · epiano2
const epiano2 = note(`<
  ~@4 A B C D E B C D F G H I J G K L M B C D E B C D F G H I J G K L M B C D E B C D N ~@7 A B C D E B C D N ~@7 O G H
  I J G K L M B C D E B C D N ~@7 A B C D E B C P Q
>`.pickRestart({
  A: "~@10 [c5,e5,g5,a5] ~@2 [c5,e5,g5,a5] ~@2", // Am7
  B: "[c5,e5,g5,a5] ~@2 [c5,e5,g5,a5] ~@2 [c5,e5,g5,a5] ~@3 [c5,d#5,g5,a#5] ~@2 [c5,d#5,g5,a#5] ~@2", // Am7 Cm7
  C: "[c5,d#5,g5,a#5] ~@2 [c5,d#5,g5,a#5] ~@2 [c5,d#5,g5,a#5]!2 ~@2 [a#4,d5,f5,g5] ~@2 [a#4,d5,f5,g5] ~@2", // Cm7 Gm7
  D: "[a#4,d5,f5,g5] ~@2 [a#4,d5,f5,g5] ~ [a#4,d5,f5,g5] ~ [a#4,d5,f5,g5] ~@2 [a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@2", // Gm7 Cm7
  E: "[a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@3 [c5,e5,g5,a5] ~@2 [c5,e5,g5,a5] ~@2", // Cm7 Am7
  F: "[a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@2 [a3,e4] ~@2 [a3,e4]@2 ~ [a3,e4]", // Cm7 A5
  G: "~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~@3 [g3,c4,e4] ~@2 [g3,c4,e4] ~@2", // A5 C
  H: "[g3,c4,e4]@3 [g3,c4,e4] ~@2 [g3,c4,e4] ~@2 [a3,e4] ~@2 [a3,e4] ~@2 [a3,e4]", // C A5
  I: "~ [a3,e4]@3 [a3,e4] ~ [a3,e4] ~ [c4,f4] ~ [c4,f4]@4 [c4,e4]@2", // A5 F5 C
  J: "~ [c4,e4] ~@2 [c4,g4] ~ [c4,g4] ~@2 [a3,e4] ~@2 [a3,e4]@2 ~ [a3,e4]", // C C5 A5
  K: "[g3,c4,e4]@3 [g3,c4,e4] ~@2 [g3,c4,e4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4]", // C F5
  L: "~ [c4,f4]@3 [c4,f4] ~ [c4,f4] ~ [a3,c4,f4,g4]!2 ~ [a3,c4,f4,g4] ~@2 [a3,c4,f4,g4]@2", // F5 F
  M: "~@2 [a3,c4,f4,g4] ~ [g3,g4]!2 ~@4 [c5,e5,g5,a5] ~@2 [c5,e5,g5,a5] ~@2", // F G Am7
  N: "[a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@2 [a#4,c5,d#5,g5] ~@9", O: "~@9 [a3,e4] ~@2 [a3,e4]@2 ~ [a3,e4]",
  P: "[a#4,d5,f5,g5] ~@2 [a#4,d5,f5,g5] ~ [a#4,d5,f5,g5] ~ [a#4,d5,f5,g5] ~ [c4,g4]@2 ~@2 [g4,c5]@2 ~", // Gm7 C5
  Q: "[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6] ~@10", // A#5 C5 A#5 C5
})).s("gm_epiano2").gain(0.36).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@7 A B ~@2 A B ~@8 C D@2 B ~@2 A B ~@8 C D@2 B ~@2 A B ~@8 C D@2 B ~@2 A B ~@16 C D@2 B ~@2 A B ~@6 A E C D@2 B ~@2 A
  B
>`.pickRestart({
  A: "~@8 [f4,a#4] [g4,c5]@3 [f4,a#4] [g4,c5]@3", B: "[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@3 ~@8", C: "~ e5 f5 g5 a#5@4",
  D: "[g#5@8 g5@6 f5@10 [f4,a#4] [g4,c5]@3 [f4,a#4] [g4,c5]@3]/2", E: "[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@2 ~@9",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.2)

// bass · electric bass finger
const bass = note(`<
  A B C B D E F G H E F G I J K L M J N O P E F G H E F G I J K L M J N O P E F G H E F G Q R S T U V S T W E F G H E F
  G X B C B Y B C B Z J K L M J N O P E F G H E F G AA ~@7 AB E F G H E F AC AD
>`.pickRestart({
  A: "~@8 c2@2 c3 ~ e1@2 e2 ~", B: "a1@2 a2 ~ e1 ~ d#1 ~ d1@2 ~@5 g1",
  C: "a#1 c2 ~ g1 a#1 c2 a1 g1 c2@2 c3 ~ e1@2 e2 ~", D: "a#1 c2 ~ g1 a#1 c2 a2 g2 c2@2 a1@2 g1@2 a1 c2",
  E: "~ c2 a1@2 g1@2 a1@2 a#1@2 g1@2 f1@2 g1 a#1", F: "~ a#1 g1@2 f1@2 g1@2 a#1@2 g1@2 f1@2 g1 a#1",
  G: "~ a#1 g1@2 f1@2 g1@2 c2@2 a#1@2 g1@2 a#1 d#2", H: "~ d#2 d2@2 c2@2 a1 ~ c2@2 a1@2 g1@2 a1 c2",
  I: "~ d#2 d2@2 c2@2 a#1 ~ a1@2 g1@2 e1@2 g1 a1", J: "~ a1 g1@2 a1@2 b1@2 c2@2 a1@2 g1@2 a1 c2",
  K: "~ c2 a1@2 g1@2 e1@2 a1@2 g1@2 e1@2 g1 a1", L: "~ a1 g1@2 e1@2 g1@2 f1@2 g1@2 a1@2 b1 c2",
  M: "~ c2 b1@2 a1@2 g1@2 a1@2 g1@2 e1@2 g1 a1", N: "~ c2 a1@2 g1@2 e1@2 f1@2 e1@2 d1@2 e1 f1",
  O: "~ f1 e1@2 d1@2 e1@2 g1!2 ~ g1 ~@2 g1@2", P: "~ g1!2 ~ g1!2 ~@2 c2@2 a1@2 g1@2 a1 c2",
  Q: "~ d#2 d2@2 c2@2 a#1 ~ c2@2 a1@2 g1 ~ g1 a1", R: "c2 a1 ~ g1 ~ g1 e1 d#1 d1@2 e1@2 f1@2 f#1@2",
  S: "g1!2 ~ g2 ~ g1 a1 g1 c2@2 a1@2 g1 ~ g1 a1", T: "c2 a1 ~ g1 e1 ~ e1 d#1 d1@2 e1@2 f1@2 f#1 g1",
  U: "~ g1 ~ g2 ~ g1 a1 g1 c2@2 a1@2 g1 ~ g1 a1", V: "c2 a1 ~ g1@2 g1 e1 d#1 d1@2 e1@2 f1@2 f#1@2",
  W: "~ g1!2 ~ g1!2 g2 ~ c2@2 a1@2 g1@2 a1 c2", X: "~ d#2 d2@2 c2@2 a#1 ~ c2@2 c3 ~ e1@2 e2 ~",
  Y: "a#1 c2 ~ g1 a#1 c2 a2 g2 c2@2 c3 ~ e1@2 e2 ~", Z: "a#1 c2 ~ g1 a#1 c2 a2 g2 a1@2 g1@2 e1@2 g1 a1",
  AA: "~ d#2 d2@2 c2@2 a#1 ~@9", AB: "~@8 c2@2 a1@2 g1@2 a1 c2", AC: "~ a#1 g1@2 f1@2 g1@2 a#1 c2@2 c2 f2 g2 ~ g1",
  AD: "a#1 c2@2 g1 a#1 c2 ~@10",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · piano
const piano = note(`<
  A B C D E F G H I F G H J K L M N ~@3 O F G H I F G H J K L M N ~@3 O F G H I F G H P Q R S T Q R S U F G H I F G H V
  W X W Y B C D Z K L M N ~@3 O F G H I F G H AA ~@7 O F G H I F G AB AC
>`.pickRestart({
  A: "~@8 c3@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] e3 ~, ~@6 e2 ~", // Am7
  B: "[g3,a3,c4,e4] ~ a3 ~ e2 ~ d#2 ~ d2@2 [f3,a3,c4,d4] ~@2 [f3,a3,c4,d4] ~ g2, a2@2 ~ [g3,a3,c4,e4]@3 ~@10", // Am7 Dm7 Am7
  C: "[a#2,a#3,c4,f4] c3 ~ [g2,a#3,c4,f4] a#2 c3 [a2,a3,c4,f4] g2 c3@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] e3 ~, ~@6 e2 ~", // A#sus2 Gm7 F Am7
  D: "[g3,a3,c4,e4] ~ a3 [g3,a3,c4,e4] e2 [g3,a3,c4,e4] d#2 [g3,a3,c4,e4] d2@2 [f3,a3,c4,d4] ~@2 [f3,a3,c4,d4] ~ g2, a2 ~@7", // Am7 Dm7
  E: "[a#2,a#3,c4,f4] c3 ~ [g2,a#3,c4,f4] a#2 c3 [a3,c4,f4] g3 c3@2 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] a2 c3, ~@5 a2 g2 ~", // A#sus2 Gm7 F Am7
  F: "[c4,e4,g4,a4] c3 ~ [c4,e4,g4,a4] g2@2 [c4,e4,g4,a4] ~ a#2@2 [c4,d#4,g4,a#4] ~@2 [c4,d#4,g4,a#4] g2 a#2, ~ a2 ~ a2 ~ g2 f2 ~", // Am7 Cm7
  G: "[c4,d#4,g4,a#4] a#2 ~ [c4,d#4,g4,a#4] f2@2 [c4,d#4,g4,a#4]!2 a#2@2 [a#3,d4,f4,g4] ~@2 [a#3,d4,f4,g4] g2 a#2, ~ g2 ~ g2 ~ g2 f2 ~", // Cm7 Gm7
  H: "[a#3,d4,f4,g4] a#2 ~ [a#3,d4,f4,g4] ~ [a#3,d4,f4,g4] ~ [a#3,d4,f4,g4] c3@2 [a#3,c4,d#4,g4] ~@2 [a#3,c4,d#4,g4] a#2 d#3, ~ g2 f2 g2 ~ a#2 g2 ~", // Gm7 Cm7
  I: "[a#3,c4,d#4,g4] d#3 ~ [a#3,c4,d#4,g4] c3@2 [a2,a#3,c4,d#4,g4] ~ c3@2 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] a2 c3, ~ d3 ~@3 a2 g2 ~", // Cm7 Am7b5 Am7
  J: "[a#3,c4,d#4,g4] d#3 ~ [a#3,c4,d#4,g4] c3@2 [a#2,a#3,c4,d#4,g4] ~ a2@2 g2@2 e2@2 g2 a2, ~ d3 ~@6", // Cm7
  K: "~ a2 g2@2 a2@2 b2@2 c3@2 a2@2 g2@2 a2 c3", L: "~ c3 a2@2 g2@2 e2@2 a2@2 g2@2 e2@2 g2 a2",
  M: "~ a2 g2@2 e2@2 g2@2 f2@2 g2@2 a2@2 b2 c3", N: "~ c3 b2@2 a2@2 g2@2 ~@8",
  O: "~@8 c3@2 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] a2 c3, ~@5 a2 g2 ~", // Am7
  P: "[a#3,c4,d#4,g4] d#3 ~ [a#3,c4,d#4,g4] c3@2 [a#2,a#3,c4,d#4,g4] ~ [c4,e4,g4,a4]@2 ~ [c4,e4,g4,a4] ~@3 [c4,e4,g4,a4], ~ d3 ~@6", // Cm7 Am7
  Q: "~ [c4,e4,g4,a4]@2 ~ [c4,e4,g4,a4] ~@3 [c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4] ~@3 [c4,d4,f4,a4]", // Am7 Dm7
  R: "~@2 [d4,e4,g4,b4] ~@2 [d4,e4,g4,b4]@2 ~ [c4,e4,g4,a4] ~ [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4]@2 ~", // Em7 Am7
  S: "~ [c4,e4,g4,a4]@2 ~ [c4,e4,g4,a4] ~ [c4,e4,g4,a4] ~@3 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~ [d4,e4,g4,b4]", // Am7 Dm7 Em7
  T: "~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4]@4 [c4,e4,g4,a4]@2 ~ [c4,e4,g4,a4] ~@3 [c4,e4,g4,a4]", // Em7 Am7
  U: "~@2 [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ [d4,e4,g4,b4] ~ c3@2 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] a2 c3, ~@5 a2 g2 ~", // Em7 Am7
  V: "[a#3,c4,d#4,g4] d#3 ~ [a#3,c4,d#4,g4] c3@2 [a#2,a#3,c4,d#4,g4] ~ c3@2 c4 ~ e2@2 e3 ~, ~ d3 ~@6", // Cm7
  W: "a2@2 a3 ~ e2 ~ d#2 ~ d2@2 ~@5 g2", X: "a#2 c3 ~ g2 a#2 c3 a2 g2 c3@2 c4 ~ e2@2 e3 ~",
  Y: "a#2 c3 ~ g2 a#2 c3 a3 g3 c3@2 [g3,a3,c4,e4] ~@2 [g3,a3,c4,e4] e3 ~, ~@6 e2 ~", // Am7
  Z: "[a#2,a#3,c4,f4] c3 ~ [g2,a#3,c4,f4] a#2 c3 [a3,c4,f4] g3 a2@2 g2@2 e2@2 g2 a2", // A#sus2 Gm7 F
  AA: "[a#3,c4,d#4,g4] d#3 ~ [a#3,c4,d#4,g4] c3@2 [a#2,a#3,c4,d#4,g4] ~@9, ~ d3 ~@6", // Cm7
  AB: "[a#3,d4,f4,g4] a#2 ~ [a#3,d4,f4,g4] ~ [a#3,d4,f4,g4] ~ [a#3,d4,f4,g4] a#2 [c3,f3,c4]@2 c3 f3 [c4,g4]@2 g2, ~@2 g2@2 f2@2 g2@2 ~@5 g3 ~@2", // Gm7 F5 C5
  AC: "[a#2,f4,a#4] [c3,g4,c5]@2 g1 [a#1,a#4,f5] [c2,c5,g5] ~@10", // A#5 C5 A#5 C5
})).s("gm_piano").gain(0.48).pan(0.8)

// chords · brass section
const brass_section = note(`<
  A B A B C@4 D@4 E ~@2 F@2 ~@2 G@3 H@2 I@2 H@2 J ~@2 F@2 ~@2 G@3 H@2 I@2 H@2 J ~@7 K@2 H@2 I@2 H@2 J ~@5 A B ~@3 F@2
  ~@2 G@3 H@2 I@2 H@2 L M N O P@8 I@2 H@2 J
>`.pickRestart({
  A: "~@8 [c5,c6]@2 ~ [c5,c6] ~@4", B: "~@4 [c5,c6]@2 ~ [c5,c6] ~@8",
  C: "[~@8 [c5,e5,g5,a5]@3 [c5,e5,g5,a5]@12 ~ [c5,d#5,g5,a#5]@3 [c5,d#5,g5,a#5]@12 ~ [a#4,d5,f5,g5]@3 [a#4,d5,f5,g5]@12 ~ [f4,a#4] [g4,c5]@3 [f4,a#4] [g4,c5]@3]/4", // Am7 Cm7 Gm7 A#5 C5 A#5 C5
  D: "[[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@2 ~ [c5,e5,g5,a5]@3 [e5,g5,a5]@12 ~ [c5,d#5,g5,a#5]@3 [c5,d#5,g5,a#5]@12 ~ [a#4,d5,f5,g5]@3 [a#4,d5,f5,g5]@12 ~ [f4,a#4] [g4,c5]@3 [f4,a#4] [g4,c5]@3, ~@11 c5 ~@52]/4", // A#5 C5 A#5 C5 Am7 A7 Cm7 Gm7 …
  E: "[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@2 ~@9", F: "[~@8 [a4,c5,f5]@6 [g4,c5,e5]@7 ~@11]/2",
  G: "[~@8 [a4,c5,f5,g5]!2 ~ [a4,c5,f5,g5] ~@2 [a4,c5,f5,g5]@10 [c5,e5,g5,a5]@3 [c5,e5,g5,a5]@7 e5@2 f5@2 g5@2 [c5,d#5,g5,a#5]@8]/3", // F Am7 Cm7
  H: "[[c5,d#5,g5,g#5]@8 [d5,f5,g5]@6 [a#4,d5,f5]@10 [f4,a#4] [g4,c5]@3 [f4,a#4] [g4,c5]@3]/2", // G#maj7 G7 A# A#5 C5 A#5 C5
  I: "[[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@3 [c5,e5,g5,a5]@3 [c5,e5,g5,a5]@7 e5@2 f5@2 g5@2 [c5,d#5,g5,a#5]@8]/2", // A#5 C5 A#5 C5 Am7 Cm7
  J: "[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@3 ~@8", // A#5 C5 A#5 C5
  K: "[~@8 [c5,e5,g5,a5]@3 [c5,e5,g5,a5]@7 e5@2 f5@2 g5@2 [c5,d#5,g5,a#5]@8]/2", // Am7 Cm7
  L: "[a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@3 [c5,e5,g5,a5]@3 [c5,e5,g5]@4 ~", // A#5 C5 A#5 C5 Am7 C
  M: "~@8 [c5,d#5,g5,a#5]@3 [c5,f5,g5,a#5]@5", N: "~@8 [a#4,d#5,f5,g5]@3 [a#4,d5,f5,g5]@5",
  O: "~@8 a#4 [g4,c5]@3 ~@4, ~ f4", // C5
  P: "[a#4 [g4,c5]@3 ~@4 [c5,e5,g5,a5]@3 [c5,e5,g5]@4 ~@9 [c5,d#5,g5,a#5]@3 [c5,f5,g5,a#5]@5 ~@8 [a#4,d#5,f5,g5]@3 [a#4,d5,f5,g5]@5 ~@8 a#4 [g4,c5]@3 a#4 [g4,c5]@3 [a#4,f5] [c5,g5]@3 [f5,a#5] [g5,c6]@2 ~ [c5,e5,g5,a5]@3 [c5,e5,g5,a5]@7 e5@2 f5@2 g5@2 [c5,d#5,g5,a#5]@8 [c5,d#5,g5,g#5]@8 [d5,f5,g5]@6 [a#4,d5,f5]@10 [f4,a#4] [g4,c5]@3 [f4,a#4] [g4,c5]@3, f4@14 f4 f4@13 ~@4]/8", // C5 Am7 C Cm7 Csus4 D# Gm7 C5 …
})).s("gm_brass_section").gain(0.48).pan(0.7)

// other · electric guitar clean
const electric_guitar_clean = note("<A B A B ~@40 C D E F G H E F I ~@7 A B A B A B A B ~@33>".pickRestart({
  A: "~@8 c6 ~ c6 ~ e5 ~ e5 ~", B: "a5 ~ a5 ~ e5 a5 d#5 ~ d5 ~@7", C: "~@8 c5@2 a4@2 g4 ~ g4 a4",
  D: "c5 a4 ~ g4 ~ g4 e4 d#4 d4@2 e4@2 f4@2 f#4@2", E: "g4!2 ~ g5 ~ g4 a4 g4 c5@2 a4@2 g4 ~ g4 a4",
  F: "c5 a4 ~ g4 e4 ~ e4 d#4 d4@2 e4@2 f4@2 f#4 g4", G: "~ g4 ~ g5 ~ g4 a4 g4 c5@2 a4@2 g4 ~ g4 a4",
  H: "c5 a4 ~ g4@2 g4 e4 d#4 d4@2 e4@2 f4@2 f#4@2", I: "~@2 g5 ~ g5!3 ~@9",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.3)

// drums · kick
const kick = s("bd").struct("<A B@18 C A B@14 C A B@38 C A B@7 D ~@3 A B@11 E>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x ~ x ~@4 x", D: "x!2 ~@2", E: "x ~@3 x!2 ~@10",
})).gain(0.8)

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

// drums · clap
const clap = s("cp").struct("<~@84 [~@3 x] [~ x ~ x]!3 [~ x ~@2] ~@3 [~@3 x ~@4] ~@8>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@92 [~@3 x!3 ~@10] ~@7 [~ x!3 ~@12]>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 C B@3 C B@3 C B@3 C B@2 D A B@3 C B@3 C B@3 C B@2 D A B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@2
  D A B@3 C B@3 C B@3 C B@3 C B@3 C B@2 E F
>`.pickRestart({
  A: "~@3 x", B: "x!4", C: "x!2 ~ x", D: "x!3 ~", E: "x ~@3 x ~@3 x ~ x!3 ~ x!2", F: "x!2 ~@2",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@91 [~@15 x] [x!3 ~@13] ~@6 [~@13 x!3] x>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<A B@18 C A B@14 C A B@38 C A B@15 D B@6 E F>".pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4", D: "~ x ~@3 x ~ x", E: "~@2 x ~@3 x ~@2 x ~@3 x ~@2",
  F: "~ x ~@3 x ~@10",
})).gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@91 [~@12 x!3 ~] ~@7 [~@9 x!4 ~@3] ~>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B A ~@3 A ~@3 A ~@3 A ~@2 B A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2
  B A ~@3 A ~@3 A ~@3 A ~@3 C ~@3 A ~@3 D
>`.pickRestart({
  A: "~ x", B: "~@7 x", C: "~@3 x!2 ~@3", D: "~@5 x ~@10",
})).gain(0.56)

// drums · ride bell
const ride_bell = s("rd").struct("<~@99 [~@11 x ~@4] ~>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<A B@18 C D B@14 C D B@15 E B@22 C D B@22 F G>".pickRestart({
  A: "~@8 x!8", B: "x!16", C: "x!10 ~ x ~@2 x ~", D: "~@2 x ~ x!2 ~@2 x!8", E: "x!7 ~ x!8", F: "x!10 ~@2 x!4",
  G: "x!2 ~ x!3 ~@10",
})).gain(0.4)

stack(
  epiano2, string_ensemble_1, bass, piano, brass_section, electric_guitar_clean, kick, snare, clap, low_tom, hihat,
  mid_tom, open_hat, high_tom, crash, ride_bell, tambourine
)

More by Michael Jackson