Strudelify

King of Pain

Alanis Morissette

KeyB minorTempo124 bpm
0:00/0:00
// King of Pain — Alanis Morissette
// 124 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 6/4 at bar 61, 4/4 at bar 63) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 11 overdriven guitar (copy of ch 6 lead 5 charang); ch 15 pizzicato strings (copy of ch 9 kalimba)
// note: Full arrangement: all 150 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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 C D E F@2 G@7 H I J K@5 L M N O P@2 Q@7 ~@15 R S T S T U T U V@2 ~@16 W X W X W Y W Z@2 AA AB AC AB AC AB AA
  ~@10 AD@2 AE@2 AF@2 AG@2 ~@14 AH@4 AI AJ AI AK AH@4 AI AJ AI AK AH@4 AI AJ AI AL@2
>`.pickRestart({
  A: "[~@15 [b2,f#3,b3,f#4]@5 ~@2 [a2,e3,a3,e4]@9 ~]/2", B: "[b2,f#3,b3,f#4]@5 ~ [a2,e3,a3,e4]@9 ~",
  C: "~ [b2,f#3,b3,f#4]@5 ~ [a2,e3,a3,e4]@9", D: "~@2 [b2,f#3,b3,f#4]@5 ~ [a2,e3,a3,e4]@8",
  E: "~@2 [b2,f#3,b3,f#4]@5 ~@2 [a2,e3,a3,e4]@7", // B5 A5
  F: "[~@3 [b2,f#3,b3,f#4]@6 ~ [a2,e3,a3,e4]@9 ~ [b2,f#3,b3,f#4]@6 [a2,e3,a3,e4]@6]/2", // B5 A5 B5 A5
  G: "[~@5 [b2,f#3,b3,f#4]@6 [a2,e3,a3,e4]@8 ~@3 [b2,f#3,b3,f#4]@5 ~ [a2,e3,a3,b3,e4]@9 ~@2 b2@5 ~ [a2,e3,a3,b3,e4]@9 ~ [b2,f#3,b3,f#4]@6 ~ [a2,e3,a3,b3,e4]@9 ~ [b2,f#3,b3,f#4]@6 [a2,e3,a3,b3,e4]@9 ~@2 [g2,d3,b3,f#4]@6 [a2,e3,a3,e4]@10 ~ [g2,d3,b3,f#4]@6, ~@19 [f#3,b3,f#4]@3 ~@34]/7", // B5 A5 B5 Asus2 B5 Asus2 B5 Asus2 …
  H: "[a2,e3,a3,e4]@9 ~@2 [f#2,c#3,f#3,b3,f#4]@5", I: "~ [f#2,c#3,f#3,b3,e4]@9 ~ [g2,d3,g3,b3,f#4]@5",
  J: "~ [g2,d3,g3,b3,e4]@5 [b2,f#3,b3,f#4]@2", // Em7 B5
  K: "[~@3 [a2,e3,a3,b3,e4]@9 ~ [b2,f#3,b3,f#4]@6 [a2,e3,a3,b3,e4]@9 ~@2 [b2,f#3,b3,f#4]@6 [a2,e3,a3,b3,e4]@9 ~@2 [b2,f#3,b3,f#4]@6 [a2,e3,a3,b3,e4]@9 ~ [g2,d3,b3,f#4]@6 ~ [a2,e3,a3,e4]@10]/5", // Asus2 B5 Asus2 B5 Asus2 B5 Asus2 Gmaj7 …
  L: "[g2,d3,b3,f#4]@6 ~ [a2,e3,a3,e4]@9", M: "~ [f#2,c#3,f#3,b3,f#4]@6 [f#2,c#3,f#3,b3,e4]@9",
  N: "~ [g2,d3,g3,b3,f#4]@3 [g2,d3,g3,b3,e4]@4", O: "~@3 [d2,a2,a3,d4]@6 [e2,b2,a3,c#4]@7",
  P: "[~@4 [f#2,c#3,a3,d4]@6 [g2,d3,g3,a3,b3]@10 [d2,a2,a3,d4]@6 ~ [e2,b2,a3,c#4]@5]/2", // Dmaj7 G D5 A
  Q: "[~@5 [f#2,c#3,a3,d4]@6 [g2,d3,g3,a3,b3]@10 ~ [d2,a2,a3,d4]@6 [e2,b2,a3,c#4]@10 ~ [f#2,c#3,a3,d4]@6 [g2,d3,g3,a3,b3]@10 ~ [d2,a2,a3,d4]@6 [e2,b2,a3,c#4]@10 [f#2,c#3,a3,d4]@6 ~ [g2,d3,g3,a3,b3]@27 ~@6]/7", // Dmaj7 G D5 A Dmaj7 G D5 A …
  R: "~@5 [d2,d3]@2 ~", S: "[e2,e3] ~ [f#2,f#3] ~", T: "~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~ [d2,d3]@4 ~@2",
  U: "[e2,e3]@4 ~@4 [f#2,f#3]@3 ~@5", V: "[~ [g3,b3,d4]@15]/2", W: "~ [d2,d3]@2 ~ [e2,e3]@2 ~@2",
  X: "[f#2,f#3]@4 ~@6 [g3,b3,d4]@3 ~ [g3,b3,d4]@2", Y: "[f#2,f#3]@3 ~@7 [g3,b3,d4]@3 ~ [g3,b3,d4]@2",
  Z: "[[f#2,f#3]@3 ~@7 [g3,b3,d4]@8 [e4,a4,c#5]@3 ~@5 [f#4,a4,c#5]@5 ~]/2", // F# G A F#m
  AA: "[e4,a4,c#5]@3 ~@5 e4 ~ [f#4,a4,c#5]@3 ~ [f#4,a4,c#5]@2", AB: "~@2 [e4,a4,c#5]@3 ~@5 [f#4,a4,c#5]@5 ~",
  AC: "[e4,a4,c#5]@2 ~@6 e4 ~ [f#4,a4,c#5]@3 ~ [f#4,a4,c#5]@2", // A F#m
  AD: "[~@10 [e5,e6]@17 ~@5, ~@2 [b4,b5]@25 ~@5, ~@6 [c5,c6]@21 ~@5]/2", // E B C
  AE: "[~ [a5,a6]@4 [b5,b6]@4 ~@4 [e6,e7]@17 ~@2, ~@9 [g5,g6]@21 ~@2]/2", // A B E G
  AF: "[~ [a4,a5]@3 b4@4 [g5,g6]@19 ~ [b4,b5]@4, ~@4 b5@23 ~@5]/2", AG: "[~@2 [b4,b5]@13 ~, [e5,e6]@15 ~]/2",
  AH: "[[d2,d3]@4 ~@2 [e2,e3]@4 ~@4 [f#2,f#3]@4 ~@6 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~]/2", // D E F# G
  AI: "[d2,d3]@2 ~ [e2,e3]@2 ~@2 [f#2,f#3]", AJ: "~@8 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~", AK: "~ [g3,b3,d4]",
  AL: "[~@3 [g3,b3,d4]@9 ~@4]/2", // G
})).s("gm_piano").gain(0.38).pan(0.6)

// bass · fretless bass
const bass = note(`<
  A@2 B C D E@2 F@8 G H I@6 J K L M N O@8 P Q R S T U V W P Q R S T U V X Y Z AA Z AB Z AB AC@2 AD AE AF AG AH AI AJ
  AK@2 AL AM AN AO AP AQ AR AS AT AU AV AW AX AW AY@2 AZ BA BB BC BD BC AZ BE BF BG BF BH AP AJ BI ~@10 BJ@2 ~@2 BK BL
  ~@6 BM BN BO BP BQ@2 BO BP BQ@2 BO BP BQ@2 BO BP BQ@2 BO BP BQ@2 BO BP BR@2 ~
>`.pickRestart({
  A: "[~@15 b2@5 ~@2 a2@10]/2", B: "b2@5 ~ a2@10", C: "~ b2@6 a2@9", D: "~ b2@3 a2@4",
  E: "[~@2 b2@6 ~ a2@10 b2@6 ~ a2@6]/2",
  F: "[~@4 b2@6 a2@10 ~ b2@6 a2@9 ~@2 b2@6 a2@10 ~ b2@6 a2@9 ~ b2@6 ~ a2@10 b2@6 a2@9 ~@2 g2@6 a2@10 ~ g2@6]/8",
  G: "a2@10 ~ [c#2,f#2]@5", H: "~ [c#2,f#2]@10 [g2,b2]@5",
  I: "[~@2 [g2,b2]@9 ~ b2@6 ~ a2@10 b2@6 a2@9 ~@2 b2@6 a2@10 ~ b2@6 a2@9 ~ g2@6 ~ a2@10]/6", J: "g2@6 ~ a2@9",
  K: "~ [c#2,f#2]@6 [c#2,f#2]@9", L: "~ [g2,b2]@3 [g2,b2]@4", M: "~@3 [d2,a2]@6 [e2,b2]@7",
  N: "~@2 [f#2,c#3]@3 [g2,d3]@3", // F#5 G5
  O: "[~@4 [d2,a2]@6 ~ [e2,b2]@10 [f#2,c#3]@6 [g2,d3]@10 ~ [d2,a2]@6 [e2,b2]@10 ~ [f#2,c#3]@6 [g2,d3]@10 ~ [d2,a2]@6 [e2,b2]@10 [f#2,c#3]@5 ~@2 [g2,d3]@27 b1@2 b1 ~ b1 ~]/8", // D5 E5 F#5 G5 D5 E5 F#5 G5 …
  P: "b1 ~ b1 ~ a1@3 ~ b1@3 ~ b1@3 ~", Q: "b1 ~ b1@2 a1 ~ a1 ~@3 b1@2 b1 ~ b1@2", R: "b1 ~ b1@2 a1@3 ~ b1@7 ~",
  S: "b1 ~ b1@2 a1 ~ a1@2 ~@2 g1@2 g1 ~ g1@2", T: "g1 ~ g1@2 a1@3 ~ g1 ~ g1@3 ~ g1@2",
  U: "~@2 g1@2 a1@2 a1@2 ~@2 f#1 ~ f#1 ~ f#1 ~", V: "f#1 ~ f#1 ~ f#1@3 ~ g1@3 ~ g1 ~ g1 ~",
  W: "g1 ~ g1@3 ~ g1@3 ~ b1@2 b1 ~ b1 ~", X: "g1 ~ g1@3 ~ g1@2 a1@2 d2@3 ~@3", Y: "e1@4 ~@4 f#1 ~ f#1@3 ~@3",
  Z: "f#1@2 g1@2 b1@2 d2@3 ~ d2@3 ~@3", AA: "e1@3 ~@5 f#1@4 ~@4", AB: "e1@4 ~@4 f#1@3 ~@5", AC: "[~@2 g1@25 ~@5]/2",
  AD: "~@2 b1 ~ b1 ~ b1 ~ b1 ~ b1@2 a1@2 ~@2", AE: "b1@6 ~@2 e2@2 b1@2 a1 ~ a1@2",
  AF: "~@2 b1 ~ b1 ~ b1@2 b1@2 e2@2 a1@2 ~@2", AG: "b1@7 ~ e2@2 a1 ~ a1 ~ a1@2",
  AH: "~@2 g1 ~ g1 ~ g1@2 g1 ~ g1 ~ a1@2 ~@2", AI: "g1 ~ g1@3 ~ g1@3 ~ g1@2 a1@2 a1@2",
  AJ: "~@2 f#1 ~ f#1 ~ f#1 ~ f#1@3 ~ f#1@3 ~",
  AK: "[g1 ~ g1@3 ~ g1@3 ~ g1@2 ~@2 g1@4 b1 ~ b1 ~ b1@2 b1 ~ b1@2 a1@3 ~]/2", AL: "b1@2 b1@3 ~ b1@3 ~ b1@2 a1 ~ a1@2",
  AM: "~@2 b1@2 b1 ~ b1@2 b1 ~ b1 ~ a1@3 ~", AN: "b1 ~ b1@3 ~ b1@3 ~ b1 ~ a1 ~ a1@2",
  AO: "a1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 a1@3 ~", AP: "g1 ~ g1@5 ~ g1 ~ g1 ~ a1 ~ a1@2",
  AQ: "~@2 f#1 ~ f#1 ~ f#1 ~ f#1@3 ~ f#1@2 ~@2", AR: "g1 ~ g1@4 ~@2 g1 ~ g1@3 ~ g1@2", AS: "a1@2 d2@3 ~@3 e1@4 ~@4",
  AT: "f#1 ~ f#1@3 ~@3 f#1@2 g1@2 b1@2 d2@2", AU: "~@2 d2@3 ~@3 e1@3 ~@5", AV: "f#1@2 ~@2 f#1 g1 b1 d2",
  AW: "~@2 d2@3 ~@3 e1@4 ~@4", AX: "f#1@3 ~@5 f#1@2 g1@2 b1@2 d2@2",
  AY: "[f#1@3 ~@5 f#1@2 g1@2 b1@2 d2@4 a1@2 ~@6 g1@3 ~@3]/2", AZ: "a1@2 ~@6 a1 ~ g1@3 ~ g1@2",
  BA: "~@2 a1@2 ~@6 g1@3 ~@3", BB: "a1@3 ~@5 a1@2 g1@3 ~ g1@2", BC: "~@2 a1@3 ~@5 g1@3 ~@3",
  BD: "a1@2 ~@6 a1@2 g1@3 ~ g1@2", BE: "~@2 b1 ~ b1 ~ b1 ~ e2@2 b1@2 a1@3 ~", BF: "b1@7 ~ e2@2 b1@2 a1 ~ a1@2",
  BG: "~@2 b1 ~ b1@2 b1 ~ e2@2 b1@2 a1@3 ~", BH: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ a1@3 ~",
  BI: "g1@6 ~@2 g1@2 g1@2 g1 ~ g1@2", BJ: "[b1 ~ b1 ~ b1 ~ b1 ~ b1@2 a1@2 ~@2 b1@7 ~ e2@2 b1@2 a1@2 a1@2 ~@2]/2",
  BK: "f#1 ~ f#1 ~ f#1 ~ f#1@3 ~ f#2@3 ~ g1@2", BL: "~@2 g1@2 ~@2 g1 ~ g1@3 ~ g1@3 ~",
  BM: "f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", BN: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  BO: "d2@3 ~@3 e1@4 ~@4 f#1 ~", BP: "f#1@3 ~@3 f#1@2 g1@2 b1@2 d2@3 ~",
  BQ: "[d2@3 ~@3 e1@3 ~@5 f#1@4 ~@4 f#1@2 g1@2 b1@2 d2@3 ~]/2", BR: "[d2@3 ~@3 e1@3 ~@5 f#1@4 b1@2 d2@2 ~@10]/2",
})).s("gm_fretless_bass").gain(0.55)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@51 A B C@4 D E F ~@17 G C@5 H I ~@16 J K L@2 M N M@2 O@6 P Q ~@6 R@2 S C@3 S C@3 S C@3 S C@3 S C@3 S C@2 T ~
>`.pickRestart({
  A: "~@10 [d3,a3]!6", B: "d3 [d3,a3]!15", C: "[d3,a3]!16", D: "[d3,a3]!12 d3 [d3,a3]!3", E: "[d3,a3]!15 d3",
  F: "[d3,a3] d3 ~@14", G: "~@2 [d3,a3]!6 d3 [d3,a3]!7", H: "[d3,a3]!4 d3 [d3,a3]!11", I: "[d3,a3]!7 d3 [d3,a3] d3 ~@6",
  J: "~@2 [a2,a3,c4]!14", K: "[a2,a3,c4]!14 [a2,c4] [a2,a3,c4]", L: "[a2,a3,c4]!11 [a2,a3] [a2,a3,c4]!4",
  M: "[a2,a3,c4]!16", N: "[a2,a3,c4]!8 [a3,c4] [a2,a3,c4]!7", O: "[a3,b3]!16", P: "a3 [a3,b3]!15", Q: "g3!16",
  R: "a3!16", S: "[d3,a3]!6 d3 [d3,a3]!9", T: "[d3,a3]!6 ~@10",
})).s("gm_electric_guitar_muted").gain(0.22)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@37 A B@2 ~ A C@2 ~ A B@2 ~ A D@2 E@6 F@2 ~@3 G H ~@2 I J ~@2 G H ~@2 I K L M L M L M L N O P Q R S T U V@3 ~@16 W@2
  ~@2 X@2 ~@7 Y Z AA Z AA Z AA Z AB ~@17
>`.pickRestart({
  A: "~@5 [a3,c#4,e4] [a3,e4]@2", B: "[[a3,c#4,e4]@4 [a3,b3,e4]@4 [a3,e4]@13 ~@11]/2",
  C: "[[a3,d4,e4]@2 [a3,c#4,e4]@2 [g3,b3,d4]@5 ~@7]/2", D: "[[a3,d4,e4]@2 [a3,c#4,e4]@2 [g3,b3,d4]@5 ~@2 d4!2 f#4!3]/2",
  E: "[f#4@3 ~ f#4@2 f#4@2 f#4@2 f#4@4 f#4@4 d4@3 ~ d4@2 d4@2 f#4@2 f#4@2 f#4@2]/2",
  F: "[f#4@3 ~ f#4@2 f#4@2 f#4@2 f#4@4 f#4@4 [g3,d4]@14]/2", G: "~ [a3,c#4,e4] [a3,e4]@2 [a3,c#4,e4]@2 [a3,b3,e4]@2",
  H: "[a3,e4]@13 ~@3", I: "~ [a3,c#4,e4] [a3,e4]@2 [a3,d4,e4]@2 [a3,c#4,e4]@2", J: "[g3,b3,d4]@5 ~@3",
  K: "[g3,b3,d4]@5 ~@2 d4", L: "d4@2 f#4@2 f#4@2 f#4@2 f#4@3 ~ f#4@2 f#4@2", M: "f#4@2 f#4@4 f#4@4 d4@3 ~ d4@2",
  N: "f#4 f#4@2 f#4@2 [b3,d4]@3", O: "[a3,c#4]@3 ~ c#4@2 c#4@2 c#4@4 c#4@2 c#4@2", P: "e4@2 d4 c#4 b3@2 b3@2",
  Q: "c#4@2 c#4!2 c#4@2 c#4@2", R: "e4@2 e4!2 f#4 d4!3", S: "c#4@4 c#4@2 c#4@2 c#4@4 c#4@3 ~",
  T: "e4@2 e4!2 f#4 d4@2 d4", U: "c#4@4 c#4@2 c#4@2 c#4!2 c#4@4 c#4@2", V: "[e4@2 a3 b3 c#4 d4@2 e4@4 f#4@6 ~@7]/3",
  W: "[[a3,c#4,e4]@2 [a3,e4]@4 [a3,c#4,e4]@4 [a3,b3,e4]@4 [a3,e4]@13 ~@5]/2", // A A5 A Asus2 A5
  X: "[[a3,c#4,e4] [a3,e4]@2 [a3,d4,e4]@2 [a3,c#4,e4]@2 [g3,b3,d4]@5 ~@4]/2", Y: "~@6 d4!2",
  Z: "f#4@2 f#4@2 f#4@2 f#4@3 ~ f#4@2 f#4@2 f#4@2", AA: "f#4@4 f#4@4 d4@3 ~ d4@2 d4@2", AB: "f#4@2 f#4@2 [d4,g4]@3 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.35).pan(0.4)

// other · lead 5 charang
const lead_5_charang = note(`<
  ~@53 A ~ B ~ B ~ C@2 ~@17 D@2 E@4 F@7 G@2 H I J K L M N O P Q R S T S U V W@3 X Y@2 Z AA ~@6 AB AC ~ AD ~ AD ~ AD ~ AD
  ~ AD ~ AD ~ AD ~ AD ~ AD ~ AD ~ AD ~ AE ~
>`.pickRestart({
  A: "g3!2 [g3,d4,g4]@2 g3!2 [g3,d4,g4]@4 ~@6", B: "g3!2 [g3,d4,g4]@3 g3 [g3,d4,g4]@4 ~@6",
  C: "[~ [g3,b3,d4,g4]@14 ~]/2", D: "[~@8 g3!2 [g3,d4,g4]@2 g3!2 [g3,d4,g4]@4 ~@14]/2",
  E: "[~@8 g3!2 [g3,d4,g4]@3 g3 [g3,d4,g4]@4 ~@14]/2", // G5
  F: "[~@10 [g3,d4,g4]@3 g3 [g3,d4,g4]@4 [e3,a3,c#4]@24 [f#3,d4]@3 ~ [f#3,d4]@4 [e3,a3,c#4]@23 ~ [a3,d4]@4 [f#3,a3,d4]@4 [e3,a3,c#4]@24 [f#3,a3,d4]@3 ~ [f#3,a3,d4]@2, ~@6 a3 ~@9]/7", // G5 A D A D5 D A D
  G: "[~ [e3,c#4]@12 [f#3,d4]@2 a4, ~@2 a3@27 ~@3]/2", H: "b4@2 c#5@2 d5@2 e5 ~ e5@4 a4@2 b4@2",
  I: "d5@4 a4@2 e5@3 ~ e5@4 a4@2", J: "b4 c#5 d5 e5 f#5 e5 a4 b4", K: "d5@4 a4@2 e5@4 e5@3 ~ a4@2",
  L: "b4 c#5 d5 e5 e5@2 a4 b4", M: "d5@4 a4@2 e5@3 ~ e5@3 ~ a4@2", N: "b4@2 c#5@2 d5@2 e5@2 d5@3 ~ c#5@4", O: "b4@7 ~",
  P: "g4 ~ g4!4 ~@2 g4 ~ g4!4 ~@2", Q: "g4 ~ f4!2 g4!2 ~@2 g4 ~ f4!2 g4!2 ~@2", R: "g4!2 ~ g4 ~ g4 ~ g4 ~ g4!4 ~@2 g4",
  S: "~ f4!2 g4!2 ~@2 g4 ~ f4!2 g4!2 ~@2 g4", T: "~ g4!4 ~@2 g4 ~ g4!4 ~@2 g4", U: "g4!4 ~@2 g4 ~ g4!4 ~@2 g4 ~",
  V: "f4!2 g4!2 ~@2 g4 ~ f4!2 g4!2 ~@2 g4 ~", W: "~@3 f#4!13", X: "e4!2 ~ f#4!13", Y: "~@3 e4!13", Z: "~@3 c#4!13",
  AA: "~@3 b3!13", AB: "d4 [a3,d4] d4 [a3,d4] d4!2 [a3,d4]!2", AC: "[a3,d4]!8",
  AD: "~@6 g3!2 [g3,d4,g4]@4 [g3,d4,g4]@4", AE: "~@4 g3!2 ~@10",
})).s("gm_lead_5_charang").gain(0.2).pan(0.9)

// other · lead 5 charang · soft notes
const lead_5_charang_soft = note("<~@88 A ~@20 B@3 C D@2 E F ~@6 G ~@26>".pickRestart({
  A: "~@10 f#3@3 ~@3", B: "f#4!3 ~@13", C: "~@2 f#4 ~@13", D: "e4!3 ~@13", E: "c#4!3 ~@13", F: "b3!3 ~@13",
  G: "a3 ~ a3 ~ a3!2 ~@2",
})).s("gm_lead_5_charang").gain(0.12).pan(0.9)

// chords · marimba
const marimba = note(`<
  ~ A B C D E F G H I J A K C D L M G N I O P Q C R S T@2 U V W X@2 Y Z ~@58 AA D AB AC@4 AD ~@49
>`.pickRestart({
  A: "~@3 [a4,e5] ~@8 [a4,e5] ~@3", B: "~@4 [a4,e5] ~@8 [a4,e5] ~@2", C: "~@5 [a4,e5] ~@7 [a4,e5] ~@2",
  D: "~@6 [a4,e5] ~@7 [a4,e5] ~", E: "~@7 [a4,e5] ~@7 [a4,e5]", F: "~@7 [a4,e5] ~@8", G: "[a4,e5] ~@7 [a4,e5] ~@7",
  H: "~ a4@2 ~@6 [a4,e5] ~@6, ~ e5 ~@14", I: "~ [a4,e5] ~@8 [a4,e5] ~@5", J: "~@2 [a4,e5] ~@8 [a4,e5] ~@4",
  K: "~@4 a4@2 ~@6 [a4,e5] ~@3, ~@4 e5 ~@11", L: "~@6 [a4,e5] ~@8 [a4,e5]", M: "~@7 a4@2 ~@7, ~@7 e5 ~@8",
  N: "[a4,e5] ~@8 [a4,e5] ~@6", O: "~@2 [a4,e5] ~@7 a4@2 ~@4, ~@10 e5 ~@5", P: "~@3 [a4,e5] ~@7 [a4,e5] ~@4",
  Q: "~@4 [a4,e5] ~@7 [a4,e5] ~@3", R: "~@5 [a4,e5] ~@8 a4@2, ~@14 e5 ~", S: "~@6 [a4,e5] ~@9",
  T: "[~@3 [a4,d5]@3 ~ [a4,d5]@2 ~@2 [a4,d5]@2 ~@2 [a4,d5]@2 ~@3 [a4,d5]@3 ~ [a4,d5]@3 ~ [a4,d5]@3 ~]/2", // D5
  U: "[a4,d5]@3 ~ [a4,d5]@3 ~@2 [a4,d5]@2 ~@2 [a4,d5]@2 ~", V: "~ [a4,d5]@2 ~@2 [a4,d5]@2 ~@2 [a4,d5]@3 ~@2 [a4,d5]@2",
  W: "~@2 [a4,d5] ~@3 [a4,d5]@3 ~ [a4,d5]@2 ~@2 [a4,d5]@2", // D5
  X: "[~@3 [a4,d5]@2 ~@2 [a4,d5]@3 ~ [a4,d5]@3 ~ [a4,d5]@3 ~ [a4,d5]@3 ~@2 [a4,d5]@3 ~ [a4,d5]@2 ~@2]/2", // D5
  Y: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~@3", Z: "~ [a4,d5]@2 ~@13", AA: "~@6 [a4,e5] ~@7 e5@2, ~@14 a4 ~",
  AB: "~@6 [a4,e5] ~@7 [a4,e5]@2", AC: "~@3 [a4,e5] ~@3 [a4,e5]", AD: "~@3 [a4,e5] ~@3 e5, ~@14 a4 ~",
})).s("gm_marimba").gain(0.33).pan(0.2)

// chords · epiano1
const epiano1 = note("<~@93 A@7 B@2 ~ C@2 D@2 E@4 ~@39>".pickRestart({
  A: "[~@16 b4@6 ~@30 a4@4 ~@4 a4@6 ~@22 a4@9 ~ [a3,b3,e4]@13 ~, ~@2 [a3,b3,e4]@31 ~ [a3,b3,e4]@31 ~ [a3,b3,e4]@31 ~@15, ~@6 a4@11 ~@5 a4@15 ~@3 a4@10 ~@26 a4@10 ~@26, ~@8 b4@7 ~@13 b4@9 ~@7 b4@7 ~@5 b4@11 ~@17 b4@14 ~@14, ~@12 e5@17 ~@19 e5@19 ~@13 e5@18 ~@14]/7", // Asus2
  B: "[[g3,a3,d4]@9 ~@7]/2", C: "[~@5 [e5,e6]@10 ~, ~@2 [b4,b5]@27 ~@3, ~@3 [c5,c6]@12 ~]/2",
  D: "[~ [a5,a6]@4 [b5,b6]@4 ~@4 [e6,e7]@18 ~, ~@9 [g5,g6]@23]/2", // A B E G
  E: "[~ [a4,a5]@3 ~@4 [g5,g6]@17 ~@3 b5@4 ~@4 [b5,b6]@28, ~@2 [b4,b5]@10 ~@2 b6@3 ~@15, ~ [e6,e7]]/4", // A G B E
})).s("gm_epiano1").gain(0.3)

// chords · kalimba
const kalimba = note(`<
  ~ A B C D E F G H I J A K L D M N G O P Q R S L T U V@2 W X Y Z@2 AA AB AC AD AE AD AF AD AG AH AI AD AE AD AF AD AG
  AH ~@9 AJ AK AL AM AN AK AO AP AQ AR AL AM AN AK AO AP AS ~@8 AT AU AV AW AX AY AZ BA BB BC@3 BD BE@2 BF BG BH BI BJ@3
  BK BH@8 BL ~@6 BM BN BO BP BQ BP BQ BR BQ BS BQ BS BQ BP BQ BT BQ BU BQ BS BQ BP BQ BT BQ BV ~
>`.pickRestart({
  A: "~@3 [a4,e5] ~@8 [a4,e5] ~@3", B: "~@4 [a4,e5] ~@8 [a4,e5] ~@2", C: "~@5 [a4,e5] ~@8 [a4,e5] ~",
  D: "~@6 [a4,e5] ~@7 [a4,e5] ~", E: "~@7 [a4,e5] ~@7 [a4,e5]", F: "~@8 [a4,e5] ~@7", G: "[a4,e5] ~@7 [a4,e5] ~@7",
  H: "~ a4@2 ~@6 [a4,e5] ~@6, ~ e5 ~@14", I: "~@2 [a4,e5] ~@7 [a4,e5] ~@5", J: "~@2 [a4,e5] ~@8 [a4,e5] ~@4",
  K: "~@4 a4@2 ~@6 [a4,e5] ~@3, ~@4 e5 ~@11", L: "~@5 [a4,e5] ~@7 [a4,e5] ~@2", M: "~@6 [a4,e5] ~@8 [a4,e5]",
  N: "~@7 a4@2 ~@7, ~@7 e5 ~@8", O: "~ [a4,e5] ~@7 [a4,e5] ~@6", P: "~ [a4,e5] ~@8 [a4,e5] ~@5",
  Q: "~@2 [a4,e5] ~@8 a4@2 ~@3, ~@11 e5 ~@4", R: "~@3 [a4,e5] ~@7 [a4,e5] ~@4", S: "~@4 [a4,e5] ~@7 [a4,e5] ~@3",
  T: "~@5 [a4,e5] ~@8 a4@2, ~@14 e5 ~", U: "~@6 [a4,e5] ~@9",
  V: "[~@3 [a4,d5]@3 ~ [a4,d5]@2 ~@2 [a4,d5]@2 ~@2 [a4,d5]@2 ~@3 [a4,d5]@3 ~ [a4,d5]@3 ~ [a4,d5]@3 ~]/2", // D5
  W: "[a4,d5]@3 ~ [a4,d5]@3 ~@2 [a4,d5]@2 ~@2 [a4,d5]@2 ~", X: "~ [a4,d5]@2 ~@2 [a4,d5]@2 ~@2 [a4,d5]@3 ~@2 [a4,d5]@2",
  Y: "~@2 [a4,d5] ~@3 [a4,d5]@3 ~ [a4,d5]@2 ~@2 [a4,d5]@2", // D5
  Z: "[~@3 [a4,d5]@2 ~@2 [a4,d5]@3 ~ [a4,d5]@3 ~ [a4,d5]@3 ~@2 d5@3 ~ [a4,d5]@3 ~ [a4,d5]@2 ~@2, ~@19 a4@3 ~@10]/2", // D5
  AA: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~@3", AB: "~ [a4,d5]@2 ~@13",
  AC: "~@6 a4@2 b4 ~ [a4,c#5] ~ [a4,d5] ~ e5@2, ~@14 a4 ~", // A D5
  AD: "a4 ~ [a4,e5] ~ a4 ~ [a4,b4] ~ d5@2 [a4,b4] ~ [a4,d5] ~ e5@2, ~@8 a4 ~@5 a4 ~", // A5 Asus2 D5
  AE: "a4 ~ [a4,e5] ~ a4 ~ e5@2 [a4,b4] ~ [a4,c#5] ~ [a4,d5] ~ e5@2, ~@6 a4 ~@7 a4 ~", // A5 Asus2 A D5
  AF: "~@2 [a4,e5] ~@3 e5@2 b4 ~ [a4,c#5] ~ [a4,d5] ~ e5@2, ~@6 a4 ~@7 a4 ~", // A5 A D5
  AG: "a4 ~ [a4,e5] ~ a4 ~ a4 ~ [a4,b4] ~ [a4,c#5] ~ [a4,d5] ~ [a4,e5] ~", // A5 Asus2 A D5 A5
  AH: "d5@2 a4 ~ c#5@2 a4 ~ b4@2 a4 ~ b4@2 ~@2, a4 ~@3 a4 ~@3 a4 ~@3 a4 ~@3",
  AI: "~@6 a4@2 b4@2 [a4,c#5] ~ [a4,d5] ~ e5@2, ~@14 a4 ~", AJ: "~@7 a4",
  AK: "b4 ~ [a4,c#5] ~ [a4,d5] ~ e5@2 a4 ~ [a4,e5] ~ a4 ~ [a4,b4] ~, ~@6 a4 ~@9", // A D5 A5 Asus2
  AL: "d5@2 [a4,b4] ~ [a4,d5] ~ e5@2 a4 ~ [a4,e5] ~ a4 ~ e5@2, a4 ~@5 a4 ~@7 a4 ~", // Asus2 D5 A5
  AM: "[a4,b4] ~ [a4,c#5] ~ [a4,d5] ~ e5@2 a4 ~ [a4,e5] ~ a4 ~ [a4,b4] ~, ~@6 a4 ~@9", // Asus2 A D5 A5 Asus2
  AN: "d5@2 [a4,b4] ~ [a4,d5] ~ e5@2 ~@2 [a4,e5] ~@3 e5@2, a4 ~@5 a4 ~@7 a4 ~", // Asus2 D5 A5
  AO: "d5@2 [a4,b4] ~ [a4,d5] ~ e5@2 a4 ~ [a4,e5] ~ a4 ~ a4 ~, a4 ~@5 a4 ~@9", // Asus2 D5 A5
  AP: "[a4,b4] ~ [a4,c#5] ~ [a4,d5] ~ [a4,e5] ~ d5@2 a4 ~ c#5@2 a4 ~, ~@8 a4 ~@3 a4 ~@3", // Asus2 A D5 A5
  AQ: "b4@2 a4 ~ b4@2 ~@8 a4@2, a4 ~@3 a4 ~@11",
  AR: "b4@2 [a4,c#5] ~ [a4,d5] ~ e5@2 a4 ~ [a4,e5] ~ a4 ~ [a4,b4] ~, ~@6 a4 ~@9", // A D5 A5 Asus2
  AS: "b4@2 a4 ~ b4@2 ~@10, a4 ~@3 a4 ~@11", AT: "~@4 a4@2 a4 ~ a4@2 c#5@2 a4@2 g4 ~",
  AU: "a4@2 g4 ~ a4@2 ~@4 d5@3 ~ d5@2", AV: "~@2 c#5 ~ a4 ~ a4 ~ a4@2 c#5@2 a4@2 g4 ~",
// … 134 more lines

More by Alanis Morissette