Strudelify
Will You Be There cover art

1991 · Dangerous

Will You Be There

Michael Jackson

KeyA♭ majorTempo83 bpm
0:00/0:00
// Will You Be There — Jackson Michael
// 83 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 109 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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(`<
  A@2 B@4 C@5 D E F@3 G@6 H@4 I J@3 K L M@4 N@4 O@8 P@4 Q@4 R@3 S T@2 U V W@2 X Y@3 Z@3 AA AB AC AD AE AF AG@4 AH AI AJ
  AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ@2 BA@2 BB BC BD@2
>`.pickRestart({
  A: "[~@22 d4@18 e4@2 d4 e4@3 gb4@2]/2",
  B: "[~@31 e4@4 [d4,gb4]@2 [e4,g4]@5 ~ [gb4,a4]@31 ~@5 [e4,g4,b4]@3 ~@2 [d4,a4]@2 [e4,g4]@5 ~ [d4,gb4]@23 ~ e4@23 ~ d4@36 e4@3 ~ d4@2 e4@6 gb4@4, ~@31 g4@3 ~@49 gb4@2 ~@107]/4", // D Em Gbm Em D5 Em D
  C: "[~@33 [e4,g4]@3 [d4,gb4]@2 ~ [e4,g4]@6 [gb4,a4]@30 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@3 e4@24 d4@37 e4@3 ~ d4@2 e4@6 gb4@37 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6]/5", // Em D Em Gbm Em D Em D …
  D: "[gb4,a4]@31 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@5", E: "~ [d4,gb4]@11 ~ e4@11",
  F: "[~@3 d4@37 e4@3 d4@2 ~ e4@6 gb4@37 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@31 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2]/3", // Em D Em Gbm Em D
  G: "[[e4,g4]@6 [d4,gb4]@22 ~@3 e4@24 d4@36 e4@3 ~ d4@2 e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 d4@36 e4@3 ~ d4]/6", // Em D Em D Em Gbm Em D …
  H: "[~ e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 d4@37 e4@3 ~]/4", // Em D Em Gbm Em D Em D
  I: "d4@2 ~ e4@6 gb4@37 [e4,g4]@2", // Em
  J: "[~ [d4,gb4]@2 ~ [e4,g4]@6 [gb4,a4]@31 ~@6 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@3 e4@24 d4@36]/3", // D Em Gbm Em D Em D
  K: "~ e4@3 ~ d4@2 e4@6 gb4@35", L: "~@2 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 ~ [gb4,a4]@31 ~@2",
  M: "[~@3 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 ~ [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 ~ d4@36 e4@3 ~ d4@2 e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~]/4", // Em D Em D Em D Em Gbm
  N: "[~@5 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 ~@12 a6@4 b5@2 a5@5 ~@13 e4@3 ~ d4@2 e4@6 gb4@36 [e4,g4]@3 ~ [d4,gb4]@2 [e4,g4]@6 [gb4,a4]@30 ~, ~@65 d4@36 ~@91]/4", // Em D Em D Em D Em Gbm
  O: "[~@5 [e4,g4,b4]@3 ~ [d4,gb4,a4]@2 [e4,g4]@6 [d4,gb4]@22 ~@2 e4@24 [a3,c4,f4]@10 ~@2 [g3,bb3,eb4]@10 ~@2 [gb3,a3,d4]@18 ~@7 [a3,c4,f4]@10 ~@2 [g3,bb3,eb4]@10 ~@2 [gb3,a3,d4]@20 ~@4 [a3,c4,f4]@8 ~@4 [g3,bb3,eb4]@6 ~@6 [gb3,a3,d4]@20 ~@5 [g3,c4,e4]@22 ~@2 [a3,db4,e4]@24 e4@36 gb4@3 ~ e4@2 gb4@6 ab4@36 [gb4,a4]@3 ~ [e4,ab4]@2 [gb4,a4]@6 [ab4,b4]@29]/8", // Em D Em D F Eb D F …
  P: "[~@7 [gb4,a4,db5]@3 ~ [e4,ab4,b4]@2 [gb4,a4]@6 [e4,ab4]@22 ~@2 gb4@24 e4@36 gb4@3 ~ e4@2 gb4@6 ab4@36 [gb4,a4]@3 ~ [e4,ab4]@2 [gb4,a4]@6 [ab4,b4]@29]/4", // Gbm E Gbm E Gbm E Gbm Abm
  Q: "[~@7 [gb4,a4,db5]@3 ~ [e4,ab4,b4]@2 [gb4,a4]@6 [e4,ab4]@22 ~@2 gb4@24 gb4@35 ~ ab4@3 ~ gb4@2 ab4@6 bb4@35 [ab4,b4]@3 ~ [gb4,bb4]@2 [ab4,b4]@6 [bb4,db5]@29 ~]/4", // Gbm E Gbm E Abm Gb Abm Bbm
  R: "[~@6 [ab4,b4,eb5]@3 [gb4,bb4,db5]@2 ~ [ab4,b4]@6 [gb4,bb4]@22 ~ ab4@24 gb4@35 ~ ab4@3 gb4@2 ~ ab4@5 bb4@32]/3", // Abm Gb Abm Gb
  S: "~@4 [ab4,b4]@3 ~ [gb4,bb4]@2 [ab4,b4]@6 [bb4,db5]@29 ~@3", // Abm Gb Abm Bbm
  T: "[~@3 [ab4,b4,eb5]@3 ~ [gb4,bb4,db5]@2 [ab4,b4]@6 [gb4,bb4]@22 ~@2 ab4@24 ab4@33]/2", // Abm Gb Abm Gb
  U: "~@2 bb4@3 ab4@2 ~ bb4@6 c5@34", V: "~ [bb4,db5]@3 [ab4,c5]@2 ~ [bb4,db5]@5 [c5,eb5]@29 ~@7",
  W: "[[bb4,db5,f5]@3 [ab4,c5,eb5]@2 [bb4,db5]@6 [ab4,c5]@21 ~@3 bb4@23 ab4@35 bb4@3]/2", // Bbm Ab Bbm Ab
  X: "~ ab4@2 bb4@6 c5@35 [bb4,db5]@3 ~", // Bbm
  Y: "[[ab4,c5]@2 [bb4,db5]@6 [c5,eb5]@29 ~@6 [bb4,db5,f5]@3 ~ [ab4,c5,eb5]@2 [bb4,db5]@6 [ab4,c5]@21 ~@2 bb4@23 ~@43]/3", // Ab Bbm Cm Bbm Ab Bbm Ab
  Z: "[~@38 [f3,ab3]@3 bb3@3 [f3,ab3,db4]@8 [eb3,ab3,c4]@35 ~ [eb3,g3,bb3]@12 [db3,f3,ab3]@21 [ab3,db4,f4]@3 [g3,bb3,c4,eb4]@11 [eb3,g3,bb3]@9]/3", // Fm Db Ab Eb Db Cm7 Eb
  AA: "~@3 [c3,eb3,ab3]@35 ~ [db3,f3,bb3]@9", AB: "~@3 [eb3,c4]@35 [f3,db4]@10, ~ ab3@15",
  AC: "~@2 [ab3,c4,eb4]@35 ~ [db3,f3,bb3]@10", AD: "~@2 [eb3,ab3,c4]@23 [eb3,g3,bb3]@23",
  AE: "~ [ab3,c4,f4]@22 ~@2 [g3,bb3,eb4]@22 ~", AF: "[f3,ab3,db4]@11 ~ [eb3,ab3,c4]@5 ~ [eb3,g3,bb3]@5 ~",
  AG: "[[ab3,c4,eb4]@22 ~@2 [f3,ab3,bb3]@22 ~ [eb3,ab3,db4]@33 ~@3 db4@3 c4@3 bb3@6 [c4,eb4,ab4]@12 eb3@6 [c4,eb4,ab4]@14 ~@4 bb4@3 ~@3 bb4@4 ~@4 c5@45 ~@2, ~@83 [eb3,g3]@12 ~@36 [db4,f4]@12 [ab3,eb4]@47 ~@2, ~@68 ab4 ~@3 ab4@23 ~]/4", // Ab Bb7 Dbsus2 Ab Eb Db Ab5
  AH: "[c4,eb4,ab4,c5]@6 c4@3 eb4@3 bb3@9 ab4@2 g4, ~ [eb4,g4,bb4]", // Ab Eb
  AI: "[ab3,db4,f4,ab4]@18 db4@3 [db4,eb4]@2 ~ [ab3,c4,eb4]@12 [g3,bb3,eb4]@10 ~@2", AJ: "[db3,f3,ab3,db4]",
  AK: "[f3,ab3,db4]@16 ~ [f3,ab3,db4] [bb3,db4,f4,ab4]@6", AL: "[ab3,c4,eb4]@6 c4 eb4",
  AM: "[eb3,g3,bb3]@3 [ab3,c4,eb4,ab4]", AN: "[ab3,db4,f4]@6 f4 eb4", AO: "[ab3,db4,f4]@3 [db4,f4,bb4]",
  AP: "~@12 bb4@3 bb4@2 c5@2 ~ bb4 ab4@2 ~, [c4,eb4,ab4,c5]@11 ~ eb4@11 ~, ~@3 [eb5,eb6]@4 ~@5, ~@4 ab4@3 ~", // Ab Eb
  AQ: "[eb4,g4,bb4]@34 ~@2 db4@3 ~ c4@2 bb3@6, ~@3 [f4,ab4,bb4,db5]", // Eb Bbm7
  AR: "~@8 ab5 ab6@2 ab5@2 ~@5 [db4,f4,bb4]@5 ~, [c4,eb4,ab4,c5]@17 ~@7", AS: "[eb4,ab4,c5]@17 ~ [db4,f4,bb4]@6",
  AT: "[c4,eb4,ab4]@34 ~@2 [db4,f4,bb4]@11 ~", AU: "[eb4,ab4,c5]@17 ~ [f4,ab4,eb5]@6 [eb4,ab4,c5]@12 [eb4,g4,bb4]@12",
  AV: "[c4,f4,ab4]@23 ~ [c4,eb4,g4]@24", AW: "[ab3,db4,f4] [f3,ab3,bb3,db4]", AX: "[eb3,ab3,c4,eb4] [f3,bb3,d4,f4]",
  AY: "[db4,f4,ab4]@12 [f3,ab3,db4]@5 [eb3,g3,c4]@4 [db3,f3,bb3]@3", // Db Cm Bbm
  AZ: "[~@8 ab6 eb6@2 ab5@25 [c4,eb4]@4 ~ [ab3,bb3,db4]@7, [c3,eb3,ab3]@3 ~]/2", // Cm Bbm7 Ab
  BA: "[bb3 ~@14 ab5@2 ~ eb5@3 ab4@50 ~ [c4,eb4]@9 ~ [ab3,bb3,db4]@14, [ab3,eb4]@71 ~@25, ab4@7 ~@25, ~ c4@68 ~@27]/2", // Cm Bbm7 Ab5
  BB: "[eb3,ab3,c4]@47 ab3, bb3 ~@23", BC: "[ab3,c4,eb4]@47 ~", BD: "[[ab3,c4,eb4,ab4]@7 ~]/2",
})).s("gm_piano").gain(0.35).pan(0.3)

// bass · synth bass 2
const bass = note("<~@4 A B C D E ~@8 F G@7 H ~@7 I@8 J K L M@2 N@7 O P Q R@5 S T U V W X Y Z AA@5 ~@35>".pickRestart({
  A: "~@11 d1", B: "~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4",
  C: "~@2 d1@4 ~@12 d1@3 ~@3 d1 ~@2 d1@4 ~@2 d1@3 d1 ~@2 d1@4 ~@2 d1@3",
  D: "~@3 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@3",
  E: "~@4 d1@4 ~@11 d1@3 ~@3 d1 ~@2 d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@4",
  F: "~@7 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1",
  G: "~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1", H: "~ d1@4 ~@43",
  I: "[~@17 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1@4 ~@2 d1@3 ~ d1 ~ d1@4 ~@2 d1@4 ~@2 d1@4 ~@12 d1@3 ~@3 d1 ~ d1]/8",
  J: "~@5 d1@3 ~ d1 ~ d1@4 ~@2 f1@12 eb1@12 d1@7", K: "~@3 d1@2 ~@4 d1@2 ~@4 d1@2 ~ f1@12 eb1@12 d1@6",
  L: "~@2 d1 ~@2 d1 d1@2 ~ f1@6 eb1@6 d1@3",
  M: "[~@4 d1@2 ~@4 d1@2 ~@4 d1@2 ~ c1@8 ~@2 c1@2 ~@4 c1@2 ~@4 c1@2 a1@24 e1@4 ~@2 e1@4 ~@12 e1@3 ~@3 e1]/2",
  N: "~ e1@4 ~@2 e1@3 ~ e1 ~ e1@4 ~@2 e1@4 ~@2 e1@4 ~@12 e1@3 ~@3 e1",
  O: "~ e1@4 ~@2 b1@3 ~ b1 ~ b1@4 ~@2 gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1",
  P: "~ gb1@4 ~@2 gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~",
  Q: "gb1@4 ~@2 gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1 ~",
  R: "[gb1@4 ~@2 gb1@3 gb1 ~@2 gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~ gb1@4 ~@2 gb1@3 ~ gb1 ~ db2@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~@2 gb1@4 ~@2 gb1@3 gb1 ~@2 gb1@4 ~ gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1 ~ gb1@4 ~@2 gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@11 gb1@3 ~@3 gb1 ~@2 gb1@4 ~ gb1@3 ~ gb1 ~ gb1@4 ~@2 gb1@4 ~@2 gb1@4 ~@12 gb1@3 ~@3 gb1 ~ gb1@3]/5",
  S: "~@3 gb1@3 ~ gb1 ~ db1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4",
  T: "~@2 ab1@3 ab1 ~@2 ab1@4 ~@2 ab1@4 ~ ab1@4 ~@12 ab1@3 ~@3 ab1 ~ ab1@4 ~",
  U: "~ ab1@3 ab1 ~@2 ab1@4 ~ ab1@4 ~@2 ab1@4 ~@12 ab1@3 ~@3 ab1 ~ ab1@4 ~@2",
  V: "ab1@3 ab1 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@12 ab1@3 ~@2 ab1 ~@2 ab1@4 ~ ab1@2",
  W: "~@2 ab1 ~ eb2@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~@2 ab1@4 ~ ab1@3",
  X: "~ ab1 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4 ~@2 ab1@3 ~",
  Y: "ab1 ~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4 ~@2 ab1@3 ~ ab1",
  Z: "~ ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@11 ab1@3 ~@3 ab1 ~ ab1@4 ~@2 ab1@3 ~ ab1 ~", AA: "[eb1@2 ~ ab1@5 ~ ab1@89 ~@22]/5",
})).s("gm_synth_bass_2").gain(0.4)

// chords · piano
const piano_2 = note(`<
  ~@4 A@7 B C D E F@8 G@7 H I J@7 K@3 L@2 M N@6 O@8 P Q@2 R S T@6 ~ U V W X Y Z AA AB AC@2 ~@28
>`.pickRestart({
  A: "[~@44 [d2,gb3,a3]@36 [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3,d4]@36 [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@24 ~ [g2,d3,g3,b3]@24 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12, ~@44 d3 ~@291]/7", // D G D G D G D G …
  B: "[d2,d3,gb3,a3,d4]@36 ~ [g2,d3,g3,b3]@11", C: "~ [d2,d3,gb3,a3]@12 [g2,d3,g3,b3]@11",
  D: "~@3 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@8", E: "~@4 [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@7",
  F: "[~@5 [d2,d3,gb3,a3,d4]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@24 ~ [g2,d3,g3,b3]@24 [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@5]/8", // D G D G D G D G …
  G: "[~@7 [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 ~ [d2,d3,gb3,a3]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3,d4]@36 ~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@24 ~ [g2,d3,g3,b3]@24 [d2,d3,gb3,a3]@36]/7", // D G D G D G D G …
  H: "~ [g2,d3,g3,b3]@12 [d2,d3,gb3,a3]@35", I: "~@2 [g2,d3,g3,b3]@12 ~ [d2,d3,gb3,a3,d4]@33",
  J: "[~@3 [g2,d3,g3,b3]@12 ~ [d2,d3,gb3,a3]@24 [g2,d3,g3,b3]@24 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@31]/7", // G D G D G D G D …
  K: "[~@5 [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3,a3]@23 ~ [g2,d3,g3,b3]@23 ~ f3@12 eb3@12 d3@7]/3", // G D G D G
  L: "[~@3 f3@2 eb3@2 d3@4 f3@2 eb3@2 d3]/2", M: "~@19 c3@24 a2@5",
  N: "[~@19 [e2,e3,ab3,b3]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3,e4]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@23 ~ [a2,e3,a3,db4]@23 ~ [e2,e3,ab3,b3]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@29]/6", // E A E A E A E A …
  O: "[~@7 [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3,e4]@35 ~ [a2,e3,a3,db4]@11 ~ [e2,e3,ab3,b3]@23 ~ [a2,e3,a3,db4]@23 ~ [gb2,gb3,bb3,db4]@35 ~ [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4]@35 [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4,gb4]@35 ~ [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4]@23 [b2,gb3,b3,eb4]@23 ~ [gb2,gb3,bb3,db4]@35 ~ [b2,gb3,b3,eb4]@11 [gb2,gb3,bb3,db4]@32]/8", // A E A E A Gb B Gb …
  P: "~@4 [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4,gb4]@32", // B Gb
  Q: "[~@3 [b2,gb3,b3,eb4]@11 ~ [gb2,gb3,bb3,db4]@23 ~ [b2,gb3,b3,eb4]@23 ~ [ab2,ab3,c4,eb4]@33]/2", // B Gb B Ab
  R: "~@2 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4]@34", S: "~ [db3,ab3,db4,f4]@11 [ab2,ab3,c4,eb4,ab4]@35 ~",
  T: "[[db3,ab3,db4,f4]@11 [ab2,ab3,c4,eb4]@23 ~ [db3,ab3,db4,f4]@23 [ab2,ab3,c4,eb4]@35 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4]@35 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4,ab4]@35 [db3,ab3,db4,f4]@11 ~ [ab2,ab3,c4,eb4]@23 [db3,ab3,db4,f4]@23 ~@43]/6", // Db Ab Db Ab Db Ab Db Ab …
  U: "~@5 g3", V: "~@4 f3@23 ~ eb3@11 ~ db3@8", W: "~@3 c3@35 ~ bb2@9", X: "~@3 ab2@35 db3@10",
  Y: "~@2 ab2@35 ~ bb2@10", Z: "~@2 c3@11 ~ eb2@11 eb2@11 ~ e2@11", AA: "~ f2@23 ~ eb2@23",
  AB: "~ db2@23 ab2@11 ~ eb2@11 ~", AC: "[ab2@47 eb2@47 ~@2]/2",
})).s("gm_piano").gain(0.25).pan(0.7)

// chords · piano · soft notes
const piano_soft = note("<A@5 ~@78 B C D E F@2 G H I@2 J K L M N O P G Q@2 R@2 S@2 T@2>".pickRestart({
  A: "[~@44 [d2,d3,gb3,a3]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,gb3,a3]@35 [g2,d3,g3,b3]@11 ~@2 [d2,d3,gb3,d4]@35 ~ [g2,d3,g3,b3]@11 ~ [d2,d3,gb3]@23 ~ [g2,d3,g3]@23 ~@5, ~@91 d3@35 ~@13 a3@35 ~@13 a3@23 ~ b3@23 ~@6]/5", // D G D G D G D G5
  B: "ab2@23 ~ g2@23 ~", C: "f2@23 ~ eb2@11 ~ db2@11 ~", D: "db2@43 ~@3 db2@2", E: "db2 ~@47", F: "[ab2,eb3]@47 ~",
  G: "db3@47 ~", H: "db3@35 ~ bb2@11 ~", I: "[eb2@43 ~@4 eb2@35 ~@2 bb2@11 ~]/2", J: "ab2@35 ~ db3@11 ~",
  K: "c3@35 ~ db3@11 ~", L: "c3@35 ~ bb2@11 ~", M: "c3@18 db3@6 eb3@11 ~ eb2@11 ~", N: "f2@23 ~ c2@23 ~",
  O: "db2@23 ~ bb2@23 ~", P: "eb2@31 ~@5 f3@11 ~", Q: "[ab2@35 c3 eb3@5 db3@7]/2",
  R: "[ab2@67 ~@3 c3@2 eb3@10 db3@14]/2", S: "ab2@47 ~", T: "[ab2@83 ~@13]/2",
})).s("gm_piano").gain(0.15).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A@5 ~@8 B@7 C@2 ~@3 D@7 E@4 F@8 G@8 H@6 I J K@2 L M@6 ~@3 N O P Q@4 ~@2 R S T@2 U@2 V@8 ~@10
>`.pickRestart({
  A: "[~@44 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 ~ g5@3 gb5@2 ~ g5@6 a5@36 b5@3 ~ a5@2 g5@6 gb5@24 ~ e5@24 ~@2]/5",
  B: "[~@7 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@36 b5@3 ~ a5@2 g5@6 gb5@24 e5@24 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@36 b5@3 ~ a5]/7",
  C: "[~ g5@6 gb5@24 e5@24 ~@41]/2", D: "[~@12 d6@197 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@31]/7",
  E: "[~@5 b5@3 ~ a5@2 g5@6 gb5@24 e5@24 d5@36 e5@3 ~ d5@2 e5@6 gb5@36 g5@3 ~ gb5@2 g5@6 a5@31]/4",
  F: "[~@5 b5@3 ~ a5@2 g5@6 gb5@24 e5@24 f5@12 eb5@12 d5@24 ~ [f5,a5]@12 [eb5,g5]@12 [d5,gb5]@24 [f5,a5,c6]@12 [eb5,g5,bb5]@12 [d5,gb5,a5]@24 ~ [c5,g5]@24 [db5,a5]@24 e5@36 gb5@3 ~ e5@2 gb5@6 ab5@36 a5@3 ~ ab5@2 a5@6 b5@29, ~@211 e5@48 ~@125]/8", // F Eb D F Eb D C5 Gbm
  G: "[~@7 db6@3 ~ b5@2 a5@6 ab5@24 gb5@24 e5@36 gb5@3 ~ e5@2 gb5@6 ab5@36 a5@3 ~ ab5@2 a5@6 b5@36 db6@3 ~ b5@2 a5@6 ab5@24 gb5@24 gb5@36 ab5@3 ~ gb5@2 ab5@6 bb5@35 b5@3 ~ bb5@2 b5@6 db6@30]/8",
  H: "[~@6 eb6@3 db6@2 ~ b5@6 bb5@23 ab5@24 gb5@36 ab5@3 gb5@2 ~ ab5@5 bb5@36 b5@3 ~ bb5@2 b5@6 db6@35 eb6@3 ~ db6@2 b5@6 bb5@24 ab5@24 ab5@33]/6",
  I: "~@2 bb5@3 ab5@2 ~ bb5@6 c6@34", J: "~ db6@3 c6@2 ~ db6@5 eb6@35 ~",
  K: "[f6@3 eb6@2 db6@6 c6@23 ~ bb5@23 ab5@35 bb5@3]/2", L: "~ ab5@2 bb5@6 c6@35 db6@3 ~",
  M: "[c6@2 db6@6 eb6@35 f6@3 ~ eb6@2 db6@6 c6@23 bb5@23 ~ ab4@166 ~@20]/6", N: "~@14 ab6@11 g6@12 ab6@11",
  O: "~ f6@24 eb6@23", P: "~ db6@23 c6@11 ~ bb5@12", Q: "[eb6@65 ab5@29 ~ ab6@97]/4", R: "~ ab6", S: "bb6", T: "c7/2",
  U: "db7/2", V: "eb7/8",
})).s("gm_string_ensemble_1").gain(0.25)

// other · string ensemble 2
const string_ensemble_2 = note("<~@72 A@2 B C D E F G@2 ~@10 H I J K L M N O P Q@8 ~>".pickRestart({
  A: "[~@4 db4@23 ~ eb4@12 g4@11 ab4@35 ~ bb4@9]/2", B: "~@3 c5@35 db5@10", C: "~@2 eb5@35 ~ db5@10",
  D: "~@2 c5@23 bb4@23", E: "~ ab4@23 ~ g4@23", F: "~ f4@23 ab4@12 g4@12", G: "[ab4@23 ~ bb4@23 db5@35 ~ c5@10 ~@3]/2",
  H: "~ ab4", I: "bb4", J: "ab4@3 bb4", K: "c5@3 db5", L: "eb5@3 db5", M: "c5@3 db5 c5@2 bb4@2", N: "ab4 g4",
  O: "f4 db4", P: "c4 d4", Q: "[~@120 eb4@8 ~ db4@14 ~ c4@72 eb4@10 db4@14 c4@144, ab4]/8",
})).s("gm_string_ensemble_2").gain(0.3)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@69 A@6 B C D E F@2 ~@15 G H I J K L@8>".pickRestart({
  A: "[~@6 ab2@189 ab2@83 bb2@10]/6", B: "~ c3@18 bb2@5", C: "~@2 ab2@23 eb2@12 e2@11", D: "~ f2@24 eb3@23",
  E: "~ db3@23 c3@12 db3@12", F: "[eb3@24 bb2@23 db3@47 ~@2]/2", G: "~@3 eb2", H: "f2 c2", I: "db2 bb2", J: "eb2 f2",
  K: "ab2", L: "[ab2@31 ~]/8",
})).s("gm_string_ensemble_1").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A B C D E F G H I J K L@9 M N O P Q R S T U@8 V W X Y Z AA@9 AB AC U AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@2
  AR AS H AT G AU@2 AV@2 AU@25 ~@2
>`.pickRestart({
  A: "~ x ~@2 x ~", B: "~@8 x ~@24 x ~@14", C: "~@3 x ~@7 x ~@4", D: "~@5 x ~@11 x ~@6", E: "~@10 x ~@24 x ~@12",
  F: "~@11 x ~@24 x ~@11", G: "~@13 x ~@23 x ~@10", H: "~@7 x ~@11 x ~@4", I: "~@15 x ~@24 x ~@7",
  J: "~@16 x ~@24 x ~@6", K: "~@17 x ~@24 x ~@5", L: "~@19 x ~@23 x ~@4", M: "~@5 x ~@5 x", N: "~@21 x ~@24 x ~",
  O: "~@22 x ~@24 x", P: "~@23 x ~@24", Q: "x ~@24 x ~@22", R: "~ x ~@24 x ~@21", S: "~@2 x ~@24 x ~@20",
  T: "~@3 x ~@24 x ~@19", U: "~@5 x ~@23 x ~@18", V: "~@5 x ~@11 x ~@11 x ~@11 x ~@6", W: "~ x ~ x ~ x!2 ~@3 x ~@3 x ~",
  X: "~@2 x ~@2 x!2 ~@2 x ~@5 x ~@5 x ~@2", Y: "~@4 x ~@5 x ~@5 x ~@2 x ~@9 x ~@5 x ~@5 x ~ x ~@4",
  Z: "~@5 x ~@5 x ~@5 x ~@13 x ~@16", AA: "~@7 x ~@23 x ~@16", AB: "~ x ~@3 x ~@2", AC: "~@6 x ~@22 x ~@18",
  AD: "~@5 x ~@22 x ~@19", AE: "~ x ~@5 x ~@4", AF: "~ x ~@7 x ~@6", AG: "~@3 x ~@22 x ~@21", AH: "~@2 x ~@22 x ~@22",
  AI: "~ x ~@22 x ~@23", AJ: "x ~@22 x ~@22 x ~", AK: "~@22 x ~@22 x ~@2", AL: "~@21 x ~@22 x ~@3",
  AM: "~@20 x ~@22 x ~@4", AN: "~@19 x ~@22 x ~@5", AO: "~@18 x ~@22 x ~@6", AP: "~@17 x ~@23 x ~@6", AQ: "~@2 x ~@2 x",
  AR: "~@5 x ~@7 x ~@2", AS: "~@15 x ~@22 x ~@9", AT: "~@14 x ~@22 x ~@10", AU: "~ x ~ x", AV: "~@11 x ~@23 x ~@12",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct(`<
  ~@5 A B C D E F G H I J K L M@3 N M@3 N ~@8 O P@3 Q P@3 R S T U V W@3 X W@3 X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA AW@3 BB AW@3 BB AW@3 BB AW@3 BB AW@3 BB AW@3 BB ~@2
>`.pickRestart({
  A: "~ x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@7", B: "~@2 x ~@5 x ~@9 x ~@5 x ~@2 x ~@5 x ~@14",
  C: "~@3 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@14", D: "~@4 x ~@5 x ~@8 x ~@5 x ~@2 x ~@9 x ~@9", E: "~@10 x ~@24 x ~@12",
  F: "~@11 x ~@24 x ~@11", G: "~@13 x ~@23 x ~@10", H: "~@7 x ~@11 x ~@4", I: "~@15 x ~@24 x ~@7",
  J: "~@16 x ~@24 x ~@6", K: "~@17 x ~@24 x ~@5", L: "~@19 x ~@23 x ~@4", M: "~@13 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@4",
  N: "~@13 x ~@5 x ~@9 x ~@5 x ~ x ~@9 x", O: "~@23 x ~@5 x ~@9 x ~@5 x ~ x", P: "~@5 x ~@17 x ~@5 x ~@9 x ~@5 x ~ x",
  Q: "~@5 x ~@3 x ~@13 x ~@5 x ~@9 x ~@5 x ~ x", R: "~@5 x ~@3 x ~@7 x ~@11 x ~@11 x ~@6",
  S: "~@3 x ~@11 x ~@2 x ~@11 x ~@9 x ~ x ~@5", T: "x ~@2 x ~ x ~ x", U: "~@4 x ~@11 x ~@2 x ~@9 x ~@13 x ~@4",
  V: "~@5 x ~@7 x ~@3 x ~@7 x ~@5 x ~@9 x ~@5 x", W: "~ x ~@5 x ~@17 x ~@5 x ~@9 x ~@5 x",
  X: "~ x ~@5 x ~@3 x ~@13 x ~@5 x ~@9 x ~@5 x", Y: "~ x ~@5 x ~@17 x ~@4 x!2 ~@8 x ~@5 x ~",
  Z: "x ~@2 x ~@8 x ~@2 x ~@4 x ~@2 x", AA: "x ~@4 x!2 ~@17 x ~@4 x ~@9 x ~@5 x ~ x",
  AB: "~@5 x ~@3 x ~@13 x ~@5 x ~@8 x ~@5 x ~@2 x", AC: "~@4 x!2 ~@16 x ~@5 x ~@9 x ~@5 x ~ x ~",
  AD: "~@4 x ~@17 x ~@4 x!2 ~@8 x ~@5 x ~@2 x ~", AE: "~@3 x ~@17 x ~@5 x ~@9 x ~@5 x ~ x ~@2",
  AF: "~@3 x ~@3 x ~@13 x ~@4 x ~@9 x ~@5 x ~ x ~@3", AG: "~@2 x ~@16 x ~@5 x ~@9 x ~@5 x ~ x ~@4",
  AH: "x!2 ~@16 x ~@5 x ~@9 x ~@5 x ~ x ~@4 x", AI: "x ~@16 x ~@5 x ~@9 x ~@4 x ~@2 x ~@4 x ~",
  AJ: "~@2 x ~@13 x ~@5 x ~@8 x ~@5 x ~@2 x ~@4 x ~@2", AK: "~@15 x ~@5 x ~@8 x ~@5 x ~ x ~@5 x ~@3",
  AL: "~@14 x ~@4 x!2 ~@8 x ~@5 x ~ x ~@5 x ~@4", AM: "~@13 x ~@4 x!2 ~@8 x ~@5 x ~ x ~@5 x ~@3 x ~",
  AN: "~@12 x ~@5 x ~@8 x ~@5 x ~ x ~@5 x ~@6", AO: "~@11 x ~@5 x ~@9 x ~@4 x ~@2 x ~@5 x ~@6",
  AP: "~@5 x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@3", AQ: "~@10 x ~@5 x ~@8 x ~@5 x ~@2 x ~@8 x ~@4",
  AR: "~@9 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@8", AS: "~@9 x ~@5 x ~@8 x ~@5 x ~ x ~@5 x ~@9",
  AT: "~@4 x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@4", AU: "~@8 x ~@5 x ~@8 x ~@5 x ~ x ~@9 x ~@6",
  AV: "~@7 x ~@5 x ~@9 x ~@4 x ~@2 x ~@5 x ~@10", AW: "~@3 x ~@2 x ~@4 x ~@2 x!2 ~@2 x ~@5",
  AX: "~@2 x ~ x ~@2 x ~ x!2 ~ x ~@3", AY: "~@5 x ~@5 x ~@9 x ~@5 x ~ x ~@9 x ~@8",
  AZ: "~@5 x ~@5 x ~@9 x ~@5 x ~ x ~@5 x ~@12", BA: "~@5 x ~@6 x ~@8 x ~@5 x ~@2 x ~@5 x ~@11",
  BB: "~@3 x ~@2 x ~@4 x ~@2 x!2 ~@4 x ~@3",
})).gain(0.3)
// … 160 more lines

More by Michael Jackson