Strudelify
Man In The Mirror cover art

1988 · Michael Jackson's This Is It

Man In The Mirror

Michael Jackson

KeyG majorTempo112 bpm
0:00/0:00
// Man In The Mirror — Michael Jackson
// 112 bpm, 4/4, key G major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 5 "tk5" acoustic guitar steel (copy of ch 3 "tk3" epiano1)
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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.

// bass · synth bass 2 · "tk2"
const bass = note(`<
  ~@28 A B@2 C@2 D@2 E F G@2 H@2 I@2 J K L@2 M N O P Q R S T U V W@2 X Y Z@2 AA AB AC@2 AD AE AF@2 AG AH AI@2 AJ AK AL@2
  AM AN AO AP AQ@2 AR AS AT AU AV AW AX@2 AY@2 AZ@2 BA@4 BB@3 BC BD@6 BE@4 BF@2 BG@2 BH@2 BF@2 BI@2 BJ@2 BK@2 BL@3 ~
>`.pickRestart({
  A: "~@10 d2@4 a1 d1", B: "[g1@6 ~@2 b1@6 c2@8 ~@2 d2@3 ~ d2@4]/2", C: "[g1@6 b1@8 c2@7 ~ c2@5 ~ d1@4]/2",
  D: "[g1@6 ~@2 b1@6 c2@7 ~ c2@2 c#2@5 ~ c#2@2]/2", E: "d2@2 d1 ~ d1@12", F: "~@2 d1 ~ d1@7 ~ d1 e1 g1 a1",
  G: "[g1@4 g2@2 f#2@7 ~ e2@4 b1 d2 e2@2 d2@6 g1@4]/2", H: "[c2@5 ~ c2@6 ~ a1 c1@4 d1@4 e1@4 f#1@6, ~@6 g1 ~@9]/2",
  I: "[g1@4 g2@2 f#2@6 d2@2 e2@4 d2 b1 e2@2 d2@6 g1@2 a1 d2]/2", J: "c2@2 g1 c1@4 g1",
  K: "c2 ~ c2@2 g1 a1 c2@4 b1@2 a1@2 d2@2", L: "[g1@4 g2@2 f#2@6 d2 d#2 e2@4 b1 g1 e1@2 d1@6 g1@4]/2",
  M: "c2@6 g1 a1 c2@6 g1 a1", N: "c2 ~ c2@2 a1@2 g1@2 c1@2 a1@2 c2@2 d2@2", O: "a1@5 ~ a1@7 ~ a1 a#1",
  P: "b1@5 ~ b1@7 ~ b1@2", Q: "c2@6 c2@3 ~ c2 e2 c2@2 b1 a1", R: "b1@5 ~ b1@2 a1 g1 e1 a0 b0@2 e1@2",
  S: "a1@5 ~ a1@4 e1@2 g1@2 a1@2", T: "b1@5 ~ b1@3 ~ b1@2 a1@2 b0@2", U: "c2@5 ~ c2@7 ~ c2 ~",
  V: "d2@3 ~ a2@6 g2 e2 d2 e2 g2 a2", W: "[g1@5 ~ g1@2 b1@2 b1@4 c2@5 ~ c2 ~ c2@5 ~ d2 ~ d2 e2]/2",
  X: "g1@3 ~ g2@4 b1@2 b1@4 c2@2", Y: "~ c2 b1@2 a1@2 g1 ~ d1@2 d2@2 a1 g1 d1@2",
  Z: "[g1@5 ~ a1@2 b1@2 b1@3 ~ c2@8 b1 c2 c#2@2 c#2@2 ~@2 c#2@2]/2", AA: "d2 a1 d1 ~ d1@3 ~ d1 ~ d1@3 ~ d1@2",
  AB: "~@2 d1 ~ d1@4 d1 ~ d1 ~ d1 ~ d1!2", AC: "[g1@3 ~@3 b1@8 c2@7 ~ c2@2 d2 a1 d1@2 e1@2 a1@2]/2",
  AD: "g1@4 g2!2 g1 a1 b1@2 b1@4 c2@2", AE: "~@2 c2!2 a2@2 g2@2 d2@2 e2 d2 g2 e2 d2 b1",
  AF: "[g1@4 a1@2 a#1@2 b1@2 b1@4 c2@5 ~ c2@2 ~ c2 c#2@2 c#2@2 ~@2 c#2@2]/2", AG: "d2!2 b1 a1 d1@3 d1 d1@2 d1@3 ~ d1 ~",
  AH: "d1@2 d1@2 c1@2 d1 ~ d1@2 d1@2 ~@4",
  AI: "[[g#1,g#2]@5 ~ [g#1,g#2]@2 c1 ~ c1@2 ~@2 c#1@5 ~@3 c#1@2 d#1@2 [f1,f2]@2 [g#1,g#2]@2 [a#1,a#2]@2]/2", // G# F G# A#
  AJ: "[g#1,g#2]@2 ~ [g#1,g#2] [c2,c3] [c2,c3]@2 [c#2,c#3]", // G# C C#
  AK: "~ [c#2,c#3] [c2,c3]@2 [a#1,a#2]@2 [g#1,g#2]@2 d#1@2 [f1,f2] ~ [d#2,d#3] [f2,f3] [g#2,g#3]@2", // C# C A# G# F D# F G#
  AL: "[[g#1,g#2]@5 ~ [g#1,g#2]@2 [c2,c3]@2 [c2,c3]@4 [c#2,c#3]@7 ~ [c#2,c#3]@2 [d2,d3]@2 [d2,d3]@3 ~ [d2,d3]@2]/2", // G# C C# D
  AM: "[d#2,d#3]@2 d#1 ~ d#1@3 ~@4 [d#2,d#3]@2 [d#2,d#3] d#1@2, ~@8 d#1@5 ~@3", // D#
  AN: "d#1@3 ~ d#1@2 [d#2,d#3]@2 d#1@2 ~ d#1@2 [d#2,d#3] d#1 ~", // D#
  AO: "d#1@4 [d#2,d#3]@2 d#1 ~ d#1@2 ~ d#1@2 [d#2,d#3] d#1@2", // D#
  AP: "[d#2,d#3]@2 ~@6 [f#2,f#3] ~ [f2,f3]@2 [d#2,d#3]@2 [c#2,c#3] [d#2,d#3]", // D# F# F D# C# D#
  AQ: "[[g#1,g#2]@3 ~ [g#1,g#2]@2 [a#1,a#2]@2 [c2,c3]@2 [c2,c3]@4 [c#2,c#3]@4 [c2,c3]@2 [a#1,a#2]@2 [f2,f3]@2 [d#2,d#3]@2 [a#1,a#2]@2 d#1@2 [f1,f2] d#1]/2", // G# A# C C# C A# F D# …
  AR: "[g#1,g#2]@4 [g#2,g#3]@2 [a#1,a#2]@2 [c2,c3] ~ [c2,c3]@3 ~ [c#2,c#3]@2", // G# A# C C#
  AS: "~@2 [c3,c4]@2 [a#2,a#3]@2 [g#2,g#3] [f2,f3] [d#2,d#3]@2 [f2,f3] [g#2,g#3] [f2,f3] [d#2,d#3] [c#2,c#3] [d#2,d#3]", // C A# G# F D# F G# F …
  AT: "[g#1,g#2]@5 ~ [a#1,a#2]@2 [c2,c3]@2 c1@4 c#1@2", AU: "~@2 c#1@3 ~ c#1@2 d1 ~ d1@3 ~ d1 ~",
  AV: "[d#3,d#4]@2 [c#3,c#4] [d#3,d#4] [g#2,g#3] [a#2,a#3] [c#3,c#4] [d#3,d#4] [d#2,d#3]@2 [d#2,d#3]@3 ~@3", // D# C# D# G# A# C# D#
  AW: "[d#2,d#3]@2 [d#2,d#3]@2 [f2,f3] [d#2,d#3]!2 ~ [d#2,d#3] ~ [c3,c4]@2 [a#2,a#3] [g#2,g#3] [f2,f3] [d#2,d#3]", // D# F D# C A# G# F D#
  AX: "[g#1@2 g#2 g2@2 d#2 g1 f1@3 f2 d#2@2 c2 a#1 d#1]/2", AY: "[c#1@12 g#1 a#1 c#1@8 ~@4 f2@2 d#2 f2 g#2@2]/2",
  AZ: "[g#1@4 g#2@2 g2@5 ~ g1@2 f1@6 f2@2 d#2@4 c2@2 a#1 g#1 d#1@2]/2", BA: "[c#1@13 ~ f2 d#2, ~@56 d#2 ~@3 c#2 ~@3]/4",
  BB: "[~@20 g#1 ~@27, c#1@11 ~]/3", BC: "~ a#2@2 f2@2 c2@2 g#1", BD: "[c#1@41 a#1@2 f1@2 c1@3]/6",
  BE: "[c#1@55 ~ c3@3 g#2 a#2 g#2 f2 d#2]/4", BF: "[c#1@9 a#1@2 f1@2 c1@3]/2", BG: "[c#1@9 ~@3 f2@2 a#2@2]/2",
  BH: "[c#1@24 g#2@3 f2 g2 f2 d#2 c#2]/2", BI: "[c#1@26 c#2 d#2 f2@2 d#2 c#2]/2",
  BJ: "[c#1@26 ~ g2 g#2@2 g2 f2, ~@13 f2 ~@2]/2", BK: "[c#1@5 c3@2 a#2@2 g#2@2 g2@2 f2 c2 g#1]/2", BL: "[c#1@11 ~@5]/3",
})).s("gm_synth_bass_2").gain(0.35)

// chords · epiano1 · "tk3"
const epiano1 = note(`<
  ~@13 A B ~@2 C D ~@2 E F G H@2 I J K@8 L@5 M B ~@2 C D ~@2 N@2 G H@2 I J O P@8 Q@7 R@3 ~@16 S@6 ~@36
>`.pickRestart({
  A: "g4@3 ~@2 d5@2 ~, ~@3 a4@4 ~", B: "~@5 g4@2 ~, ~@3 f#4@4 ~", C: "[d4,g4,b4]@3 [f#4,a4]@4 ~", D: "~@5 g4@2 ~",
  E: "~@3 g4@5, [a2,c4,e4]", F: "~@3 g4@5, d4, [g3,a3]@7 ~", G: "~@3 a4@5, c3",
  H: "[a3@3 [b3,g4]@2 [a3,f#4]@2 ~@4 g4@5, d4@7 [e3,g3,c4,e4]@9]/2", I: "~@3 g4@5, [g3,a3,d4]", J: "[c3,g3,b3,e4]",
  K: "[~@8 [g3,b3,d4]@4 [g3,g4]@3 [g3,c4,e4,g4]@7 g3@2 [g3,b3,d4]@3 g3@4 [g3,c4,e4]@7 ~@2 [g3,d4]@4 g3@3 [g3,e4]@5 ~@5 d3 [d3,c4]@3 [d3,a3,c4]@2 [d3,a3,c4,f4], [d3,a3]@12 [b3,d4]@10 d3@9 c3@13 [b2,d4,g4]@16 ~@4, [g3,d4,g4]@8 g2@14 [c4,e4]@5 [b3,d4]@11 [c4,e4]@6 f4@8 [c#3,c#4,e4,a4]@12, ~@3 d5@12 c3@12 g4@11 d3@9 c3@16 ~, ~@12 b2@10 g4@5 b2@11 g4@2 b3@7 c4@5 [g3,a3]@6 f4@5 ~]/8", // G C G C G5 C D7 Dm7 …
  L: "[~ a3 ~@6 d4@3 ~@4 d4@4 ~@4 g3@8 ~@6 [f#3,d4,a4]@3, ~@2 [d3,a3,c4,f4]@9 f#4@4 [e3,b3,g4]@16 e3@9, ~@8 b4@11 [a3,d4,f#4]@12 g3@2 [a3,f#4]@7, ~@8 g3@11 d3@14 [f#3,d4]@4 ~@3, ~@8 g4@3 [f#3,a4]@12 e4@12 [g3,c4,e4,g4]@5]/5", // D Dm7 Em D F#m C
  M: "g4@2 ~@3 d5@2 ~, ~@3 a4@4 ~", N: "[~@11 g4@5, [a2,c4,e4]@31 ~, ~@3 g4@8 ~@5, ~ [g3,a3,d4]]/2",
  O: "~@3 d5@5, [d3,g3,a3,d4,g4]", // Dsus4
  P: "[[g3,d4]@8 g3@6 ~@18 [g3,d4]@8 ~@24 g3@6 g3@2 g3@6 [g3,g4]@10 a3@8 [a3,c4,f4]@4 a3@4 a3@2 [d3,a3,c4,f4]@4 a3@4 ~@4 d3 ~ [g3,c4]@4 [g3,c4,e4]@4, [g2,b3]@14 [c4,e4]@11 d3@15 g3@6 [c4,e4]@11 d3@15 d4@6 c4@10 [c#3,c#4,g4]@28 e4@4 d4@8, g4@7 c3@9 [g2,b3]@13 f4@7 a3@3 [c3,e4]@16 f4@9, ~@8 b2@18 [a3,d4]@2 [c4,e4]@12 b2@18 c#4@6 d4@8 [b2,f#4]@24 [d3,d4]@4 [c4,f4]@6 d4@10 [g3,c4]@3 d3@9, ~@4 [a3,d4]@3 g3@6 [c#4,f4,g4]@7 [a3,d4]@3 c3@6 [a3,d4,g4] [c4,e4]@2 [g2,b3]@12 g3@11 [d3,c4]@2 a3@7]/8", // G5 G F Dm7 C5 C G C …
  Q: "[[a3,d4,g4]@7 ~ [d4,g4]@2 ~@2 g3@2 g3@9 ~@3 g3@2 ~@2 d3 ~ [g3,a3,b3,d4]@7 ~ [b3,d4,g4]@2 ~@2 g3@2 [g3,c4,e4]@13 ~ g3@4 [a3,b3,d4]@4 [a3,d4,g4]@3 ~ [a3,d4,g4]@2 ~@2 g3@2 c4@6 g3@2 g3 ~ [a3,c#4,e4,g4]@2 ~@6 [c4,f4]@4 ~@6 [d3,g3]@4 [d3,g3]@2, [g2,b3]@10 d4@4 f4@25 g3 b2@20 g4@4 [g2,d3]@10 [a3,g4]@4 c3@18 d3@4 [g3,c4,e4,f4]@2 d2@4 [c4,e4,f4]@6, ~@7 g3@3 g4@18 g3@3 d3@11 [b3,d4,g4]@4 c3@18 g3@4 b3@22 [c#4,g4]@22, ~@8 b2@24 g2@27 d3 d2@14 d4@4 [g3,e4]@6 c4@3 g3 c#3@24, ~@8 a3@6 [c3,c4,e4]@10 d3@4 [c4,e4]@12 a3@20 [c4,e4]@11 g3 b2@18 [a3,e4]@4 g3@2 [a3,d4]@16]/7", // Dsus4 G5 G C Bm7 Dsus4 A7 F5 …
  R: "[~@4 [d3,g3,c4,e4,f4] [d3,g3,c4,e4,f4]@16 ~@3, d4@2 ~, g3 ~@5, d3!2 d2@8 ~@2, ~ a2@2 a2@16 ~@5]/3", // C
  S: "[d#4@3 ~@4 d#4@4 ~@4 g#3@8 ~@6 [g3,d#4,a#4]@16 ~@3, c5@11 [a#3,d#4,g4]@12 g#3@2 [a#3,g4]@16 ~@7, g#3@11 d#3@14 [g3,d#4]@4 ~@19, g#4@3 g4@4 [f3,c4,g#4]@16 f3@16 ~@9, ~@3 [g3,a#4]@12 f4@12 [g#3,c#4,f4,g#4]@16 ~@5]/6", // D# Cm Fm Gm C#
})).s("gm_epiano1").gain(0.25)

// chords · epiano1 · "tk3" · soft notes
const epiano1_soft = note(`<
  ~@13 A@4 B@4 C D E F G H I ~ J ~@2 K ~@2 L@2 M N@3 O@4 B@4 C P E F G H I ~@7 Q@3 R@2 ~ S T U@2 ~@18 V W@3 ~@38
>`.pickRestart({
  A: "[[d4,b4]@3 [d4,f#4]@4 [d4,e4,g4]@4 d4@4 [c4,e4]@16 ~]/4", // G D Em7 C
  B: "[~@5 d5@2 [d4,e4,g4]@4 [d4,f#4]@4 [c4,e4]@15 ~@2, ~@3 d4@4 ~@25]/4", C: "g3", D: "b2@7 ~", E: "[g3,a3,e4]",
  F: "[b2,f#3]@15 ~", G: "a2", H: "b2", I: "~@3 a4@5", J: "g4 ~", K: "~@3 g3",
  L: "[~ [c4,f4] a3@3 ~@4 c4 ~@6, ~ g3@7]/2", M: "~@3 d4@4 ~", N: "[~@7 c4@12 ~@5]/3",
  O: "[[d4,b4]@2 ~ [d4,f#4]@4 [d4,e4,g4]@4 d4@4 [c4,e4]@16 ~]/4", P: "b2@15 ~", Q: "[~@3 [c2,d2]@16 ~@5]/3",
  R: "[~@7 g3@3 ~@5 c3@15 ~@2]/2", S: "~@3 a3 ~@12", T: "~ g3 ~@4 g3 ~", U: "[~@6 a2@3 ~@7]/2", V: "~@3 d#4@4 ~",
  W: "[~@7 c#4@12 ~@5]/3",
})).s("gm_epiano1").gain(0.1)

// chords · string ensemble 2 · "tk7"
const string_ensemble_2 = note(`<
  ~@21 A B C D ~ E F G ~@20 A B C D ~ E F G H@6 ~@2 H@6 ~@2 I@6 J@3 K L@2 M@2 N O P@2 Q@4 R@8 ~@30
>`.pickRestart({
  A: "g5", B: "a5", C: "b5", D: "c6", E: "e6", F: "d6@15 ~", G: "d6", H: "[g6@95 ~]/6",
  I: "[[c4,d#4]@13 ~ [c#4,f4]@18 [c4,d#4]@14 [c#4,f4]@18 ~@8 g#4@6 c#4@9 ~ [b3,d4]@7 ~, g#3, ~@64 [c4,d#4]@14 f4@17 ~]/6", // Cm C# Cm C# Bm Cm
  J: "[~@14 f4@17 b3@16 ~, f#4@47 ~, [a#3,d#4]@14 g#3@33 ~, ~ c#4@31 ~@16]/3", K: "[c#4,d#4] ~@15",
  L: "[d#4@7 [g#3,c#4,f4]@9, g#4@31 ~, c4@13 ~@19]/2", // C#
  M: "[[g#3,c4,d#4]@7 [c#4,f4]@6 ~ [c#4,f4,a#4]@2, ~@7 g#3@4 ~@5]/2", N: "[d#4,c5] [c4,f#4]",
  O: "c#4@8 [b3,d4]@7 ~, f4", P: "[[a#3,c#4,f#4,g#4]@15 ~]/2", Q: "[[d#6,g#6]@63 ~]/4", R: "[d#6,g#6]/8",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · string ensemble 2 · "tk7" · soft notes
const string_ensemble_2_soft = note("<~@25 A ~@2 B C@7 ~@17 A ~@2 B ~@76>".pickRestart({
  A: "d6", B: "d5", C: "[g6@103 ~@9]/7",
})).s("gm_string_ensemble_2").gain(0.1)

// other · pad bowed · "tk8"
const pad_bowed = note("<~ A@3 B A@3 B A@3 B ~@2 C D ~@2 C D ~@16 A@3 E ~@2 C D ~@2 C D ~@42 F@3 G ~@38>".pickRestart({
  A: "[b5@3 ~ d6@2 a5@3 ~ d6@4 g5@4 d6@4 f#5@4 d6@3 ~ e5@4 g4@2 d5@6 e5@2 d5@2 g4@2]/3", B: "~ g4 d5@3 e5 d5 g4",
  C: "~@2 g5 d6@2 e6 d6 g5", D: "~ g5 a5 d6@2 e6 d6 g5", E: "~@2 g4@2 d5@6 e5@2 d5@2 g4 ~",
  F: "[c6@3 ~ d#6@2 a#5@3 ~ d#6@4 g#5@4 d#6@4 g5@4 d#6@3 ~ f5@4 g#4@2 d#5@6 f5@2 d#5@2 g#4@2]/3",
  G: "~ g#4 d#5@3 f5 d#5 g#4",
})).s("gm_pad_bowed").gain(0.2)

// chords · piano · "tk9"
const piano = note(`<
  ~@73 A@2 B@4 C D E F G@2 H@3 I J@2 K@4 L@5 ~ M@2 ~@2 N@2 ~@3 O P@2 ~@2 Q@2 N@2 ~@2 R@2 N@2 ~@2 N@2 S@2 ~@2
>`.pickRestart({
  A: "[[g#1,g#2,g#3,c4,d#4,g#4]@5 ~@3 [g#3,d#4,g#4]@2 [g#3,d#4]@4 [c#2,c#3,c#4,f4]@4 g#3 ~@4 [a#2,d#3] ~@2 [a#3,c#4,d#4,f#4]@2 ~@3 a#2, ~@7 c3@6 ~ g#3@3 ~@5 [g#3,c#4,f4]@4 a3 ~ [g#3,c#4,f4]@4, ~@8 c2@4 ~@12 d#2@7 ~, ~@8 d4 ~ g#4@9 ~@6 d#3@2 ~@3 d#3@2]/2", // G# G#5 C# D#5 D#m7 C#
  B: "[[g#2,c4,d#4]@4 [g#3,c4] ~@2 g#2 [g#3,d#4,g#4]@2 ~@2 c2 ~ [c#3,c#4,f4]@3 g#3 c#3 ~ c#3 [g#3,g#4] c#3 ~@7 d#3 ~ g#4@4 [g#3,c4,d#4,g#4]@2 d#3 ~ [c3,a#3,g#4] ~ [c3,a#3,d#4]@4 [c#3,c#4,f4]@6 [g#3,c#4,f4] ~@2 c#3 [d3,g#3,b3,d4,f4,g#4]@2 [g#3,b3,d4,f4,g#4]@4 d3 ~, g#3@3 ~@7 [g#3,d#4,g#4]@4 g#3@2 ~@7 [a#3,a#4]@8 d#3@7 ~@8 g#3@4 ~@8 d3@3 ~@3, f#3 ~@7 c3@5 ~ c#2@9 ~ d#3@2 d#3@2 d#3 [f4,f5]@3 ~@10 g#4@9 ~@13, ~@25 [c4,c5]@7 [g#2,c5,d#5,g#5]@7 ~@25, ~@27 [d#4,d#5]@5 ~@32]/4", // G# G#5 C# G# Fm Cm7 C# Ddim …
  C: "[d#2,d#3,f#3,a#3,c#4,f#4]@2 [a#3,c#4] ~@3 a#2 d#3 ~@2 [f#3,f#4]@2 ~ [f#3,a#3,c#4,f#4] a#2 ~, ~@9 d#3@2 ~@5, ~@10 [a#3,c#4] ~@5", // D#m7 A#m F# A#m
  D: "[f#3,a#3,c#4,f#4]@2 [f#3,a#3,c#4,f#4] ~@3 a#2 ~@3 [f#3,a#3]@2 ~@2 d#3 ~, d#2@4 ~@5 d#3@3 ~ [f#3,a#3,c#4,f#4]@3, ~@10 [c#4,f#4] ~@5", // F# F#5
  E: "[f#3,b3,d#4,f#4]@2 [f#3,b3,d#4,f#4] ~@3 a#2 ~@2 d#3 [f#3,b3,d#4,f#4]@2 ~@2 d#3 a#2, [d#2,d#3]@4 ~@9 [f#3,b3,d#4,f#4]@2 ~", // B D# B
  F: "~ c4 ~@14, [d#2,d#3,g#3,c#4,f4,g#4] ~@7", // C#
  G: "[[g#1,g#2,g#3,c4,d#4,g#4]@4 [g#3,c4,d#4,f#4,g#4] ~@3 [c4,d#4]@2 c4@2 c3 ~@3 c#2@4 [g#3,c#4,f4] ~@3 [g#3,f4]@2 ~@2 d#3!2 [g#3,c#4,f4]@2, ~@7 c3@3 ~@4 [c#3,g#3,c#4,f4,g#4]@4 ~@6 [d#3,c#4] ~@7, ~@8 c2@4 ~@11 d#2@9, ~@8 [g#3,g#4] ~ [g#3,d#4,g#4]@4 ~@18]/2", // G# G#7 Cm C# D#7 G# G#5
  H: "[[g#2,g#3]@4 [g#3,c4,d#4,g#4] ~@2 g#2 [g#3,d#4,f#4,g#4] ~ [g#3,d#4,f#4,g#4] ~@5 c#2@4 [c#4,f4,g#4]@2 g#3 ~ [g#3,c#4,f4,g#4]@2 [d#4,g#4]@2 [d#3,g#3,c4] g#2 ~@2 [g#1,g#3,c4,d#4]@2 g#3 ~ [g#3,c4,d#4,g#4] ~ g#3 ~ [d#4,f#4,g#4]@2 [g#3,d#4,f#4,g#4]@2 c3 ~ [c#3,g#3,c#4,f4,g#4]@2, [c4,d#4]@2 ~@12 [c#3,g#3,c#4,f4,g#4]@4 ~@2 g#3 ~@2 d#3@3 [g#3,d4] ~@3 [g#3,c#4,f4]@2 ~@8 c2@5 ~@3, d#3 ~@7 [c2,c3]@4 ~@11 d#2@6 ~@2 g#2@4 ~@4 c3@4 ~@5, ~@24 e4 ~@3 d#4@2 g#4@4 ~@6 g#3 ~@7]/3", // G# G#7 C# G#5 G# G#7 C# Cm …
  I: "~@2 c#3@2 [g#3,c#4,f4]@2 f3 ~ [g#3,b3,d4,f4]@2 [f3,g#3,b3,d4,f4]@2 d3@2 [f3,g#3,b3,d4,f4] a#2, c#2@6 ~@2 d2@7 ~, ~@4 [f3,d#4] ~@2 d3@3 ~@6, ~@8 f3 ~@7", // C# G#dim Fdim F7
  J: "[[g#3,c#4,f#4]@3 ~ [g#3,c#4,d#4,f4,g#4]@2 d#3 ~ [g#3,c#4,f4,g#4]@2 [g#3,c#4,d#4,g#4] ~ d#3 ~ g#3 ~ [a#3,c#4,g#4] f#3 [c#4,f4]@2 [g#3,c#4] ~ [a#3,d4,g#4] ~ [a#3,c#4,f#4,g#4]@3 ~@5, [d#2,d#3]@4 ~@3 d#2@5 ~@3 d#2@2 ~ a#3 ~ d#4@2 ~ d#2@5 ~@4, d#4 ~@7 d#4 ~ f4@2 ~@6 g#4@4 ~@10]/2", // C#sus4 C# G#sus4 A#m7 C# C#5 A#7 F# …
  K: "[[g#1,g#2,d#3,g#3,c4]@6 g2@5 ~ g2@2 [g#3,d#4]@8 [f3,g3] ~@5 d#3@2 ~@30 d#3@2 ~ d#3, d#4@5 ~ [g3,a#3,d#4]@8 f3@4 ~@4 [g#3,c4,d#4]@8 f4@6 f3@10 g#3@4 [a#3,d#4,g#4]@2 d#3@2 [g#3,c#4,f4,g#4]@2 d#3@2 [a#3,d#4,g4,g#4]@4 a#3@2, ~@6 d#3@3 ~@13 d#3@6 ~@2 c#3@2 g#2@32, ~@24 d#2@6 c#2@7 g#3 d#4 g#3 d#4 f4 g#4 d#5@21, ~@13 f3@2 [f3,g#3]@2 c#3@15]/4", // G# G#5 Fsus2 D# G# D#sus4 C# D# …
  L: "[~@2 [g#3,d#4,g#4,c5] [d#4,g4,a#4]@2 ~ g2 g#3@2 ~ f3 a#3@2 a#3 ~ [c#2,c#3,g#3,c#4,d#4,f4,g#4]@7 ~@2 [g#4,c#5]@16, [g#2,c4]@3 ~@4 [f2,f4,g#4]@4 ~@29, [g#3,d#4]@4 ~@2 g3@8 f3@6 ~@2 [d#3,d#4,g4,g#4]@6 ~@19 [d#5,f5,c#6]@32 ~, ~ d#3@2 ~@2 [d#4,g4,a#4,d#5]@2 ~@2 [g#3,c4]@2 ~@12 [d#6,f6,g#6]@16 ~]/5", // G# D# C# C#5 G# Fm G#5 G#maj7 …
  M: "[[c#2,g#2,c#3,g#3]@3 ~]/2", N: "[c#2,g#2,c#3,g#3]/2", O: "~ [a#2,a#3]@2 [f2,f3]@2 [c2,c3]@3",
  P: "[c#2,c#3,g#3]/2", Q: "[[c#2,g#2,c#3]@9 [a#2,a#3]@2 [f2,f3]@2 [c2,c3]@3]/2",
  R: "[[c#2,g#2,c#3,g#3]@9 [a#2,a#3]@2 [f2,f3]@2 [c2,c3]@3]/2", S: "[[c#2,g#2,c#3,d#3,g#3]@29 ~@3]/2",
})).s("gm_piano").gain(0.35)

// chords · piano · "tk9" · soft notes
const piano_soft = note("<~@73 A B C D E F G H ~@2 I J K L ~ M ~ N O@2 ~@2 P@2 Q@3 ~@33>".pickRestart({
  A: "~@13 g#2 ~@2", B: "~@4 c#3 ~@11", C: "b3 ~@15", D: "~ [d#2,a#2]", E: "~@8 e4 ~@7", F: "~@2 g#3 ~ g#4 ~@11",
  G: "~@2 f#3 ~@13", H: "d#3@4 ~@6 d#4 ~@4 a#2", I: "~@14 c#2 ~", J: "~@10 d#3 ~@5", K: "~@12 g#2 ~ f2 ~",
  L: "~@2 g#3 ~@9 g#4 ~@3", M: "~@6 c#3 ~@9", N: "f#4 ~@5 c#4 ~@9", O: "[~@5 d#3@2 f#2 ~ f3@2 ~@5, ~@7 f2@4 ~@5]/2",
  P: "[~@14 c4@4 ~@10 d#2 ~@3]/2", Q: "[~@15 g#5@32 ~]/3",
})).s("gm_piano").gain(0.15)

// chords · pad sweep · "tk11"
const pad_sweep = note("<~@130 A@3>".pickRestart({
  A: "[[g#3,c#4,d#4,g#4]@15 ~, [c#2,g#2]]/3", // G#sus4 C#5
})).s("gm_pad_sweep").gain(0.25)

// other · electric guitar muted · "tk12"
const electric_guitar_muted = note("<~@91 A@2 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 ~@4>".pickRestart({
  A: "d#4 ~@2 d#4 ~ d#4 g#3 ~@2 g#3 d#4 ~ d#4!2 g#3 ~", B: "d#4 ~@4 d#4 g#3 ~@3 d#4 ~ d#4!2 g#3 ~",
})).s("gm_electric_guitar_muted").gain(0.2)

// other · electric guitar muted · "tk12" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@92 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A ~@4
>`.pickRestart({
  A: "~@3 g#3 ~@3 g#3 ~@8", B: "~@3 d#4 ~@5 g#3 ~@6",
})).s("gm_electric_guitar_muted").gain(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A@16 B@2 A B@3 A@2 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 D C D C D C D C D C D C D C D C ~ C
  D C D C D C D C D C D C D ~@5 A@2 E C D C D C D C D C D C F C D C D C G C D C D C D ~@4
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x!2 ~@3", C: "x ~ x ~@3 x ~@7 x!2", D: "~@3 x!3 ~@2", E: "x ~@5 x ~@5 x!2 ~@2",
  F: "~@3 x ~ x ~@2", G: "~@6 x ~@4 x ~@4",
})).gain(0.35)

// drums · rim
const rim = s("rim").struct("<~@13 [~@3 x]!16 [~ x ~ x]!8 ~@65 [~@3 x]!2 ~@29>").gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@37 A@35 B A@7 C A D A@7 B A@6 ~@7 E A@11 F A@5 F A@6 ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!2 ~@2", C: "~@2 x ~@3 x!2", D: "x ~@2 x", E: "~@2 x ~@2 x ~ x",
  F: "~@4 x ~@3 x!2 ~@2 x ~@3",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct("<~@37 A@35 B A@7 C D E A@7 B A@6 ~@7 F A@11 G A@5 G A@6 ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!2 ~@2", C: "~@2 x ~@3 x!2", D: "~@4 x ~@7 x ~@2 x", E: "x ~@2 x", F: "~@2 x ~@2 x ~ x",
  G: "~@4 x ~@3 x!2 ~@2 x ~@3",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<A ~@28 A@7 B C@35 D C@9 E C@14 ~@8 C@24 ~@4>".pickRestart({
  A: "x!4", B: "x ~ x ~ x!4", C: "x!8", D: "x!6 ~@2", E: "x",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct(`<
  ~@37 A ~@19 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@5 A ~@7 A ~@3 A ~@9 A ~@11 A ~@5 A ~@5 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct("<~@13 A B C ~ A D C ~@77 E ~@35>".pickRestart({
  A: "~@5 x ~@2", B: "x!2 ~@14", C: "x ~@8 x ~@6", D: "~ x ~@14", E: "x",
})).gain(0.2)

// drums · cowbell
const cowbell = s("cb").struct("<~@13 A B C D A B C E ~@8 F@7 G ~@96>".pickRestart({
  A: "~@3 x ~ x ~@2", B: "~@3 x ~ x ~ x", C: "~ x ~ x ~ x ~ x", D: "~ x ~@6", E: "~ x ~@5 x", F: "x!4", G: "x",
})).gain(0.3)
// … 17 more lines

More by Michael Jackson