Strudelify
Stranger in Moscow cover art

HIStory - PAST, PRESENT AND FUTURE - BOOK I

Stranger in Moscow

Michael Jackson

KeyE♭ minorTempo130 bpm
0:00/0:00
// Stranger in Moscow — Jackson Michael
// 130.2 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 176 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130.2/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 · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~@6 A B C D A B C E A B C E A B C E A B C E A B F@6 ~@5 G@2 ~@32 H@2 ~@32 I@2 ~@34 J K L M N K L M N K L M O K L M N K
  L M N K L M N K L M O K ~@3
>`.pickRestart({
  A: "[g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4]@3 ~ [g3,eb4]@3 ~ [g3,eb4] ~", // Cm
  B: "[f3,db4,eb4] ~ [f3,db4,eb4] ~ [f3,db4,eb4] ~ [f3,db4,eb4]@3 ~ [f3,db4,eb4]@3 ~ [f3,db4,eb4] ~", // Db
  C: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [gb3,bb3,eb4]@3 ~ [gb3,bb3,eb4]@3 ~ [gb3,bb3,eb4] ~", // Ebm
  D: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,eb4] ~, ~@7 bb3", // Ab Ab5
  E: "[ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,bb3,eb4] ~", // Ab Absus2
  F: "[[gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4]@6 ~ [gb3,bb3,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4]@6 ~@2 [ab3,eb4]@2 ~@2 [g3,eb4]@2 ~@2 [g3,eb4]@2 ~@2 [g3,eb4]@2 ~@2 [g3,eb4]@6 ~@2 [g3,eb4]@6 ~@2 [g3,eb4]@2 ~@2 [f3,db4,eb4]@2 ~@2 [f3,db4,eb4]@2 ~@2 [f3,db4,eb4]@2 ~@2 [f3,db4,eb4]@6 ~@2 [f3,db4,eb4]@6 ~@2 [f3,db4,eb4]@2 ~@2 [gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@2 ~@2 [gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4]@6 ~@2 [gb3,bb3,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@2 ~@2 [ab3,c4,eb4]@6 ~@2 [ab3,c4,eb4]@6 ~@2 [ab3,bb3,eb4]@2 ~@3, ~@59 bb3@4 ~@129]/6", // Ebm Ab Ab5 Cm Db Ebm Ab Absus2
  G: "[~@32 a4@31 ~, ~@30 [db4,e4]@33 ~]/2", H: "[~@31 a4@31 ~@2, ~@29 db4@33 ~@2, ~@30 e4@31 ~@3]/2",
  I: "[~@31 a4@31 ~@2, ~@29 [db4,e4]@33 ~@2]/2", J: "~@15 [g3,eb4]",
  K: "~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4]@3 ~ [g3,eb4]@3 ~ [g3,eb4] ~ [f3,db4,eb4]", // Cm Db
  L: "~ [f3,db4,eb4] ~ [f3,db4,eb4] ~ [f3,db4,eb4]@3 ~ [f3,db4,eb4]@3 ~ [f3,db4,eb4] ~ [gb3,bb3,eb4]", // Db Ebm
  M: "~ [gb3,bb3,eb4] ~ [gb3,bb3,eb4] ~ [gb3,bb3,eb4]@3 ~ [gb3,bb3,eb4]@3 ~ [gb3,bb3,eb4] ~ [ab3,c4,eb4]", // Ebm Ab
  N: "~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,bb3,eb4] ~ [g3,eb4]", // Ab Absus2 Cm
  O: "~ [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]@3 ~ [ab3,c4,eb4]@3 ~ [ab3,eb4] ~ [g3,eb4], ~@13 bb3@2 ~", // Ab Ab5 Cm
})).s("gm_acoustic_guitar_steel").gain(0.18)

// chords · whistle
const whistle = note("<~@14 A@3 ~@133 B@3 ~@23>".pickRestart({
  A: "[~@28 bb6@45 ~@6 g6@13 ~@4, ~@14 g6 ~@33]/3", B: "[~@27 bb6@45 ~@5 g6@13 ~@6, ~@13 g6 ~@34]/3",
})).s("gm_whistle").gain(0.8).pan(0.3)

// chords · synth strings 1 · "strings"
const synth_strings_1 = note(`<
  ~@16 A@2 B@4 C@4 D@4 E@4 F@5 G@5 H@8 I@4 J@5 K@5 L M@4 N@6 O@8 P@8 Q@8 R@4 S@6 T@8 U@8 V@8 W@8 X@8 Y@8 Z@8 AA@8 ~
>`.pickRestart({
  A: "[bb2@59 ~@5]/2", B: "[g2@31 f2@33 gb2@32 ab2@31 ~, [bb2,eb3]]/4",
  C: "[g2@31 f2@33 gb2@32 ab2@31 ~, [bb2,eb3]@127 ~]/4", // Eb5
  D: "[g2@31 ~ f3@29 ~@3 gb2@32 [ab2,c3,eb3,ab3]@31 ~, bb2@127 ~, eb3@3 ~, ~@31 f2@33 ~@64, ~@31 db3@29 ~@3 [db3,gb3]@33 ~@32]/4", // Ab Gb5
  E: "[g2@31 f2@32 gb2@32 ~ ab2@31 [eb2,eb3], [bb2,eb3]@127 ~]/4", // Eb Eb5
  F: "[ab2@19 ~@12 a2 [a1,a2]@31 ~@8 ab2@12 ~@12 a2 [a1,a2]@31 ~@28 d2@4 g2, [b1,b2]@32 ~@31 ab2@8 ~@12 ab2@11 ~@33 gb2@20 gb2@12 ~, ~@19 ab2@12 [db2,db3]@31 ~ [eb2,eb3]@31 ~ [db2,db3]@30 ~@2 [db2,db3]@33, ~@27 e2@37 [b1,b2]@32 ~@32 [a1,a2]@31 ~, ~@91 e2@34 ~@35]/5", // A B Db Eb Db B A
  G: "[[g1,b1,g2,b2]@31 [a1,e2,a2]@128 ~]/5", // G A5
  H: "[g2@31 f2@32 gb2@32 c4@12 db4@9 c4@10 ~@2 g2@31 f2@32 ~@9 eb4@11 db4@12 c4@11 db4@9 ~@12 [bb2,eb3], [bb2,eb3]@127 ~ [bb2,eb3]@127 ~, ~@95 ab2@31 bb3@61 ~@4 gb2@32 ab2@31 ~@2]/8", // Eb5
  I: "[~@15 eb4@16 ~ f3@29 ~@2 [gb2,db3,gb4]@32 ~ c3@31 ~, bb2@127 ~, eb3@95 ~@33, g2@31 [f2,f4]@33 ~@31 [ab2,eb3,ab3]@31 ~@2, ~@31 db3@29 ~@2 gb3@33 ~@33]/4", // Gb5 F Ab5
  J: "[g2@31 f2@32 ~@7 eb4@13 db4@12 c4@12 ~@8 c4@12 ab2 ab2@19 ~@7 e2@5 [db2,a2,db3], [bb2,eb3]@127 ~@20 ab2@12 ~, ~@63 gb2@32 ab2@31 ~ [b1,eb2,b2,eb3]@32 ~]/5", // Gbm Eb5 B
  K: "[[a1,a2]@31 ab2@8 ab2@12 ~@12 a2 a2@31 [a1,db2,a2,db3]@31 ~ [g1,b1,g2,b2]@31 ~@2, ~@31 [b1,eb2,b2,eb3]@32 [a1,db2,db3]@30 ~@67, ~@51 ab2@11 ~@98, ~@59 e2@34 ~@67]/5", // A G B A
  L: "[a1,db2,a2,db3]@31 [b1,b2]", // A B
  M: "[[g1,g2]@29 ~@2 [b1,eb2,ab2,b2,eb3,ab3]@31 ~ [a1,db2,e2,a2,db3,e3]@31 ~ [b1,eb2,ab2,b2,eb3,ab3]@31 ~ [a1,db2,e2,a2,db3,e3]]/4", // G Abm A Abm A
  N: "[~@31 [a1,db2,e2,a2,db3,e3]@32 [g1,d2,b2,d3]@31 db3 [a1,a2]@97, ~@63 [b1,g2]@29 ~@100]/6", // A G A Em
  O: "[~@32 g2@30 f2@33 gb2@31 ~@13 db4@8 c4@11 ~@2 g2@30 f2@33 ~@8 eb4@12 db4@12 [ab2,c4], ~@31 bb2@127 ~ bb2@97, ~@16 eb3@63 ~ eb3@48, ~@126 c4@13 ~@19 bb3@61 ~@37, ~@127 ab2@31 ~@65 gb2@32 ~]/8", // Ab
  P: "[~@10 db4@9 ~@28 eb4@15 ~ [db3,f3]@29 ~@3 [gb2,gb4]@32 [ab2,c3,eb3,ab3]@31 ~ g2@31 f2@33 ~@7 eb4@13 db4@12 [ab2,c4], ~@31 bb2@127 ~ [bb2,eb3]@97, ~@31 eb3@96 ~@129, ~@31 g2@31 f2@33 ~@128 gb2@32 ~, ~@63 f4@31 [db3,gb3]@33 ~@129]/8", // Db Gb Ab Eb5 Gb5
  Q: "[~@19 c4@12 ab2@19 ~@12 a2 [a1,db2,a2]@31 ~@8 ab2@13 ~@12 [a1,db2,a2]@31 ~ [a1,db2,a2,db3]@31 ~ [g1,b1,g2,b2]@31 ~ [a1,db2,a2,db3]@31 ~ [g1,b1,g2,b2], ~@31 [b1,eb2,b2,eb3]@32 ~@32 [b1,eb2,b2,eb3]@32 ~@129, ~@50 ab2@12 db3@31 ~ ab2@8 ~@13 ab2@11 db3@30 ~@100, ~@58 e2@39 ~@25 e2@34 ~@100]/8", // A G A G B
  R: "[~@31 [b1,eb2,ab2,b2,eb3,ab3]@31 ~ [a1,db2,a2,db3,e3]@31 ~ [b1,eb2,ab2,b2,eb3]@31 ~ [a1,e2,a2,e3], ~@31 e2@15 ~ ab3@15 ~ [db2,db3]]/4", // Abm A Abm A5 Db
  S: "[~@31 [e2,e3]@31 ~ [g1,d2,b2,d3]@31 db3 [a1,a2]@97, ~@30 [a1,db2,a2,db3]@32 ~ [b1,g2]@29 ~@100]/6", // E G A Em
  T: "[~@31 ab2@31 gb2@32 g2@32 ~@12 d4@9 db4@11 ~ ab2@31 gb2@32 ~@9 e4@12 d4@11 ~ a2, ~@31 [b2,e3]@127 ~ [b2,e3]@97, ~@126 db4@13 ~@19 b3@61 ~@35 db4@2, ~@127 a2@31 ~@64 g2@32 ~@2]/8", // E5
  U: "[~@10 d4@9 ~@27 e4@16 ~ gb3@29 ~@3 g4@31 ~ [a2,db3,e3]@31 ~ ab2@31 gb2@32 ~@7 e4@14 d4@11 [a2,db4]@2, ~@31 b2@127 ~ [b2,e3]@97, ~@31 e3@96 ~@129, ~@31 ab2@31 gb2@31 g3@33 a3@31 ~@99, ~@62 d3 gb4@31 [g2,d3]@33 ~@95 g2@32 ~@2]/8", // A E5 G5
  V: "[~@18 db4@12 ~ ab2@31 gb2@32 g2@32 db4@12 d4@9 db4@10 ~@2 ab2@31 gb2@32 ~@9 e4@11 d4@12 [a2,db4]@2, ~@31 [b2,e3]@127 ~ [b2,e3]@97, ~@126 a2@31 b3@61 ~@4 g2@32 ~@2]/8", // A E5
  W: "[~@9 d4@9 ~@12 [b2,e3] ~@15 e4@16 ~ gb3@29 ~@2 [g2,g4]@32 ~ db3@31 ~ ab2@31 gb2@32 ~@7 e4@13 d4@12 [a2,db4]@2, ~@31 b2@127 ~ [b2,e3]@97, ~@31 e3@95 ~@130, ~@31 ab2@31 [gb2,gb4]@33 ~@31 [a2,e3,a3]@31 ~@65 g2@32 ~@2, ~@62 d3@29 ~@2 [d3,g3]@33 ~@130]/8", // E5 G A E5 Gb A5 G5
  X: "[~@18 db4@12 ~ g2@31 f2@32 gb2@31 ~@13 db4@8 c4@11 ~@2 g2@31 f2@32 ~@8 eb4@12 db4@12 [ab2,c4]@2, ~@30 bb2@127 ~ bb2@98, ~@31 eb3@126 ~@2 eb3@97, ~@125 c4@13 ~@19 bb3@61 ~@38, ~@126 ab2@31 ~@65 gb2@32 ~@2]/8", // Ab
  Y: "[~@9 db4@9 ~@12 eb3 ~@15 eb4@16 [f2,f4]@31 ~ [gb2,gb4]@32 [ab2,c3,eb3,ab3]@31 ~@2 g2@30 f2@33 ~@7 eb4@13 db4@12 [ab2,c4]@2, ~@30 bb2@127 ~ bb2@98, ~@31 eb3@95 ~@33 eb3@97, ~@31 g2@31 [db3,f3]@29 ~@2 [db3,gb3]@33 ~@96 gb2@32 ~@2]/8", // F Gb Ab Db Gb5
  Z: "[~@18 c4@12 ~ g2@30 f2@33 gb2@31 ~@13 db4@8 c4@11 ~@2 g2@30 f2@33 ~@8 eb4@12 db4@12 [ab2,c4]@2, ~@30 bb2@127 ~ bb2@98, ~@31 eb3@126 ~@2 eb3@97, ~@125 c4@13 ~@19 bb3@61 ~@38, ~@126 ab2@31 ~@65 gb2@32 ~@2]/8", // Ab
  AA: "[~@9 db4@9 ~@28 eb4@15 ~ [db3,f3]@29 ~@3 [gb2,gb4]@32 [ab2,c3,eb3,ab3]@31 ~ [bb2,eb3]@98, ~@30 bb2@127 ~@99, ~@15 eb3@48 ~@65, ~@30 g2@31 f2@33 ~@64 g2@31 ~@67, ~@62 f4@31 [db3,gb3]@33 ~@130]/8", // Db Gb Ab Eb5 Gb5
})).s("gm_synth_strings_1").gain(0.2).pan(0.4)

// chords · synth strings 1 · "strings" · soft notes
const synth_strings_1_soft = note(`<
  ~@9 A@8 B ~@21 C@5 ~@2 D ~@4 E@2 ~ F@3 ~@2 G ~@13 H@5 ~@2 I ~@4 J@2 ~ F@3 ~@2 G ~@13 H@5 ~@2 K ~@4 L@2 ~ M@2 ~@3 N ~@2
  K ~@4 L@2 ~ M@2 ~@3 N ~@2 O ~@4 P@2 ~ Q@2 ~@3 R ~@2 S ~@4 P@2 ~ Q@2 ~@4
>`.pickRestart({
  A: "[~@96 gb2@32 ab2@31 ~@64 gb2@33, ~@31 eb3@123 ~@5 eb3@97, ~@32 bb2@63 bb2@62 ~@3 bb2@64 ~@32, ~@63 ab2@32 ~@96 ab2@32 ~@33, ~@64 db3@63 ~ c3@30 ~@34 db3@50 ~@14]/8",
  B: "[ab2,c3]@31 bb2", C: "[~@31 [db3,e3]@128 ~]/5", D: "~@7 eb4@12 db4@12 ~", E: "[~@19 c4@11 bb3@17 ~@17]/2",
  F: "[~@31 eb4@34 ~@31]/3", G: "~@11 db4@9 ~@12", H: "[~@31 [e2,db3,e3]@128 ~]/5", I: "~@3 eb4@6 db4@6 ~",
  J: "[~@18 c4@12 bb3@17 ~@17]/2", K: "~@3 e4@6 d4@6 ~", L: "[~@18 db4@11 b3@17 ~@18]/2", M: "[~@15 e4@17]/2",
  N: "~@10 d4@9 ~@13", O: "~@5 eb4@13 db4@12 ~@2", P: "[~@17 c4@12 bb3@17 ~@18]/2", Q: "[~@15 eb4@17]/2",
  R: "~@10 db4@9 ~@13", S: "~@5 eb4@12 db4@12 ~@3",
})).s("gm_synth_strings_1").gain(0.13).pan(0.4)

// chords · epiano1 · "chord"
const epiano1 = note(`<
  ~@18 A B C D A B C D E F G@6 ~@9 H@8 I J@8 ~@17 H@8 I J@8 ~@17 K@8 L M@8 N@8 O@8 P@8 Q@8 P@8 R@4 ~@4
>`.pickRestart({
  A: "[eb3,g3,bb3]", B: "[db3,f3,bb3]", C: "[eb3,gb3,bb3]", D: "[eb3,ab3,c4]", E: "[g3,bb3,eb4]@3 ~",
  F: "[ab3,db4,f4]@7 ~", // Db
  G: "[[db4,gb4]@24 ~@7 [c4,eb4,ab4]@28 ~@4 [eb3,g3,bb3]@32 [db3,f3,bb3]@32 ~@12 eb4@8 db4@4 ~@4 c4@4 ~@12 db4@8 c4@12 ~, bb3@28 ~@99 [eb3,gb3,bb3]@32 [eb3,ab3]@32 ~, ~@159 c4@20 ~@13]/6", // Gb5 Ab Eb Bbm Ebm Ab5
  H: "[~@31 [eb3,g3,bb3]@32 [db3,f3,bb3]@32 ~@8 [eb4,eb5]@12 [db4,db5]@12 c5@12 [db4,db5]@8 [c4,c5]@12 [eb3,g3,bb3]@32 [db3,f3,bb3]@32 ~@8 [eb4,eb5]@12 [db4,db5]@12 [eb3,ab3,c4,c5], ~@95 [eb3,gb3,bb3]@32 [eb3,ab3]@32 ~@64 [eb3,gb3,bb3]@32 ~, ~@127 c4@20 ~@12 bb4@64 ~@33]/8", // Eb Bbm Eb Db C Eb Bbm Eb …
  I: "~@11 [db4,db5]@8 [c4,c5]@12 [g3,bb3,eb4,bb4]", // Db C Eb
  J: "[~@15 [eb4,eb5]@16 [f4,f5]@32 [gb4,gb5]@32 [c4,ab4,ab5]@28 ~@4 [eb3,g3,bb3]@32 [db3,f3,bb3]@32 ~@8 eb4@4 eb4@8 ~@8 c4@4 c5@12 [db4,db5]@8 [eb4,eb5]@8 ~@5, ~@31 [ab3,db4]@28 ~@4 bb3@28 ~@100 [eb3,gb3,bb3]@32 [eb3,ab3,c4]@32 ~, ~@63 db4@24 ~@8 eb4@32 ~@72 eb5@12 [db4,db5]@12 ~@33]/8", // Eb F Gb Fm Eb Bbm Db Eb …
  K: "[~@15 [e3,ab3,b3]@16 [d3,gb3,b3]@16 ~@4 [e4,e5]@6 [d4,d5]@6 db5@6 [d4,d5]@4 [db4,db5]@6 [e3,ab3,b3]@16 [d3,gb3,b3]@16 ~@4 [e4,e5]@6 [d4,d5]@6 [e3,a3,db4,db5], ~@47 [e3,g3,b3]@16 [e3,a3]@16 ~@32 [e3,g3,b3]@16 ~, ~@63 db4@10 ~@6 b4@32 ~@17]/8", // E Bm E D Db E Bm E …
  L: "~@5 [d4,d5]@4 [db4,db5]@6 [ab3,b3,e4,b4]", // D Db E
  M: "[~@7 [e4,e5]@8 [gb4,gb5]@16 [g4,g5]@16 [db4,a4,a5]@14 ~@2 [e3,ab3,b3]@16 [d3,gb3,b3]@16 ~@4 e4@2 e4@4 ~@4 db4@2 db5@6 [d4,d5]@4 [e4,e5]@4 ~@2 [e3,ab3,b3], ~@15 [a3,d4]@14 ~@2 b3@14 ~@50 [e3,g3,b3]@16 [e3,a3,db4]@16 ~, ~@31 d4@12 ~@4 e4@16 ~@36 e5@6 [d4,d5]@6 ~@17]/8", // E Gb G Gbm E Bm D E …
  N: "[~@15 [d3,gb3,b3]@16 ~@4 [e4,e5]@6 [d4,d5]@6 db5@6 [d4,d5]@4 [db4,db5]@6 [e3,ab3,b3]@16 [d3,gb3,b3]@16 ~@4 [e4,e5]@6 [d4,d5]@6 db5@6 [d4,d5]@4 [db4,db5]@6 [ab3,b3,e4,b4], ~@31 [e3,g3,b3]@16 [e3,a3]@16 ~@32 [e3,g3,b3]@16 [e3,a3]@16 ~, ~@47 db4@10 ~@6 b4@32 ~@16 db4@10 ~@7]/8", // Bm E D Db E Bm E D …
  O: "[~@7 [e4,e5]@8 [gb4,gb5]@16 [g4,g5]@16 [db4,a4,a5]@14 ~@2 [e3,ab3,b3]@16 [d3,gb3,b3]@16 ~@4 e4@2 e4@4 ~@4 db4@2 db5@6 [d4,d5]@4 [e4,e5]@4 ~@2 [eb3,g3,bb3], ~@15 [a3,d4]@14 ~@2 b3@14 ~@50 [e3,g3,b3]@16 [e3,a3,db4]@16 ~, ~@31 d4@12 ~@4 e4@16 ~@36 e5@6 [d4,d5]@6 ~@17]/8", // E Gb G Gbm E Bm D E …
  P: "[~@15 [db3,f3,bb3]@16 ~@4 [eb4,eb5]@6 [db4,db5]@6 c5@6 [db4,db5]@4 [c4,c5]@6 [eb3,g3,bb3]@16 [db3,f3,bb3]@16 ~@4 [eb4,eb5]@6 [db4,db5]@6 c5@6 [db4,db5]@4 [c4,c5]@6 [g3,bb3,eb4,bb4], ~@31 [eb3,gb3,bb3]@16 [eb3,ab3]@16 ~@32 [eb3,gb3,bb3]@16 [eb3,ab3]@16 ~, ~@47 c4@10 ~@6 bb4@32 ~@16 c4@10 ~@7]/8", // Bbm Eb Db C Eb Bbm Eb Db …
  Q: "[~@7 [eb4,eb5]@8 [f4,f5]@16 [gb4,gb5]@16 [c4,ab4,ab5]@14 ~@2 [eb3,g3,bb3]@16 [db3,f3,bb3]@16 ~@4 eb4@2 eb4@4 ~@4 c4@2 c5@6 [db4,db5]@4 [eb4,eb5]@4 ~@2 [eb3,g3,bb3], ~@15 [ab3,db4]@14 ~@2 bb3@14 ~@50 [eb3,gb3,bb3]@16 [eb3,ab3,c4]@16 ~, ~@31 db4@12 ~@4 eb4@16 ~@36 eb5@6 [db4,db5]@6 ~@17]/8", // Eb F Gb Fm Eb Bbm Db Eb …
  R: "[~@7 [eb4,eb5]@8 [f4,f5]@16 [gb4,gb5]@16 [c4,ab4,ab5]@14 ~@3, ~@15 [ab3,db4]@14 ~@2 bb3@14 ~@19, ~@31 db4@12 ~@4 eb4@16 ~]/4", // Eb F Gb Fm Db5
})).s("gm_epiano1").gain(0.32)

// chords · epiano2 · "elec piano"
const epiano2 = note("<~@33 A@3 B@8 ~@15 A@3 C@4 D@4 E@8 ~@15 A@3 C@4 F@4 G@8 ~@64>".pickRestart({
  A: "[~@31 eb4@16 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@12 ~@9]/3",
  B: "[~@7 eb4@8 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@16 ~@4 db4@16 gb4@4 db4@4 ~@4 b3@12 ~@4 b3@16 ~@4 [e3,a3,db4,e4,gb4,a4]@30 ~@3 [e3,a3,e4,gb4,a4]@12 ~@4 [e3,a3,e4,gb4,a4]@2 ~@6 [e3,a3,e4,gb4,a4]@72, ~@159 db4@14 ~@2 db4@2 ~@6 db4@71 ~@2]/8", // Gbm7
  C: "[~@7 eb4@8 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@16 ~@4 db4@13 ~@3 gb4@4 db4@3 ~@5 b3@12 ~@4 b3@20 ~]/4",
  D: "[~@7 db4@3 ~@6 gb4@3 db4@4 ~@4 b3@12 ~@4 b3@11 ~@9 eb4@16 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@12 ~@9]/4",
  E: "[~@7 eb4@8 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@16 ~@4 db4@15 ~ gb4@4 db4@4 ~@5 b3@13 ~@2 b3@17 ~@3 [e3,a3,db4,gb4]@29 ~@4 [e3,a3]@12 ~@3 [e3,a3,db4,e4,gb4,a4]@2 ~@7 a3@72, ~@126 [e4,a4]@30 ~@3 [db4,e4,gb4,a4]@14 ~@10 [e3,db4,e4,gb4,a4]@73]/8", // Gbm7 A5 Gbm7 A5 Gbm7
  F: "[~@7 db4@3 ~@5 gb4@3 ~ db4@4 ~@3 b3@12 ~@4 b3@11 ~@10 eb4@16 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@12 ~@9]/4",
  G: "[~@7 eb4@8 ab4@4 eb4@4 ~@4 db4@12 ~@4 db4@16 ~@4 db4@15 gb4@5 db4@4 ~@4 b3@13 ~@3 b3@17 ~@2 [e3,a3,db4,e4,gb4,a4]@30 ~@3 [e3,a3,e4,gb4,a4]@12 ~@4 [e3,a3,db4,e4,gb4,a4]@2 ~@6 [e3,a3,e4,gb4,a4]@73, ~@158 db4@14 ~@10 db4@71 ~@3]/8", // Gbm7
})).s("gm_epiano2").gain(0.36)

// chords · piano
const piano = note("<~@78 A@8 B@8 ~@50 C@8 D@8 C@8 D@8>".pickRestart({
  A: "[~@7 db6@2 ~@2 [g5,eb6]@12 db6@2 ~@2 eb6@12 db6@2 ~@2 eb6@12 db6@2 ~@2 [gb5,eb6]@30 ~@6 db6@2 ~@2 c6@2 ~@6 eb5@24 ~@4 db6@2 ~@2 eb6@8 eb6@4 g6@4 ab6@4 g6@4 eb6@18 ~@2 db6@2 ~@2 eb6@12 db6@2 ~@2 eb6@16 ~@4 db6@2 ~@2 c6@2 ~@6 eb5@21, ~@27 ab5@30 ~@34 ab5@12 ab5@32 ~@4 g5@14 ~@2 ab5@30 ~@2 gb5@30 ~@2 ab5@12 ab5@22 ~@3]/8", // Cm Ebm
  B: "[~@7 db6@2 ~@2 g5@12 db6@2 ~@2 eb6@12 db6@2 ~@2 eb6@12 db6@2 ~@2 eb6@12 db6@2 ~@2 eb6@16 ~@4 db6@2 ~@2 c6@2 ~@6 eb5@22 ~@18 eb6@4 g6@4 ab6@4 g6@4 eb6@18 ~@2 db6@2 ~@2 eb6@12 db6@2 ~@2 eb6@16 ~@4 db6@2 ~@2 c6@2 ~@6 eb5@14 ~@7, ~@11 eb6@10 ~@6 ab5@30 ~@2 gb5@30 ~@2 ab5@12 ab5@32 ~@4 g5@14 ~@2 ab5@30 ~@2 gb5@28 ~@4 ab5@12 ab5@20 ~@5]/8",
  C: "[~@3 db6 ~ [g5,eb6]@6 db6 ~ eb6@6 db6 ~ eb6@6 db6 ~ [gb5,eb6]@15 ~@3 db6 ~ c6 ~@3 eb5@12 ~@2 db6 ~ eb6@4 eb6@2 g6@2 ab6@2 g6@2 eb6@9 ~ db6 ~ eb6@6 db6 ~ eb6@8 ~@2 db6 ~ c6 ~@3 eb5@11, ~@13 ab5@15 ~@17 ab5@6 ab5@16 ~@2 g5@7 ~ ab5@15 ~ gb5@15 ~ ab5@6 ab5@11 ~@2]/8", // Cm Ebm
  D: "[~@3 db6 ~ g5@6 db6 ~ eb6@6 db6 ~ eb6@6 db6 ~ eb6@6 db6 ~ eb6@8 ~@2 db6 ~ c6 ~@3 eb5@11 ~@9 eb6@2 g6@2 ab6@2 g6@2 eb6@9 ~ db6 ~ eb6@6 db6 ~ eb6@8 ~@2 db6 ~ c6 ~@3 eb5@7 ~@4, ~@5 eb6@5 ~@3 ab5@15 ~ gb5@15 ~ ab5@6 ab5@16 ~@2 g5@7 ~ ab5@15 ~ gb5@14 ~@2 ab5@6 ab5@10 ~@3]/8",
})).s("gm_piano").gain(0.35)

// other · bassoon · "little trick..."
const bassoon = note("<~@86 A B@7 ~@58 C D@7 ~ E@7 ~@8>".pickRestart({
  A: "~@22 gb4@3 ab4@3 db5@2 ~@2", B: "[~ eb5@4 ~ gb5@3 ~@3 ab5@4 ~@3 ab5@9 eb5@194 ~@2]/7",
  C: "~@22 gb4@3 ab4@2 db5@2 ~@3", D: "[eb5@4 ~ gb5@3 ~@3 ab5@4 ~@3 ab5@9 eb5@194 ~@3]/7",
  E: "[~@26 gb4@2 ~@2 db5@4 ~ eb5@2 ~@4 gb5@3 ~@2 ab5@15 gb5@2 f5@2 eb5@155 ~@4, ~@29 ab4@2 ~@193]/7",
})).s("gm_bassoon").gain(0.17)

// bass · fretless bass · "'nother trick..."
const bass = note("<~@85 A@3 ~@34 B@4 ~@50>".pickRestart({
  A: "[~@3 c3@2 ~ c3@4 ~ ab2@4 eb2@51 ~@30, ~@5 db3@2 ~@89]/3",
  B: "[~@26 g2@2 a2@7 b2@2 a2@2 g2@4 e2@3 d2@3 ~ e2@61 ~@17]/4",
})).s("gm_fretless_bass").gain(0.67)

// bass · slap bass 2 · "a little punch..."
const bass_2 = note("<~@88 A@3 ~@63 B@3 ~ C@5 ~@13>".pickRestart({
  A: "[~@23 [bb1,bb2]@4 [c2,c3]@4 [c2,c3]@12 [db2,db3]@4 [c2,c3]@8 [bb1,bb2]@4 [ab1,ab2]@4 bb2@28 ~@5, ~@63 bb1@20 ~@13]/3", // Bb C Db C Bb Ab
  B: "[~@11 [bb1,bb2]@2 [c2,c3]@2 [c2,c3]@6 [db2,db3]@2 [c2,c3]@4 [bb1,bb2]@2 [ab1,ab2]@2 bb2@14 ~@3, ~@31 bb1@10 ~@7]/3", // Bb C Db C Bb Ab
  C: "[~@11 [bb1,bb2]@2 [c2,c3]@2 [c2,c3]@6 [db2,db3]@2 [c2,c3]@4 [bb1,bb2]@2 [ab1,ab2]@2 ~@6 eb2 ~ [eb2,eb3]@32 ~@9, ~@31 bb2@14 ~@35, ~@31 bb1@10 ~@39, ~@74 eb3 ~@85]/5", // Bb C Db C Bb Ab Eb
})).s("gm_slap_bass_2").gain(0.55)

// drums · kick
const kick = s("bd").struct("<x!28 [x ~@30 x] [~@31 x]!81 [~@15 x]!65 ~>").gain(0.8)

// drums · clap
const clap = s("cp").struct("<~@34 A@6 ~@20 A@14 ~@20 A@14 ~@12 B@23 C ~@32>".pickRestart({
  A: "~@15 x ~@16", B: "~@7 x ~@8", C: "~@13 x ~@18",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@43 [~@19 x ~@12] ~@33 [~@19 x ~@12] ~@33 [~@7 x ~@8] ~@64>").gain(0.8)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@43 A ~@3 A ~@3 B ~@3 A ~@3 A ~@17 A ~@3 A ~@3 A ~@3 A ~@3 A ~@17 C ~@3 D ~@3 D ~@3 D ~@3 C ~@3 C ~@3 C ~@3 C ~@3 C
  ~@32
>`.pickRestart({
  A: "~@7 x ~@11 x ~@12", B: "~@7 x ~@12 x ~@11", C: "~@3 x ~@5 x ~@6", D: "~@7 x ~@10 x ~@13",
})).gain(2.56)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A@29 B@11 ~@3 C B@30 ~@3 C B@30 ~@3 D@65>".pickRestart({
  A: "~ x ~@6", B: "~@3 x ~@28", C: "~@7 x ~@24", D: "~ x ~@14",
})).gain(4.06)

// drums · shaker
const shaker = s("sh").struct("<A@29 B@11 ~@3 C B@30 ~@3 C B@30 ~@3 D E@63 ~>".pickRestart({
  A: "~ x ~ x", B: "~@7 x ~@15 x ~@8", C: "~@11 x ~@20", D: "~@3 x ~@12", E: "~@3 x ~@7 x ~@4",
})).gain(0.8)

// drums · guiro
const guiro = s("guiro:0").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C D C D C D C D C D C ~@3 E D C D C D C D C D C D C D C D C
  D C D C D C D C D C D C D C ~@3 E D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C ~@3 F@2 G F G F G F G F
  G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F G F ~
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "~@3 x ~@4", C: "~@11 x ~@20", D: "~@11 x ~@7 x ~@12", E: "~@15 x ~@16", F: "~@5 x ~@3 x ~@6",
  G: "~@5 x ~@10",
})).gain(16.9)

stack(
  acoustic_guitar_steel, whistle, synth_strings_1, synth_strings_1_soft, epiano1, epiano2, piano, bassoon, bass, bass_2,
  kick, clap, hihat, congas, cabasa, shaker, guiro
)

More by Michael Jackson