Strudelify

End of Innocence

Don Henley

KeyG majorTempo118 bpm
0:00/0:00
// End of Innocence — Don Henley
// 118 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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 165 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/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@3 B C D@4 E C F@8 G H@7 I J K L M N O P Q R S T U V W X@2 Y Z AA@3 AB AC AD@8 AE@4 AF@5 AG@2 V AH AI@2 AJ AK AL@2
  AM@2 AN@2 AO AP AQ AR@4 AB AC AS@2 AT@2 AU AV AW@2 AX AY AZ@2 BA BB BC@2 BD BE BF@6 BG@4 BH@2 BI@2 BJ@2 BK@2 BL BM BN
  BO BP BQ BR AQ BS@4 AB BT BU@4 BV BW BX@2 BY@2 BZ CA CB@2 CC@2 CD@5 ~@3
>`.pickRestart({
  A: "[~@5 [g2,g3,d4,g4]@2 ~@4 [a3,d4,g4] ~@3 [b3,g4] ~@3 [a3,d4,g4] ~@3 [c4,g4], ~@7 g2@15 g3@2, ~@7 g3@13 g4@3 ~, ~@7 [d4,g4]@4 ~ [a3,d4]@4 g4@2 d3@6, ~@5 d3 g4 d3 b3@2 [a3,d4]@2]/3", // G5 Dsus4 Em Dsus4 C5 G5 D5
  B: "~@3 [b3,g4] ~@3 [f#3,d4], [a2,c4], g4@3 ~ [b3,g4]@4, ~ e3@5 ~@2, ~ a3@3", // Em D Am Em
  C: "~@2 e3 [e3,g3,d4] ~@2 d3 [d3,g3,d4], [e2,f#3] [d2,e3], d4@3 ~ [g3,d4]@3 ~", // Em7 G5 Esus2 Dsus2 G5
  D: "[~@3 [e3,g3,d4] e3@3 ~@7 c3 ~ g2@2 ~ [a3,d4,g4] ~@3 [b3,g4] ~@3 [a3,d4,g4] ~@3 [c4,g4], c2@16 c2@15 ~@5 g2@4 g4@4 d3@12 [a3,d4]@4 g3@4, d3@8 g3@12 ~@2 [g3,d4]@4 [g3,d4]@5 ~ d3@10 g2@22, [g3,d4]@6 ~@2 d4@14 ~@5 a3@3 b3@16 ~@2 b3@16, ~@2 c3@4 ~@6 c3@2 ~ [a3,d4]@4 ~ [a3,d4]@4 g4@2 g3@2 g4 d3@3]/4", // Em7 Dsus4 Em Dsus4 C5 D5 G5 D5
  E: "~@3 [b3,g4] ~@3 [f#3,d4], [a2,c4], g4@3 ~ [b3,g4]@4, ~ a3@3, ~@3 e3", // Em D Am Em
  F: "[~@3 [e3,g3,d4] ~@10 [e3,c4] ~ g2@2 ~@12 g3 [d3,b3] e3@3 ~@3 g4 ~@9 d3@3 ~@3 d4@2 ~@6 d3 [d3,g3,b3], c2@8 c2@5 d4@2 ~@8 d4@9 c4@6 d4@7 c4 c3 b3@11 g3 a3@2 b3@2 ~, d3@8 g3@10 e3@7 g3@5 [a3,b3]@24 a3@10 ~@6 e3@12 c4@2 c3@2 e3@8 a3@18 d4@2 g2@14, [g3,d4]@3 ~ d4@6 g3 d4 f#3@3 d3@4 ~@6 d3@2 b3@2 d3@2 g3@5 c3@3 [e4,g4]@8 d4@5 g2 g3@3 g4@8, ~@4 c3@4 e3@4 c3@19 ~@9 g2@8 ~@4 g3@4 g2@8 c2@32 g2@4 ~@2 d3@16 d4@2 g3@2 d4@6]/8", // Em7 C G Asus2 G5 Em
  G: "~@7 a3, e3@2 [c4,g4] e4, c4@3 g3@5, c3 c3@3, ~ c2@7", // C5
  H: "[~@8 [g2,d3]@2 ~@13 [d3,b3] ~@14 c4@2 [g2,d3]@2 ~@2 g2@2 ~@5 d4 ~ b3 ~ a3, [e4,f#4]@7 a3@10 d3 g3@2 d3 b3 d4 g3@3 c3@2 c4@6 g3@3 e3 g3@5 a3@2 ~ g2@8 ~@2, a3@6 [g3,d4]@2 d4@6 ~ g4@9 c4@3 g3@3 g4@10 d4@7 d4@3 [g3,b3]@2 [g3,d4,g4]@2 [f#3,d4,f#4]@2, d3@2 f#3 d4 d3@4 b3@5 ~@2 d4@4 a3@5 e3@12 c3@4 b3@6 g3@3 a3@5 ~@2, ~ d2@7 ~@4 g2@4 g2@8 c2@16 ~@2 d3@6 d3@6 ~@2]/7", // G5 G G5 Esus2 G5 G G5 D
  I: "b3@2 ~ e4 ~@3 c4, [e2,g4]@4 ~ c2@3, e4@3 ~ [d4,e4,g4]@4, ~ e3 c3 [c3,g3]", // Em Em7 C5
  J: "~@7 b3, [d2,f#4], a3!2, ~@2 d3@3 d4@3, ~@3 f#3@3 [d3,f#3]@2", K: "[e4,g4]!2 [d4,f#4]!2, e2 b2, b3@3 ~ b3@3 ~",
  L: "[c4,e4]@2 [c4,e4]@2 ~@3 c4, a2 [c2,d4,e4], a3@3 ~ g3@2 [c3,g3]@2, ~@5 g2@3", // C C5
  M: "[e4,g4]@2 [e4,g4]@2 ~@3 c4, e3@2 c3 [c3,g3], b3@3 ~ [d4,e4,g4]@4, ~@5 c2@3", // Em C5 Em7
  N: "~@3 f#3 ~ g3 [d3,a3]@2, d2, d4!2, f#3@3 ~ f#3@2 ~@2, ~ d3@2 ~", // D5
  O: "~@2 [d4,f#4]!2, e3 b2, [e4,g4]!2 ~@2, ~ e2@3 ~@4, ~@3 b3@4 ~", // D Em
  P: "[c4,e4]@2 [c4,e4]@2 ~@3 c4, a2 [c2,d4,g4], a3@3 ~ g3@2 [c3,g3]@2, ~@5 g2@3", // C Csus2 C5
  Q: "[e4,g4]@2 ~ g3 ~@3 c4, [e2,b3]@2 c3 [c3,g3], ~ [e4,g4] [d4,e4,g4]@2, ~@5 c2@3", // Em E5 C5 Em Em7
  R: "d3 ~@5 [d3,a3]@2, f#4, d4@3 a3 [f#3,d4]@4, a3@2 d3@3 g3@3, ~ d2@7", // D5 D
  S: "~@2 g3@2 d3 ~@2 d4, [g2,d4,g4]@4 ~ d2@3, b3@3 ~ f#4@4, ~ d3@3 a3@2 [d3,a3]@2", // G5 D5
  T: "~@7 b3, [d4,e4], c3@3 g3@2 e3@3, g3 e3 c3 [c3,g3], ~ c2@7", // Dsus2 C5
  U: "[e4,g4]@2 ~ b3 [d4,f#4]@2 ~ b3, [e2,e3] b2, b3@3 ~ b3@3 ~, ~ [e4,g4] ~ [d4,f#4]", // Em D E Em D
  V: "[c4,e4]@2 ~ a3 ~@3 c4, a2 [c2,d4,e4], a3@3 ~ g3@2 [c3,g3]@2, ~@2 [c4,e4]@2 ~ g2@3", // C C5 C
  W: "~@7 d4, [g2,g4]@4 ~ d2@3, d4@3 d4@4 ~, b3 [g3,b3] f#4@2, ~ d3@3 [d3,a3]@2 [d3,a3]@2", // G D5
  X: "[c3 ~@7 e4@2 [e4,g4]@2 [d4,f#4]@2 [d4,f#4]@2, [d4,e4]@6 c4 g4@3 ~@6, g3!2 c3@2 ~@2 b2@2, ~ c2@7 [e2,e3]@4 ~@4, ~@2 c3 c4@2 g3@3 b3@3 ~@5]/2", // Em D Dsus2 E
  Y: "a3@2 ~@5 [b2,g3,b3,d4], a2@2 a2!2, [c4,e4]@3 [c4,e4]@5, ~@2 a3@3 a3@3", // G C
  Z: "c3 ~@6 c4, e4@5 e3 g3@2, c4@2 g3 c4 [d4,g4]@4, g3 c3@3, ~ c2@7", // G5
  AA: "[d3 ~ d3 ~@8 [a3,g4] ~@3 [b3,g4] ~@3 [a3,g4] ~@3 [c4,g4], [d4,g4]@3 f#4@4 [d4,g4]@4 d4@9 [a3,g4]@2 g3@2, a3 a3@3 ~ g3 g4 g3 g4 d3@3, ~ d2@7 g2@16, ~@3 d4 d3 [d4,g4] d3@2 ~ d3@3 a3@4 b3@8]/3", // A7 Em A7 C5 G5 A7 G5
  AB: "~@3 [b3,g4] ~@3 [f#3,d4], [a2,c4], g4@3 ~ [b3,g4]@4, ~ e3@5 e3@2, ~ a3@3", // Em D Am Em
  AC: "~@2 e3 [e3,g3,d4] ~@2 d3 [d3,g3,d4], [e2,f#3] [d2,e3], d4@3 ~ [g3,d4]@3 ~, ~@5 a2@3", // Em7 G5 Esus2 Dsus2 G5
  AD: "[~@3 [e3,g3,d4] ~@10 [e3,c4] ~ g2@2 g2@2 ~@42 d4@2, c2@8 c2@5 d4@2 a3@16 ~@3 e3@3 ~@3 c4@4 [g5,c6]@2 c3 g4@12 d5 d3@4, d3@8 g3@10 e3@7 g3@5 b3@13 ~@3 d4@4 ~@2 d5@12 ~@6 g3@26 b3@10 b3@6 g5@16, [g3,d4]@6 ~@2 d4@12 g3@2 d4@2 f#3@6 d3@8 ~@22 g4@27 [d6,g6]@9 ~@4 g3@8 d4@8 a4@12, ~@4 c3@4 e3@4 c3@19 ~@17 g2@16 [c2,d4,e4]@32 g2@32]/8", // Em7 C C5 G5 C
  AE: "[~@23 b4@2 ~@5 g3@2, c3@3 d4@4 d4@5 [d6,a6] e6 f#6 g6@10 [b4,g5]@4 d5@3, ~ g3@4 e3@3 f#3@8 ~@2 g3@2 d5@2 d4@10, ~ e4@2 e4@5 ~@2 d3@6 ~ d3@2 d4 g4@7 [a5,d6]@5, ~@2 c2@6 ~ a2@7 [g2,b5]@16]/4", // D5 Em D5 G
  AF: "[~@19 e3, [c3,e5]@18 g6@2 c6 b5 g5@8 d4@6 g3@10 g3@8 b4@4 [d4,g4]@2 f#4@2 g4@8 g4@10, ~@2 c4@5 ~ c7@8 ~ d3@3 ~@2 d4@4 [a4,d5]@6 ~@2 e3@2 [c3,d4,e4]@4, ~@5 e4@11 g2@16 [e2,b3]@4 ~ g3@2 ~, ~@17 b6@15 g4@16 g5@16 ~@16]/5", // C G5 D5 C E5
  AG: "[~@4 [e4,g4] ~ [d4,f#4]!2, [d2,d4]@6 a3 b3@4 b3@4 ~, f#3@3 ~ f#3@4 ~@4 b2@4, ~ d3@3 [e2,e3]@2 ~@2, ~@5 g3@3 ~@2 [e4,g4]@2 ~@4]/2", // Em D E Em
  AH: "[e4,g4]@2 ~ g3 ~@3 g3, e2@4 ~ g3@2 ~, ~ [e3,e4,g4] [c3,d4,e4,g4]@2, ~@3 c4", // Em C
  AI: "[~@3 f#3 ~@8 [d4,f#4]@2 [d4,f#4]@2, d2@6 a3 b3@4 b3@4 ~, d4@4 ~ g3@3 [e4,g4]@2 [e4,g4]@2 ~@4, f#3@3 ~ [f#3,d4]@4 ~ e3@3 b2@4, ~ d3@3 e2@2 ~@2]/2", // D Em D
  AJ: "[c4,e4]@2 [c4,e4]@2 ~@3 c4, a3@3 ~ [c2,d4,e4]@4, ~@2 g3 e3, ~@5 c3@3, ~@13 g3@3", // C
  AK: "~@3 e4 ~@3 c4, g4, [e3,b3]!2 [d4,e4]@2, ~ e2@3 [c3,g3]@2 [c3,g3]@2, ~@5 c2@3", // E5 Dsus2 C5
  AL: "[~@4 d5!2 ~@5 g4 ~@3 a3, [d2,f#3]@5 g4 [a4,d5] d4@3 [g3,d4]@2 ~@4, d4@3 d4 f#4@4 g4@3 ~ [d4,f#4,a4,d5]@4, ~ a2@7 [g2,b4,d5]@4 ~ d2@3, ~@2 d3@6 ~ d3@3 d3@2 d3@2]/2", // D D5 G5 D G
  AM: "[~@8 [g4,b4]@2 ~@2 [f#4,a4]@2 ~ d4, [e4,g4]@5 g3 c4 d4@4 d4@4 ~, d4@2 g3 c4 e3@4 ~@2 [g4,b4]@2 ~@2 [f#4,a4]@2, c3 c3@3 ~@2 b2@2, ~ c2@7 [e2,e3]@4 ~@4]/2", // G F#m Em G F#m E
  AN: "[c4 ~@15 [g4,b4]@4 ~@8 [f#4,a4]@4, a2@4 [c2,e4]@3 d4@4 d4@4 ~, g4@3 g4@5 ~@2 [g4,b4]@2 [f#4,a4]@2 ~@2, d4!3 [c3,g3] ~@2 d3@2, ~ c4@3 g3 g2@3 [g2,g3]@4 ~ d2@3]/2", // G F#m C G F#m C5 G
  AO: "c4 ~ e4 c4@2 ~ e4@2, a2, e4@2 ~ e4@3 ~@2, ~ c4@2 ~@2 c4@3", AP: "[g4,b4]!2 [f#4,a4]!2, d4@3 ~ d4@3 ~",
  AQ: "~@7 d4, g4, d4@3 c4, a2@3 c4@2 g3@3, c4 g3 a2@2",
  AR: "[~@2 e4 ~@3 c3 ~@3 d3 ~@8 [a3,d4,g4] ~@3 [b3,g4] ~@3 [a3,g4] ~@3 [c4,g4], [c2,g3]@7 [c4,d4,g4]@4 [a3,f#4]@5 ~@2 g3@3 d3@7 g4@2 g3@2, g4@6 [e4,g4,c5]@9 ~@7 d4@4 [d4,g4]@4 [d4,g4]@8 ~@2 [a3,d4]@8 b3@16, e4@4 c3@4 ~@2 [d4,b4]@5 ~@3 d2@14 g2@32, ~@2 g2@13 ~ d3@4 ~@4 d3@4 d3@4 ~@2 d3@6 g4@4 g3@4 g4@4 g3@4 a3@8]/4", // Dsus4 Em A7 C5 Csus2 D C G5 …
  AS: "[~@3 [e3,g3,d4] ~@11 b4, c2@18 g3 c4 d4@2 g4@3 c4 e4@2 a4@4, d3 d4 c3@2, [g3,d4]@2 c3@2 e3 g2@11, ~ g2@3 g3@2 c3 e3@9]/2", // Em7 G5
  AT: "[~@3 [e4,c5] ~@3 [d4,b4] ~@3 [c4,a4] ~@2 e3@2, a2, [e4,c5]@3 ~ [e4,c5]@8 ~@4, ~ e3@5 e3@2 [d4,b4]@4 [c4,a4]@4, ~ a3@4 a3@3]/2", // C G F C G F
  AU: "f#3 ~@5 [b3,g4]@2 ~@6 [a3,f#4,g4]@2, e2, b3@3 ~ b3@4, ~ g3@15, ~ e3 g4 e3", // Em D
  AV: "~@3 [c4,e4,g4] ~@3 c4, [a3,f#4]@4 c4@3 ~, g4@3 ~ [e4,g4]@4, d3!2 c3 [c3,g3], ~ d2@3 ~ c2@3", // C D Em C5
  AW: "[b3 ~@5 [e4,c5]@2 ~@6 [d4,b4,c5]@2 ~@6 [c4,a4,c5]@2 ~@6 c4@2, a2, e4 a3 c5 a3@2 a3@3, ~ c4@15 [d4,b4]@8 c4@4 e3@4, ~ e3@3 e4@4 c5@3 ~ [a4,c5]@4]/2", // C G F G Am
  AX: "f#3 ~@5 [b3,g4]@2 ~@6 [a3,f#4,g4]@2, b3@3 ~ [b3,e4]@4, e3!2 g4 e3, ~ g3@15, ~ e2@7", // Em D E5
  AY: "~@3 [d4,e4,g4] ~@3 c4, [a3,f#4] [d4,e4,g4], g4@3 ~@5, d3!2 c3 [c3,g3], ~ d2@3 ~ c2@3", // Em7 D Em7 C5
  AZ: "[~@3 [e4,c5] ~@3 [d4,b4,c5] ~@3 [c4,a4,c5] ~@3 c4, a2, b3@8 c5@4 a3@5 ~@3 a3@12, e4 e3 a3@2 e4@4 [d4,b4]@4 c4@2 e3@2, ~ c4@15 c5@6 ~@2 [a4,c5]@8]/2", // C G F G Am
  BA: "f#3 ~@5 [b3,g4]@2 ~@2 e3@2 ~@2 [a3,f#4,g4]@2, b3@3 ~ b3@4, e3!2 g4 e3, ~ g3@15, ~ e2@7", // Em D
  BB: "~@3 [c4,e4,g4] ~@3 d4, [a3,f#4]@2 ~ [c3,g3], g4@3 ~ [e4,g4]@4, d3@4 d3@4 [c3,c4]@5 c4@3, ~ d2@3 ~ c2@3", // C D C5 Em C
  BC: "[b3 ~@5 [e4,c5]@2 ~@6 [d4,b4,c5]@2 ~@6 [c4,a4,c5]@2 ~@4 e3@4, a2, c4@2 [d4,b4] [c4,a4,c5], e4@4 a3@4 c5@4 a3@5 ~@3 a3@12, ~ e3@3 e4@4 c5@3 ~@5]/2", // C G F G F
  BD: "f#3 ~@5 [b3,g4]@2 ~@6 [a3,f#4,g4]@2, b3@3 ~ b3@4, e3!2 g4 e3, ~ g3@15, ~ e2@7", // Em D
  BE: "~@3 [c4,e4,g4] ~@3 [b3,d4,g4], [a3,f#4] [c4,e4], g4@3 ~ g4@3 ~, d3!2 c3!2, ~ d2@3 ~ c2@3", // C G D C
  BF: "[~@10 g3 d4@2 ~@3 d3@5 ~@2 g3@3 ~ [g3,d4]@2 ~@8 c4@5 g4!2 ~@2 c4@2, [b2,b3,d4]@7 d4@9 c3@2 e3@4 g3@4 [f#3,d4]@2 c3@2 [a3,b3]@32 d4@24 d4@10, g4@3 [c4,g4] [e4,g4]@11 d4@12 ~@3 f#3@2 ~@2 c3@4 ~@6 g4@4, ~@2 g3@2 c4@2 [c3,g3] c4@9 ~@13 [g3,d4]@2 g3@5 g3@5 ~ c4@3 e3@2 ~, ~@4 c3 c2@11 g2@4 ~@12 c2@16]/6", // G5 Bm D Asus2 C5 Em C5 G5
  BG: "[d3@2 ~ g3@3 ~ d4@2 d4@2 ~@9 e3@2 ~@9 a3, b3@22 [b3,d4]@9 ~ c2@4 [c3,e3]@2 c4@6 c3@2 a3@8 d4@4 d3@2 [g3,d4]@4, g2@4 ~@11 [d4,e4]@8 g3@3 [d3,g3]@2 f#3@4, g3@3 ~@4 g3@7 g3@3 g2@7 d2@8, ~@2 d3@3 ~@8 g4@11 ~ a2@7]/4", // Bm C G5 Dsus2 G5
  BH: "[~@14 d4 [d4,b4], a3@11 d5 d3@4, d4@4 g2@2 d4 g4 g2@8, b3@3 g3@13, g2@2 d3@7 d4 g4@6]/2", // G
  BI: "[~@3 [d4,b4,c5] c5@3 [c4,a4,c5] c5@3 [b3,g4,c5] b3@2 b3@2, c3@7 ~, e4 [d4,b4] ~ [g4,c5], c5@3 ~@13, ~ c4 ~@2 [c4,a4]@2 ~@2]/2", // G F Cmaj7 G C5 F
  BJ: "[~@15 f#4, g4@5 b3 d4 g3 g5@2 [a4,d5] b4 g3@2 g4@2, d4@3 a3@13, g3@2 g3 d4 d3@12, ~ g2@15]/2", // D5
  BK: "[~@2 e3 ~ g3 ~@9 d5 [a4,d5], [b3,e4,g4]@7 ~@3 g3@4 a3@8 d4@2 d3@2 d4@2 g4@4, e3@2 ~ [d4,e4,g4]@5 ~@2 f#3@6, ~@2 e2@5 ~ c3@8 [d2,f#4]@16, ~@6 c4@2 ~ a2@7]/2", // D5 Em Em7 D
  BL: "~@3 d4 ~@2 [d3,f#4,a4,d5]@2, d4@3 ~@5, [g3,g4,b4,d5]!2 [d3,f#4,a4,d5] ~, ~ g2@3 ~ d2@3", // D G D
  BM: "~@7 d4, e4@3 c4 e3 g3 c4@2, d4@2 g3 g4@5, g4 c3@3, c3 c2@7",
  BN: "[g4,b4]@2 ~ d4 [f#4,a4]@2 ~ d4, [e2,e3] b2, d4@3 ~ d4@3 ~, ~ [g4,b4] ~ [f#4,a4]", // G F#m E G F#m
  BO: "c4 ~@3 d4@2 ~@8 d4@2, a2 c2, g4@3 d4@3 [c3,c4]@2, d4@2 ~ [e4,g4]@5, ~@2 c4@5 ~@3 [g2,g3]@6", // C Em G
  BP: "[g4,b4]@2 ~ d4 [f#4,a4]@2 ~ d4, [g2,g3] [d2,d3], d4@3 ~ d4@3 ~, ~ [g4,b4] ~ [f#4,a4]", // G F#m G D G F#m
  BQ: "~@7 d4, g4@5 g3 c4@2, d4@2 g3 c4 e3@4, c4 c3@3, c3 c2@7",
  BR: "[g4,b4]@2 ~ d4 [f#4,a4]@2 [f#4,a4]@2, d4@3 ~ d4@3 ~, ~ [g4,b4] ~@2", // G F#m G
  BS: "[~@6 [c3,e3] ~@3 [d3,d4] ~@3 d3 ~@4 [a3,d4,g4] ~@3 [b3,g4] ~@3 [a3,g4] ~@3 [c4,g4], [c2,e4,g4]@7 d4@2 a3@2 [a3,f#4]@5 ~ d3@3 a3@4 b3@4 [a3,g4]@2 g3@2, d4@3 e3 g3@3 a3@2 a2@7 g2@16, g3@2 c3@3 d4@2 g4@4 d4 d3 [d4,g4]@2 [d4,g4]@4 ~ d4@12, ~@2 g2@13 ~ d2@15 ~@5 g3@4 g4@2 d3@2 g3@4 g4@4 d3@12]/4", // C D Dsus4 Em A7 C5 C D …
  BT: "e3@2 e3 [e3,g3,d4] ~@2 d3 [d3,g3,d4], f#3 e3, d4@3 ~ [g3,d4]@3 ~, ~@2 d3 ~, ~@5 d2@3", // Em7 G5
  BU: "[~@3 [d3,g3,d4] e3@3 ~@3 g3 ~ c3 ~ c3 ~@4 [d4,a4,d5] ~@3 [d4,b4,d5] ~@3 [d4,a4,d5] ~@3 [e4,c5,d5], [d3,g3,d4]@3 ~ d4@7 [g3,d4]@2 [d4,g4]@2 g4@13 [d4,a4,d5]@2 g3@2, c3@4 c3@12 c2@15 ~@3 d3@6 a4@8 b4@16, ~ c2@5 ~ e3 c3@4 ~@4 g2@16, ~@4 g3@5 e3@4 ~@2 d4@3 g3@2 [d4,d5] d3 g3@2 [d4,d5]@2 d3@6]/4", // G5 D5 G D5 C G5 D5 D
  BV: "~@3 [d4,b4,d5] ~@3 [b3,g4], a2, [e4,c5] [d4,b4,d5], d5@3 ~@5, ~ a3 ~ a3", // G Em C G
  BW: "~@3 [a3,f#4,g4] ~@3 [b3,d4,g4], [e2,b3] [d2,a3,f#4], g4@3 ~ g4@3 ~, ~ e3 ~ d3", // D G E5 D
  BX: "[c3@2 ~@5 d4 g3@4 ~@18 a4@2, [b3,d4]@8 g4@4 c3@2 [c4,g4]@4 g3@2 e3@2 g3 c4 g4@2 e3@2 [g4,d5]@4, g4@3 [c4,g4] [d4,e4]@12, ~ c2@15, ~@4 c3@5 ~@3 g3@4 c3@16]/2", // Bm C5 G5 C5 Dsus2
  BY: "[~@3 [a4,f#5,a5] ~@3 [b4,g5,b5] ~@3 [a4,f#5,a5] ~@3 [c5,a5,c6], g2, [d4,g4,d5]@12 a5@3 ~, b4@3 g3 [b4,g5,b5]@2 [a4,f#5]@2, g3 d3 g3@2 [a4,f#5,a5]@6 g3@3 ~ g3@2]/2", // D Em D F G5 Em D
  BZ: "~@3 [b4,g5,b5] ~@3 [g4,e5,g5], a2, [c5,a5,c6] [b4,b5], ~ a3 g5 a3, ~@5 e3@3", // Em C F B
  CA: "~@5 [f#4,d5,f#5]@3 ~@5 [g4,b4,d5,g5]@3, [g4,e5,g5] [f#4,f#5], e3!2 [d3,d5] d3, ~ e2@3 ~ d2@3", // D G C F# D
  CB: "[~@22 g4@2 c#4 ~ g3@2 [e3,c4]@4, [g4,b4,d5]@7 d5@9 g3@2 d4@2 e4@4 g4@8, g5@3 [c5,g5] c5@2 c4@6 [f#3,d4]@2 ~@2, c3!2 [c3,e5,g5]@4 ~@2, ~ c2@3 g4 g3 g4 c5@5 ~@4]/2", // C G C5 D C
  CC: "[~@24 c#4 ~ g3@2 [e3,c4]@4, g2, a3@8 g3@2 b3 g4@5, d4@4 g3@3 d4@5 ~@4, g3 b3 d3 g4@6 a3@3 [f#3,d4]@2 ~@2]/2", // C D
  CD: "[~@26 c#4 ~ g3@2 ~@5 a3 [b3,d4,g4]@32 ~@12, g2@16 ~ g2@16 ~@7, g4@21 d4@2 g4@12 ~@45, a3@4 d3@2 d4@6 b3@5 g3@9 [f#3,d4]@5 ~@2 a3@2 g3@32 ~@13, [g3,d4]@2 b3@6 g3@7 d4@4 b3@7 ~@4 [e3,c4]@6 ~@44]/5", // G D G5 C
})).s("gm_piano").gain(0.46)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@3 A B C@2 ~@2 D B E@2 F@2 G H I ~ J K L@2 M@2 N@2 O P Q R S T@2 R U V W ~@5 X ~@3 Y@2 ~ U E@2 Z@2 AA@2 AB@2 AC AD
  AE@4 AF@2 AG AH V ~ AI P V AJ ~@6 AK AL AM ~ AN AO ~@3 U ~ AP ~ D AQ ~ AR AS AT ~ AR AS ~@2 AR D ~@3 AU AV@2 AW@2 AX@2
  AY ~ AZ@2 BA BB BC@2 ~ BD AK ~@5 BE ~@6 BF BG ~@3 BH B ~@2 BI@2 BJ ~@3 BK@2 BL@2 BM@3 ~@3
>`.pickRestart({
  A: "~@3 e3", B: "~ b2@3 ~ a2@3", C: "[~@7 e3@2 ~ g3 ~@5, ~@2 g2@29 ~, ~@3 c3@3 ~@2, ~@18 e3@13 ~]/2", D: "~ e3@5 ~@2",
  E: "[~@7 e3@2 ~@7, ~@2 g2@29 ~]/2", F: "[~@3 d3@2 ~@3 g2@4 ~@4, ~@2 g2@2 ~ d3@4 ~@7, ~@3 g3@2 ~@3]/2",
  G: "c3@3 ~ c3@4 ~@2 g3@6", H: "g3!2", I: "~ g2 ~@2", J: "~@5 d4@3", K: "~@5 f#3@3",
  L: "[~@6 d4 ~@9, ~@2 d3@7 ~@7, ~@2 g2@2 ~ b3@8 ~@3, ~@3 g3@7 ~@6]/2",
  M: "[~@7 c3@3 ~ c4@3 ~ e3, ~ g2@15, ~@5 d4@11, ~@5 c3 ~@2]/2", N: "[~ g2 ~ b3@2 ~@3, ~@5 a3@4 ~@7]/2", O: "e3 b3 ~@2",
  P: "~ a2@7", Q: "~@3 b3 ~@3 b3, e3 ~", R: "~@3 a3 ~@4", S: "~@3 b3 ~@4, ~ e2@3 ~@4", T: "[~ a2@5 ~ b3@4 ~@4 b3]/2",
  U: "~ b2@3 ~@4", V: "~@7 b3", W: "~@3 b3 d4@3 ~", X: "~@3 b3@4 b3", Y: "[~@5 d3@5 ~@6]/2",
  Z: "[~@9 d4@2 ~@2 d4@2 g3, ~@3 d3@13, ~@4 g2@4 ~@3 d4@2 ~@3, ~@11 b3@13 b3@8]/2",
  AA: "[~ g3@2 ~@4 e3@9, ~@2 c3 c3@4 ~, ~@5 e3@2 ~@9]/2",
  AB: "[~@9 d5@2 ~@2 b3@3, ~ d3@3 d3@8 ~@4, ~@3 a3@13, ~@7 g3@9]/2", AC: "~@2 c3 [c3,g3], ~ c4@7", AD: "~ a5, d2",
  AE: "[~@20 g3@4 g3@4 ~@23 d6 ~@8 d4@2 ~@2, ~@10 a4@22 ~@6 d4@18 [c5,d5] b4@2 g4@5, ~@8 d3@8 ~ g3@3 g3@12, ~@15 g4@7 g4@4 d6@6, ~@23 c4@9]/4", // Csus2
  AF: "[~@9 g4@4 ~@3, ~@3 a3@13, ~@3 d4@3 ~@10, ~ d3@3, ~@5 b3@11]/2", AG: "~ b2@3 ~@3 g3", AH: "~@3 f#3 ~@4, ~ a2@7",
  AI: "~ b2@3 ~@4, b3 ~", AJ: "~@3 a3 ~@4, a2 ~", AK: "~@7 d4", AL: "~@14 d4 ~", AM: "~@3 d4 ~@3 d4, ~ b2",
  AN: "~@2 c3 ~, c4@7 ~", AO: "~@2 a3 ~@5", AP: "~ b3", AQ: "~ b2@7", AR: "~@5 e3@3", AS: "~@2 e3@7 ~@7",
  AT: "~@3 e4 ~ e3 ~@2", AU: "~@2 c3 ~", AV: "[~@6 g3 ~@3 g3 ~ g2@4, ~ g2 g2 ~, ~@5 d3@4 d3@7]/2",
  AW: "[~@15 e3, e3@3 e3@4 e3@5 e4@4, ~ g2@15, ~@3 c3 c3@4, ~@9 g3@7]/2",
  AX: "[~@12 g3@2 ~@6 g2@4 g2@7 ~, ~@2 g2@2 g2 ~@3, ~@10 d3@21 ~, ~@18 a3@13 ~]/2", AY: "~@3 e3, ~@10 b3@5 ~",
  AZ: "[~@5 b3@8 [b3,c4]@3]/2", BA: "~ g3@3 ~@2 g3@2", BB: "~@2 b3 ~@3 c3@2",
  BC: "[b3@5 ~@8 b3@3, ~@7 b4@4 ~@5, ~@9 g4@5 ~@2]/2", BD: "~ d3 ~@2", BE: "f3@4 ~@3 d4, ~ b2", BF: "~ e2@3 ~@4",
  BG: "~@3 e3 ~@2 c2@2", BH: "~ e3@3 ~ e3@3", BI: "[~@5 d3@7 ~ g3 ~@2]/2", BJ: "~ e3@3 ~@4",
  BK: "[~@3 d3@3 ~@2, ~@5 b3@5 ~@6]/2", BL: "[~@12 d3@13 ~@7, ~@10 a3@15 ~@7]/2", BM: "[~@3 d3@32 ~@13]/3",
})).s("gm_piano").gain(0.29)

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

// chords · synth strings 1 · "pad"
const synth_strings_1 = note(`<
  ~ A@2 B C D@2 E@2 F G H@4 I@2 J@2 K L@5 M@2 N O P Q R S T U R V@8 W X Y Z@2 AA@2 AB@2 AC@6 AD AE@3 AF@4 R AG AH AI R
  AJ T U R AK@2 AL AM U AN AO@2 AP AQ@2 AR@3 AS AT@4 AU@2 AV@3 AW AX@2 AY AZ BA@3 BB BC@8 BD BE BF@6 BG BH BI BJ BK BL
  BM BN BO BP BQ BR BS@2 BT@6 BU@4 BV@3 BW BX@6 BY@4 ~@2
>`.pickRestart({
  A: "[g2,d3,d4,g4]/2", B: "[a2,e3,a3,c4,g4]", C: "[e2,e3,d4] [d2,d3,e3,g3,d4], f#3", D: "[d3 e3@3, [c2,c3,g3,d4]]/2",
  E: "[d4 [d4,b4], [g2,d3,g3,g4]]/2", F: "[e4,c5] [d4,b4], a2", G: "[e2,e3,b3,g4] [d2,d3,a3,f#4]",
  H: "[~@24 g3@7 ~ [g2,g3,b3]@32, [c2,c3,d4,e4] ~, g3@24 ~@7 a3@32 ~, ~ [e3,c4] ~@2]/4", I: "[[c3,e3,c4], c2@27 ~@5]/2",
  J: "[~ a3, [g2,d3,b3]]/2", K: "d4",
  L: "[g4 f#4 ~@2 a3@2 ~@3 e3, d4@43 ~@27 c4@10, [d3,a3]@16 g4@61 ~@3, ~ g3@2 [c3,d4,e4]@2]/5", // D5 C
  M: "[d4@2 ~ b3, [g2,g3], [b3,g4]@3 ~, ~ [a4,d5]]/2", N: "[e3,e4] [c3,g3,d4,e4]", O: "[d2,d3,a3,d4,f#4]",
  P: "[e3,b3,e4,g4] [b3,d4,f#4]", Q: "[a2,a3,c4,e4] [c3,d4,e4,g4]", R: "[e3,b3,e4] [c3,g3,d4,e4], g4",
  S: "~ d4, [d3,a3,e4,f#4]", T: "[e3,e4,g4] [b2,d4,f#4], b3", U: "[a2,a3,c4,e4] [c3,g3,d4,e4,g4]",
  V: "[d4@8 ~@7 g3@9 [d4,f#4]@8 [e4,g4]@16 [e4,g4,b4]@8 [f#4,a4]@8 ~@8 c5@8 [g4,b4]@8 [f#4,a4]@8 ~@8 c5@8 [g4,b4]@8 [f#4,a4]@8, [d3,a3,f#4] ~@7, ~@5 g4@7 ~@20 [e4,g4]@8 d4@8 [e4,g4]@8 d4@8, ~@3 d5@29]/8", // D Em F#m G F#m G F#m D …
  W: "[e4,g4]", X: "[e4,g4,c5,d5]", Y: "g4 f#4, [d4,a4,d5]", Z: "[[d4,g4]@2 [b3,d4,g4] [a3,d4,g4], g3, g2@25 ~@7]/2",
  AA: "[c4 [b3,d4] [e3,b3,e4] [d3,a3,f#4], g4@3 ~, a3 ~]/2", AB: "[~ g3, [c3,d4,e4], g3 ~, ~ c4@3]/2",
  AC: "[~@23 c4@9 ~@4 d4@8 d4@4, g3@13 ~@3, b3@32 [c3,e3]@31 ~ [g2,d3]@32, ~@7 d4@9 ~@8]/6", AD: "[c3,d4,e4]",
  AE: "[g3@8 f#3@8 ~@19 g5@12 ~, d4@9 ~@7, [d3,a3] [g2,d3,a3,b3]@2]/3", // D5 G
  AF: "[~@5 a4@3, [c3,d4] [g3,d4,b4], g4@30 g4@11 ~@23, ~@11 [e4,c5]@5 ~@16]/4", AG: "[d3,d4,f#4]",
  AH: "[e2,e3,g3,b3,e4] [b2,b3,d4,f#4]", AI: "[a2,a3,c4,e4] [c3,g3,d4,e4]", AJ: "~@3 [d4,a4]@5, [d3,a3,f#4]",
  AK: "[f#4 ~ [g2,g3,d4] [d3,a3,d4,f#4], [d3,a3,d4] ~, ~ d5@2 ~, ~ f#4 ~@2, ~@3 g4@3 ~@2]/2", AL: "[c3,g3,d4,e4,g4]",
  AM: "[e3,b3,e4,g4] [b2,b3,d4,f#4]", AN: "[g2,g3,b3,g4] [d3,a3,f#4], d4",
  AO: "[~@7 c4 [e2,e3,e4]@4 [b2,d4,f#4]@4, g4@3 ~, e4 ~, c4@3 c4 d4@4 b3@8, ~@2 g3@3 c4 g3@2 ~@8]/2", // E Bm
  AP: "[a2,a3,c4,e4]", AQ: "[~@4 g3!2 [d3,f#3]@2, [c3,e4] d2, d4@3 d4@5, g3!2 d3 ~, ~@6 e3@11 ~@15]/2",
  AR: "[~@2 a3 b3 c4 b3, g4@11 ~, [g2,g3,d4]@2 [a2,a3]]/3", AS: "[e2,e3,b3,e4,g4] [d3,a3,d4,f#4]",
  AT: "[d4@4 c4@11 ~@5 [e5,c6]@4 [d5,b5]@4 [c5,a5]@4, [c2,c3,e3,g3]@30 [e4,a4,c5]@11 ~@23, ~ [a2,a3]]/4", // C G F C Am A
  AU: "[[b4,g5] b4 [d3,d4,a4,f#5] [c3,c4,g4,c5,e5], e4 ~, ~ g5@3]/2", // Em D C
  AV: "[[c5,e5]@8 [e5,c6]@8 [d5,b5]@8 [c5,a5]@7 ~@9 [b4,g5]@8, [e4,a4]@31 e4@17, ~@31 [b4,g5]@8 ~@9, ~@2 b3]/3", // C G F Em A5 Em
  AW: "[d3,d4,a4,f#5] [c3,c4,g4,d5,e5]", AX: "[[c5,e5] [e5,c6,e6] [d5,b5,d6] [c5,a5,c6], [a3,e4,a4]]/2",
  AY: "[b4,g5,b5]!2, [e3,e4]", AZ: "[d3,d4,a4,f#5,a5] [c3,c4,g4,d5,e5,g5]",
  BA: "[[c5,e5] [e5,c6,e6] [d5,b5,d6] [a5,c6] [g5,b5] [b4,g5,b5], [e4,a4]@2 [e3,e4], ~@3 c5@2 ~]/3", // C G Am G Em A5 E
  BB: "[d3,d4,a4,f#5,a5] [c3,c4,g4,e5,g5]", // D C
  BC: "[[b3,g4,b4,d5]@8 [c3,g3,c4,g4,d5,e5]@23 ~@33 [e4,e5]@32 [d4,d5]@32, g5@31 [g4,g5]@97, ~@31 [d4,d5]@32 ~@65, ~ d6@3]/8", // G C E D G D
  BD: "[e4,e5]", BE: "g5 f#5, [d4,d5,a5]",
  BF: "[a5 ~@15 a5@8 ~@8 [c3,c4,e5]@32 [d4,g4,d5]@32, [d4,g4,d5] ~@2, [g5,b5]@12 g5@35 ~]/6", // C G5 G
  BG: "[e4,e5,g5] [c3,c4,e5,g5]", BH: "[d3,d4,d5,f#5,a5]", BI: "[g3,d4,g4,b4,g5] [d3,d4,a4,f#5]",
  BJ: "[c3,c4,g4,d5,e5]", BK: "[e3,e4,a4,e5,g5] [b3,b4,d5,f#5]", BL: "[a3,a4,c5,e5]",
  BM: "[g3,g4,b4,g5] [d4,a4,f#5], d5", BN: "c4 ~@5 [c5,g5]@10, [g4,e5], d5@3 ~@5, ~@4 c4@11 ~",
  BO: "[e4,e5,g5] [b3,d5,f#5], b4", BP: "[a4,c5,e5], a3@3 ~", BQ: "~@7 g4, [c3,c4,d5,e5,g5], g4@7 ~, ~ e4, ~@3 c5",
  BR: "[d4,a4,d5,g5] [d4,a4,d5,f#5], d3", // Dsus4 D
  BS: "[[d4,g4,b4]@5 ~@11 g3@4 ~@8 g3@2 [c4,g4]@2, g2@31 ~, g3@12 g3@2 a3@8 b3@2 d4@7 ~, ~@5 d4@17 g4@8 ~@2, ~@5 g4@15 g3@6 b3@5 ~]/2", // G C5
// … 90 more lines

More by Don Henley