Strudelify
Earth Song cover art

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

Earth Song

Michael Jackson

KeyA♭ majorTempo69 bpm
0:00/0:00
// Earth Song — Jackson Michael
// 69 bpm, 4/4, key G# 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 87 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/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"
const piano = note("<~ A B C D ~@12 E F@8 ~@7 G@4 H@6 ~@2 I@8 J@16 K@8 L@4 M@5 ~>".pickRestart({
  A: "[eb4,ab4,b4]@4 ~@3 eb5 [f4,ab4,db5]@2 ~@4 db5@2, ~ b5 ~@2, ~@5 bb5@3 ~@4 f5@4, ~@3 ab5 ~ ab5@3", // Abm Db
  B: "ab3@4 ~@3 eb5 ~@6 db5@2, [eb4,ab4,b4] [f4,ab4], ~ [ab3,b5] db4 [db4,f5], ~@5 bb5@3 ~@2 ab5@6, ~@3 ab5 db5@3 ~", // Abm Fm Abm Db
  C: "ab3@4 ~@2 ab5 eb5 ~@6 db5@2, [eb4,ab4,b4]@15 ~ [f4,ab4]@16, ~ [ab3,b5] db4 [db4,f5], ~@10 bb5@5 ~ db5@12 ~@4, ~@5 ab5@3", // Abm Fm Abm Db
  D: "[g4,bb4,eb5]@4 db5@4 b4@4 bb4@3 ~, eb4 ~", // Eb
  E: "[eb4,ab4,b4]@4 [eb4,ab4,b4]@3 ~ f4@3 ~ [ab3,db4,f4]@3 ~, ~@15 [ab3,db4]@6 ~@11", // Abm Db Db5
  F: "[eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4!2 eb4@6, b3@47 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@35 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@64 ~@52, gb4@12 gb4@52 gb4@8 eb4@8 [ab3,db4,f4]@24 eb4@24 gb4@8 eb4@8 [ab3,db4,f4]@24 eb4@7 [ab3,db4]@9 [ab3,db4,f4]@64 ~@8, ~ eb4@3 ~ [ab4,b4]@7 ~ [ab4,b4]@7 ~ [ab4,b4]@8 ~@3, ~@2 [ab3,db4,f4]@3 eb4@3 b3@8 b3@8 [bb3,g4]@8]/8", // Abm Db5 Db Db5 Db Db5 Db Abm …
  G: "[[eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4 ~ [ab3,db4,f4]@2, ~@8 [ab4,b4]@40 [ab3,db4,f4]@24 eb4@7 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@20, ~ eb4@3 b3@8 b3@4, ~@15 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@52 gb4@8 eb4@24, ~@4 gb4 eb4@3 ~ [ab4,b4]@7]/4", // Abm Db Abm Db Db5 Db Db5 Db …
  H: "[[eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4!2 eb4@8 ~@2, ~@8 [ab4,b4]@40 [ab3,db4,f4]@24 eb4@7 [ab3,db4]@9 [ab3,db4,f4]@64 ~@40, ~ eb4@3 b3@8 [bb3,g4]@8 ~@4, ~@15 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@64 ~@84, ~@4 gb4 eb4@3 ~ [ab4,b4]@8 ~@7]/6", // Abm Db Db5 Db Eb Db5 Db Abm
  I: "[[eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4 ~@3 [eb4,ab4,b4] ~ f4 ~ eb4!2 eb4@2, ~@8 [ab4,b4]@40 [ab3,db4,f4]@24 eb4@7 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@35 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@64 ~@20, ~@8 eb4@24 b3@64 b3@64 b3@47 [ab3,db4]@9 [ab3,db4,f4]@40, ~@15 [ab3,db4]@9 [ab3,db4,f4]@20 gb4@52 gb4@8 eb4@8 [ab3,db4,f4]@24 eb4@24 gb4@8 eb4@8 [ab3,db4,f4]@24 eb4@24 [bb3,g4]@32, ~@4 gb4 eb4@3 ~ [ab4,b4]@7 ~ [ab4,b4]@7 ~ [ab4,b4]@7]/8", // Abm Db Db5 Db Db5 Db Db5 Db …
  J: "[[f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ f4!2 f4@2, ~@8 [bb4,db5]@40 [bb3,eb4,g4]@24 f4@7 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@35 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@64 ~@20, ~@8 f4@24 db4@64 db4@64 db4@47 [bb3,eb4]@9 [bb3,eb4,g4]@40, ~@15 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@52 ab4@8 f4@8 [bb3,eb4,g4]@24 f4@24 ab4@8 f4@8 [bb3,eb4,g4]@24 f4@24 [c4,a4]@32, ~@4 ab4 f4@3 ~ [bb4,db5]@7 ~ [bb4,db5]@7 ~ [bb4,db5]@7]/8", // Bbm Eb Eb5 Eb Eb5 Eb Eb5 Eb …
  K: "[[f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ f4!2 f4@2 [f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ f4!2 f4@2, ~@8 [bb4,db5]@40 [bb3,eb4,g4]@24 f4@7 [bb3,eb4]@9 [bb3,eb4,g4]@55 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@64 ~@20, ~@8 f4@24 db4@64 [c4,a4]@64 db4@47 [bb3,eb4]@9 [bb3,eb4,g4]@40, ~@15 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@64 ~@28 f4@24 ab4@8 f4@8 [bb3,eb4,g4]@24 f4@24 [c4,a4]@32, ~@4 ab4 f4@3 ~ [bb4,db5]@7 ~ [bb4,db5]@7 ~ [bb4,db5]@7]/8", // Bbm Eb Eb5 Eb Eb5 Eb F Eb5 …
  L: "[[f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ f4 ~ [bb3,eb4,g4]@2, ~@8 [bb4,db5]@40 [bb3,eb4,g4]@24 f4@7 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@20, ~ f4@3 db4@8 db4@4, ~@15 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@52 ab4@8 f4@24, ~@4 ab4 f4@3 ~ [bb4,db5]@7]/4", // Bbm Eb Bbm Eb Eb5 Eb Eb5 Eb …
  M: "[[f4,bb4,db5] ~ g4 ~ f4 ~@3 [f4,bb4,db5] ~ g4 ~ [c4,f4,a4]@8, ~@8 [bb4,db5]@40 [bb3,eb4,g4]@24 f4@7 [bb3,eb4]@9 [bb3,eb4,g4]@64 ~@8, ~ f4@3 db4@8 ~@8, ~@15 [bb3,eb4]@9 [bb3,eb4,g4]@20 ab4@64 ~@52, ~@4 ab4 f4@3 ~ [bb4,db5]@8 ~@3]/5", // Bbm F Bbm Eb Eb5 Eb Eb5 Eb …
})).s("gm_piano").gain(0.54)

// bass · synth bass 1 · "#Smth.Bas"
const bass = note("<~@13 A B C D E F E F E F E G F E F H ~@12 I J K L ~@42>".pickRestart({
  A: "e1 gb1", B: "b1@3 bb1 ab1@4", C: "db1", D: "eb1@12 eb1@3 ~", E: "ab1 db2", F: "ab1 db1", G: "eb1@15 ~", H: "eb2",
  I: "db2@12 ab1!3 ~ gb1@6 gb1@2 gb2@3 ~ db2@2 c2@2", J: "b1@11 ~ bb1@2 ~@2 ab1@4 ab1 b1 e2 ~ ab2@7 ~",
  K: "db2@10 ~@2 db2 ~ ab1@2 db2@11 ~ db2 ~ db2@2", L: "eb2@12 ~@2 eb2 ~ eb2@5 ~ eb2 ~ eb2@2 db2@2 b1@2 bb1@2",
})).s("gm_synth_bass_1").gain(0.4)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@2 A B C@2 ~@7 D E F G H I J K H I J L M N M O D E F P H I J K H I J L Q R S T H U J V H U J L W X Y Z W X Y AA W X Y
  Z W X Y AA W X Y AA W X Y AA W X W X W X W AB@3
>`.pickRestart({
  A: "~ f3", B: "[ab1,ab2,eb3,ab3,b3,b5] [f2,db3,f3,ab3,db4,ab5]", C: "[[eb2,eb3,g3,bb3,eb4,bb5] ~, eb1@5 ~@3]/2",
  D: "[e2,e3,ab3,b3,e4]@2 [b3,db4,gb4] [bb3,db4,gb4], ~ [gb2,gb3]", // E Bsus2 Gb
  E: "eb4 db4 [ab1,ab2,eb3,ab3,b3]@2, [b1,b2,gb3,b3] ~", F: "[db2,db3,e3,ab3,db4]", G: "[eb2,eb3,g3,bb3,eb4]@15 ~",
  H: "[ab2,ab3,b3,eb4,ab4] [db3,ab3,db4,f4,ab4]", I: "[ab2,ab3,b3,gb4,ab4] [db3,ab3,db4,f4,ab4]",
  J: "[ab2,ab3,b3,eb4,ab4,ab5] [db3,ab3,db4,f4,ab4]", K: "[ab2,ab3,b3,gb4,ab4]@16 [db3,ab3,db4,f4,ab4]@15 ~",
  L: "[eb2,bb2,eb3,g3,bb3]", M: "[ab3,b3,eb4,gb4] [f3,ab3,db4,f4]", N: "[eb3,ab3,b3,eb4] [f3,ab3,db4,f4]",
  O: "[eb3,g3,bb3,eb4]", P: "[eb2,eb3,g3,bb3,eb4]", Q: "b4@3 bb4, [e4,ab4,e5]", R: "[bb3,eb4,gb4,bb4] [ab3,b3,eb4,ab4]",
  S: "[db4,e4,ab4,db5]", T: "[eb4,g4,bb4,eb5]",
  U: "gb5@6 ab5 gb5 f5 eb5 db5@5 ~, [ab2,ab3,b3,gb4,ab4] [db3,ab3,db4,f4,ab4]", // Abm7 Db
  V: "gb5@6 ab5 gb5 f5 eb5 db5@5 ~, [ab2,ab3,b3,gb4,ab4]@16 [db3,ab3,db4,f4,ab4]@15 ~", // Abm7 Db
  W: "[bb2,bb3,db4,f4,bb4] [eb3,bb3,eb4,g4,bb4]", // Bbm Eb
  X: "ab5@6 bb5 ab5 g5 f5 eb5@5 ~, [bb2,bb3,db4,ab4,bb4] [eb3,bb3,eb4,g4,bb4]", // Bbm7 Eb
  Y: "[bb2,bb3,db4,f4,bb4,bb5] [eb3,bb3,eb4,g4,bb4]", // Bbm Eb
  Z: "ab5@6 bb5 ab5 g5 f5 eb5@5 ~, [bb2,bb3,db4,ab4,bb4]@16 [eb3,bb3,eb4,g4,bb4]@15 ~", AA: "[f2,c3,f3,a3,c4]",
  AB: "[[f2,c3,f3,a3,c4]@11 ~]/3", // F
})).s("gm_string_ensemble_1").gain(0.13)

// chords · synth strings 1 · "Syn.Strin"
const synth_strings_1 = note(`<
  ~@19 A ~@3 A ~@11 A ~@3 A ~ B C D E ~@2 A ~@3 A ~@3 F ~@3 F ~@3 F ~@3 F ~@3 F ~@3 F ~@11
>`.pickRestart({
  A: "ab5 ab4", B: "e5@2 e5 gb5, [e4,ab4,db5]", C: "[eb4,gb4,b4,eb5]", D: "[e4,ab4,db5,e5]", E: "[g4,bb4,eb5,g5]",
  F: "bb5 bb4",
})).s("gm_synth_strings_1").gain(0).pan(1)

// chords · synth strings 1 · "Syn.Strin" · soft notes · Db Eb
const synth_strings_1_soft = note("<~ [~ [db5,f5,ab5]] ~ [~ [db5,f5,ab5]] [[eb5,g5,bb5]] ~@82>")
  .s("gm_synth_strings_1").gain(0).pan(1)

// chords · epiano1 · "E.Piano"
const epiano1 = note(`<
  ~@5 A B@2 C B D B C E F G H@7 I@3 B@2 C E F G H@7 J@3 ~@3 K@8 L@16 M@5 N O@8 P@3 ~
>`.pickRestart({
  A: "[ab2,eb3,b3] [db2,f3,ab3,db4]", B: "[ab2,eb3,ab3,b3] [db2,f3,ab3,db4]", C: "[eb2,g3,bb3,eb4]@15 ~",
  D: "[ab2,eb3,ab3,b3]@4 ~@3 db4, ~ [db2,ab3], ~@8 [f3,db4]@5 f3@3, ~@3 eb3", // Abm Db5 Db
  E: "[e2,ab3,b3,e4]@2 b3 bb3, ~ [gb2,db4,gb4]", // E Gb5
  F: "[gb3,b3,eb4]@2 ~ bb1 [eb3,ab3,b3]@2 [eb3,ab3,b3]@2, b1@3 ~ ab1@4, ~ [gb3,b3,eb4] ~@2", // B Abm B
  G: "[ab3,db4]@4 [ab3,db4,e4]@4 [ab3,db4,eb4]@4 [e3,ab3,db4]@3 ~, db1, e3 ~", // Db5 Dbm Absus4 Dbm
  H: "[[g3,bb3,eb4]!3 ~@23 db1@2, eb1@3 [eb1,g3,bb3,eb4]@8 ~@17, ~ ab1 ab1 ab1 ab1 ab1 ab1, ~@3 db2@4 db2@4 db2@3, ~@5 db1@4 db1@4 ~]/7", // Eb
  I: "[~@4 [eb3,ab3,b3,eb4] [db2,f3,ab3,db4], ab1@2 ~, ~ db2@4 ~, ~@2 eb1@3 ~]/3", J: "[~ eb1@2, ab1@2 ~, ~ db2@4 ~]/3",
  K: "[~@7 eb1, ab1 ab1 ab1 ab1 ab1 ab1 ab1@2, ~ db2@4 db2@4 db2@4 db2@3, ~@3 db1@4 db1@4 db1@4 ~]/8",
  L: "[~@7 f1, bb1 bb1 bb1 bb1 bb1 bb1 bb1@2, ~ eb2@4 eb2@4 eb2@4 eb2@3, ~@3 eb1@4 eb1@4 eb1@4 ~]/8",
  M: "[~@9 eb2, bb1 bb1 bb1@2 bb1, ~ eb2@4 eb2@4 ~, ~@3 eb1@4 ~@3, ~@3 f1@2]/5", N: "~ eb1, bb1",
  O: "[~@15 eb1, bb1@7 c2@3 eb1@2 bb1@2 eb1@8 eb1@8 ~@2, ~@4 eb2@13 ab1@15 bb1@8 bb1@8 bb1@8 bb1@8, ~@4 f1@4 bb1 f1@8 ~ eb2@8 eb2@6, ~@12 db2@7 e1@16 ~@29]/8",
  P: "[~ f1@2, bb1@2 ~, ~ eb2@4 ~]/3",
})).s("gm_epiano1").gain(0.5)

// other · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~@16 A B A B A B A B ~@9 B A B A B A B ~@5 B A B A B A B ~ C D C D C D C ~ C D C D C D C ~ C D C ~ C D C ~ C D C D C D
  C ~@3
>`.pickRestart({
  A: "~@26 [ab3,bb3] [b3,eb4] [ab4,bb4] [b4,eb5] [ab5,bb5] [b5,eb6]", B: "ab5 ~@31", C: "bb5 ~@31",
  D: "~@26 [bb3,c4] [db4,f4] [bb4,c5] [db5,f5] [bb5,c6] [db6,f6]", // Bbsus2 Db Bbsus2 Db Bbsus2 Db
})).s("gm_orchestral_harp").gain(0.21).pan(0)

// other · orchestral harp · "Harp" · soft notes
const orchestral_harp_soft = note(`<
  ~@16 A ~ A ~ A ~ A ~@11 A ~ A ~ A ~@7 A ~ A ~ A ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~@3 B ~@3 B ~ B ~ B ~@4
>`.pickRestart({
  A: "~@24 [ab2,bb2] [b2,eb3] ~@6", B: "~@24 [bb2,c3] [db3,f3] ~@6",
})).s("gm_orchestral_harp").gain(0.11).pan(0)

// chords · acoustic guitar steel · "St.Str.Gt"
const acoustic_guitar_steel = note(`<
  ~@16 A@3 B@4 C@2 ~@8 D@2 B@4 C@2 ~@4 D@2 B@4 C@2 E@2 F@4 G@2 E@2 F@4 G@2 E@2 H@2 I@2 G@2 I@6 J@2 ~@2
>`.pickRestart({
  A: "[~@4 ab4 ~@3 ab4 ~ ab4 ~, ~@29 b2@9 ~@23 ab2@10 ~@8 [db4,f4]@9 ~@8, ~@30 [eb3,ab3]@9 ~@23 [eb3,ab3]@10 ~@5 db3@10 ~@9, ~@31 [b3,eb4]@8 ~@24 [b3,eb4]@9 ~@6 [f3,ab3]@10 ~@8]/3", // Db Ab5 B Fm
  B: "[~@2 ab4 ~ ab4 ~@3 ab4 ~@3 ab4 ~ ab4 ~, ~@13 ab2@10 ~@8 [db4,f4]@9 ~@23 [b3,eb4]@8 ~@24 [b3,eb4]@9 ~@6 [f3,ab3]@10 ~@8, ~@14 [eb3,ab3]@10 ~@5 db3@10 ~@22 b2@9 ~@23 ab2@10 ~@8 [db4,f4]@9 ~@8, ~@15 [b3,eb4]@9 ~@6 [f3,ab3]@10 ~@22 [eb3,ab3]@9 ~@23 [eb3,ab3]@10 ~@5 db3@10 ~@9]/4", // Db B Fm Ab5 Db B Fm Ab5
  C: "[~@2 ab4 ~ eb4 ~@3, ~@13 ab2@10 ~@6 eb2@10 ~@25, ~@7 [eb3,ab3]@5 ~@3 [bb2,eb3]@5 ~@12, ~@15 [b3,eb4]@9 ~@7 [g3,bb3]@9 ~@24]/2", // Ab5 Eb5 B Gm
  D: "[~@4 ab4 ~ ab4 ~, ~@29 ab2@10 ~@8 [db4,f4]@9 ~@8, ~@30 [eb3,ab3]@10 ~@5 db3@10 ~@9, ~@31 [b3,eb4]@9 ~@6 [f3,ab3]@10 ~@8]/2", // Db Ab5 B Fm
  E: "[~@4 bb4 ~ bb4 ~, ~@29 bb2@10 ~@8 [eb4,g4]@9 ~@8, ~@30 [f3,bb3]@10 ~@5 eb3@10 ~@9, ~@31 [db4,f4]@9 ~@6 [g3,bb3]@10 ~@8]/2", // Eb Bb5 Db Gm
  F: "[~@2 bb4 ~ bb4 ~@3 bb4 ~@3 bb4 ~ bb4 ~, ~@13 bb2@10 ~@8 [eb4,g4]@9 ~@23 [db4,f4]@8 ~@24 [db4,f4]@9 ~@6 [g3,bb3]@10 ~@8, ~@14 [f3,bb3]@10 ~@5 eb3@10 ~@22 db3@9 ~@23 bb2@10 ~@8 [eb4,g4]@9 ~@8, ~@15 [db4,f4]@9 ~@6 [g3,bb3]@10 ~@22 [f3,bb3]@9 ~@23 [f3,bb3]@10 ~@5 eb3@10 ~@9]/4", // Eb Db Gm Bb5 Eb Db Gm Bb5
  G: "[~@2 bb4 ~ f4 ~@3, ~@13 bb2@10 ~@6 f2@10 ~@25, ~@7 [f3,bb3]@5 ~@3 [c3,f3]@5 ~@12, ~@15 [db4,f4]@9 ~@7 [a3,c4]@9 ~@24]/2", // Bb5 F5 Db Am
  H: "[~@2 bb4 ~ [f4,bb4] ~@3, ~@13 bb2@10 ~@8 [eb4,g4]@9 ~@24, ~@14 [f3,bb3]@10 ~@5 eb3@10 ~@25, ~@15 [db4,f4]@9 ~@6 [g3,bb3]@10 ~@24]/2", // Bb5 Eb Bb5 Db Gm
  I: "[bb4 ~@3 bb4 ~ bb4 ~, ~@29 bb2@10 ~@8 [eb4,g4]@9 ~@8, ~@30 [f3,bb3]@10 ~@5 eb3@10 ~@9, ~@31 [db4,f4]@9 ~@6 [g3,bb3]@10 ~@8]/2", // Eb Bb5 Db Gm
  J: "[bb4@8 ~@23 f4 [f4,bb4]@8 ~@24, ~@29 bb2@10 ~@25, ~@15 [f3,bb3]@5 ~@12, ~@31 db4@9 ~@24]/2", // Bb5
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.7)

// other · electric guitar jazz · "Jazz Gtr."
const electric_guitar_jazz = note("<~@24 A B C D E ~@19 F ~ G ~@36>".pickRestart({
  A: "~@3 [gb4,b4]", B: "[db4,gb4] ~@3", C: "~@24 [ab3,ab4]@2 ~ [b3,ab4]@2 ~ [db4,ab4]@2",
  D: "db4@3 b3@9 ~@20, ab4@3 ~@5", E: "~@20 ab4 ~@3 gb4@4 eb4 ~@3",
  F: "gb4@2 ~@2 gb4 ~@3 gb4@3 ~ gb4@2 b4@2 ab4@2 b4@2 ab4@8 ~@4", G: "~@6 ab4 gb4 f4 eb5 db5@5 ~",
})).s("gm_electric_guitar_jazz").gain(0.38)

// bass · synth bass 1 · "Synth.Bas"
const bass_2 = note(`<
  ~@33 A B A B A B C D ~@4 A B A B A E C D F G F G F G H I F J F K F K H I F K H I F K H L M K F K F K H N@3
>`.pickRestart({
  A: "ab1@8 b1@8 db2@12 eb2@3 gb2", B: "ab2@4 gb2@2 eb2 d2 db2@8", C: "ab1 b1 db2@2", D: "eb2",
  E: "ab2@4 gb2@2 eb2 d2 ~ eb2 eb3 d3 db3@4", F: "bb1@8 db2@8 eb2@12 f2@3 ab2", G: "bb2@4 ab2@2 f2 e2 eb2@8",
  H: "bb1 db2 eb2@2", I: "f2", J: "bb2@4 ab2@2 f2 e2 ~ eb3@2 db3 eb3 db3 bb2@2",
  K: "bb2@4 ab2@2 f2 e2 eb2@4 eb2@2 ab1@2", L: "f1@3 f1!5 db2@4 c2@4", M: "bb2@4 ab2@4 f2@4 e2@4 eb2@12 f2@3 ab2",
  N: "[f2@23 ~]/3",
})).s("gm_synth_bass_1").gain(0.46)

// chords · lead 4 chiff · "Chffr.Lea" · E Gb5 Ebm Dbm Eb
const lead_4_chiff = note(`<
  ~@29
  [[ab4,b4,e5]@8 b4@3 ~ bb4@4, ~ [db5,gb5]]
  [[gb4,bb4,eb5]]
  [~ e5, [e4,ab4,db5]]
  [eb5@8 eb5 bb5 eb6@2 ~@4, [eb4,g4,bb4]]
  ~@54
>`).s("gm_lead_4_chiff").gain(0.11)

// other · brass section · "#Brass Sc"
const brass_section = note("<~@52 A ~@12 B@2 C D E F G H I J K L M N O N O N O P ~@2>".pickRestart({
  A: "[eb4,eb5]", B: "~@24 [bb3,bb4]@3 ~@5", C: "~@24 [bb3,bb4] ~@3 [bb3,bb4]@2 ~@2",
  D: "~@8 f4@2 ~@2 f5@3 ~@2 f5@3 ~ f4 ~@2 [f4,f5]@2 ~@2 [f4,f5]@2 ~@2, ~@8 f4 ~@7", // F
  E: "~@8 [bb4,bb5]@4 ~@11 [bb4,bb5] [bb4,bb5]@3 ~ [bb4,bb5]@3 ~", // Bb
  F: "~@8 [bb4,bb5]@3 ~@13 [bb4,bb5] ~ [bb4,bb5] ~ [bb4,bb5]@2 ~@2", // Bb
  G: "[bb4,bb5]@3 ~@5 [bb4,bb5]@3 ~@11 [bb4,bb5] ~ [bb4,bb5]@3 ~ bb4@2 ~@2", // Bb
  H: "~@12 [f4,f5]@2 ~@4 [f4,f5]@2 ~@2 [f4,f5] ~ [f4,f5]@2 ~@2 [f4,f5]@2 ~@2", // F
  I: "~@8 [f4,f5]@4 ~@10 [eb4,eb5]!2 [eb4,eb5]@3 ~ [eb4,eb5]@3 ~", // F Eb
  J: "~@8 [bb4,bb5]@3 ~@13 [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5]@3 ~", // Bb Eb
  K: "~@8 [f4,f5]@4 ~@10 [eb4,eb5]!2 [eb4,eb5]@2 ~@2 [bb3,bb4]@3 ~", // F Eb Bb
  L: "~@4 [f4,f5]@3 ~@3 [f4,f5]@2 ~@6 [f4,f5]@2 ~@2 [f4,f5] ~ [f4,f5]@3 ~ [f4,f5]@2 ~@2", // F
  M: "~@8 [f4,f5]@4 ~@12 [f4,f5] ~ [f4,f5] ~ [f4,f5]@2 ~@2", // F
  N: "~@8 [f4,f5]@3 ~@10 [eb4,eb5]!3 eb4@2 ~@2 [bb3,bb4]@2 ~@2, ~@24 eb5 ~@7", // F Eb Bb
  O: "~@8 [f4,f5]@4 ~@12 [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5]@2 ~@2", P: "[c4,f4,c5]",
})).s("gm_brass_section").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@32 A B@7 C B@3 D B@7 C B@7 E B@7 E B@7 F B@7 C ~@2>".pickRestart({
  A: "~@15 x", B: "x!2", C: "x", D: "x ~@7 x ~@6 x", E: "x ~@7 x ~@2 x ~@4", F: "x ~@7 x ~@4 x ~ x",
})).gain(0.8)

// drums · rim
const rim = s("rim").struct("<~@41 [~ x ~ x]!4 ~@7 [~ x] ~@34>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@32 A B@3 C B@3 ~@4 D B@3 C B@3 ~ B@7 E B@15 F B@7 ~@3>".pickRestart({
  A: "~@7 x", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~@3", D: "~@3 x", E: "~@4 x ~@9 x!2", F: "~@2 x ~@4 x",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct("<~@32 [~@5 x ~@2] ~@54>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@32 A ~@11 B ~@11 B ~@3 C ~@3 B ~@7 B ~@14>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@14 x!2", C: "~@3 x",
})).gain(0.64)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 A ~@11 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 C ~@10>".pickRestart({
  A: "~@13 x ~@2", B: "~@9 x ~@6", C: "~@9 x ~ x!2 ~@3",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@61 [~ x ~@6] ~@25>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@60 [~@3 x ~@4] ~@7 [~@3 x ~@4] ~@18>").gain(0.64)
// … 24 more lines

More by Michael Jackson