Strudelify
HIStory cover art

1997 · BLOOD ON THE DANCE FLOOR/ HIStory In The Mix

HIStory

Michael Jackson

KeyB♭ majorTempo94 bpm
0:00/0:00
// HIStory — Jackson Michael
// 94 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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
const piano = note(`<
  ~@8 A@4 B@4 C D@3 E F G@2 H I@3 J K@3 L M N@2 L M O@2 ~@2 P Q R S T U R S T V W S X Y R S T Y W S T Z L M N@2 L M O
  AA@5 AB AC AD AE AF AG AH AI AJ AK AL AM@2 AN AO@2 AP AQ AR AS AT ~@9
>`.pickRestart({
  A: "[~@4 [g5,eb6]@2 ~@8 f5@2 ~@6 bb5@4 [c3,ab3,ab4,eb5]@4 bb3@8 ~@25 bb5, ~@3 g3@13 ab2@10 f2@2 ~@2 bb2@16 f3 bb4 bb3@2 c5@2 bb3 d5@2 f5 f3 g5 bb5 [f3,bb3] c6 d6 [bb3,c6]@2, ~@2 eb4@3 [eb4,d5,bb5]@3 ~ eb3@4 ~@2 f3@4 c4@13, ~@4 f5 ~ d6@10 ~@4 [c4,eb5,c6]@6 ~@4 bb4@8 bb3@3 d4@23, ~@3 f5@4 [c5,g5]@6 ~@2 f5@6 f3 f4@10]/4", // Cm Ab Bb5 Bbsus2 Ebmaj7 Cm C5
  B: "[c6@3 ~@11 f5@2 ~@8 ab3@2 [f2,c3,ab3,ab4,eb5]@4 f3@4 ~@10 c4 ~@7 f4 ~@10 f4, c3@6 f5@4 [eb4,d5,bb5]@4 [c5,g5]@6 [c4,eb5,c6]@6 ~@4 [bb4,c5,f5]@29 bb3 c4@2 [bb3,eb4]@2, ~@3 g3@13 ab2@10 ~@4 bb2@13 bb3@2 [c4,f4] bb3@3 [c4,f4]@2 bb3 d4@5 f4@4 d4@3, ~@4 eb6@12 ~@6 bb5@4 ~@8 f3@3 [c4,f4] f3@3 [c4,f4]@2 f3@7 d4 f3@2 [c4,f4] bb3 [c4,f4] [f3,bb3] c4 d4 f3@5, ~@4 [eb4,g5]@2 d6@10 ~@2 eb3@8 ~@4 [bb3,f4]@5 [c4,f4] bb3@3 [c4,f4] bb3@2 d4@5 [c4,f4] bb2@16]/4", // Fm7 Ebmaj7 C5 Cm Bbsus2 Eb5 F5 Bb5 …
  C: "[c4,eb4,f4] g4 [c4,eb4] [c4,d4] ~@3 c4@3 [bb3,c4]@2 ~@2 g3@2, c3, g3@13 ~@3, ~@2 g4 eb4 bb3 d4@2 eb4@5 [bb3,d4,eb4,g4]@4, ~@3 bb4@10 ~@3", // F7 Cm Csus2 Bbsus2 Ebmaj7
  D: "[ab3@2 ~@3 g3@2 ~@3 eb3@2 ~@6 c4 c4@2 ~@3 f3 f3@2 f3!2 ~@3 f3 ~ bb3@2 ~@3 bb3@2 ~@2 f3 ~@2 [f3,bb3,d4]@2, ab2@8 g3@4 [f2,ab3,c4,eb4,g4]@4 bb3@5 f3 c4@11 f3@3 bb3 c4 f3@3 bb3@3 f3@2 ~@2, eb3@5 eb4@7 ~@3 f4@32 ~, [g3,eb4]@3 c4@9 ~@3 [c4,d4]@4 d4@26 bb2@3, ~@2 ab3 g4 ab3@8 ~@2 c3@2 bb2@6 bb3@7 f3 bb3 bb2@11 c4@6]/3", // Bb Fm7 Cm Csus2
  E: "[bb3,eb4]@2 bb3 [g3,bb3,eb4] ~ [f3,bb3,d4] ~ g3@2 ~@5 c3@2, c2@9 g3@3 [g3,bb3,eb4,g4]@4, c3@2 c3@5 ~, g3 ~ [f3,d4]@2 ~@3 [bb3,eb4]@5 ~@4, ~@5 c2@3", // Eb5 Eb Bb Eb Dm Eb5
  F: "[g3,c4]@2 [f3,bb3] [g3,c4] ~ [f3,bb3] ~ g3@2 ~@5 [f2,g3]@2, [ab2,eb3]@5 ab2 [ab3,eb4]@2, ~@7 c4@6 ~@3, ~@9 g3@4 ~@3, ~@11 eb3@3 ~@2", // C5 Bb5 C5 Bb5 Fsus2 Ab5
  G: "[~@29 c7@2 bb6, f4@13 c4@2 f4@2 [c4,d4] [f4,bb4] [b4,c5,d5] bb4 [c5,d5] bb5 [c6,d6] bb5 d6 f6 g6 bb6@3 ~, c4@6 bb3 d4 bb3@8, [bb2,bb3]@3 bb3@2 f3@3 bb2@24, ~@2 f3@2 bb2@3 bb3@2 f3 bb3 f3@21]/2", // Csus2 Bb5 Bm Csus2 Bb
  H: "[bb6,c7] ~ c7 [f6,c7] [gb6,g6] ~@9 c6@2, [c3,eb3,g3]@8 c6 eb6 f6 c6 f6 g6@3, bb3@3 e6@5, ~@5 c7@11, ~@5 g6 f6 bb3@9", // Bbsus2 F5 Gmaj7 Cm
  I: "[eb6 ~@4 g5@2 ~@12 d5@2 ~@4 bb4@2 ~@19 c6@2, [ab3,eb4,g4]@7 ab5@4 [c4,eb4] eb5 f5 [eb4,g5]@2 [c4,d4,f4]@5 d5@9 c5 [bb3,c4,d4,f4] c5 d5@4 f4 f5 [c4,d4,f4] bb4 bb5 [c4,d4,f4] c5 [d4,f4] [c4,c5]@3, c4@3 f6@5 ~ c6@6 f5@6 f5@13 bb3@14, ~@2 eb6@6 [c4,eb4]@2 c5@6 ~@2 c5@4 bb4 [c4,d4] f4@3 bb4 [bb3,c4,d4,f4] bb4@5 [c4,d4,f4] c5 d4 g4@11, ~ c4 [f3,ab3]@2 ab3@8]/3", // Abmaj7 Cm Eb Dm7 Bb Dm7 Dm C …
  J: "eb6@2 [f5,f6] [eb5,eb6] ~ [gb5,g5,gb6] g6 [g5,g6] ~ [g5,g6] c6 ~ eb6 ~@2 c7, [bb3,eb4]@8 ~@3 [g3,bb3,c4,eb4]@5, [g3,c4]@3 c4 ~@3 g6, eb5 ~@12 f6@3", // F Eb Gmaj7 G Eb5 Cm7 C5
  K: "[~@2 bb6 c7 f6 [c6,eb6] f6 [c6,eb6] ~@7 c5 [c5,d5]@2 ~@5 f4 ~ f5!2 ~@10 eb5 ~@8 f4@2, [f3,ab3,c4]@13 eb5 f5@5 d5@3 d4@2 [bb3,c4,f4]@5 d4 f5@5 [c5,d5,f5]@2 f5@2 d4@3 [bb3,c4] d4@2 bb3@3, eb4@11 g5@5 d4@3 f5 c4 bb4@6 f5 d5@2 bb4@2 [bb3,c4]@9 f4@3 c4@4, ~@8 bb5@8 ~@2 eb5@7 [c5,d5] eb5@5 f4@2 ~ f4@2 f4@4 [bb4,f5]@8, ~@9 g5 c5 f5 [eb4,c5]@4 [bb3,f4]@5 f5@3 d4@3 c5@5 d4@6 d5@10]/3", // Cm Csus2 Fm Bbsus2 Dm7 Bbsus2 Csus2 Bb5 …
  L: "~@3 eb4@5, c3, ~ g3@7, ~@3 d4@13", M: "~@3 c4@5, ab2, ~ eb3@7, ~@3 bb3@13",
  N: "[~@11 d4@5, bb2 bb2, ~ f3@8 f3@7, ~@3 c4@16 c4@13, ~@3 d4@8 ~@5]/2", O: "~@3 d4@5, bb2, ~ f3@7, ~@3 c4@13",
  P: "f3@2 ~ [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@3 [f3,bb3,c4] ~ [f3,bb3,d4] ~@3", // Bb Fsus4 Bb Fsus4 Bb
  Q: "[f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@5 [f3,bb3]@2 ~@2, ~@12 c4 ~@3", // Bb Fsus4 Bb Bb5
  R: "[g3,c4,eb4]@3 [g3,c4,eb4] ~ [g3,c4,d4] ~ [g3,c4,eb4]@3 [g3,c4,d4] ~ [g3,c4,eb4] ~@3", // Cm Gsus4 Cm Gsus4 Cm
  S: "[ab3,c4,eb4]@2 ~ [ab3,c4,eb4] ~ [ab3,c4,d4] ~ [ab3,c4,eb4]@3 [ab3,c4,d4] ~ [ab3,c4,eb4] ~@3", // Ab Dm7b5 Ab Dm7b5 Ab
  T: "[f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@3 [f3,bb3,c4] ~ [f3,bb3,d4] ~@3", // Bb Fsus4 Bb Fsus4 Bb
  U: "[f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~@3", // Bb Fsus4 Bb Fsus4
  V: "[f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3] ~ [f3,bb3,c4] ~ [f3,bb3,c4]@3 [f3,bb3,d4] ~, ~@7 d4@2 ~@7", // Bb Fsus4 Bb5 Fsus4 Bb
  W: "[g3,c4,eb4]@2 ~ [g3,c4,eb4] ~ [g3,c4,d4] ~ [g3,c4,eb4]@3 [g3,c4,d4] ~ [g3,c4,eb4] ~@3", // Cm Gsus4 Cm Gsus4 Cm
  X: "[f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@3 [f3,bb3,c4] ~ [f3,bb3,d4] ~@3, ~@7 db4 ~@8", // Bb Fsus4 Bb Fsus4 Bb
  Y: "[f3,bb3,d4]@2 ~ [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@4 ~ [f3,bb3,c4]@2 ~@2", // Bb Fsus4 Bb Fsus4
  Z: "[f3,bb3,d4]@3 [f3,bb3,d4] ~ [f3,bb3,c4] ~ [f3,bb3,d4]@5 [f3,bb3,d4]@2 ~@2", // Bb Fsus4 Bb
  AA: "[~ [f3,bb3,eb4]@2 ~ [g3,c4,f4]@2 g2 [f3,bb3] ~ bb1 bb2 [f3,bb3,eb4] b1 [b2,gb3,b3,e4] c2 ~@23 [b4,b5]@4 ~@6 [db6,db7]!2 [b5,b6] [gb3,b3,eb4] [ab5,ab6] [gb3,b3,db4] [gb5,gb6] [gb3,b3,eb4]@2 [e5,e6] [gb3,b3,db4] [eb5,eb6] [gb3,b3,eb4] [b4,b5] ~@3 [gb4,gb5] [ab4,ab5] [gb3,b3,eb4] [gb4,gb5] [gb3,b3,db4] ~ [eb5,ab5]@2 [eb5,e5] db5 b4 [db4,ab4] [gb4,db5] g4 [db4,gb4], bb2@2 ~ g1@3 ~ d4@2 ~@6 [db2,ab3,db4,e4]@21 [db5,db6]@6 ~@4 gb4@16 ~ [gb4,gb5]@2 ~@15, ~@20 [e5,e6]@22 ~@4 gb5@8 ~ [eb5,eb6] ~@24, ~@22 [eb5,eb6]@20 ~@6 [gb3,b3,eb4]@3 ~@13 [gb3,b3,eb4]@3 ~@4 [gb3,b3,eb4]@5 [gb3,b3]@2 ~@2, ~@13 [b4,b5]@2 [ab4,ab5]@6 [a1,a2,a3,db4,e4,e5]@3 ~@16]/5", // Ebsus2 Csus4 Bb5 Ebsus2 Bsus4 B Db B …
  AB: "[e4,gb4] e4 db4 [ab3,db4,eb4,e4] e4 [ab3,db4,eb4,gb4] ab4 [ab3,db4,e4]@2 ab4 [ab3,db4,eb4,b4] db5 [ab3,db4,e4] db5 e5 gb5, [ab3,db4]@3 ~@4 b4 ~@8", // Esus2 Dbm Absus4 Dbm Abm Dbm Db5
  AC: "~ e5 gb5 [a3,db4,e4,ab5] ~ [a3,db4,eb4,gb5] ab5 [a3,db4,e4]@2 ab5 [a3,db4,eb4,b5] db6 [a3,db4,e4,eb6] e6 gb6 c6, [a3,db4,e4]@2 ~@5 b5 ~@8", // Amaj7 Ebm7b5 A B7 A
  AD: "[gb3,b3,eb4]@2 ab6 [gb3,b3,eb4,gb6] ~ [gb3,b3,db4,db6] [g6,ab6] ~ ab6 gb6 [gb3,b3,db4] db6 [gb3,b3,eb4,g6,ab6] ~ ab6 gb6, [g6,ab6] ~@6 [gb3,b3,eb4]@3 ~@6", // B Gbsus4 Abmaj7 Gbsus4 Abm7 Abmaj7 B
  AE: "~ db6 e6 [gb3,b3,eb4,e6] ~ [gb3,b3,db4,eb6] ~ [gb3,b3,eb4,e6]@2 [eb6,e6] [gb3,b3,eb4,db6,eb6] b5 [gb3,b3,db4,ab5] gb5 e5 db5, [gb3,b3,eb4]@3 ~@13", // B Emaj7 B Gbsus4 B
  AF: "[e5,c6,db6] db5 [gb5,b5,db6] [ab3,db4,e4,db5,eb5] g5 [ab3,db4,eb4,ab5] db5 [ab3,db4,e4]@2 db5 [ab3,db4,eb4,gb5,b5,db6] db5 [ab3,db4,e4,g5,b5] ab5 db5 [db5,db6], [ab3,db4,e4]@3 ~ db6@3 [e5,db6] ~@4 db6@3 ~", // C Gbsus4 Dbm Absus4 Dbm Abm7 Dbm7 Db …
  AG: "[e5,db6] db5 [gb5,db6] [a3,db4,e4,db5] [g5,b5] [a3,db4,eb4,ab5] db5 [a3,db4,e4]@2 db5 [a3,db4,eb4,e5,db6] db5 [a3,db4,e4,gb5,db6] db5 [g5,b5,db6] [ab5,db6], [a3,db4,e4]@2 ~@2 db6@2 ~ [e5,db6] ~@8", // Dbm Gb5 A G Amaj7 A Gbm7 Dbm7b5 …
  AH: "[gb5,db6] db5 [e5,db6] [gb3,b3,eb4,db5] gb5 [gb3,b3,db4,g5,ab5] db5 [gb3,b3,eb4]@2 db5 [gb3,b3,db4,gb5,b5,db6] db5 [gb3,b3,eb4,g5,db6] ab5 gb5 db5, [gb3,b3,eb4]@3 ~ db6@2 ~ [e5,db6] ~@5 db6@2 ~", // Gb5 Dbm B Gbsus4 B Gbsus4 B Dbm
  AI: "~ [db5,gb5,b5] ~ [gb3,b3,eb4,bb4,eb5,ab5] ~ [gb3,b3,db4,ab4,db5,gb5] ~ [gb3,b3,gb4,b4,e5] ~ [gb3,b3,db4,eb4,ab4,db5] ~ b4 g4 ab4 [gb3,b3,eb4,gb4] e4, [gb3,b3,eb4]@3 ~@4 eb4@2 ~@2 [gb3,b3,db4]@3 ~@2", // Gbsus4 Abm7 Gbsus4 Esus2 Abm7 B Gbsus4
  AJ: "[ab3,db4,e4]@2 [db4,db5] [ab3,db4,e4] [db4,db5] [ab3,db4,eb4,db5] ~ [ab3,db4,e4]@2 [db4,db5] [ab3,db4,eb4,e4,db5] db4 [ab3,db4,e4,gb4] ab4 db4 ~, ~@7 db5 ~@4 db5@3 ~", // Dbm Db Dbm Db Absus4 Dbm Db Dbm
  AK: "[a3,db4,e4]@2 [db4,db5] [a3,db4,e4] [db4,db5] [a3,db4,eb4,db5] ~ [a3,db4,e4]@2 [db4,eb4,db5] [a3,db4,eb4,e4,db5] db4 [a3,db4,e4,gb4] ab4 db4 [db4,db5], ~@7 db5 ~@4 db5@3 ~", // A Db A Db Ebm7b5 A Dbsus2 A …
  AL: "~ db4 e4 [gb3,b3,db4,eb4] gb4 [gb3,b3,db4,ab4] db4 [gb3,b3,eb4]@2 db4 [gb3,b3,db4,e4] db4 [gb3,b3,eb4,gb4] ab4 db4 [db4,db5], [gb3,b3,eb4]@3 ~@4 [db4,d4,db5] ~@8, ~ db5@2 ~ db5@3 ~@2 db5@2 ~ db5@2 ~@2", // B Gbsus4 B Gbsus4 B Db B Dmaj7
  AM: "[~ [db4,db5] [db4,e4] [gb3,b3,eb4] db4 [gb3,b3,db4,gb4] d5 [d4,eb4] eb4 eb5 eb4 e5 e4 [f4,gb4] gb5 ~ a5 ab5 [ab4,ab5] [ab3,db4,e4] [ab4,ab5] [ab3,db4,eb4,ab4] [ab4,ab5]!3 ab5 [ab3,db4,eb4,ab4,ab5] [ab4,ab5] [ab3,db4,e4,ab4] ab5 ~ a5, [gb3,b3,eb4]@2 ~ db5@2 ~@2 [gb3,b3]@4 ~ [gb3,b3,db4]@2 ~ g4@2 ~@15, ~@16 [ab3,db4,e4,g5]@3 ~@4 [ab3,db4,e4]@3 ~@6]/2", // Db Dbm B Gbsus4 Ebmaj7 Gbmaj7 Ab Dbm …
  AN: "ab5!2 [ab5,a5] [a3,db4,e4,gb5] e5 [a3,db4,eb4,db5] eb5 e5 gb5 e5 [a3,db4,eb4,eb5] db5 [a3,db4,e4,b4] ab4 db5 eb5, [a3,db4,e4]@2 ~@5 [a3,db4,e4]@3 ~@6", // Amaj7 Gbm7 Ebm7b5 A
  AO: "[[gb3,b3,eb4,db5]@2 gb4 [gb3,b3,eb4] ~ [gb3,b3,db4,gb4] ~@2 gb4 ~ [gb3,b3,db4] gb4 [gb3,b3,eb4] ~ gb4 ~@2 gb4 ~ [gb3,b3,eb4] gb4 [gb3,b3,db4,b4,d5] ~ db5 ~ b4 e5 gb5 db5 gb5 ab5 b5, ~@3 b4@2 ~ db5@2 ~ b4@2 ~ db5@2 ~ b4@2 ~ db5@2 ~@12, ~@7 [gb3,b3,eb4]@3 ~@6 [gb3,b3,eb4]@2 ~@5 [gb3,b3,eb4]@4 ~ [gb3,b3,db4]@2 ~@2]/2", // B Gbsus4 B Bm B Gbsus4
  AP: "e5 ab5 b5 [ab3,db4,e4,gb5] db6 [ab3,db4,eb4,e6] ab5 db6 gb6 b5 [ab3,db4,eb4,b6] db6 [ab3,db4,e4,gb6] ab6 e6 b5, [ab3,db4,e4]@2 ~@5 [ab3,db4,e4]@3 ~@6", // Dbm Abm Dbm
  AQ: "db7 db6 ab6 [a3,db4,e4,b6] gb6 [a3,db4,eb4,b5] db6 e6 db6 ab5 [a3,db4,eb4,b5] e6 [a3,db4,e4,gb5] [gb5,c6,db6] ~ [gb5,db6], [a3,db4,e4]@2 ~@5 [a3,db4,e4]@3 ~@6", // A B7 Gbm7 Gb Gb5 A
  AR: "[g5,a5] [db5,gb5] gb5 [gb3,b3,eb4,e5] eb5 [gb3,b3,db4,db5] eb5 e5 gb5 ab5 [gb3,b3,db4,b5] ~ [gb3,b3,eb4] ~ db5 [eb5,e5,f5,gb5], [gb3,b3,eb4]@3 ~@4 [gb3,b3,eb4]@3 ~@6", // Gsus2 Gb5 B Gbsus4 B
  AS: "[ab5,bb5] [b5,db6] [eb6,e6] [gb3,b3,eb4,gb6,ab6] [bb6,b6] [gb3,b3,db4,gb6,ab6] [bb6,b6] [db7,eb7] [e7,gb7,ab7] gb7 [db7,eb7,e7] [bb6,b6] [ab6,b6] [ab6,a6] [gb6,a6,b6] [gb6,ab6], [gb3,b3,eb4]@3 ~@4 [gb3,b3,eb4]@5 [gb3,b3,eb4]@2 ~@2", // Absus2 Bsus2 Emaj7 Abm7 Bmaj7 Gbsus4 Bmaj7 Dbsus2 …
  AT: "[eb6,e6] ~@15", // Emaj7
})).s("gm_piano").gain(0.56)

// chords · epiano1 · "PIANO"
const epiano1 = note("<~@96 A@7 B@2 ~>".pickRestart({
  A: "[~@2 [ab5,e6] ~@4 gb5 ~@3 b5@2 [db3,a3,a4,e5]@2 b3@4 ~@29 [g2,d3,b3,g4,b4]@3 [e2,b2,e3,g3,b3,d4]@5, ~@4 e4@6 [e4,eb5,b5]@6 a2@10 gb2@2 ~@2 b2@16 gb3 b4@15 db6 b5 [db3,db6]@2 ab3@2 [e4,ab5,e6]@2 [gb5,eb6]@4 [eb5,b5]@4 ab5@6 e5@2 [eb5,b5]@4 e5@4 gb5@9 ~@9, ~@3 eb6@5 ~ e3@4 ~@2 gb3@4 db4@5 b3 db5@15 ~@2 [db4,db6]@6 ~@8, ~@6 gb5@8 [db5,ab5]@12 ~@4 gb5@12 gb3@2 gb4@15 b3 db6 eb6 b3@18 ~@2 e3@14 ~@16, ~@20 [db4,e5,db6]@6 ~@4 b4@8 b3@3 eb4@11 b3 eb5@2 gb5 gb3 ab5 b5 gb3@21 a2@16 ~@16]/7", // Dbm A G Em7 Emaj7 Db E Ebm …
  B: "[b1,b2,gb3,b3,db4,eb4]/2", // B
})).s("gm_epiano1").gain(0.72)

// chords · piano · "piano 2 double"
const piano_2 = note("<~@32 A B C@2 A B D@2 ~@66>".pickRestart({
  A: "~@3 eb5@5, c4, ~ g4@7, ~@3 d5@13", B: "~@3 c5@5, ab3, ~ eb4@7, ~@3 bb4@13",
  C: "[~@11 d5@5, bb3 bb3, ~ f4@8 f4@7, ~@3 c5@16 c5@13, ~@3 d5@8 ~@5]/2", D: "~@3 d5@5, bb3, ~ f4@7, ~@3 c5@13",
})).s("gm_piano").gain(0.56).pan(0.9)

// bass · fretless bass · "BASS"
const bass = note(`<
  A B C D E F G H A B C D E F G H I J K L M N O P A B C D E F G H Q@2 ~@2 R S T@2 A B C D E F G H I J K L M N O P A B C
  D E F G H Q@2 ~@2 R S U@2 ~@2 V W X Y Z AA AB AC AD AE AF AG AH AI AB AC AD AE AF AG AH AI AB AC AD AE ~@6
>`.pickRestart({
  A: "c2@3 c2 ~ g1 bb1 c2 ~@5 g1 eb2 g2", B: "ab2@2 ~ ab2 g1 eb2 f2 ab1 ~@8", C: "bb1@3 bb1 ~ f2 g2 bb2 ~@8",
  D: "bb1@3 ~@11 bb1 d2", E: "c2@2 c1 c3 ~ c2 g2 c3 ~@5 g1 ~ g1, ~@7 c2",
  F: "ab1@3 ab2 ~ eb2 f2 ab1 ~@6 f1@2, ~@14 e1 ~", G: "bb1@3 bb2 ~ f2 g2 bb1 ~@8",
  H: "~ d3@3 c3@2 bb1 bb2 ~ g2 f2 bb1 d2 eb2 d2 bb1", I: "c2@2 c1 c3 ~ c2 g1 c1 ~@5 c1 eb1 g1",
  J: "ab1@2 eb1 ab2 ~ eb2 ~ ab1 ~@6 f1@2, ~@3 f2 ~@4", K: "bb1@3 bb2 ~ [bb1,f2] g2 bb1 ~@7 f2",
  L: "~ bb2@2 bb2 ~ d2@2 d2 ~ eb2 f2 f1 g2 g1 bb2 c3, bb1@3 ~ d1@3 ~ eb1@2 ~@6",
  M: "~ c2 g1 c3 ~ c2 g2 c1 ~@3 g1 g2@2 c3 g2, c1 ~@7", N: "ab1 eb2 [ab1,a1] ab2 ~ eb2 f2 ab1@5 ab2@2 ab1 eb2",
  O: "~ f2 ~ bb2 ~ f2 g2 bb1@2 ~@7, bb1@3 ~@13", P: "~ f3@3 ~ c3@3 ~ bb2 ~ f2 g2 bb1 c2 d2", Q: "c2/2", R: "c2",
  S: "ab1", T: "[~@17 d3@3 c3@2 ~ bb2 ~ g2 f2 ~ d2 eb2 d2 bb1, bb1@22 bb1@5 bb1@4 ~]/2", U: "[bb1@9 ~@7]/2",
  V: "b1@3 b1 ~ gb2 ab2 b2 ~@8", W: "b1@3 ~@11 b1 eb2", X: "db2@2 db1 db3 ~ db2 ab2 db3 ~@5 ab1 ~ ab1, ~@7 db2",
  Y: "a1@3 a2 ~ e2 gb2 a1 ~@6 gb1@2, ~@14 f1 ~", Z: "b1@3 b2 ~ gb2 ab2 b1 ~@8",
  AA: "~ eb3@3 db3@2 b1 b2 ~ ab2 gb2 b1 eb2 e2 eb2 b1", AB: "db2@2 db1 db3 ~ db2 ab1 db1 ~@5 db1 e1 ab1",
  AC: "a1@2 e1 a2 ~ e2 ~ a1 ~@6 gb1@2, ~@3 gb2 ~@4", AD: "b1@3 b2 ~ [b1,gb2] ab2 b1 ~@7 gb2",
  AE: "~ b2@2 b2 ~ eb2@2 eb2 ~ e2 gb2 gb1 ab2 ab1 b2 db3, b1@3 ~ eb1@3 ~ e1@2 ~@6",
  AF: "~ db2 ab1 db3 ~ db2 ab2 db1 ~@3 ab1 ab2@2 db3 ab2, db1 ~@7", AG: "a1 e2 [a1,bb1] a2 ~ e2 gb2 a1@5 a2@2 a1 e2",
  AH: "~ gb2 ~ b2 ~ gb2 ab2 b1@2 ~@7, b1@3 ~@13", AI: "~ gb3@3 ~ db3@3 ~ b2 ~ gb2 ab2 b1 db2 eb2",
})).s("gm_fretless_bass").gain(0.64)

// other · electric guitar muted · "MUTE GUITAR"
const electric_guitar_muted = note(`<
  ~@4 A B C D ~@8 A B C D E F G H I ~@23 A B C D E F G H I ~@23 J K L M N O P Q J K L M N O P Q J K L M R ~@5
>`.pickRestart({
  A: "c3 g3 bb3 c4 ~ c4 bb3 c4 ~ c4 bb3 c3 c4 eb3 eb4 bb3",
  B: "~ g3 bb3 c4 ~ c4 bb3 eb3 g3 ~ c4 ~ eb4 ab2 bb3 c4, ab2 ~@7",
  C: "~ g3 bb3 c4 ~ c4 bb3 c4 ~ c4 bb3 d3 c4 d3 eb4 bb3, bb2 ~@7",
  D: "~ g3 bb3 c4 ~ c4 bb3 g3 eb4!2 d4 d3 bb3 bb2 g3 c4, bb2 ~@7",
  E: "c3 g3 ~ c4 ~ c4 bb3 c4 ~ c4 bb3 c3 c4 eb3 c4 eb4",
  F: "~ g3 bb3 c4 ~ c4 bb3 c4 ~ c4 bb3 ab2 c4 eb3 eb4 bb3, ab2 ~@7",
  G: "bb2 g3 bb3 c4 ~ c4 bb3 c4 ~ c4 bb3 bb2 c4 f3 eb4 bb3",
  H: "~ g3 bb3 c4 ~ c4 bb3 [c4,f4] ~ [c4,f4] [bb3,eb4] f3 [f3,bb3] bb2 [f3,bb3] [g3,c4], bb2 ~@7", I: "c3 ~@15",
  J: "db3 ab3 b3 db4 ~ db4 b3 db4 ~ db4 b3 db3 db4 e3 e4 b3",
  K: "~ ab3 b3 db4 ~ db4 b3 e3 ab3 ~ db4 ~ e4 a2 b3 db4, a2 ~@7",
  L: "~ ab3 b3 db4 ~ db4 b3 db4 ~ db4 b3 eb3 db4 eb3 e4 b3, b2 ~@7",
  M: "~ ab3 b3 db4 ~ db4 b3 ab3 e4!2 eb4 eb3 b3 b2 ab3 db4, b2 ~@7",
  N: "db3 ab3 ~ db4 ~ db4 b3 db4 ~ db4 b3 db3 db4 e3 db4 e4",
  O: "~ ab3 b3 db4 ~ db4 b3 db4 ~ db4 b3 a2 db4 e3 e4 b3, a2 ~@7",
  P: "b2 ab3 b3 db4 ~ db4 b3 db4 ~ db4 b3 b2 db4 gb3 e4 b3",
  Q: "~ ab3 b3 db4 ~ db4 b3 [db4,gb4] ~ [db4,gb4] [b3,e4] gb3 [gb3,b3] b2 [gb3,b3] [ab3,db4], b2 ~@7", R: "db3 ~@15",
})).s("gm_electric_guitar_muted").gain(0.44)

// drums · kick
const kick = s("bd").struct("<A@3 B A@7 B A@20 ~@7 A@4 B A@20 ~@10 A B A@24 ~@6>".pickRestart({
  A: "x ~@4 x ~ x ~@8", B: "x ~@4 x ~ x ~@5 x ~@2",
})).gain(0.59)

// drums · snare
const snare = s("sd").struct("<A@3 B A@7 B A@20 ~@7 A@4 B A@20 ~@10 A B A@24 ~@6>".pickRestart({
  A: "~@3 x ~@8 x ~@3", B: "~@3 x ~@8 x ~ x!2",
})).gain(0.66)

// drums · low tom
const low_tom = s("lt").struct("<~@73 [~@7 x] ~@32>").gain(0.66)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E F G H A B C D E F G H I J K L M N O P Q R S T U V W X Y@7 Z A B C D E F G H I J K L M N O P Q R S T U V W X
  Y@7 ~ Y@2 C D E F G H I J K L M N O P I J K L M N O P I J K L ~@6
>`.pickRestart({
  A: "~ x ~ x!3 ~ x!3 ~ x!5", B: "x ~ x!2 ~ x!11", C: "~@7 x!6 ~ x!2", D: "x ~ x!2 ~@3 x!9", E: "x!4 ~@3 x!9",
  F: "x!4 ~@2 x!2 ~ x ~ x!5", G: "x!4 ~@2 x!2 ~ x!7", H: "x!2 ~ x ~ x!2 ~@3 x ~ x!4", I: "x!4 ~ x!3 ~ x ~ x ~@2 x!2",
  J: "x!2 ~ x ~@3 x ~ x!7", K: "x!2 ~ x ~ x!3 ~ x!7", L: "x ~@3 x!3 ~@3 x!4 ~ x", M: "x!3 ~ x!2 ~ x ~ x!3 ~ x ~ x",
  N: "x!6 ~ x!9", O: "x ~ x!2 ~@2 x!2 ~ x ~ x ~@3 x", P: "x!5 ~ x!3 ~ x ~ x!4", Q: "x!3 ~@2 x!3 ~ x ~ x ~ x ~ x",
  R: "x!3 ~ x ~ x!10", S: "x!2 ~ x ~ x!3 ~ x ~ x ~ x!3", T: "x!10 ~ x ~@4", U: "x ~@3 x ~ x ~ x ~ x!4 ~ x",
  V: "x!12 ~ x!3", W: "x!3 ~ x!8 ~ x!3", X: "x!6 ~ x!2 ~ x ~ x!2 ~ x", Y: "~ x ~ x", Z: "x!2 ~ x!4 ~@3 x ~ x!4",
})).gain(0.33)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B C B ~ D E@2 A B C B ~ D E@2 F G ~ G H I D ~ J ~ K ~@12 E A B C B ~ D E@2 F G ~ G H I D ~ J ~ K ~@15 C B ~ D E@2 F
  G ~ G H I D ~ F G ~ G H I D ~ F G ~ G ~@6
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "~ x ~@14", C: "x!4 ~@9 x ~@2", D: "~@5 x ~@2", E: "~ x", F: "~@4 x!2 ~@2", G: "~ x ~@2 x ~@3",
  H: "~@3 x ~@2 x ~ x ~@7", I: "~@3 x ~@4", J: "~@3 x ~@4 x ~ x ~@5", K: "x!2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@73 [~@11 x!2 ~@3] ~@32>").gain(0.66)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B@6 C A B@6 C D B E F G ~ D H I J K L M N O P ~@7 C A B@6 C D B E F G ~ D H I J K L M N O P ~@10 B@5 C D B E F G ~ D
  H D B E F G ~ D H D B E F ~@6
>`.pickRestart({
  A: "~ x ~@6", B: "~ x ~@2", C: "~@2 x ~ x ~@2 x ~ x ~ x ~@4", D: "~ x ~ x", E: "~ x!2 ~@5",
  F: "~ x ~ x ~@3 x ~ x ~@4 x ~", G: "~@6 x!2", H: "~@5 x ~@3 x ~ x ~@4", I: "~@2 x ~@3 x!2", J: "~@3 x ~ x ~@10",
  K: "~ x!2 ~@2 x!2 ~", L: "~@5 x!3", M: "~@2 x!2 ~ x ~ x ~ x ~@4 x ~", N: "~@3 x", O: "~@3 x ~@8 x ~@3",
  P: "~@6 x ~@2 x ~ x ~@2 x ~",
})).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@73 [~ x] ~@32>").gain(0.66)

// drums · crash
const crash = s("cr").struct("<~@32 A ~@31 A ~@7 A ~ A ~@5 A ~@3 A ~@11 A ~@3 A ~@5>".pickRestart({
  A: "x",
})).gain(0.66)

// drums · congas
const congas = s("conga:13").struct(`<
  A@2 B C ~ D E F A@2 B C ~ D E F ~@23 F A@2 B C ~ D E F ~@26 B C ~ D E F B C ~ D E F ~@20
>`.pickRestart({
  A: "~@11 x ~ x ~@2", B: "~@7 x", C: "~@4 x ~ x ~@3 x ~ x!4", D: "~@7 x ~ x ~@3 x ~@2", E: "~@5 x ~@5 x ~@3 x",
  F: "x!7 ~@2 x!2 ~ x ~@3",
})).gain(1.26)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct(`<
  ~@3 A ~@2 B ~@4 A ~@2 B ~@28 A ~@2 B ~@28 A ~@2 B ~@2 A ~@2 B ~@21
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@7 x",
})).gain(0.84)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  A B C D E F G H A B C D E F G H ~@23 H A B C D E F G H ~@26 C D E F G H C D E F G H ~@20
>`.pickRestart({
  A: "~@6 x!2 ~@8", B: "~@5 x ~@2", C: "~ x ~@2", D: "~@3 x ~@3 x ~ x ~@6", E: "~@5 x ~@3 x ~@6",
  F: "~@4 x ~@6 x ~@2 x ~", G: "~@4 x ~@2 x ~ x ~@6", H: "~@13 x ~ x",
})).gain(1.26)

// drums · congas · soft notes
// … 51 more lines

More by Michael Jackson