Strudelify
Sorry Seems To Be The Hardest Word cover art

Blue Moves

Sorry Seems To Be The Hardest Word

Elton John

KeyG minorTempo60 bpm
0:00/0:00
// Sorry Seems To Be The Hardest Word — John Elton
// 60 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 14 "BO BASS" named as a bass, played on electric bass finger (its viola patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 58 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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@2 C D E F G H I J K L M N@3 O@2 P@2 Q R S T U V@2 W X Y Z AA AB AC AD@2 AE@2 AF@2 AG AH AI@2 AJ AK AL AM@2 AN
  AO@2 AP@2 AQ@2
>`.pickRestart({
  A: "[d6@30 ~@10 bb5@8 g5@8 ~ a5@2 ~@5, bb4@8 ~@23 bb4@8 ~@17 [d4,g4,bb4]@4 ~@4, ~@32 d6@15 ~@9 bb5@2 ~@6]/2", // Gm
  B: "[~@12 c5@3 [c4,g4]@4 eb4@4 ~@2 eb4@2 ~ c4@4 eb4@7 g4@2 gb4@2 g4@2 a4@2 ~ g4@4 gb4@4 ~@4 [c4,d4]@3 ~, ~@8 c4@6 ~@9 c3@12 ~@12 d3@12 ~@5, ~@10 b4@4 ~@9 d4@5 ~@11 a3@8 ~@17]/2", // C5 Csus2
  C: "~@8 a4 ~ [a4,d5] ~@2 [g4,ab4,d5] ~@2 [g2,d3,gb4,a4,d5]@5 bb4 ~@2 d5@2 bb4@3 d5 ~@2, d4@8 bb3@6 ~@10 bb4 ~@7, ~@2 d3@5 ~@5 [f2,f4]@3 ~", // D5 G D F
  D: "~@12 c4@3 [c3,g3,f4]@4 ~ eb4@3 ~@5 eb4@4, [eb4,g4,d5] ~, ~@4 [g3,c5]@11 bb3@15 ~@2, ~@8 d4@8 ~@8 d4@7 ~", // Csus4 Ebmaj7 C5
  E: "~@8 [a4,c5]@2 [a4,c5]@2 [a4,c5]@2 [g4,c5] ~@3 [g4,c5]@2 ~@2 [f4,bb4] ~ [f4,d5]@4 [f2,f4,c5]@2 ~@2, ~@4 f2@3 ~", // Am C5 Bb5 Dm F5
  F: "f4@7 ~@5 bb3@4 [g3,c4,eb4]@4 d4@3 ~ g4@4 gb4@4, bb4@15 ~@17, ~@8 [bb2,d4,f4]@8 a2@9 ~@7", // Cm Bb
  G: "~@8 [a4,d5] ~ [a4,d5] ~@2 [g4,bb4,d5] ~@7 bb4@2 ~ bb4 ~ bb4@4 d5 ~, [g2,bb3,d4]@8 bb3@6 ~@10 f4@7 ~, ~@2 d3@5 ~ [g2,d3,gb4,a4,d5]@4 [f2,d5]@2 ~@2", // D5 Gm D Dm
  H: "d5 ~@2 c4 [c3,g3,f4] g4 f4 eb4, [c3,eb4,g4] ~, ~@4 [g3,c5]@12 bb3@15 ~, ~ d4 ~@2", // Csus4 Cm C5
  I: "a3@8 [a4,c5]@2 [a4,c5] ~ [a4,c5] ~ [g4,c5] ~ [f2,c3,g4,d5]@6 [g4,c5]@2 ~@5 c5@3, [f2,c4]@11 ~@5 a4 ~@7 [f2,c3,g4,d5]@8", // Am C5 Fsus2 C5 F5 Fsus2
  J: "~ f4@7 [bb2,d4,f4]@4 bb3 ~@3 [g3,c4]@4 d4@3 ~ [eb3,g4]@4 gb4@4, ~@15 eb4@4 ~@13, ~@2 a2 ~", // Bb C5 Eb
  K: "bb3@8 [a4,d5]@2 [a4,d5] ~@2 [g4,d5] gb4 ~ [g2,gb4,bb4,d5]@5 bb4 ~@2 bb4@2 bb4@4 d5 ~, [g2,d4]@11 ~@5 d3@15 ~, ~@8 bb3@5 ~@11 [f2,f4,d5]@7 ~", // D5 G5 Gm G5 Dm
  L: "d5@4 ~@4 c3@7 ~ [c3,d4,f4]@5 ~@3 [c4,eb4]@8, [eb4,g4]@5 ~@3, ~ c5@4 ~@3", // Dm7 Cm Eb
  M: "~@8 [a4,c5]@2 [a4,c5]@2 a4@2 ~@4 [f4,a4,d5]@4 [f4,a4,c5]@2 ~@4 bb2@2 [d4,f4,bb4] ~, ~@12 c5 ~ [g4,a4,c5]@4 ~@14, ~@16 [f2,c3]@8 [c3,f4,a4,c5]@7 ~", // Am Dm F Bb Am7 F5 F
  N: "[[bb2,d4,f4]@8 ~@4 bb3@3 ~ [g3,c4,eb4]@4 d4@3 ~@17 [g4,d5]@2 [bb4,d5] ~@3 [bb4,d5]@2 ~@13 bb4 ~ d5@4 ~@9 c4@3 [d4,f4]@9 eb4@8, bb4@14 ~@14 gb4@15 ~@5 d5@8 [bb2,f5]@7 [c3,eb4,g4]@16 ~@17, ~@8 [bb2,d4,f4]@7 ~ a2@9 ~@7 g2@11 ~@5 [f2,bb4,a5]@15 ~@4 [g3,c5]@12 g3@17, ~@36 d3@12 ~@5 g5@9 ~@34, ~@58 d5@5 ~@9 d4@7 ~@17]/3", // Bb Cm G5 Bb Dm Bb5 Cm Bb …
  O: "[[a4,c5]@2 ~ [a4,c5]@5 [c3,a4,c5]@6 f4 ~ f4@5 ~@3 c3@4 bb4@2 ~@2 f4@8 [bb2,bb3,d4,f4]@8 a2@4 bb3@2 ~@6 bb3@3 ~, ~@8 f2@21 ~@35, ~@16 [bb4,d5]@13 ~@3 bb4@16 ~@16, ~@16 c3@8 ~@7 bb2@8 ~@17 [a2,c4,f4]@7 ~, ~@21 [f4,c5]@8 ~@19 [a3,d4]@8 ~@8]/2", // Am F Bb F F5 D5
  P: "[~@4 eb5@2 ~@6 eb5 ~@3 [gb2,a4]@4 d5@2 ~@26 f3 ~@11 bb4@4, [g2,g4,bb4]@15 ~@7 eb5@6 d5@19 g5@7 d5 [g3,bb3,d4]@3 c5@4 ~@2, ~@6 eb5@6 ~ eb5@7 a4@11 ~@5 g5@4 [f3,bb3,d4]@4 a5@4 [bb3,d4]@4 f5@10 ~@2, ~@8 [g3,bb3,eb4,f5]@7 ~ gb4@16 ~@6 a5@2 bb5@22 ~@2, ~@12 [gb3,a3,d4]@4 [f2,g4,bb4]@15 ~]/2", // Gbm Gm Bb Eb D Gm7
  Q: "~@4 eb5@2 ~@6 eb5@4 ~@10 a4@4 bb4 ~, eb2@16 [d2,gb4,d5]@15 ~, ~@6 eb5@6 ~@10 c5@9 ~, ~@8 f5@7 ~@9 [gb3,a3,c4,bb4]@7 ~", // D Gbdim
  R: "[g2,d4,g4]@8 ~ [bb3,d4,g4]@3 [bb3,g4]@4 [c4,eb4,g4]@4 ~@4 [a3,d4]@4 [a3,d4] ~@3, bb4@15 ~@5 [c4,eb4,g4]@9 ~@3, ~@8 g2@4 d4@2 ~@2 a2@13 ~@3", // G5 Gm Eb Cm D5 Cm
  S: "~@5 eb5 eb5@2 ~@4 eb5@3 ~ a4@4 d5@2 ~@6 d5@3 ~, [g4,bb4]@7 ~ [g3,bb3,eb4,f5]@7 ~@7 d5@6 ~@4, ~ g2@7 ~@8 [gb2,gb4]@16, ~@24 eb5@7 ~", // Gm Eb Gb
  T: "~@6 a5 ~@9 e2@4 f5@2 d5 ~@5 g4@4, f2@8 [f3,bb3,d4,bb5]@12 ~@2 [e3,bb3,c4]@9 ~, ~ g5 ~ a5@2 ~@3, ~@14 g5@6 ~@6 bb4@5 ~", // Bb C7
  U: "eb2@4 c5@2 d5@2 ~@4 c5@3 ~@9 [eb2,eb3]@4 [bb3,eb4,g4]@2 ~@2, ~@4 eb4 ~@3 [g3,bb3,eb4,eb5]@7 ~ [c3,eb4,g4,c5]@11 ~ [d2,d3] ~@3, ~@10 d5@5 ~@17", // Eb Cm D
  V: "[~@5 [bb4,d5]@2 ~ [g4,eb5]@2 d5 ~@4 [d2,d3]@5 eb5@2 ~ d4@2 ~@2 gb2 ~ c5@2 [g2,d3,d4,g4,bb4]@13 d5@2 bb5 ~ [d5,bb5]@3 ~ [c5,a5] ~@3 g5@4 f5@2 ~@2, c3@7 ~ c3@5 ~@10 [d3,c4,gb4,d5]@7 ~@18 [g3,bb3,d4]@12 ~@4, ~@2 [eb4,c5]@5 ~@6 gb5@9 ~@42]/2", // Bb Cm D Gm F D7 Gm Cm
  W: "[c3,a4,f5]@6 ~ [g4,eb5] ~ c4@4 ~@3 [g3,c4,f4]@4 eb4@3 ~@5 f4@3 ~, ~@9 eb5@15 [c4,eb4,c5]@7 ~", // F Cm Csus4 Cm
  X: "[a3,eb4,f4]@4 ~@3 c6 ~@2 a5@2 ~@2 [a4,f5] ~, f2 ~, ~@8 [a3,eb4,f4]@7 ~ [bb3,eb4,g4,bb5]@8 [eb4,f4,bb4,g5]@7 ~, ~@3 c5 ~@4", // F7 Dm F7 Eb
  Y: "eb5@6 d5 ~ [d3,f4,d5]@8 [a3,a4]@2 bb4@2 ~ d5 ~@8 a5@2, ~@16 [g3,eb4]@4 c5@2 ~ gb3@8 ~, ~@3 [a3,d4,d5], ~@25 gb5@6 ~, ~@7 g5", // Dm A Cm D5
  Z: "[g2,bb5]@5 ~ [bb5,d6] ~ [g3,bb3,d4,bb5,d6]@4 [c6,eb6]@4 [bb3,d6]@4 [a5,db6]@4 ~@4 f5@4, ~@16 bb5@3 ~@5 [bb3,bb5,d6]@8", // Gm Bb Gm Cm Bb A Bb
  AA: "[c3,d6,f6] eb6 ~ eb6 ~@2 bb4@2, ~@4 c6@11 ~ c6@15 ~, ~@8 [bb5,d6]@7 ~@17", // Dm7 Bb
  AB: "[f3,c4,eb4,a4]@4 [f5,a5]@2 [g5,bb5]@2 [a3,eb4,f4,a5]@4 [a3,eb4,f4]@3 ~@5 [a5,c6]@2 d6 ~ [f4,f6]@4 [eb5,c6]@3 ~, ~@4 c6@6 ~ bb5 ~@4, ~@16 [a3,eb4,f4]@7 [a3,eb4]@6 ~@3", // F7 F Gm F7 Am F Cm F7 …
  AC: "[bb2,d5,bb5]@4 d5 c5 bb4 a4 ~@5 d4 ~ f4, ~@2 [f3,bb3,d4] ~ [a2,a3,bb4]@2 eb4!2, ~@18 a4@11 ~@3, ~@20 g4@9 ~@3, ~@11 f4@4 ~", // Bb Bbmaj7
  AD: "[~@4 eb5@2 eb5@2 ~@12 d5@2 d5@2 eb5@4 ~@10 a5@2 ~@4 a5@4 ~ a5 ~@2 g5@2 d5 ~@5 bb4@4, g2@8 [g3,bb3,eb4,f5]@7 ~ [gb2,gb4,a4]@8 ~@8 [f2,g4,bb4]@8 [f3,bb3,d4,bb5]@9 ~@15, ~@12 eb5@12 ~@4 d5@12 ~@8 e2@15 ~, ~@36 g5@4 ~@18 c5@5 ~]/2", // Eb Gbm Gm7 Bb
  AE: "[~@4 eb5@2 eb5@2 [g3,c4,eb4,f5]@4 eb5@3 ~ [d2,gb4,d5]@4 c5@2 ~@10 [d4,g4]@8 [g2,bb3,d4]@4 [bb3,d4]@3 ~ [eb4,g4]@4 ~@4 [a3,d4]@4 [a3,d4,gb4]@4, eb2@8 ~@15 [gb3,a3,c4]@7 ~ g2@9 ~@8 a2@16, ~@4 g4 ~ g4@8 ~@8 bb4@5 bb4@17 ~@20, ~@25 a4@5 ~@10 g4@7 ~@5 [c4,eb4,g4]@12]/2", // Cm D G5 Gm Bb Eb D5 D …
  AF: "[~@2 eb5@2 eb5@2 ~@10 gb2@4 d5 d5@2 ~@15 a5@2 [f3,bb3,d4,bb5]@4 a5@2 ~@15 g4 ~@2, [g2,g4,bb4]@15 ~@17 f2@8 ~@8 e2@7 [e3,bb3] c4@2 c5@2 bb4@3 ~, ~@6 eb5@6 eb5@7 ~@5 eb5@16 ~@6 g5@17 ~, ~@8 [g3,bb3,eb4,f5]@7 ~ [gb4,a4]@24 ~@14 d5@9 ~, ~@36 [bb4,g5]@4 ~@12 f5@11 ~]/2", // Bb Gm Edim Eb Gbm Eb
  AG: "eb2@4 c5 ~ c5@2 eb5@2 ~@14 eb3@4 [bb3,eb4,g4] ~@3, ~@10 d5@5 ~ [c3,eb4,g4]@13 ~@3, ~@13 c5@15 d3@3 ~", // Eb Cm
  AH: "[c3,eb4,c5]@4 d5@2 ~@2 c3@4 d5@2 ~@2 d3@6 ~@6 c5@3 g2, ~@6 [g4,eb5]@8 ~@2 [d2,gb4,a4,gb5]@15 ~, ~@22 eb5@9 ~, ~@24 [d3,d5]@7 ~", // Cm D
  AI: "[[d4,g4] ~@6 [g4,bb4,d5]@2 ~ [g4,bb4,d5]@2 [g4,d5] ~@2 [d3,a4,d5]@5 bb4 ~@2 [f2,f4,bb4,d5]@6 bb4 ~@13 c4@4 [bb3,eb4,g4]@4 d4@4 ~@4 d4@3 ~@2, [g2,bb4]@7 bb3@3 ~@2 bb4@2 ~@21 [g3,c5]@11 ~@18, ~@5 d3@7 ~@19 [c3,g4,d5]@16 ~@17, ~@39 d4@7 ~@9 eb4@7 ~@2]/2", // G5 Gm G5 D5 Bb Eb Gm C5 …
  AJ: "a3@8 [a4,c5] ~ [a4,c5]@2 [g4,c5]@3 ~@3 [g4,d5]@3 [g4,c5]@2 ~ [f2,c3,f4,c5]@5 bb4@2 ~, ~@4 g3@3 ~ [f2,c3]@3 ~@5, ~@18 bb4 ~@2 bb4 ~@10", // Am C5 G5 C5 F5
  AK: "~@8 [f3,bb3,d4,f4]@6 bb3 ~@8 [d3,c4,e4,g4]@4 [d4,gb4,a4]@4 ~, bb4@14 ~@2 [c3,g3,eb4]@13 ~@3, ~@16 c4@7 ~@4 d2 ~@4, ~@20 d4@7 ~@5", // Bb C D Cm
  AL: "g2@4 [g4,bb4,d5] ~@11 [g3,bb3]@5 ~@3 [g3,bb3,d4,d5]@4 bb4@3 ~, d3 ~@7 bb3@6 g5@13 ~@5, ~@3 d5@3 ~@2, ~@21 f5@6 ~@5", // Gm
  AM: "[~@4 eb4@4 [g3,c4]@8 [c4,f4]@4 eb4@3 ~@12 eb5@4 ~ f4 ~@6 gb4@8 ~@5 a4@4, d5@16 ~@7 f4@11 d5@5 a3@16 ~ [a3,c4,gb4]@8, ~@4 c5@12 c3@24 ~@5 eb5@19, ~@27 eb4@12 [eb4,g4,f5]@25, ~@32 [a2,c5]@8 ~@7 d3@17]/2", // C5 F5 Gbdim Eb Am
  AN: "g5@2 a5 ~@13 [g3,bb3,d4]@8 ~@4 a4@4, g2 bb5@7, ~@8 [g3,bb3,d4]@7 ~ g5@16, ~@3 a5@5, ~@3 [g3,bb3,d4]", // Gm
  AO: "[[g4,c5]@2 ~@6 [a3,eb4,g4,eb5]@4 d5@2 ~ eb5 d3@6 eb5@2 gb3@3 gb5@3 ~@14 f5@4 ~@12 e5@4, a2@14 ~@10 [c4,d5]@7 [f3,g5]@16 ~ e3@15 ~, ~@2 d5@10 ~@3 f5@9 ~@16 d5@7 ~ e5@8 bb4@8, ~@13 g4@3]/2", // C5 Am7b5 Csus2 Fsus2
  AP: "[~@12 eb5@4 d5@4 bb4@2 a4@2 c5@2 bb4 ~@3 g4 ~ c4@5 d4@2 ~ eb4@4 d4 ~@3 d4@6 ~@2 c4@6 ~@2, eb3@16 d3@13 ~@2 a2@13 ~@4 d2@15 ~, eb5@3 ~@13, ~@4 g4@13 ~@47, ~@8 [c4,c5]@8 ~@8 d4 ~@7 [g3,g4]@13 ~@19]/2", // C G
  AQ: "[~ [bb3,d4,g4]@36 ~@27, [g2,d3,a3]@9 ~@7]/2", // Gm Gsus2
})).s("gm_piano").gain(0.46)

// chords · piano · soft notes
const piano_soft = note(`<
  A@3 B C D E F ~ G H I J K L M@2 N O P ~ Q R ~ S ~@3 T U V W X Y Z ~ AA ~@2 AB AC@2 AD ~ AE@3 AF AG AH@2 ~@2 AI ~ AJ
  ~@2
>`.pickRestart({
  A: "[[f4,g4,d5]@8 [f4,g4,bb4,d5]@4 ~@4 [e4,g4,bb4,d5]@8 [e4,g4,bb4,d5]@6 ~ [eb4,g4,d5]@8 ~ [bb4,d5]@7 ~ [d4,g4,bb4,d5]@5 ~@6 g5@2 d5@2 ~ eb5@15 ~@17, ~@39 [eb4,g4]@8 ~@16 [eb4,g4]@15 ~@18, ~@21 c4@3 ~@8]/3", // G7 Gm7 Em7b5 Ebmaj7 Bb Gm Eb
  B: "a3@4 ~@20 [gb3,c4,d4]@4 d3@3 ~", C: "[g2,bb3]@9 ~@23", D: "c3@15 ~@9 [c3,g3]@7 ~",
  E: "~@8 g3@7 ~ c3@14 ~@2, [f2,c4]@13 ~@19, ~ a3@13 ~@18, ~ c3@3 ~@4", F: "[bb2,d4]@2 ~@4 [eb3,a3,c4] d3",
  G: "~@24 [c3,g3]@7 ~", H: "~@8 a3@6 a4 ~@17, ~@4 c3@11 ~@17", I: "~ [bb2,d4]@7 ~@16 [a3,c4]@4 d3@4, ~ bb4@11 ~@20",
  J: "~@2 d3@5 ~@9", K: "c3@4 ~@8 c3@2 g3 ~, ~@5 g3@2 ~", L: "~@4 a3@3 ~@4 f2 ~@4, [f2,c4]@13 ~@19, a3 ~@3, ~ c3@3 ~@4",
  M: "[~@24 g4@4 d3@4 ~@8 a3@5 ~@19, ~@3 a3@2 ~@3, ~@3 [eb3,c4] ~@4]/2", N: "~@3 [c3,c4]", O: "[f2,c3] ~@3",
  P: "d4 ~@3", Q: "~@17 f3@13 ~@2", R: "~@2 g4!2 g4@2 g4@2 ~@8, ~ [g3,bb3,eb4] ~@2",
  S: "~@15 eb5@7 a4@6 [gb3,a3,d4,a4]@3 ~", T: "~@24 bb4@4 a4@3 ~", U: "~@9 [eb4,g4]@4 ~@11 g3@7 ~, ~@8 g3@5 ~@19",
  V: "~@24 a3@7 ~", W: "[c3,g4]@6 f4 ~@25", X: "~@16 [g3,d4]@5 ~@3 [g3,d4]@8",
  Y: "~@8 [g3,c4,eb4]@7 ~ [g3,c4,eb4]@8 [g3,c4,eb4]@7 ~", Z: "~@7 a5@3 ~@6", AA: "~@6 [gb3,a3,d4] ~", AB: "~@4 c4 ~@3",
  AC: "[~@3 [gb3,a3,d4]@2 ~@3]/2", AD: "~@4 eb4 ~@27",
  AE: "[~@15 [g2,gb4]@5 ~@11 eb4@16 ~@4 f4@3 ~@5 bb3@3 ~@6 c3@11 ~@17, ~@54 c3@7 ~@2 f2@10 ~@23, ~@55 c4@7 ~@2 c4@9 ~@23]/3", // Gmaj7
  AF: "[d4,f4] ~@3, bb2@15 ~@17", AG: "~@6 bb4 ~ [g3,d4]@8 d4@7 ~@9, ~@3 g4@11 ~@2, ~@3 d5@3 ~@10",
  AH: "[~@8 eb4@8 ~@7 [g3,c4]@16 ~@25, [c3,f4] ~@3]/2", AI: "~@4 d4@4 ~@4 d4@3 ~, ~ g4@3 ~@4",
  AJ: "~@8 [a3,c4]@3 ~ [d3,a3,gb4]@3 ~", // Am D
})).s("gm_piano").gain(0.23)

// bass · fretless bass · "BASS"
const bass = note(`<
  ~@2 A B C D E F G H I J G K I L M D N@2 ~@9 K O P Q R S@2 ~@8 G T U V@2 W X Y Z@2 ~@4
>`.pickRestart({
  A: "c2", B: "a2@7 ~ a2@7 d2@8 ~ gb2@4 d2@4", C: "g2@15 ~ g2@8 f2@8", D: "c2@7 ~ c2@8", E: "f2@7 ~ f2@8",
  F: "bb2@7 ~ bb2@7 ~ a2@8 eb2@4 d2@4", G: "g2@7 ~ g2@4 f2@4", H: "c2@13 ~@3 c2@16", I: "f2@15 ~ f2@16",
  J: "bb2@8 ~ bb2@6 ~ a2@8 eb2@4 d2@4", K: "c2@15 ~ c2@16", L: "bb2@7 ~@9 a2@7 ~ eb2@4 d2@4", M: "g2@7 ~ g2@8",
  N: "[f2@15 ~ f2@15 bb2@7 ~@2 bb2@6 ~@2 a2@7 ~ a2@7 ~]/2", O: "f2!2", P: "bb2@14 ~@2 bb2@7 d2@8 ~", Q: "g2@15 ~ g2@16",
  R: "c3 c2", S: "[f2@15 ~ f2@15 bb2@16 ~ a2@16]/2", T: "c2@14 ~ c2@17", U: "f2@16 ~ f2@15",
  V: "[bb2@16 d3@7 ~ e2 ~@6 g2@15 ~@2 g2@16, ~@23 d2@8 ~@33]/2", W: "c2@14 ~ c2@9 g2@8", X: "a2 d2", Y: "g2 c2",
  Z: "[a2@16 d2@15 bb2@15 ~@18]/2",
})).s("gm_fretless_bass").gain(0.33)

// bass · electric bass finger · "BO BASS"
const bass_2 = note("<~@20 A B@2 C A D E F G ~@7 A D H@2 A D I J ~@8 K@2 L@2 M@2>".pickRestart({
  A: "g2 gb2", B: "[f2@16 e2@15 eb2@17 d2@16]/2", C: "g2@17 ~@15", D: "f2 e2", E: "eb2", F: "c3@15 d3@17, b2 ~@31",
  G: "g2@15 ~@17", H: "[eb2@16 d2@15 g2@31 ~@2]/2", I: "eb2 c2", J: "d2 g2", K: "[~@31 f2@17 e2@16]/2",
  L: "[eb2@16 d2@15 a2@17 d2@16]/2", M: "[g2@43 ~@21]/2",
})).s("gm_electric_bass_finger").gain(0.28)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@12 A B@2 C D@4 ~@8 E@2 F G@3 H I ~@8 J ~ K L@2 ~ M@2 N@2 O P Q@2>".pickRestart({
  A: "~ d4@15 gb4@8 [f4,bb4]@8, bb3@15 ~ a4@5 ~@11", B: "[g4@22 ~ [eb4,g4]@8 [a3,c4]@16 g4@9 f4@7 ~]/2",
  C: "[d4,f4]@15 [c4,eb4]@9 [d4,gb4]@8", // Dm Cm D
  D: "[[bb3,d4]@16 bb4@16 eb4@31 ~ f4@24 a4@8 [d4,bb4]@16 a4@15 ~, ~@16 g4@47 a4@24 ~ f4@39 ~]/4", // Bb Gm
  E: "[bb4@23 ~ bb4@8 eb4@23 ~ g4@8, ~@24 g4@31 eb4@8 ~]/2", F: "[f4,a4]@15 [eb4,g4]@7 ~ [f4,a4]@9",
  G: "[bb4@16 [c4,eb4]@7 gb4@8 ~ bb3@31 [c4,eb4]@24 ~ [c4,eb4]@8, d4@13 ~@10 d4@40 ~@33]/3", H: "f4 eb4, a4",
  I: "[d4,bb4] a4", J: "[bb3,d4]", K: "~@24 eb4@7 ~, a4", L: "[f4@16 bb4@13 ~@2 [bb3,d4]@33, d4@29 ~@35]/2",
  M: "[g4@16 [d4,gb4]@15 ~ bb3@16 [c4,eb4]@15 ~, ~@31 d4@17 ~@16]/2", // D Cm
  N: "[[c4,eb4]@16 [d4,gb4]@15 d4@15 ~@2 e4@14 ~@2, ~@31 bb3@31 ~@2]/2", O: "c4 ~@15 bb4@16, ~ g4@31",
  P: "[c4,eb4] [d4,gb4]", Q: "[[g4,bb4]@5 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.2).pan(0.3)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@13 A ~@14 B ~@16 C@2 ~@2 D@2 ~@5 E ~>".pickRestart({
  A: "eb4@11 ~@5", B: "g4@23 ~@9", C: "[c4@7 ~, eb4 ~]/2", D: "[eb4@49 ~@15, c4 ~]/2", E: "gb4 ~@31",
})).s("gm_string_ensemble_1").gain(0.13).pan(0.3)

// chords · acoustic guitar nylon · "GUITAIR"
const acoustic_guitar_nylon = note(`<
  ~@5 A@2 B C D E F G H I J K L M N O P Q R S T U@2 V ~@7 W X Y@2 Z AA@2 AB AC AD@2 AE@2 AF@2 ~@5 AG@2
>`.pickRestart({
  A: "[~@8 d4@4 c4@3 [bb3,f4]@4 eb4@5 [bb3,d4]@5 ~@3 c4@17 ~@15, ~@31 [f3,a3]@17 ~@16]/2", // Bb5 Bb F
  B: "~@8 [d4,f4]@4 ~@4 [g3,eb4]@4 c4 ~@3 [c4,g4]@5 ~@3, ~@23 a3@5 ~@4", C: "[g3,bb3,d4]@19 ~@13",
  D: "~@8 d4@3 c4@2 ~@3 [bb3,f4]@4 g4@2 ~@2 f4@4 eb4 ~@3, ~@23 bb3@5 ~@4", E: "[f3,a3,c4]@19 ~@13",
  F: "~@8 [d4,f4]@4 bb3 ~@3 [g3,eb4]@5 ~@3 [c4,g4]@5 ~@3, ~@23 a3@5 ~@4", G: "[g3,bb3,d4]@11 ~@5",
  H: "~@16 [d4,f4]@4 g3@4 ~@3 g3 ~@4, ~@24 [c4,eb4]@5 ~@3", I: "[f3,a3]@27 ~@5, c4@3 ~",
  J: "~@8 [d4,f4]@4 bb3 ~@3 [g3,c4,eb4]@4 ~@4 g4@5 ~@3, ~@23 [a3,c4]@6 ~@3", K: "[g3,bb3,d4]@15 ~@17",
  L: "~@8 d4@3 c4@2 ~@3 [d4,f4]@7 [c4,eb4]@7 ~@2", M: "[f3,a3,c4] ~",
  N: "~@8 [bb3,d4,f4]@4 ~@4 [c4,f4]@4 bb3 ~@3 [c4,f4]@4 bb3@2 ~@2", // Bb F5
  O: "~@7 g4@9 ~@7 gb4@7 ~@2, g3@8 gb3@7 ~, ~@5 bb3@11 ~@5 a3@10 ~, ~@6 eb4@10 ~@6 d4@9 ~",
  P: "~@3 f4@5 ~@4 e4@4, f3@16 ~ e3@14 ~, ~@4 bb3@11 ~@8 [g3,bb3]@9, ~@5 d4@10 ~@17", // Gm
  Q: "~@7 eb4@9 ~@6 d4@9 ~, eb3@8 d3@7 ~, ~@5 g3@11 ~@4 gb3@11 ~, ~@6 c4@10 ~@5 a3@10 ~",
  R: "~@5 d4@16 ~@11, d3@5 ~@3, ~@4 [g3,bb3]@17 ~@11", // Gm
  S: "~@6 g4@9 ~@6 gb4@10 ~, g3@15 ~ gb3@15 ~, ~@4 bb3@11 ~@5 [a3,d4]@12, ~@5 eb4@10 ~@17", // D5
  T: "~@4 [d4,f4]@12 ~@5 [c4,e4]@11, f3@16 e3@15 ~, ~@3 bb3@13 ~@4 g3@12", // Dm C
  U: "[~@6 eb4@24 ~@6 eb4@10 ~@9 [c4,d4,gb4]@9, eb3@30 ~ c3@15 ~@2 d3@16, ~@5 [g3,bb3]@26 ~@4 [g3,bb3]@12 ~@7 a3@9 ~]/2", // D7 Gm
  V: "~@2 g4@3 ~@3, g3@17 ~@15, ~@7 d4@13 ~@12, ~@7 bb3@2 ~@23",
  W: "~@9 [eb4,g4]@7 ~@9 gb4@7, g3@13 ~@3 gb3@14 ~@2, ~ bb3 ~ [a3,d4]", // Eb D5
  X: "~@8 [bb3,d4,f4]@8 ~@7 [g3,bb3,e4]@9, f3@7 ~ e3@8", // Bb Edim
  Y: "[c3@8 [g3,c4,eb4]@8 ~@8 [gb3,a3,d4]@7 g3@14 ~@19, ~@16 d3@15 ~@33]/2", // Cm D
  Z: "~ [eb4,g4] ~ [d4,gb4], ~ g3@12 ~@3 gb3@16, ~@7 bb3@8 ~@8 a3@9", // Eb D
  AA: "[~@8 [bb3,d4,f4]@8 ~@9 e4@6 ~@10 eb4@23, f3@15 ~ e3@12 ~@3 eb3@30 ~@3, ~@23 g3@7 ~@10 [g3,bb3]@24, ~@24 [bb3,c4]@7 ~@33]/2", // Bb Gm Bbsus2
  AB: "~@4 [c4,eb4]@4 ~@4 [a3,d4,gb4]@3 ~, c3@13 ~@3 d3@12 ~@4, ~@7 [g3,bb3]@9 ~@16", AC: "[g3,bb3,d4]@5 ~@11",
  AD: "[~@8 d4@3 c4@3 ~@5 [d4,f4]@4 ~@4 [bb3,d4] ab3 ~@2 [f3,a3,c4]@18 ~@15, ~@15 [eb4,g4]@8 ~@41]/2", // Dm Bb F Eb
  AE: "[~@7 f4@4 ~ bb3 ~@3 [g3,c4,eb4]@4 ~@4 [c4,eb4,g4] ~@2 [d4,gb4,a4] ~@4 [g4,bb4]@15 ~@17, ~@31 d4@16 ~@17]/2", // Cm D Gm
  AF: "[~@15 [c4,f4]@4 eb4@4 ~ [c4,f4]@4 eb4 ~@3 [c4,eb4]@11 ~@21, ~@31 a3@11 ~@22]/2", // F5 Cm
  AG: "[~@15 g4 ~@2 a4 ~ bb4@2 ~ a4@3 g4 ~@5 d5@15 ~@17, ~@15 d4@8 ~@9, ~@31 [g4,bb4]@15 ~@18]/2", // Gm
})).s("gm_acoustic_guitar_nylon").gain(0.38).pan(1)

// chords · string ensemble 2 · "slo strings"
const string_ensemble_2 = note("<~@12 A B@2 C D@4 ~@8 E@2 F G@3 H I ~@8 J ~ K L@2 ~ M@2 N@2 O P Q@2>".pickRestart({
  A: "~ d5@15 gb5@8 [f5,bb5]@8, bb4@15 ~ a5@5 ~@11", B: "[g5@22 ~ [eb5,g5]@8 [a4,c5]@16 g5@9 f5@7 ~]/2",
  C: "[d5,f5]@15 [c5,eb5]@9 [d5,gb5]@8", // Dm Cm D
  D: "[[bb4,d5]@16 bb5@16 eb5@31 ~ f5@24 a5@8 [d5,bb5]@16 a5@15 ~, ~@16 g5@47 a5@24 ~ f5@39 ~]/4", // Bb Gm
  E: "[bb5@23 ~ bb5@8 eb5@23 ~ g5@8, ~@24 g5@31 eb5@8 ~]/2", F: "[f5,a5]@15 [eb5,g5]@7 ~ [f5,a5]@9",
  G: "[bb5@16 [c5,eb5]@7 gb5@8 ~ bb4@31 [c5,eb5]@24 ~ [c5,eb5]@8, d5@13 ~@10 d5@40 ~@33]/3", H: "f5 eb5, a5",
  I: "[d5,bb5] a5", J: "[bb4,d5]", K: "~@24 eb5@7 ~, a5", L: "[f5@16 bb5@13 ~@2 [bb4,d5]@33, d5@29 ~@35]/2",
  M: "[g5@16 [d5,gb5]@15 ~ bb4@16 [c5,eb5]@15 ~, ~@31 d5@17 ~@16]/2", // D Cm
  N: "[[c5,eb5]@16 [d5,gb5]@15 d5@15 ~@2 e5@14 ~@2, ~@31 bb4@31 ~@2]/2", O: "c5 ~@15 bb5@16, ~ g5@31",
  P: "[c5,eb5] [d5,gb5]", Q: "[[g5,bb5]@5 ~@3]/2",
})).s("gm_string_ensemble_2").gain(0.19).pan(0.7)

// chords · string ensemble 2 · "slo strings" · soft notes
const string_ensemble_2_soft = note("<~@13 A ~@14 B ~@16 C@2 ~@2 D@2 ~@5 E ~>".pickRestart({
  A: "eb5@11 ~@5", B: "g5@23 ~@9", C: "[c5@7 ~, eb5 ~]/2", D: "[eb5@49 ~@15, c5 ~]/2", E: "gb5 ~@31",
})).s("gm_string_ensemble_2").gain(0.12).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C B C B C B@3 C B C B C B@2 C D C D C D C B@2 C B C B C B@2 C D C D C D C B@2 C B C B C B@3 C B C E ~
>`.pickRestart({
  A: "~@7 x", B: "x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~@2 x", D: "x ~@2 x!3 ~ x", E: "x",
})).gain(0.21).pan(1)

// drums · snare
const snare = s("sd").struct("<~@3 A B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@4 ~@2>".pickRestart({
  A: "x!2 ~@4 x!2 ~@2 x!4 ~@2", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.24).pan(1)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@3 [~@2 x!4 ~@2 x!2 ~@6] ~@52 x ~>").gain(0.12).pan(1)

// drums · low tom
const low_tom = s("lt").struct("<~@11 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@6>".pickRestart({
  A: "~@7 x",
})).gain(0.24).pan(1)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@5 B A C A@2 D A@4 C A B D B D B E C A@5 B A C A B D B D B E C A@5 B A C A@4 F ~
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x ~ x!2 ~@8 x ~@3", D: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", E: "x!3 ~ x ~ x ~ x ~@3 x ~ x ~",
  F: "x",
})).gain(0.21).pan(1)

// drums · mid tom
// … 32 more lines

More by Elton John