Strudelify
Knockin' on Heaven Door cover art

Use Your Illusion II

Knockin' on Heaven Door

Guns N' Roses

KeyG majorTempo128 bpm
0:00/0:00
// Knockin' on Heaven Door — Guns N' Roses
// 128 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 185 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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 · piano · "tk2"
const bass = note(`<
  ~@8 A@8 B@3 C@8 D E@4 F@5 G@3 H I@2 J@2 K@2 L@2 M@8 N@4 O@4 P@2 Q@4 R@8 S@2 T@2 U V W X@2 Y@2 Z AA AB@3 AC@4 AD AE@3
  AF@2 AG AH@2 AI@4 AJ AK AL AM AJ AN AO AP AQ AR AL AS AT AU AV AW AJ AN AX AY AZ AK BA BB AZ AK BC BD AZ AK BE BF@2 BG
  BH BI BJ@2 BK BL@2 BG BA BM BN ~ BO BP BQ BR BS BT BU@2 BV BW BX@2 BY BZ CA BR CB CC CD@8 ~
>`.pickRestart({
  A: "[~@3 g1@23 d2@24 c2@21 a1@3 c2@3 a1@3 c2@4 ~@2 c2@3 a1@9 g1@18 b1@3 c2@3 d2@21 a1@3 ~@21 a1@3 ~ c2@2 g2@19, ~@73 c2@12 ~@11]/8",
  B: "[~@2 g1@24 d2@24 a1@19 ~@2 a1]/3",
  C: "[~@2 a1@4 ~ a1@9 ~@10 g1 ~@17 b1@3 c2@3 d2@24 c2@21 a1@3 c2@3 ~@3 c2@9 a1@9 g1@24 d2@24 a1@14 ~ a1@3 g2@3 g#2, ~@20 b1@9 ~@163]/8",
  D: "~@2 a2@19 ~@3", E: "[~@2 g1@18 b1@3 c2@3 d2@24 c2@8 a1@4 c2@24 e2@3 d2@3 c2@4]/4",
  F: "[~@2 g1@21 c2@3 d2@24 c2@21 a1@3 c2@3 ~@3 c2@9 a1@8 g1!2 ~@21]/5",
  G: "[~@2 d2@21 b1@3 c2@12 f2@3 e2@2 d2@3 c2@4 ~@2 e2@3 d2@3 c2@3 d2@3 c2@8, ~@25 f2@2 ~@9]/3", H: "~ g1!2 ~@21",
  I: "[~ d2@22 c2@2 ~ c2@18 ~@4]/2", J: "[e2@10 f2@9 f#2@7 ~ g1@21]/2", K: "[~ d2@24 c2!2 ~@19 a1@2]/2",
  L: "[~ c2@4 ~@21 g1@22, ~@5 g2@23 ~@20]/2",
  M: "[~@2 d2@24 c2@21 a1@3 c2@2 ~@4 c2@18 g1@24 d2@24 c2@25 ~@2 c2@10 ~@2 c2@9 g1@22]/8",
  N: "[~@2 d2@24 c2@27 e1@9 f1@6 f#1@6 g1@22]/4", O: "[~@2 d2@24 c2@27 f2@3 e2@3 d2@3 g2@3 f2@3 c2@3 g1@2 ~ g1@22]/4",
  P: "[~ d2@24 a1@23]/2", Q: "[~ a2@9 a1@2 ~@2 a1@3 b1@8 g1!2 ~@16 b1@3 c2@4 d2@24 c2@18 ~@2 a1@2]/4",
  R: "[~@2 c2@2 a1@2 c2@6 ~@2 c2@3 ~@8 g1!2 ~@17 b1@3 c2@3 d2@24 ~@20 a2@2 ~@2 a2@10 ~@2 a2@3 g2@3 e2@3 c2@3 g1@18 b1@3 c2@3 d2@24 c2@21 a1, ~@17 d2@10 ~@47 a1@24 ~@94]/8",
  S: "[~@2 f2@3 e2@3 f2@3 e2 ~@2 f2@3 e2@2 ~ c2@3 g1@2 ~ g1@22]/2", T: "[~@2 d2@24 c2@19 ~ a1@2]/2",
  U: "~@2 c2@2 a1@3 c2@10 a1@7", V: "~@2 g1@16 ~ b1@3 c2@2", W: "~ d2@10 c2", X: "[~@2 c2@24 ~@2 e2@9 ~ f2@5 f#2@5]/2",
  Y: "[~@2 g1@2 ~@3 g1@10 ~@2 b1@3 ~ c2@3 d2@22]/2", Z: "~ c2@11", AA: "~ f2@3 e2@3 d2@3 c2@3 f2@3 e2@3 d2@3 c2@2",
  AB: "[~ g1@18 b1@3 c2@4 d2@20 b1@4 c2@19 ~ c2@2]/3", AC: "[~ c2@24 g1@17 ~ b1@3 c2@4 d2@24 c2@20 a1@2]/4",
  AD: "~ c2@3 a1@3 c2@12 ~ b1@2 a1@2", AE: "[~@2 g1@17 b1@3 c2@4 d2@24 c2@11 e2@11]/3",
  AF: "[~ f2@12 ~ f#2@11 g1@18 b1@3 c2@2]/2", AG: "~ d2@11", AH: "[~@2 c2@20 g2@8 ~ g2@11 ~ c2@3 b1@2]/2",
  AI: "[~ g1@18 b1@3 c2@3 d2@21 b1@3 c2@31 ~@2 c2@2 ~@2 c2@2 c2@2 ~ c2@2 ~ c2@2]/4", AJ: "~ g1@2 ~ g1@5 ~@13 c2@2",
  AK: "~ d2@2 ~ d2@4 ~@16", AL: "~ c2@2 ~ c2@6 ~@14", AM: "~@7 c2@3 c2@2 ~ c2@3 f1@3 f#1@5", AN: "~ d2@2 ~ d2@5 ~@15",
  AO: "~@2 c2@2 c2@5 ~@15", AP: "~@4 g1@3 a#1@6 a1@6 g#1@5", AQ: "~ g1@3 g1@5 ~@13 c2@2", AR: "~ d2@2 ~ d2@6 ~@14",
  AS: "~@4 f2@2 ~ f2@3 e2@3 f2@3 e2@3 f2@5", AT: "~ g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1@4 ~@5 c2@2",
  AU: "~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@5 ~@6", AV: "~ c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~ c2@4 ~@7",
  AW: "~@4 f1@9 f#1@5 ~ f#1@4 ~", AX: "~ c2@2 ~ c2@5 ~@15", AY: "~@4 c2@2 ~ c2@2 ~ c2@2 ~ c2@3 f1@2 ~ f#1@5",
  AZ: "~ g1@2 ~ g1@4 ~@14 c2@2", BA: "~ c2@2 ~ c2@4 ~@16", BB: "~@4 f2@3 e2@3 c2@3 f2@3 e2@3 c2@3 g1@2",
  BC: "~ c2@2 ~ c2@3 ~@3 e1@2 ~@4 e2@6 e1@2, ~@13 e1@5 ~@6", BD: "~ f1@3 f2@6 f1@3 f#1@3 f#2@7 ~",
  BE: "~ c2@2 ~ c2@2 ~ c2 ~@2 c2@3 e2@3 c2 ~@2 c2@2 ~ c2@2",
  BF: "[~ f2@3 c2@2 ~ c2@2 ~ c2@2 ~ g2@3 f2@3 d#2@3 c2@3 g1@2 ~ g1@4 ~@14 c2@2]/2", BG: "~ d2@2 ~ d2@3 ~@17",
  BH: "~ c2@2 ~ c2@3 ~@17", BI: "~@4 f2@3 e2@3 c2@3 g2@3 f2@3 d#2@3 ~@2",
  BJ: "[~ g1@2 ~ g1@4 ~@14 c2@3 d2@2 ~ d2@4 ~@16]/2", BK: "~ c2@2 ~ c2@3 ~@3 e1@3 a#1@11",
  BL: "[~ a1@12 g#1@12 g1@2 ~ g1@4 ~@14 c2@2]/2", BM: "~@4 f2@3 e2@3 c2@3 f2@3 e2@3 c2@3 ~@2", BN: "~ g1@2 ~ g1@6 ~@14",
  BO: "~ c2@10 ~@2 c2@10 ~", BP: "~ c2@7 c2@2 ~@3 c2@2 ~ c2@2 ~ c2@3 g1@2", BQ: "~ g1@12 g1@6 b1@3 c2@2",
  BR: "~ d2@11 ~ d2@9 b1@2", BS: "~ c2@10 ~@2 c2@7 c2@2 ~@2", BT: "~ c2@8 ~ c2@3 f2@3 e2@4 ~@2 c2@2",
  BU: "[~ g1@10 ~@2 g1@6 ~ a#1 ~ c2@3 d2@11 ~ d2@9 b1@2, ~@19 b1@3 ~@26]/2", BV: "~ c2@9 c2@2 ~ c2@8 ~ e2@2",
  BW: "~ e2@5 ~ e2@3 f2@5 ~ f2@3 f#2@5, ~@19 f2 ~@4", BX: "[~ g2@5 ~ g2@3 g1@2 ~ g1@6 b1@3 c2@3 d2@11 ~ d2@8 ~ b1@2]/2",
  BY: "~ c2@6 ~ c2 ~ c2@2 ~ c2@5 ~ c2 ~@2 c2@2", BZ: "~ c2@3 f2@3 e2@3 c2@3 g2@3 f2@3 e2@2 ~ g1@2",
  CA: "~ g1@18 b1@3 c2@2", CB: "~ c2@10 ~@2 c2@8 ~ c2@2", CC: "~ c2@2 ~ c2@5 ~ c2@2 ~ c2@9 g1 ~",
  CD: "[~ c2@8 ~ c2@2 ~ c2@4 ~@2 c2@2 ~ c2@5 ~@4 c2@4 ~@3 c2@4 ~@2 c2@7 ~ g1@140]/8",
})).s("gm_piano").gain(0.51)

// chords · piano · "tk3"
const piano = note(`<
  ~@15 A@2 B@3 C@4 D@6 E@6 F@2 G@3 H@5 I@2 J@2 K@2 L M@3 N O@4 P@3 Q@2 R@4 S T U@8 V@4 W@4 X@5 Y Z@2 AA AB@4 AC AD@2
  AE@2 AF@2 AG AH@3 AI AJ AK ~ AL AM AN ~ AO AP AQ AR AS AT AU@2 ~@2 AV@2 AW ~ AX AY AZ ~ BA BB BC ~ BD@2 BE ~ BF BG BH
  ~ BI BJ BK ~ BL BM BN ~@3 BO BP BQ@2 BR BS BT BU BV BW BX@2 BY BZ CA CB ~@2 CC@4 ~@3
>`.pickRestart({
  A: "[~@27 g3@16 ~@4 d3, ~@11 g5@15 [d4,g4,b4]@21 ~, ~@4 e5@5 ~@7, ~@13 d5@15 ~@20, ~@7 c5@8 ~@9]/2", // G
  B: "[~ [d4,a4]@10 ~@2 [a2,e4,a4]@23, ~ d3@12 ~@23, ~ f#4@9 ~@3 c4@22 ~]/3", // D5 A5
  C: "[~@2 [g2,d4,g4,b4]@21 d3@2 ~ a4@15 g4@8 ~ [e4,g4]@21 ~@9 [c5,d5,g5]@2 ~ d5@6 ~@3 d5@4, ~@26 d3@24 ~@39 e5@7, ~@26 d4@22 ~@2 c4@24 ~@9 c5@9 ~@4, ~@26 f#4@20 ~@37 g5@13]/4", // G Em Csus2
  D: "[g4 ~ [d4,g4,b4]@21 ~@3 [d4,a4]@20 ~@4 [c4,e4,a4]@33 ~@3 [c4,e4,a4]@10 ~@2 [b3,d4,g4]@21 ~@3 [d3,d4,a4]@20 ~@2, ~ g2@12 d3@12 a2@24 g2@12 ~@11, ~@13 f#4@9 ~@39 f#4@9 ~@2]/6", // G D5 Am G D5
  E: "[~ [e4,g4,c5] [e4,g4] c5 ~@19 [c4,c5,e5,g5]@2 ~ [c4,c5,e5,g5,c6]@7 ~@2 [c4,c5,e5,g5,c6]@2 ~ [c4,e5,c6]@5 ~ [c5,e5,g5,c6]@4 ~@3 [g5,b5]@10 ~ [d5,g5,b5]@10 ~@3 [d5,f#5,a5]@9 ~@2 a5@3 b5@4 ~@5 [e5,g5]@21 [e5,g5,c6]@2 ~ [e5,g5,c6]@8 ~ [e5,g5,c6]@2 ~ [e5,g5,c6]@4 ~@2 [e5,g5] ~@3, ~@2 c3@38 ~@4 c4@6 g3@24 ~ d4@22 c5@41 ~@6, ~@2 c4@17 ~@18 [c5,g5]@5 ~@8 d5@10 ~@26 [d5,f#5]@7 ~@4 c4@46 ~, ~@98 d5@41 ~ c6@4]/6", // C Em C G D Em C Em …
  F: "[~ g5 d5 g5 ~@10 [d5,g5,b5]@10 ~@2 [d5,f#5,a5]@9 ~@3 a5@3 b5@6 ~, ~ b4@9 ~@28 d5@9 ~, ~ g3@12 d4@11, ~@2 b5@6 ~@30 f#5@7 ~@3]/2", // G D
  G: "[~@2 e5@4 ~@3 [d5,e5]@19 ~@4 [c5,f5,g5]@2 ~@7 c4@3 c5@3 c4@2 ~ [b4,d5,g5]@10 ~@10 d4@2, ~ c4@29 ~@5 [c5,f5]@8 ~ e5@5 ~ g3@14 ~@8, ~ [c5,g5]@27 ~@7 g5@13 ~@14 [d5,g5,b5]@10]/3", // Dsus2 Csus4 G F5 C5 G
  H: "[~@2 [d5,a5]@10 ~@5 b5@5 ~@3 [d5,e5,g5]@45 ~@4 [b4,d5,g5]@9 ~@3 [d5,g5,b5]@9 g3@2 ~ [d5,f#5,a5]@9 ~@3 a5@3 b5@4 ~@3, ~@2 d4@24 ~@72 d4@7 ~@2 d4@13, ~@2 f#5@8 ~@4 d5@8 ~@3 c4@49 g3@17 ~@29, ~@14 [f#5,a5]@6 ~@5 c5@43 ~@42 [d5,f#5]@8 ~@2]/5", // D5 Em7 G D F#m D
  I: "[c4 [c5,d5,e5,g5]@21 ~@2, ~@2 c4@35 ~@11]/2", // C
  J: "[~@2 [g3,d4,g4] b4@20 d3@2 [d4,a4] [d4,f#4,a4] ~@11 b4@3 d5@3 g4@3 ~, ~@2 b3@19 ~@5 [d3,a3]@18 ~@4, ~@3 d4 ~@44]/2", // G5 D5 D D5
  K: "[~ [c4,e4] [c3,g3]@43 ~@3, ~ a2@7 ~@40, ~ a4@3 ~@20, ~@2 [c4,e4] ~@45]/2", L: "~ [b3,d4,g4]@11, ~ g3@9 ~@2",
  M: "[~@2 [d4,g4,a4]@12 [d4,a4]@7 ~@5 [c3,g3,c4,e4]@27 f5@2 g5@4 c6@5 e5@3 g5@4 ~, ~ d3@12 ~@23, ~@14 f#4@5 ~@53]/3", // Dsus4 D5 C
  N: "~ [d5,b5,d6]@11, ~ g5@10 ~, ~ g4@9 ~@2", // G
  O: "[~@2 [f#5,a5,d6]@8 ~@4 e5@3 g5@3 c5@2 ~@4 c4@29 ~ [c5,d5,g5]@2 ~ [c5,d5,g5]@6 ~@3 [d5,g5]@4 ~@2 [d5,g5]@9 ~@9 g3@4, ~ d4@25 ~@39 c4@9 g3@16 ~@6, ~@2 d5@10 ~@13 [c5,e5,g5,c6]@22 ~@21 c5@2 ~@4 b4 ~@11 [b4,d5,g5]@10]/4", // D Csus2 G5 C G
  P: "[~@2 [a4,d5,f#5]@9 ~@3 d5@2 ~ f#5@6 ~@2 [c4,g4,c5,e5]@41 ~@6, ~ d4@12 ~@23, ~@13 [a4,g5]@2 ~ a4@6 ~@50, ~@17 d5@4 ~@51]/3", // D C A7
  Q: "[~ [b3,d4,g4]@11 ~ [d4,f#4]@10 ~, ~ g2@12 d3@11, ~@13 a3@9 ~@2]/2", // G D
  R: "[~ [c4,e4,a4]@22 ~@2 [b3,g4]@11 ~ [d3,d4,f#4]@11, ~@2 a2@47 ~ g2@23 ~@23, ~@50 d4@20 ~@3 a3@22 ~]/4", // Am Em D
  S: "~ c3 [c3,c4,e4] ~@21, ~ a3@11 ~@12, ~ g3@11", // C
  T: "~@5 [g3,c4,d4]@4 ~@8 d4@3 ~@2 c3@2, ~@11 c3@9 ~@4, ~@7 [g3,c4]@5, ~@7 e4@4 ~", // Gsus4 C5
  U: "[~@2 [b3,d4,g4]@20 ~@4 [a3,d4,f#4]@18 ~@6 e4@44 ~@4 g4@21 ~@3 [d4,f#4]@18 ~@18 [e4,g4]@3 ~@6 [c5,c6] ~@2 [c5,e5,g5,c6]@7 ~ c5 [g5,c6]@2 ~ [g5,c6]@4 ~@2 [c5,e5,g5,c6]@4, ~@2 g2@24 d3@23 a2@48 g2@25 d3@23 ~ c3@40 ~@6, ~@49 [c4,a4]@43 ~@5 b3@20 ~@4 a3@18 ~@53, ~@98 d4@19 ~@28 [c4,e4,g4]@11 ~ c5@4 ~@5 [e5,g5]@2 ~@10 e5@2 ~ [c5,e5]@4 ~@7]/8", // G D Em C C5 C F C …
  V: "[~@2 [d5,g5,b5]@11 ~@8 g3@4 ~ f#5@9 ~@5 b5@4 ~@5 [c4,c5,d5,g5]@43 ~@4, ~@2 g3@18 ~@5 d4@25 ~@46, ~@14 [d5,g5,b5]@10 ~ [d5,a5]@10 ~@2 d5@8 ~@4 e5@41 ~@6, ~@37 [f#5,a5]@6 ~@53]/4", // G Csus2 G D5 F#m
  W: "[~@2 g3@24 [d5,f#5,a5]@10 ~@4 b5@5 ~@4 [c5,d5,e5,g5]@29 ~@4 [c5,e5,g5,c6]@2 ~ [c5,e5,g5,c6]@5 ~@2 [c5,e5,g5,c6]@4, ~ [d5,g5,b5]@21 ~@4 d4@24 ~@46, ~@37 a5@4 ~@55, ~@38 [d5,f#5]@8 ~@3 c4@38 ~@9]/4", // D C G D
  X: "[~@2 g5@10 ~@2 [d5,b5]@9 g3@3 [d5,f#5,a5]@9 ~@2 a5@3 b5@5 ~@4 [c5,d5,e5,g5]@43 ~@26 g3@2, ~ [d5,b5]@11 ~@2 g5@8 ~@15 [d5,f#5]@8 ~@4 c4@48 ~ g3@15 ~@7, ~@2 g3@16 ~@8 d4@24 ~@47 [d5,g5,b5]@10 ~@3 [d5,g5,b5]@10]/5", // G D C G D G
  Y: "~@2 [d5,f#5,a5]@9 ~@2 a5@3 b5@5 ~@3, ~ d4@11, ~@13 [d5,f#5]@8 ~@3", Z: "[~ [c4,c5,d5,e5,g5]@41 ~@6]/2",
  AA: "~ [g2,b3,g4]@11, ~ d4@10 ~", // G
  AB: "[~@2 d3@23 [c4,d4,e4,g4]@35 ~@2 c4@6 c3@5 [g2,b3,g4]@23, ~ [a3,d4,f#4]@20 ~@4 c3@41 ~@30, ~@62 [e4,g4]@10 ~ d4@20 ~@3]/4", // C G D Em
  AC: "~@2 d3@21 ~, ~ [a3,d4]@19 ~@4, ~@2 f#4@19 ~@3", // D5
  AD: "[~@2 [c4,d4]@29 ~@9 c3@2 ~@4 c3 ~, ~ c3@32 ~@2 c3@4 ~@9, ~ [e4,g4]@30 ~@6 [c4,e4,g4,c5]@7 ~@4]/2", // Csus2 Em C
  AE: "[~ [b3,g4]@23 ~@2 d3@22, ~ g2@24 ~@23, ~ d4@20 ~@4 [a3,d4,f#4]@19 ~@4]/2", // Em D
  AF: "[~@2 g4@32 c3@3 [c4,e4,g4,c5]@7 ~@2 g2@2, ~ [c3,c4,d4,e4]@32 ~@15]/2", AG: "~@2 g2@15 ~@5 g2@2, ~ [b3,d4,g4]@11",
  AH: "[~@2 [a3,d4,f#4]@19 ~@14 c3@2 ~ c3@4 ~ c3 ~@2 c3 ~@2 c3@2 ~ c3 ~@2 [c3,g4]@2 ~ [e4,g4,c5] ~@5 c3 ~@2 c3@2 ~@3, ~@2 d3@23 c3@7 ~@6 c4@13 ~@7 c3@3 ~@11, ~@26 [c4,e4,g4]@11 ~ [e4,g4]@15 ~@2 [e4,c5] ~@5 [e4,g4,c5]@10 ~]/3", // D C5 C Em C
  AI: "~@2 g3 ~@2 [g3,b3,d4]@4 ~@15, ~ g2@3 ~@8", AJ: "~@2 [d4,f#4,a4]@2 [d3,d4,f#4,a4]@3 ~@12 b5@5, ~@2 d3 ~@21",
  AK: "~@2 [c3,c4,e4,g4]@2 ~ [c3,e4,g4]@6 ~@13, ~@4 c4@5 ~@15", AL: "~@2 [g3,b3,d4,g4]@2 ~ [g3,b3,d4,g4]@5 ~@14",
  AM: "~@2 [d3,d4,f#4,a4]@2 ~ [f#4,a4]@5 ~@14, ~@4 [d3,d4]@5 ~@15", // D F#m D
  AN: "~@2 c3@2 ~ [c4,e4]@4 ~@15, ~ [c4,e4,g4]@2 ~ [c3,g4]@5 ~@15", AO: "~@2 [g2,b3,d4,g4]@2 ~ [g2,b3,d4,g4]@4 ~@15",
  AP: "~@2 [d3,d4,f#4,a4]@2 ~ [d3,f#4,a4]@4 ~@15, ~ d4 ~@4", AQ: "~ [c3,c4,e4,g4]@2 ~@2 c4@4 ~@15, ~ [c3,e4,g4] ~@4",
  AR: "~@13 c5@3 d5@3 e5@3 g5@2", AS: "~ [g4,b4,d5,g5]@3 [g4,b4,d5,g5]@5 ~@15",
  AT: "~@2 [d5,f#5,a5]@2 ~ [f#5,a5]@4 ~@15, ~@4 d5@5 ~@15", // D F#m
  AU: "[~@2 [c3,g4]@2 ~ c3@41 ~@2, ~ [c4,e4]@2 ~ [c4,e4,g4]@40 ~@4]/2", // C5 C
  AV: "[~@19 c3@3 ~@6 c3 ~@2 c3 ~@5 [c4,d#4]@3 e4@3 c4@3 g2 ~, ~@10 c3@7 ~@17 c3@6 ~@8, ~@13 [c4,f4,a4]@8 ~ [c4,f4,a4]@12 ~@14]/2", // Cm F
  AW: "~ g3@7 ~@16", AX: "~@13 [g4,a#4,c5]@2 ~ [g4,a#4,c5]@4 ~@2 [g4,a#4,c5]@2, ~@10 c3@11 ~@3",
  AY: "~@4 d#5@3 f5@3 d#5 ~@2 [c5,d#5]@5 ~ [c5,d#5]@4 ~, ~@4 c5@7 ~@13", AZ: "~ [d4,g4]@6 ~@17",
  BA: "~@11 c5 ~ e5@3 f5@3 f#5@3 g5@2",
  BB: "g5@2 ~ a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 g5 a#5 [g5,a#5] g5 a#5 ~", BC: "g5 ~@11",
  BD: "[~@25 a#6@3 g6@3 f#6@3 f6@3 d#6@3 c6@3 a#5@3 f5@2, ~@23 c6@2 ~@23, ~@12 g6 ~@11]/2",
  BE: "~ [g3,g4,d5,g5]@2 ~ [g3,g4,d5,g5]@4 ~@16", BF: "~@19 [c6,f6]@2 ~@2 g#6, ~@19 a6@5, ~@11 [b4,c6]",
  BG: "~ c6 ~@2 [f6,a6]@3 c6@2 c6 f6 ~@2 [c6,f6,a6]@2 ~ [c6,f6]@3 [c6,d#6]@2 g#6 c6@2, ~@3 c6@2 ~@19, ~@4 d#6 ~@2 [d#6,a6]@4 ~@5 a6@7 ~", // F F5 Cm D#dim
  BH: "~ [g4,d5,g5]@2 ~ [g4,d5,g5]@3 ~@17", // G5
  BI: "~@4 c6 ~@2 [c6,c7] ~@2 [c6,c7] ~@2 [c6,c7] ~@2 [c6,c7] ~@2 [c6,c7]@2 ~ c7@2, ~@22 c6 ~", // C
  BJ: "~ [c6,c7] ~@2 c7@2 ~ [c6,c7]@2 ~ [c6,c7] ~@2 c7@2 ~ [c6,a#6]@2 ~ [c6,a6]@3 ~@2, ~@4 c6 ~@8 c6 ~@10", // C C7 F
  BK: "~ [g4,d5,g5]@2 ~ [g4,d5,g5]@5 ~@15", // G5
  BL: "~@3 a3 b3 ~ [c4,d4] [e4,f#4] [g4,a4] [b4,c5] d5 f5 [f#5,g#5] a#5 [b5,c6,d6] [c6,e6] [f6,g6] [g#6,a6] b6 [c#7,d7] d#7 [f7,g7] a#7@2, ~@2 g3@2 ~@18 g#7 ~", // Csus2 Esus2 Gsus2 Cmaj7 F#sus2 Bm C Fsus2 …
  BM: "~ [a#6,g7,a#7] [a#6,a#7] g7 [a#6,g7,a#7] ~ [a#6,g7,a#7]!2 ~ [a#6,g7,a#7]!2 a#7 [a#6,g7] [a#6,g7,a#7] a#6 [g7,a#7] [a#6,g7,a#7] a#6 [g7,a#7] [a#6,g7,a#7] ~ [a#6,g7,a#7]!2 [g7,a#7]", // D# A# D# Gm D# Gm D# Gm
  BN: "a#6 [a#6,g7,a#7]@3 ~@20", BO: "~ [d4,g4,b4]@9 ~@8 g2@4 ~@2, ~ g2@15 ~@8, ~@13 [d4,g4,b4]@10 ~",
  BP: "~ [f#4,a4]@9 d3 ~@2 [d4,f#4,a4]@6 d3@5, d4@5 ~@7, ~ d3@6 ~@17", // F#m D
  BQ: "[~@2 c5@5 ~@6 d5@3 e5@3 ~@6 c4 ~@2 c4@3 [g4,c5,e5]@3 c4 ~@2 [c4,g4,c5,d5]@4 ~@2 [c4,g4]@5, ~ [e4,g4]@5 ~@7 [g4,c5]@7 ~@2 [g4,c5,d5]@7 ~@14 [c5,e5]@3 ~@2, ~@2 c3@13 ~@4 c4@5 ~@24]/2", // C Csus2 C5 Em C5 Gsus4 C
  BR: "~ [d4,g4,b4]@10 ~@2 g4@6 g3@5, ~ g3@15 ~@8, ~@13 [d4,b4]@8 ~@3", // G
  BS: "~@2 [f#4,a4]@7 ~@4 [f#4,a4]@6 d4@3 ~@2, ~ d3@13 ~@10, ~ d4@6 ~@17", // F#m
  BT: "~@13 [e4,g4,c5]@4 ~ c4@2 ~@2 c4 ~, ~ [e4,g4,c5]@8 ~@3 e5@6 ~@6, ~@2 c4@13 ~@9", // C
  BU: "~ [c4,c5]@7 ~ c4@4 [g4,c5,e5,g5]@6 c4@4 ~, [g4,e5]@5 ~@7", // C
  BV: "~ [b4,d5,g5]@9 ~@3 [b4,d5,g5]@6 g3@5, ~ g3@14 ~@9", // G
  BW: "~@7 f#5@3 ~@3 f#5@6 d4@4 ~, ~ f#5@4 ~@19, ~@2 [d5,a5]@10 ~ [d5,a5]@9 ~@2, ~@2 d4@7 ~ d4@6 ~@8", // D5
  BX: "[~ [c5,e5,g5]@9 ~@8 c4@2 ~@5 [c5,d5,g5,c6]@4 ~@2 [c5,d5,g5,c6] ~@2 [c5,d5,g5,c6]@3 ~@3 [c5,d5,g5,c6]@2 ~ [c5,d5,g5,c6]@3 c4@2, ~ c4@7 ~@2 c4@6 ~@5 c4@13 ~@3 c4@6 ~@5, ~@13 [c5,g5]@10 ~@25, ~@13 [e5,c6]@8 ~@27]/2", // C Csus2 C5 C
  BY: "~ [b4,d5,g5,b5]@9 ~@9 g3@5, ~ g3@14 ~@9, ~@13 [b4,d5,g5,b5]@8 ~@3", // G
  BZ: "~@2 a5@9 ~@8 d4@5, ~ d4@15 ~@8, ~ [d5,f#5]@9 ~@3 [d5,f#5,a5]@8 ~@3", // D
  CA: "~ [c5,g5,c6]@8 ~@9 c4@2 ~ c4@2 ~, ~ c4@14 ~@9, ~ e5 ~@11 [c5,e5,g5,c6]@9 ~@2", // C5 C
  CB: "~ [c5,e5,g5,c6]@9 ~@3 c5@6 c4 ~@4, ~ c4@7 ~@2 c4@6 ~@8", // C
  CC: "[~@42 b5@2 a5@6 ~@2 g5@2 ~ b5@6 d5@2 g5@14 ~@19, ~@11 [g2,g3]@67 ~@18, ~@40 d5@2 ~@9 d5@3 ~@42, ~@41 g5@2 ~@11 a5@2 ~@40]/4", // G
})).s("gm_piano").gain(0.51)

// chords · piano · "tk4"
const piano_2 = note(`<
  A@8 ~@8 B@4 C@2 D@2 E F@5 G@2 ~@31 H@3 I@2 J@4 K@2 L@3 M@3 ~@60 N O P@2 ~@4 Q R S@2 ~@33
>`.pickRestart({
  A: "[~@20 g3@3 ~@9 d4@3 ~@6 d4@3 a3@3 ~@15 c4@4 ~@14 c4@3 ~@3 e3 ~@2 c3@3 c3@3 g2@2 ~@16 d4@3 ~@39 c4@3 ~@6 c3@3 ~@18 c3@2 ~@5, ~ b2@28 ~@6 f#4@5 ~@16 c3@32 ~ e3@5 ~@27 d3@27 ~@13 e3@5 ~@7 e3@6 ~@3 e3@8 ~@2, ~@2 d3@22 ~ d3@22 ~@3 d3@10 ~@17 e3@6 ~@3 d3@5 ~@7 g2@30 d4@5 ~ e4@5 ~ a3@5 ~ c3@18 ~@28, ~@3 g3@17 ~@6 f#3@23 ~ [g3,e4]@14 ~@7 e4@7 ~@32 g4@6 ~@3 d4@6 a3@6 f#4@6 d4@6 b3@13 ~@11 c4@5 ~@4 c4@8 ~@8, ~@14 g4@3 d4@5 ~ d4@5 ~ a3@7 ~@2 e4@5 ~@4 d4@5 ~ e3@15 e3@5 ~ g3@6 ~@3 g3@8 ~@25 g3@5 ~@2 f#3@28 ~@7 g3@7 ~@5 g3@7 ~@2 g3@8 ~@5]/8", // C
  B: "[~@3 g3@16 ~@6 d4@20 ~@4 a3@7 a3@3 b3@6 a3@3 e3@3 e4@6 a3@3 c4@3 a3@6 g3@6 ~, ~@2 d3@16 ~@5 f#3@21 ~@4 c3@42 ~@6, ~@23 d3@17 ~@7 a2@43 ~@6, ~@24 a3@20 ~@5 e3@19 ~@28]/4",
  C: "[~@2 d3@16 ~@11 g3@3 ~@3 a3@3 f#4@3 e4@7, g2@18 ~@6 a3@11 ~@13, ~ b2@17 ~@6 d3@24, ~@2 g3@5 ~@16 f#3@20 ~@5, ~@26 d4@19 ~@3]/2",
  D: "[~@5 e3@3 g3@3 c4@6 g3@6 ~@9 e3@3 c4@3 g3@3 e3@2 ~ c3@4, c3@43 ~@5, e3@5 ~@43, ~ g3@7 ~@40, ~@2 c4@9 ~@37]/2",
  E: "~ g3@6 ~, ~@2 [b2,d3]@19 ~@3", // Bm
  F: "[~@2 d4@19 ~@14 b3@6 a3@3 e3@3 ~@6 a3@3 c4@3 a3@3 e3 ~@2 c4@3 a3@3 ~@2 g3@3 ~@4 b3@3 d4@3 g4@9 ~@3 d4 d4@2 a3@5 ~ a3@6 d4@2 ~ d4@4, d3@16 ~@7 a2@41 ~@7 g2@20 ~@6 a3@4 ~@19, ~ [f#3,a3]@20 ~@3 c3@39 ~@9 b2@18 ~@6 d3@17 ~@7, ~@25 e3@19 ~@29 d3@18 ~@5 f#3@20 ~@4, ~@26 a3@15 ~@6 g4@8 ~@22 g3@5 ~@13 f#4@4 ~@21]/5", // F#m
  G: "[~@2 [g3,c4]@3 g3@3 c4 ~@2 c4@3 g3@4 c4 ~@4 c4@3 ~@2 e3@3 ~ c3@3 c3 ~ [g3,c4] g3@3 e3@4 ~@3, c3@31 ~@17, ~ e3@27 ~@8 e3@4 ~@8, ~@26 g3@5 ~@4 c4@2 ~@11]/2", // C5
  H: "[~@26 g3@16 ~@7 d4@10 ~@3 a4@2 f#4@3 d4@3 a3@2, ~@23 g2@18 ~@7 a3@10 ~@14, ~@24 b2@16 ~@7 f#3@11 ~@14, ~@25 d3@16 ~@6 d3@13 ~@12]/3",
  I: "[~@7 a3@3 b3@6 a3@4 e3@3 e4@11 a3@4 c4@3 b3@2 a3@3 g3@2, c3@37 ~@11, ~ g3@36 ~@11, ~ e3@19 ~@28, ~@2 c4@35 ~@11]/2",
  J: "[~@2 b4@12 g4@8 d4@4 ~@8 f#4@3 e4@3 d4@2 ~ a3@3 b3@3 ~@21 g3@4 c4@2 g3@4 ~@2 g3@3 c4@3 g3@3 ~@5, ~@2 [g2,b2,d3]@17 ~@7 [d3,f#3,a3]@12 ~@11 e4@39 ~@8, ~@2 g3 ~@23 a4@24 e3@41 ~@5, ~@25 c4@12 ~@11, ~@50 g3 c3@42 ~@3]/4", // G D
  K: "[~@2 b4@12 g4@8 d4@3 ~ f#3@8 g4@3 f#4@3 e4@7 c3, ~@2 [g2,b2,d3,g3]@17 ~@6 a4@23, ~@26 [d3,a3]@11 ~@11]/2", // G D5
  L: "[~@7 a3@3 b3@6 ~@3 e3@3 e4@3 ~@9 a3@3 c4@3 ~ b3@2 a3@3 g3@4 b4@12 g4@8 d4@2, ~ [g3,c4]@24 ~@25 g3 ~@21, ~ e4@21 ~@50, ~@2 c3@25 ~@23 [g2,b2,d3]@18 ~@4, ~@16 a3@5 ~@51]/3", // C5 G
  M: "[~ d4 ~@20 c3@3 ~ [e3,g3,c4]@11 ~ [e3,g3]@5 ~@4 [e3,g3]@2 [e3,g3]@8 ~ [e3,g3]@3 e3@4 ~@2 e3@5, f#3@23 ~@38 [g3,c4]@10 ~, d3@19 ~@7 c3@24 ~@22, ~ a4@25 g4@20 ~@3 g4@21 ~@2, ~ a3@23 ~@14 c4@11 c4@11 ~@12]/3", // C Em C5
  N: "~ [g3,d4]@19 ~@3 g3, ~ g4@21 ~@2", O: "~ [a3,d4,f#4]@21 ~@2", P: "[~ [g3,c4,e4]@38 ~@9]/2",
  Q: "~@13 [b3,d4,g4]@11", R: "~ [a3,d4,f#4]@11 ~ [a3,d4,g4]@2 ~ [a3,f#4]@7 ~, ~@4 d4 ~", S: "[~ [g3,c4,e4]@42 ~@5]/2",
})).s("gm_piano").gain(0.51)

// chords · piano · "tk5"
const piano_3 = note(`<
  ~@8 A@4 B@4 ~@16 C@4 D E@3 F@6 G@2 ~@31 H@3 I@2 J@5 K L@3 M N@4 O@2 P@5 K Q@3 R S@3 ~@45 T@4 U@2 V W@5 X@2 Y Z AA@4
  AB@7
>`.pickRestart({
  A: "[~@2 [d3,g3]@22 ~@2 g3@2 a3@21 ~ [g3,c4]@31 ~@2 [b2,b3]@3 [c3,c4]@3 c4@7, ~@2 g2@24 d3@25 ~@32 g3@13, ~@26 d4@22 ~@2 c3@33 ~@6 c3 ~@6]/4", // G5 C5 B C
  B: "[~@2 g2@23 [d3,a3]@25 ~ c4@25 ~ c4@3 ~@6 g3@8 ~@2, ~@2 g3@22 ~ d4@23 ~@3 g3@28 ~ g3@6 ~@10, ~@2 d3@19 ~@29 c3@44 ~@2, ~@83 c4@11 ~@2]/4", // D5
  C: "[~@2 [d3,g3]@22 ~@2 [d3,a3,d4]@21 c3@2 ~ [g3,c4]@33 c3 ~ [c3,g3,c4]@2 ~ c3@2 ~ c3@2 ~ c3@2, ~@2 g2@24 ~@24 c3@31 ~@7 [g3,c4]@8]/4", // G5 D5 C5
  D: "~ g3@11, ~ g2@23, ~ d3@10 ~",
  E: "[~@23 c3@2 ~@13 f4@3 e4@3 d4@3 ~@14 d4@4 c4@3 g3@2 ~@2, ~ d3@22 ~@3 c3@46, ~@2 [a3,d4]@23 ~ g3@30 c4@7 ~@9, ~@26 c4@27 d4@6 ~@13, ~@49 e4@9 g3@7 ~@7]/3", // D5
  F: "[~@2 g2@24 [d3,a3,d4]@21 [c3,g3,c4]@2 ~ [c3,g3,c4]@20 ~ c3@2 ~ [c3,g3,c4]@2 ~ c3@4 ~ c3@2 ~ c3@3 ~ c3@9 [d3,g3]@22 ~@22 c3@2, ~@2 g3@22 ~@46 [g3,c4]@3 ~@4 [g3,c4]@8 [g3,c4]@11 ~@25 [d3,a3,d4]@23, ~@2 d3@19 ~@77 g2@23 ~@23]/6", // D5 C5 G5 C5 D5
  G: "[~ [c3,g3,c4]@47]/2", H: "[~@23 [d3,g3]@2 ~ [g2,d3]@24 [d3,a3,d4]@22, ~@22 g2@2 ~ g3@20 ~@27]/3",
  I: "[~ c3@36 c3@2 ~@7 g2@2, ~ [g3,c4]@39 [c3,c4]@7 ~, ~@41 g3@7]/2", // C5 C
  J: "[~ [d3,g3]@23 ~ [a3,d4]@23 ~ [c3,g3,c4]@27 ~ [c3,g3,c4]@11 [g3,c4]@8 ~@2 [g2,d3,g3]@22, ~ g2@24 d3@24 ~@39 c3@10 ~@22]/5", // G5 D5 C5 G5
  K: "~ [d3,a3]@11, ~ d4@10 ~", // D5
  L: "[~ [c3,g3,c4]@33 [c3,g3,c4]@2 ~ [g3,c4]@11 ~@2 [g2,g3]@22, ~ b3 ~@35 c3@12 d3@23]/3", M: "~ [d3,a3,d4]@11",
  N: "[~@2 [g3,c4]@32 [c3,g3,c4]@3 [c3,g3,c4]@12 ~ d3@23 ~ [d3,a3,d4]@22, ~ c3@32 ~@16 g2@25 ~@22]/4", // C5 D5
  O: "[~ c3@36 c3@2 ~ [c3,g3,c4]@6 g2@2, ~ [g3,c4]@39 ~@8]/2", // C5
  P: "[~ [d3,g3]@23 ~@2 [d3,a3]@23 [c3,g3,c4]@27 [c3,g3,c4]@11 ~ [g3,c4]@8 ~@2 g3@22, ~ g2@24 d4@22 ~@41 c3@9 g2@23, ~@97 d3@21 ~@2]/5", // G5 D5 C5
  Q: "[~ [c3,g3,c4]@33 [c3,g3,c4]@2 ~ [g3,c4]@11 ~@2 g3@22, ~ b3 ~@35 c3@12 [g2,d3]@23]/3", R: "~ [a3,d4]@11, ~ d3@23",
  S: "[~@2 [g3,c4]@31 ~ [c3,g3,c4]@3 [c3,g3,c4]@13 ~@22, ~ c3@32 ~@39]/3", // C5
  T: "[~ [c3,g3,c4]@35 ~ [g3,c4]@9 ~@4 g2@23 [a3,d4]@21 ~@2, ~@37 c3@12 d3@20 ~@4 d3@23, ~@25 g3@11 ~@12]/4", // C5 D5
  U: "[~ [g3,c4]@33 ~@3 [g3,c4]@2 ~@4 c3@5, ~ c3@32 ~ c3@8 ~@6, ~@40 [g3,b3]@7 ~]/2", V: "~ [g2,g3]@23, ~ d3@20 ~@3",
  W: "[~ [a3,d4]@23 ~ [g3,c4]@45 ~@3 [d3,g3]@23 ~@2 [a3,d4]@21 ~, ~ d3@24 c3@48 g2@24 d3@23]/5", // D5 C5 G5 D5
  X: "[~ c3@33 ~@3 [g3,c4]@2 ~@3 c3@6, ~ [g3,c4]@35 ~@3 [g3,b3]@7 ~@2, ~@17 c3@4 ~@3]/2", // C5 G
  Y: "~ [g2,g3]@23, ~ d3@21 ~@2", Z: "~ [a3,d4]@21 ~@2, ~ d3@23",
  AA: "[~@37 c3@20 c3@2 ~@2 c3@7 ~ c3@8 ~@2 c3@4 ~@2 c3@11, g3@77 ~@2 [g3,c4]@17, c3@3 ~@5, ~ c4@77 ~@18]/4", // C5
  AB: "[~ [d3,g3]@36 ~@5, ~@2 g2@71 ~@11]/7", // G5
})).s("gm_piano").gain(0.51)

// chords · piano · "tk6"
const piano_4 = note(`<
  ~@8 A@4 B@4 ~@16 C@4 D E@4 F G@4 H@2 ~@31 I J@4 K L M@3 N O@2 P L Q@2 ~ R@3 S L T@2 P N O@2 P L U@3 V W@2 X Y Z@2 AA
  AB AC AD AE AF@3 ~@8 AG AH AI@8 AJ@3 ~@3 AK AL AM@3 ~ AN AO AP AQ AR@2 AS AT AU@2 AV AQ AW@2 AX AY AZ@4 BA@7
>`.pickRestart({
  A: "[~@3 g3@22 ~ g3@2 ~ a3@21 [g3,c4]@31 ~@2 [b2,b3]@3 [c3,c4]@3 c4@7, ~@2 g2@24 d4@22 ~@35 g3@13, ~@2 d3@21 ~@3 d3@24 c3@33 ~@6 c3 ~@6]/4", // C5 B C
  B: "[~@2 g2@23 ~ d4@23 ~@2 c4@25 ~ c4@3 ~@6 g3@7 ~@3, ~@2 g3@22 ~ a3@23 ~@3 g3@28 ~ g3@6 ~@10, ~@2 d3@19 ~@4 d3@25 c3@43 ~@3, ~@83 c4@10 ~@3]/4",
  C: "[~@2 [g2,d3]@24 [d3,a3]@24 [g3,c4]@39 c3@2 [c3,g3,c4]@5, ~@2 g3@20 ~@4 d4@21 ~@3 c3@37 ~@9]/4", // G5 D5 C5
  D: "~ [g2,d3,g3]@10 d3", E: "[~@2 d4@21 ~@3 g3@46 ~ [g2,d3,g3]@23, ~ d3@24 c4@45 ~@26, ~ a3@22 ~@2 c3@48 ~@23]/4",
  F: "~@11 c3, ~ d3@22 ~, ~ [a3,d4]@11", // D5
  G: "[~@2 c3@38 ~ c3@9 g2@24 ~@20 c3@2, ~ [g3,c4]@23 ~ g3@11 ~@12, ~@25 d3@10 ~@2 [d3,a3,d4]@11]/4", // C5 D5
  H: "[~@2 c4@20 ~@9 g3@8 c3@3 ~@6, ~@2 c3@35 ~@11, ~@2 g3@27 ~@19, ~@12 c4@5 ~@7]/2", I: "~@11 [g2,d3,g3]",
  J: "[~@2 g2@24 [d3,a3]@23 ~ [g3,c4]@38 ~ [g3,c4]@7, ~ [d3,g3]@22 ~@3 d4@21 ~@2 c3@39 c3@8, ~@50 b3 ~@45]/4", // D5 C5 G5
  K: "~ [d3,g3]@11, ~ g2@23", L: "~ [d3,a3,d4]@23",
  M: "[~@2 [c3,g3,c4]@27 [c3,g3,c4]@11 [c3,g3,c4]@7 g2@2 [g2,d3,g3]@23]/3", N: "~ [d3,a3]@23, ~ d4@21 ~@2",
  O: "[~@2 [g3,c4]@32 ~ [g3,c4]@2 [c3,g3,c4]@9 g2@2, ~ c3@33 c3@2 ~@12]/2", P: "~ [g2,d3,g3]@23",
  Q: "[~@34 c3@2 ~ [c3,g3,c4]@11, ~ c4@35 ~@12, ~ c3@31 ~@16, ~@2 g3@35 ~@11]/2", // C5
// … 178 more lines

More by Guns N' Roses