Strudelify

The Lady in My Life

Michael Jackson

KeyA minorTempo74 bpm
0:00/0:00
// The Lady in My Life — Michael Jackson
// 74 bpm, 4/4, key A minor. 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 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(74/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 · electric bass finger · "tk2"
const bass = note(`<
  ~ A B A C D@2 E@3 F G@3 H@2 I J K L M N O P Q R S A T U V W X Y Z AA AB AC AD AE O AF AG AH AI A AJ AK AL AM AN AO AP
  AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG AZ BH BI BJ BK BL BM BN AP BO BP ~
>`.pickRestart({
  A: "a1@6 d2@9 ~", B: "d2@3 e2@4 ~", C: "d2@6 e2@6 ~@2 e1 g1", D: "[a1@29 ~@3]/2",
  E: "[a1@22 ~@2 e1 ~ e1 ~ e1 ~ d1@15 ~@3]/3", F: "e1 ~ e1 ~ e1 ~ d1@7 ~ e1 g1",
  G: "[a1@21 ~@3 e1 ~ e1 ~ e1 ~ d1@16 ~@2]/3", H: "[e1 ~ e1 ~ e1@2 d1@3 ~ d1@2 f1@2 g1@6 ~@2 g1 ~ g1@8]/2",
  I: "f1@4 ~@2 f1 ~ f1@8", J: "g1@5 ~ g1 ~ g1@7 a1", K: "e1@6 ~@2 e1@5 ~ e1@2", L: "a1@4 ~@2 a1 e1 d1@4 ~ d1 a1 g#1",
  M: "g1@5 ~ b1 d2 c2@2 ~ g1 c2 e1 a1 g1", N: "f1@3 c2 f2@2 a1@2 b1@8", O: "e2@2 a1 d2",
  P: "a1@3 e2 a2@3 e2 d2@5 f1 a1 g#1", Q: "g1@2 b1 d2 g2@2 b1!2 c2@5 e1 g1 f#1", R: "f1@4 f2@2 ~ a1 b1@8",
  S: "e2@5 a1 b1 d2 e2 d2 b1 e1 e2@2 e1@2", T: "d2@6 e2@6 ~@2 a1 c2", U: "d2 ~@6 d2!2 ~@4 e2@3",
  V: "d2 ~@6 d2!2 ~@4 d2 e1 g1", W: "a1 ~@6 a1 a1@2 ~@4 d2 e2", X: "g1@2 ~@5 g1!2 ~@4 g1 b1 c2",
  Y: "d2@2 ~@5 d2!2 ~@4 e2@3", Z: "d2@2 ~@5 d2!2 ~@4 d2 e1 g1", AA: "a1@2 ~@5 a1!2 ~@4 a1!2 d2",
  AB: "e2@4 ~ e1 b1 e2 e1 e1@2 b1 e2@2 e1 b1", AC: "a1@4 ~@2 a1@2 d2@3 ~@2 f1 a1 g#1",
  AD: "g1@3 ~ g2 g1 b1@2 c2@5 e1 g1 f#1", AE: "f1@2 ~ c2 f2@2 a1 c2 b1@8", AF: "a1@3 ~ a2 ~ a1 e2 d2@5 ~ f1 a1",
  AG: "g1@5 ~ b1 d2 c2@5 e1 g1 f#1", AH: "f1@5 ~ a1 c2 b1@8", AI: "e2@4 ~ a1 b1 d2 e2@8", AJ: "d2@3 e2@5",
  AK: "a1@5 ~ d2@9 ~", AL: "d2@6 e2@5 ~ e1 g1 a1 e1", AM: "a1@2 ~@2 a1@2 d2@7 g1 a1 c2",
  AN: "d2@2 ~@4 e2@5 ~ e1 g1 a1 e1", AO: "a1 ~ a1!4 d2@5 ~ d2 g1 a1@2", AP: "d2@4 ~@2 e2@5 ~ e1 f#1 g1 e1",
  AQ: "a1 ~@3 [g2,a2] ~ d2@6 ~ c3 d3 ~", AR: "d2@2 ~@2 d2 a1 e2@4 ~ e2 e1 f#1 g1 e1",
  AS: "a1!2 ~@2 a2@2 d2@6 ~ c3 d3 ~", AT: "d2@2 ~@2 d2 a1 d2 e2@4 ~ e1 ~ [f#1,g1] e1",
  AU: "a1 ~@2 a1 g2 a2 d2@4 d3 ~@2 c3 d3 ~", AV: "d2 ~@3 d2 a1 e2@5 ~ e1 f#1 g1 e1",
  AW: "a1 ~@2 a1 g2 a2 d2 ~@3 d3 ~@2 c3 d3 ~", AX: "d2@2 ~@4 e2@5 ~ e1 f#1 g1 e1",
  AY: "a1 ~@2 a1 g2 a2 d2@2 ~@2 d3 ~@2 c3 d3 ~", AZ: "d2@3 ~@3 e2@5 ~ e1 f#1 g1 e1",
  BA: "a1@2 a2 ~@2 a2 ~@2 d2@2 d3 ~@2 c3 d3 ~", BB: "d2@3 ~@3 e2@3 ~ e3 ~@2 g1 g#1@2",
  BC: "a1@3 ~@3 d2@4 d3 ~@2 c3 d3 ~", BD: "d2@4 ~@2 e2@4 ~@2 e1!4", BE: "a1 ~@3 e2@2 d2@8 ~@2",
  BF: "d2@3 ~@3 e2@6 ~ e1 g1 e1", BG: "a1 ~@3 e2@2 d2@9 ~", BH: "a1!2 ~@4 d2@3 a2 d3 e3 d3@2 a2 a1",
  BI: "d2@2 ~@2 a2 d2 e2@4 ~ e2 e1 f#1 g1 e1", BJ: "a1 ~@3 e2@2 d2@7 ~ a1@2", BK: "d2@2 ~@4 e2@6 e1 f#1 g1 e1",
  BL: "a1 ~@2 a1 e2@2 d2@3 a2 d3 e3 d3@2 a2 a1", BM: "d2@2 ~ a2 d2@2 e2@6 e1 f#1 g1 e1",
  BN: "a1 ~@3 e2@2 d2@4 d3 ~@2 c3 d3 ~", BO: "a1 ~@3 e2@2 d2@4 d3 ~@2 c3 d3 ~, ~@4 d2 ~@11", BP: "d2@2 ~@4 e2@6 e1 ~@3",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · epiano2 · "tk3"
const epiano2 = note(`<
  ~ A@4 B C D E@2 F G@3 H@2 I J K L M N O@2 P Q@2 R@2 S T@2 U V W X@2 Y@2 Z AA AB AC AD AE AF@2 AG@2 AH@2 AI@3 AJ AK@4
  AL@2 AM@4 AN@4 AO AP@2 AQ AR@2 AS AT@2 AU ~@3
>`.pickRestart({
  A: "[[a2,e3,f#3,g#3,c#4,e4]@6 a3@12 ~@2 [e4,a4,c5]@2 [b3,d4,g4]@4 [b3,d4]@3 ~@3 [a2,a3,b3,c#4,e4]@6 [c4,e4]@14 [c4,e4,f4,g#4,a4,c5]@2 [b3,d4]@7 d4@3, ~@3 [d3,e3,f3]@8 ~@2 g4@3 ~@16, ~@3 [c4,e4]@7 ~ b4@5 ~@16, ~@18 a3@4 g3@7 [g3,b3,d4]@3 ~@6 d3@12 ~@14, ~@15 e3@4 [f3,a3]@8 [e3,g4,b4]@5]/4", // Amaj7 Am G Bm A C Fmaj7 Bm …
  B: "~@3 e4 ~@3 b4, a2, a3 [f#3,a3,f#4], e4@2 c5@2 ~ d5@3, ~ g4@3 ~@2 a4@2", // F#m
  C: "~@3 e4 ~@3 b4, a2, [e3,g3] [f#3,a3,f#4], e4@2 c5@2 ~ d5@3, ~ g4@3 ~@2 a4@2", // Em F#m
  D: "~@3 e4 ~@3 b4, a2, [e3,g3] [f#3,a3,f#4], e4 g4 ~ a4, ~ c5@3 ~ d5@3", // Em F#m
  E: "[~@3 e4 [b3,d4,g4,b4] [e3,b3,d4,g4,b4]!2 [a3,c4,f4,a4]@4 ~@4 d4, [a2,e3,g3]@4 ~@3 d3@9, e4@6 ~@8 e4 ~@7 [a3,a4]@10, ~ c5@3 ~@9 b4@3, ~ g4 ~@5 g4]/2", // G Em7 F A7 A
  F: "[e3,b3,d4,g4]@2 [e3,b3,d4,g4]@2 [e3,b3,d4,g4]@2 [a3,c4,f4]@4 ~@3 [b3,d4,g4]@3, ~@3 d3@5, ~@5 [a3,c4,f4]@3", // Em7 F G F
  G: "[~@3 e4 ~@7 e4 [e3,b3,d4,g4,b4]!3 [c4,f4,a4]@6 c4@2 [f3,c4], [a2,a3]@4 ~ [d3,a3]@3, [e3,b3,c4]@4 ~@2 a4 b4@5 ~@12, e4@3 ~@2 d5@3 ~ c5@3 ~@12, ~@2 g4@2 f#4@4 e4@2 g4@2 ~@9 [f4,a4]@3]/3", // Em7 F F5 A D5 Cmaj7 F
  H: "[[e2,g3,b3,d4,g4]!3 f3@2 f3 [f3,a3,c4,f4] d3@6 ~ [b3,d4,g4]@2, ~@3 d2@4 [g2,g3]@9, ~@3 [a3,c4,f4]@3 ~ [b3,d4,g4]@7 ~@2, ~@13 d3@3]/2", // Em7 F G F G
  I: "[g3,a3,c4]@3 [g3,a3,c4,e4], [f2,c3]", J: "[a3,b3]@5 ~ [g4,d5]@2, [g2,g3,d4], ~@5 a3@3, ~@11 b3@5",
  K: "[a3,d4]@5 ~@3 a4@4 [d4,e4,a4,b4]@4, e3, b4@7 e4 e5@8, [e4,a4]@3 d4@3 ~@2, ~@5 a3@11", // D5 Dsus2 A5
  L: "[e3,a3,b3,c#4,e4]@8 [d3,f3,a3,c4,e4]@7 d3", M: "~@2 g3@2 [c3,b3,e4]@3 ~, [g2,f3,c4,f4,a4] ~, ~@2 [d4,g4]@5 ~",
  N: "[f3,a3,c4,e4]@8 [b2,f#3,a3,d4]@7 f#3", // Fmaj7 Bm7
  O: "[f#3@2 f#3!2 [e3,f#3,a3,b3,c#4,e4]@2 [d3,f3,a3,c4]@2 [e3,a3,b3,c#4]@4 [f3,a3,c4,e4]@4, [e3,a3,d4,f#4,a4]@2 ~ e4@3 ~@2]/2", // F#m7 Dm7 A Fmaj7 D
  P: "[c4,e4]@4 [b3,d4]@3 ~@8 g3, g4@10 d4 d5@2 g4 d4@2, [f3,g3,a3]@7 [b3,e4]@9, ~@7 d4@2 g3@3 b4@4, ~ c3", // C Bm F E5
  Q: "[[f3,c4,e4,a4,c5]@8 ~@7 a3 [d4,e4]@7 ~@5 [e4,a4,b4,e5]@4, ~@8 [b2,a3,d4,f#4]@5 a4 e5@12 a3@6, ~@8 a4@4 e4@4 [a4,b4]@11 d4@5, ~@5 f#3@3 e3@8, ~@11 c#4@5 ~@7 a3 e4@4 ~@4]/2", // Fmaj7 Dsus2 Esus4 Bm7 Asus2
  R: "[[a3,e4,f#4,g#4,c#5,e5]@3 [a3,e4]@5 ~@2 a2 g3@2 b2 ~ [b3,d4,g4], ~@3 [d3,f4,a4,c5,e5]@8 e3@5, ~@16 [f3,a3,c4,e4]@6 [b3,d4]@7 g3@3, ~@18 d2@5 ~@5 b2@4]/2", // Amaj7 A5 G Dm7 Fmaj7 Bm
  S: "[d2,a2,e3,f3,g3,c4,e4] ~@7 [f3,a3,c4,e4]!2 ~@3 [e3,g3,b3,d4]@3, ~@7 d3@3 ~@6", // Dm7 Fmaj7 Em7
  T: "[[d3,f3,a3,c4,e4]@2 ~@6 [f3,a3,c4,e4]@2 ~@4 [b3,d4]@2 a3@2 ~@2 g3@5 ~ [b3,c4,e4]@5 e3, ~@7 d3@4 ~@2 e3@9 ~@4 g3@4 ~@2, ~@14 g3 ~ a2@15 ~, ~@16 e4@9 ~ a3 ~@5]/2", // Dm7 Fmaj7 Bm Cmaj7
  U: "g3@4 d3@2 ~ d3@2 ~ g3 ~ [b3,d4] ~ g3 d3, g2@15 ~, [a3,b3,d4]@10 ~ g3@2 [c4,e4]@3, ~@3 [a3,g4]", // Bm Bm7 C A7
  V: "[d3,f3,g3,c4,e4]@2 ~@6 d3 ~@4 [e3,g3,b3,d4]@3", W: "[d3,a3,c4,e4]@6 ~ [g3,b3], f3@6 ~@7 d3@3, ~@14 [a3,d4] ~",
  X: "[~@11 e4 [e4,a4,c#5]@3 ~@13 [a4,b4]@4, [a2,g#3,b3,c#4]@15 d4@3 f#3@9 e4@5, e4@7 e4@2 e3@7 e3@16, ~@5 e3@3 e5@8 [a4,e5]@4 d4@2 a4 e5@9, ~@8 a4@2 a3@6 e4@3 a3@2 e4@3 a4 a3@7]/2", // A Asus2 Amaj7 A5
  Y: "[[g#3,a3,b3,e4]@8 [a3,c4,e4]@6 [a3,c4,e4]@2 f3@4 f3@3 g3 g4@5 ~ [d4,g4,b4]@2, [a2,c#4]@3 ~@5 f3@8 [g2,a3,b3,d4]@8 [c3,a3,b3,e4]@8, ~@14 g4@10 ~@5 g3@3]/2", // E Am G A G Am
  Z: "[f3,c4,e4,a4]@7 f#3 c#4@2 ~@4 a4@2, ~ [b2,d4,f#4], ~@2 a4 e4, ~@5 f#3@3, ~@11 c#4@5", // Fmaj7 Bm
  AA: "[e4,a4]@3 ~ [e4,a4,e5]@3 ~ [a2,a3,b3,c#4,e4]@4 [d3,f3,a3,c4,e4]@4, [e3,d4,b4]@7 e3@5 ~@4, ~@3 b3@5 ~@8", // A5 A Dm7 E7
  AB: "[e3,e4]@5 ~ [b3,e4,g#4]@2 [c4,e4,f4,a4]@5 c4 [c4,e4,f4,a4]@2, [a2,f#3,g#3,c#4] ~, ~@5 e3@3 [d3,a3]@8", // E Fmaj7 F#m D5
  AC: "~@4 d4@3 g3 d4@4 ~@3 g3, g4@3 [d4,g4,b4], [g2,f3,a3,c4,e4] [c3,e4], ~@4 b3@3 b3", // G Fmaj7 C
  AD: "[f3,a3,c4,e4,a4]@7 f#3 ~@7 b3, ~@8 [b2,e4]@5 a4 d5@2, ~@2 [a4,d5] d4, ~@8 [c#4,d4]@3 c#4@5, ~@5 f#3@3", // Fmaj7 E5 D5 Dmaj7
  AE: "d4@7 ~@7 d4@2, e3@11 b4 e4@4, e4@9 e5@7, [a4,e5]@4 d4 a4@3, d5 ~@6 b3@9", // A5
  AF: "[[a2,g#3,b3,c#4,e4]@6 ~@14 [e4,a4,c5]@2 [b3,d4,g4]@4 [b3,d4]@3 [g3,b3,d4]@3, ~@3 [d3,f3]@8 e3@4 ~, ~@3 [c4,e4]@7 ~ b4@5, ~@9 a3@2 ~@2 g4@3]/2", // Amaj7 Am G Bm G Dm C
  AG: "[[a2,a3,b3,c#4,e4]@6 [a3,c4,e4]@9 ~ [e4,f4,a4,c5]@6 [b3,d4,g4]@5 ~ [b3,d4,g4]@3 e3, ~@3 [d3,f3]@8 [e3,b4]@5, ~@15 a3@7 ~@5 g3@5]/2", // A Am Fmaj7 G Dm E5
  AH: "[[a2,g#3,a3,b3,c#4,e4]@6 [f3,a3,c4,e4]@11 ~@3 [e4,a4,c5]@2 [e3,b3,g4,b4]@4 [b3,d4,g4] ~@2 [g3,a3,b3,d4]@3, ~@3 d3@8 ~@5, ~@19 a3@3 ~@10, ~@20 g#4 ~@11]/2", // Amaj7 Fmaj7 Am Em G
  AI: "[[e3,g#3,b3,c#4,e4]@6 [a3,e4]@10 ~@3 c4 [a4,c5]@2 [g4,b4]@4 [d4,g4]@5 ~ [a2,g#3,a3,b3,c#4,e4]@6 [d3,e3,f3,a3,c4,e4]@10, ~@6 d3@16 e3@9 e3@2 ~@15, ~@20 [e4,g#4] ~@27]/3", // C#m7 A5 Am G G5 Amaj7 Dm7 E
  AJ: "~@3 a3 [e4,g#4,a4] ~ [d4,g4]@3 ~ [a3,b3,g4] ~@3 e3@2, ~@4 c5@2 ~@7 [g3,a3,b3,d4]@3", // Amaj7 G5 Em G
  AK: "[[e3,f#3,g#3,c#4,e4]@6 [a3,e4]@14 [e4,a4,c5]@2 [b3,d4,g4]@4 [b3,d4]@3 ~@3 [g#3,a3,b3,c#4]@6 c4@13 ~ [e4,g#4,a4,c5]@2 ~@5 b3@2 b3@2 b3, ~@3 [d3,f3,c4]@8 b4@5 e4@10 ~ [d4,g4,b4]@5, ~@26 [a3,g4]@6 ~@19 c4@3 ~@10, ~@29 [g3,b3,d4]@3 ~@32, ~@15 e3@4 [d3,f3]@8 ~@5]/4", // C#m A5 Am G Bm C#7 Am Dm7 …
  AL: "[[a3,b3,c#4,e4,a4]@6 [a3,c4,e4,f4,a4]@13 ~ [e4,a4,c5,e5]@2 [d4,g4,b4,d5]@10, ~@3 d3@8 ~@5, ~@19 c4@3 ~@10, ~@20 g#4 ~@11]/2", // A Fmaj7 Am G
  AM: "[[b3,c#4,e4,g#4,c#5]@6 f3@12 ~@2 [f4,c5,e5]@2 ~@6 [d4,g4,b4,d5,g5]@3 ~ [a3,g#4,a4,b4,c#5,e5]@6 d4@10 ~@4 [a4,c5,e5,a5]@2 ~@8 e4@2, ~@6 e4@16 ~@4 e3@5 e4@7 e4@16 [e4,g4,b4,d5]@6 [g4,b4,d5]@4, ~@6 [c4,f4,a4,c5]@13 c4@3 [b3,d4,g4,b4,d5]@5 b3@5 ~@16 d4@6 ~@4 e3@6, ~@18 f3@4 g3@10 ~@19 f4@3 [a4,g5]@10, ~@20 a4@12 ~@6 [f4,a4,c5,e5]@14 ~@7 e4@3 ~@2]/4", // C#m7 Fmaj7 G Amaj7 Am Em7 G F …
  AN: "[[a3,e4,g#4,b4,c#5,e5,a5]@6 [c5,e5,a5]@13 ~ [c5,e5,a5,c6]@2 ~@10 [a2,g3,b3,c#4,f#4,a4] ~@5 [d3,f3,a3,c4,e4]@14 ~@2 a3@9 ~, ~@6 [d4,f4,a4]@16 b5@11 ~@31, ~@19 d3@3 [g4,d5,g5]@6 e4@3 e4@2 ~@31, ~@26 e3@7 ~@31, ~@29 [g4,b4,d5,g5]@4 ~@31]/4", // Amaj7 Am F#m Dm7 Dm G5 G
  AO: "e4, a2@5 ~@11",
  AP: "[~@2 [e4,f#4,g#4] a4 g4 ~@3 [b3,g4]@4 ~@2 [a3,a#3,d4] ~ [g#3,c#4]@6 ~@10, ~@2 c5@2 ~@9 e2@2 b3@7 ~@10, ~@7 g3 e4@8]/2", // E Em A#maj7 C#5
  AQ: "~@4 [g4,g#4,a4] c5 a4 ~ g4 ~ c4 ~@5",
  AR: "[~@6 a3@12 ~@2 [e4,g#4] ~ [d4,g4,b4]@7 ~@3, ~@3 d3@8 ~@5, ~@3 f3@4 ~@9]/2", // E G
  AS: "[a2,b3] ~@3 [b3,c#4] ~@7 a4 ~@3", AT: "[~@14 b3@7 ~@11, ~@7 g3 ~@8, ~@14 a#3 ~@17]/2", AU: "~@4 [a3,e4]@3 ~@9",
})).s("gm_epiano2").gain(0.25)

// chords · epiano2 · "tk3" · soft notes
const epiano2_soft = note(`<
  ~@2 A ~ B ~@3 C D ~@3 E ~@8 F ~@3 G ~ H ~@2 I J ~@3 K ~@5 L ~ M N@2 O P ~ Q R S ~ T ~ U V@2 ~ W ~@3 X ~@3 Y Z AA@5
  AB@4 ~@3
>`.pickRestart({
  A: "~@2 c4 e3@4 ~", B: "~@2 d3@4 ~@7 b3@3", C: "~@4 e3 ~@3", D: "~@3 [c4,f4]@5", E: "~@5 f3@2 ~, ~ d2",
  F: "~@7 a3 ~@8", G: "~@8 d4@3 ~@5", H: "a2@4 ~@7 g3@2 ~@3", I: "~@3 g3 ~@4 e3!2 ~@3 e3 ~@2, ~ c4@8 ~@7, ~@2 b3@7 ~@7",
  J: "~@6 g3 ~@2 a3 ~@6", K: "~@5 d4@3", L: "~@4 b3@4 ~@3 g3@4 ~", M: "c#5@15 e3, b3@7 ~@9",
  N: "[~@3 a3@6 ~ c4 ~@4 e3]/2", O: "~@2 g#3@2 ~ e3 ~@10, ~ e3@3 g#3@2 ~@10", P: "c4@3 ~@5", Q: "~@3 d4@2 ~@3",
  R: "a2@3 [f3,c4]@5", S: "~@3 [b3,d4]@2 b3@3", T: "~@6 b4@3 ~ d4 ~@5", U: "~@3 a3@3 ~@10", V: "[~@3 a3@8 b3@2 e3@3]/2",
  W: "~@6 e3@9 d4", X: "~@15 g#4", Y: "~@6 [e3,g3,b3,d4]@9 ~", Z: "[g#3,b3,c#4]@3 [d3,f3,a3,c4]@5, e3 ~@3",
  AA: "[~ d3@2 c4 d4@2 ~@2 [a3,d4]@5 ~@3 a2@6 [a3,c4]@10 ~@3 [f3,g3,a3,c4]@2 ~@3 [d4,d#4] ~@3 a3 g3@2 ~ [a2,g#3,b3,c#4]@6 c4@12 ~@3 a4 [e3,b3]@6 ~@3 e3, ~ c4 ~@2 b4 ~@2 e3@12 ~@3 d3@16 ~@10 e4@17 ~@3 c5@2 ~@10, ~@22 f3@7 ~@10 e3@6 ~@2 e3@6 ~@27]/5", // D5 Am F D#maj7 Amaj7 E5
  AB: "[[c#4,f#4,a4] ~@3 [f#4,a4] ~@3 [c4,e4,f4,a4] ~@3 [c4,e4,f4] ~@3 f3@6 [g3,b3,d4]@7 ~ d4 ~ [a2,g#3,c#4]@6 [f3,a3,c4]@13 ~ [f3,c4] ~ [e3,g3,b3,d4]@9 ~, ~@15 [d3,a3,c4,e4]@6 ~ e3@14 ~@2 d3@14 ~@12, ~@29 e2@3 e4@19 ~@13]/4", // F#m Fmaj7 G Amaj7 F F5 Em7 Am
})).s("gm_epiano2").gain(0.15)

// other · electric guitar jazz · "tk5"
const electric_guitar_jazz = note("<~@2 A B C@2 D E ~@10 F G ~@26 H I J ~@18 K ~@14>".pickRestart({
  A: "~ [a3,a4] [b3,b4] [c4,c5]!2 [b3,b4] [g3,g4] d3", B: "[c#3,c#4] ~",
  C: "[~ [a3,a4] [b3,b4] [c4,c5]!2 [b3,b4] [g3,g4] [d3,d4]@9]/2", D: "~@8 [b3,b4] [c4,c5] b4 [g3,g4] e4@2 d3@2",
  E: "e3@3 ~", F: "~@8 [c#4,c#5]@2 [d4,d5]@2 [e4,e5]@2 [e3,e4] [f#3,f#4]", G: "[e3,e4] ~",
  H: "~ [a3,a4] [b3,b4] [c4,c5] b4 g4 [e3,e4] d3", I: "c#4@3 ~@5",
  J: "~ [a3,a4] [b3,b4] [c4,c5] [d4,d5] [b3,b4] [g3,g4] ~", K: "[a4,a5] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.2).pan(0.8)

// other · electric guitar jazz · "tk5" · soft notes
const electric_guitar_jazz_2 = note("<~@2 A ~@3 B C ~@38 D E F ~@33>".pickRestart({
  A: "~@7 d4", B: "~@10 b3 ~ e3@2 d4@2", C: "e4 ~", D: "~@4 b3 g3 ~ d4", E: "c#3@3 ~@5", F: "~@7 [d3,d4]",
})).s("gm_electric_guitar_jazz").gain(0.1).pan(0.8)

// other · synth strings 1 · "tk6"
const synth_strings_1 = note("<~@3 A@2 ~@24 B C@2 D E@2 F@2 G H@3 I J@2 K ~@2 A@2 ~@33>".pickRestart({
  A: "[~ a4 e5@2 a5 a4@5 ~@6]/2", B: "e4 f4", C: "[g4@8 a4@12 e5@2 b4 c5 a5@8]/2", D: "~@6 b4 c5 b4@4 a4 b4 c5 d5",
  E: "e5@6 d5 g5", F: "[e5@8 a5@18 g#5 f#5 e5@2 d5@2]/2", G: "c#5@8 c5@2 e5 f5 g5@2 a5@2",
  H: "[d5@10 c5 d5 e5@2 a4@27 ~ a4 b4 c5@2 d5@2]/3", I: "e5@9 ~ e5 f5 g5@2 a5@2",
  J: "[d5@10 c5 d5 e5@2 a4@12 f#4 g#4 a4@2 b4@2]/2", K: "e4@15 ~",
})).s("gm_synth_strings_1").gain(0.2)

// chords · pad poly · "tk7"
const pad_poly = note(`<
  ~ A@2 B@2 ~@9 C@2 ~@3 D E F G H I@3 A@2 ~@8 J@5 K L M A@2 B@2 ~@10 N@3 O P Q R@2 S ~@14
>`.pickRestart({
  A: "[~ a5 d6@2 d#6 a5@6 ~@5]/2", B: "[~ a5 d6@2 g6 a5@5 ~@6]/2",
  C: "[~@10 [a3,c4,f4] ~ e4@2 [b3,d4]@15 ~@3, ~@12 g3@17 ~@3, ~@12 c4 ~@19]/2", D: "[g#3,c#4,e4]@8 [a3,c4]@7 ~",
  E: "[f3,a3,c4,d4]@8 [g3,b3,e4]@7 ~", F: "[f3,c4,e4] [f#3,a3,b3,d4], a3@3 ~@5",
  G: "[e3,d4]@2 [g#3,b3,c#4] [f3,a3,d4], [a3,b3]@3 ~@5", H: "[g#3,b3,c#4,e4]@2 e4 d4, ~ [f3,a3,c4]",
  I: "[[f3,g3,b3]@7 ~ [g3,b3,d4]@8 [f3,c4]@8 [b3,d4]@22 ~@2, e4@23 ~ f#3@8 ~@16, g4 ~@2]/3", // G7 G F5 Bm
  J: "[[g#3,c#4]@8 ~@16 [g3,b3]@7 ~ [f3,c4]@7 ~ [f#3,b3]@8 [f#3,a3,e4]@7 ~ [g#3,b3,c#4]@4 [f3,a3,c4]@3 ~ [g#3,b3]@7 ~ [a3,c4]@7 ~, e4@2 d4@2 ~ d4@2 ~@3, ~ a3@2 ~ a3@2 ~@4, ~@8 c4@14 ~@2 e4@16 ~@16 e4@23 ~]/5", // C#5 G F5 B5 F#m7 C#7 F G#m …
  K: "[a3,c4,e4] [b3,d4]@3, f3 ~", L: "c4@7 ~ [f#3,b3,d4]@8, a3@15 ~", M: "[a3,b3]",
  N: "[[g#3,c#4]@3 [a3,c4]@5 [a3,c4,e4]@3 [g3,d4]@5 [g#3,c#4]@3 [f3,a3]@5, e4@16 ~@6 b3@15 ~@11, ~@6 f3@15 ~@11 e4@16]/3", // C#5 Am G5 C#5 F
  O: "[f3,a3,c4,e4]@3 [g3,b3,d4]@5", P: "[a3,b3,c#4,e4]@3 [f3,a3,c4,e4]@5",
  Q: "[f3,a3,c4,e4]@3 [g3,d4,e4]@3 [g3,e4,g4]@2, g4@3 ~, ~@6 c4 ~@5 d4@2 ~@2", // Fmaj7 Em7 C
  R: "[[g#3,b3,c#4,e4]@3 [f3,a3,c4,e4]@9 [g3,b3,d4]@4]/2", S: "[g#3,b3,c#4,e4] ~@15",
})).s("gm_pad_poly").gain(0.2)

// chords · pad poly · "tk7" · soft notes
const pad_poly_soft = note("<~@19 A B ~ C ~@2 D@2 ~@10 E@2 ~@2 F G H I ~@14 J ~ K ~@20>".pickRestart({
  A: "f#3 [f3,e4]", B: "~ d4", C: "~@2 e3 ~", D: "[g3@4 ~@4 e3@7 ~, ~@4 a3@11 ~]/2", E: "[f#3@8 f3@15 ~@9]/2",
  F: "c#4@8 f3@7 ~", G: "~ g3@3", H: "e3 ~", I: "[e3,e4]", J: "f#3@3 ~@5", K: "~@3 c4@5",
})).s("gm_pad_poly").gain(0.1)

// other · pad new age · "tk8"
const pad_new_age = note("<~ A@2 B@2 ~@14 C D@3 E F@2 G A@2 ~@8 H I@3 J K@2 L A@2 B@2 ~@33>".pickRestart({
  A: "[~ a4 e5@2 f5 a4@7 ~@4]/2", B: "[~ a4 e5@2 a5 a4@6 ~@5]/2", C: "~@10 e6 f6 g6 ~ a6 ~",
  D: "[d6@8 ~@2 c6 d6 e6@2 a5@27 ~ a5 b5 c6 ~ d6@2]/3", E: "e6@8 ~@2 e6 f6 g6 ~ a6 ~",
  F: "[d6@9 ~ c6 d6 e6@2 a5@11 ~ f#5 g#5 a5@2 b5@2]/2", G: "e5@7 ~", H: "c#5@8 c5@2 e5 f5 g5@2 a5@2",
  I: "[d5@10 c5 d5 e5@2 a4@27 ~ a4 b4 c5@2 d5@2]/3", J: "e5@9 ~ e5 f5 g5@2 a5@2",
  K: "[d5@10 c5 d5 e5@2 a4@12 f#4 g#4 a4@2 b4@2]/2", L: "e4@15 ~",
})).s("gm_pad_new_age").gain(0.2)

// other · electric guitar muted · "tk9"
const electric_guitar_muted = note("<~@49 A B C D E F G H I J K L M N O P Q R S ~@14>".pickRestart({
  A: "~@4 g3!2 a3 ~@2 a3 ~@5 a3", B: "~@13 e3 g3 a3", C: "~ a3 ~@2 g3!2 a3!2 ~ a3 ~@5 g3",
  D: "g3 ~ a3!2 ~@3 g3 ~@3 e3 g3 a3!2 g3", E: "~@4 a3!2 ~@3 g3 ~@3 a3!3", F: "~ g3 ~@5 g3 ~@3 e3 g3 a3!2 c4",
  G: "~ a3 ~ g3 a3!2 ~@2 g3 a3 ~ a3 ~@3 e3", H: "~@4 g3 a3!2 ~@4 e3 g3 a3!2 g3",
  I: "~ a3 ~ e3 g3 a3!3 ~ a3 ~ e3 g3 a3 ~@2", J: "~@3 e3 g3 a3!2 g3 ~ g3 ~ e3 g3 a3!2 g3",
  K: "~ e3 ~@2 g3 a3!2 g3 ~ e3 ~ e3 g3 a3!2 g3", L: "~ a3 ~@9 a3 d4!2 c4 a3",
  M: "~ a3 ~ e3 g3 ~ a3 ~ g3 a3!2 ~ g3 a3 ~ a3", N: "~ a3 ~ e3 g3 a3!3 ~ g3 ~ e3 g3 a3 [a#3,c4] a3",
  O: "~ a3 ~@2 a3!2 ~@2 g3 a3 ~ a3 ~ a3 ~ e3", P: "g3 ~ a3!2 ~ a3 ~ e3 ~ e3 ~ e3 g3 a3!2 g3",
  Q: "~ e3 a3 ~ a3 ~@2 e3 g3 a3 ~ a3 ~ e3 g3 a3", R: "~ a3 e3 ~ g3 a3!2 ~ e3 g3!2 ~ g3 ~ a3 ~", S: "[a3,a4] ~@7",
})).s("gm_electric_guitar_muted").gain(0.2)

// other · electric guitar muted · "tk9" · soft notes
const electric_guitar_muted_2 = note("<~@49 A ~@2 B C D E F G ~ H ~@3 E B ~@17>".pickRestart({
  A: "~@7 a3 ~@4 g3!2 a3 ~", B: "~ a3 ~@14", C: "~@12 g3 ~@3", D: "g3 ~@15", E: "~@7 e3 ~@8", F: "~@3 e3 ~@5 g3 ~@6",
  G: "a3 ~@15", H: "~@3 e3 ~@12",
})).s("gm_electric_guitar_muted").gain(0.1)

// other · lead 4 chiff · "tk11"
const lead_4_chiff = note("<~@29 A B C D E F D G ~@45>".pickRestart({
  A: "a4 a3 ~@3 a3 d4 e4 a4 a3 ~ a3 ~ a3 d4 e4", B: "a4 a3 ~ a3 ~ a3 c4 d4 a4 ~@2 a3 ~ a3 c4 d4",
  C: "a4 a3 ~ a3 ~@2 d4 e4 a4 a3 ~ a3 ~@2 d4 e4", D: "a4 a3 ~ a3 ~ a3 d4 e4 a4 a3 ~ a3 ~ a3 d4 e4",
  E: "a4 ~@2 a3 ~ a3 c4 d4 a4 a3 ~ a3 ~ a3 c4 d4", F: "a4 ~@2 a3 ~ a3 c4 d4 a4 ~@2 a3 ~ a3 d4 e4",
  G: "e4 e3 ~ e3 ~@2 a3 b3 e4 e3 ~ e3 ~@4",
})).s("gm_lead_4_chiff").gain(0.2).pan(0.1)

// other · lead 4 chiff · "tk11" · soft notes
const lead_4_chiff_soft = note("<~@30 A B ~ C D ~ E ~@45>".pickRestart({
  A: "~@9 a3 ~@6", B: "~@5 a3 ~@7 a3 ~@2", C: "~ a3 ~@14", D: "~ a3 ~@7 a3 ~@6", E: "~@5 e3 ~@10",
})).s("gm_lead_4_chiff").gain(0.1).pan(0.1)

// chords · piano · "tk12" · C G A B F
const piano = note(`<
  ~@28
  [~@6 [c5,c6]@2 c#6 ~@3 g4@2 [d4,g4,b4,d5]@2, ~ [a4,a5]@3 d5@3 ~, ~ [b4,b5] d6@2, ~@5 b5@3, ~@3 g5]
  [[c4,f4,a4,c5] ~@7]
  ~@52
>`).s("gm_piano").gain(0.3)

// … 66 more lines

More by Michael Jackson