Strudelify
Sad Songs (Say So Much) cover art

1986 · Breaking Hearts

Sad Songs (Say So Much)

Elton John

KeyG majorTempo114 bpm
0:00/0:00
// Sad Songs (Say So Much) — John Elton
// 114 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: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 5 "#FANTASY" Fantasy -> pad new age
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D E F A G H A C I J K L H@2 M N O P Q A@2 R S T U V W X Y X Z AA AB AC AD R AE H@2 I AF P AG AH A@2 M C AI P
  AJ A AK AL Z AA AM V AD AN Z AO AP AQ AM AR AS AT AU I AV P AW I AV E AX R AP AY AZ V BA AL Y BB Z T U V BC BB S V W
  BB BD V BE BF BG BH AD R BI BJ BC BK
>`.pickRestart({
  A: "g1@4 ~@2 g1 ~ g1@3 ~ d2@3 ~", B: "g1@5 ~ g1 ~ g1@4 d2@4", C: "c2@4 ~@2 c2 ~ c2@4 g1@3 ~",
  D: "c2@5 ~ c2 ~ c2@4 g1@4", E: "d2@4 ~@2 d2 ~ d2@4 a1@3 ~", F: "d2@5 ~ d2 ~ d2@4 a1@4",
  G: "g1@4 ~@2 g1@3 ~ g1 ~ d2@3 ~", H: "g1@4 ~@2 g1 ~ g1@3 ~ d2@4", I: "c2@4 ~@2 c2 ~ c2@3 ~ g1@3 ~",
  J: "d2@4 ~@2 d2 ~ d2@4 a1@2 b1 ~", K: "d2@4 ~@2 d2 ~ d2@4 a1@2 d2 ~", L: "c2@4 c2 ~ g1@5 ~ d2@4",
  M: "g1@4 ~@2 g1 ~ g1@3 ~ d2@2 g1@2", N: "c2@4 ~@2 c2 ~ c2@4 g1@2 a1 ~", O: "c2@5 ~ c2 ~ c2@4 g1@3 ~",
  P: "d2@4 ~@2 d2 ~ d2@3 ~ a1@3 ~", Q: "d2@4 ~@2 d2 ~ d2@3 ~ a1@4", R: "g2@3 ~ e2@2 ~@2 d2@3 ~ e2 ~ g2@2",
  S: "~@2 g2 ~ e2@3 ~ d2@3 ~ e2@3 ~", T: "c2@3 ~ a1@3 ~ g1@3 ~ a1 ~ c2@2", U: "~@2 c2 ~ a1@3 ~ g1@3 ~ c2@3 ~",
  V: "d2@3 ~ b1@2 ~@2 a1@3 ~ b1 ~ d2@2", W: "~@2 d2 ~ b1@2 ~@2 a1@3 ~ b1@3 ~", X: "g2@2 ~@2 e2@2 ~@2 d2@3 ~ e2 ~ g2@2",
  Y: "~@2 g2 ~ e2@3 ~ d2@2 ~@2 e2@2 d2@2", Z: "~@2 g2 ~ e2@3 ~ d2@3 ~ e2@2 d2@2",
  AA: "c2@2 ~@2 a1@2 ~@2 g1@3 ~ a1 ~ c2@2", AB: "~@2 c2 ~ a1@2 ~@2 g1@3 ~ a1@3 ~", AC: "d2@3 ~ b1@3 ~ a1@3 ~ b1 ~ d2@2",
  AD: "~@2 d2 ~ b1@3 ~ a1@3 ~ b1@3 ~", AE: "~@2 g2 ~ e2@3 ~ d2@4 b1@4", AF: "c2@5 ~ c2@3 ~ c2 ~ g1@2 a1 ~",
  AG: "d2@4 ~@2 d2 ~ d2@3 ~ a1@2 d2@2", AH: "c2@3 ~ c2 ~ g1@3 ~ g1 ~ d2@3 ~", AI: "c2@4 ~@2 c2 ~ c2@3 ~ g1@2 c2@2",
  AJ: "d2@4 ~@2 d2@3 ~ d2@2 a1@2 d2@2", AK: "g1@4 ~@2 g1@3 ~ g1 ~ d2 ~ g1@2", AL: "g2@3 ~ e2@3 ~ d2@3 ~ e2 ~ g2@2",
  AM: "~@2 c2 ~ a1@2 ~@2 g1@3 ~ c2@3 ~", AN: "g2@2 g2@2 e2@2 ~@2 d2@3 ~ e2 ~ g2@2",
  AO: "g2 ~ g2 ~ e2@2 ~@2 d2@3 ~ e2@2 g2@2", AP: "~@2 g2 ~ e2@2 ~@2 d2@3 ~ e2@2 d2@2",
  AQ: "c2@3 ~ a1@3 ~ g1@3 ~ a1 ~ c2@2, ~@4 b1 ~@11", AR: "d2@2 ~@2 b1@2 ~@2 a1@3 ~ b1 ~ d2@2",
  AS: "~@2 d2 ~ b1@2 ~@2 a1@2 ~@2 b1@3 ~", AT: "g2@2 ~@2 e2@2 ~@2 d2@3 ~ e2 ~ g2 ~",
  AU: "~@2 g2 ~ d2@3 ~ b1@3 ~ f#1@3 ~", AV: "c2@3 ~ c2@3 ~ a1@3 ~ e1@3 ~", AW: "d2@4 ~@2 d2 ~ b1@3 ~ f#1@2 ~@2",
  AX: "d2@3 ~ d2 ~ d2 ~ d2@3 ~ e2@3 ~", AY: "c2@3 ~ a1@2 ~@2 g1@3 ~ a1 ~ c2@2", AZ: "~@2 c2 ~ a1@3 ~ g1@3 ~ a1@3 ~",
  BA: "~@2 d2 ~ b1@2 ~@2 a1@3 ~ b1@2 d2 ~", BB: "g2@2 ~@2 e2@2 ~@2 d2@2 ~@2 e2 ~ g2@2",
  BC: "~@2 d2 ~ b1@2 ~@2 a1@3 ~ d2@3 ~", BD: "~@2 g2 ~ e2@3 ~ d2@2 ~@2 e2@2 d2 ~", BE: "~@2 d2 ~ b1@3 ~ a1@3 ~ d2@3 ~",
  BF: "g2@3 ~ e2@2 ~@2 d2@2 ~@2 e2 ~ g2@2", BG: "~@2 g2 ~ e2@2 ~@2 d2@2 ~@2 e2@3 ~",
  BH: "d2@3 ~ b1@2 ~@2 a1@2 ~@2 b1 ~ d2@2", BI: "~@2 g2 ~ e2@2 ~@2 d2@2 ~@2 e2@2 d2 ~",
  BJ: "d2@3 ~ b1@3 ~ a1@2 ~@2 b1 ~ d2@2", BK: "g2@5 ~@3",
})).s("gm_electric_bass_finger").gain(0.27)

// chords · piano · "HONKY TONK"
const piano = note(`<
  A@3 B@2 C D@3 E@2 F@2 G@2 H@4 I@2 J@2 K@4 L@2 M@2 N@2 O@4 P Q R@2 E@2 F@2 G@2 S@4 I@2 J@2 K@4 L@2 M@2 N@2 O@4 P Q R@2
  T@2 U@2 V@2 W X Y@2 L@2 M@2 N@2 O@4 P Q R@2 Z@2 AA@2 AB@2 AC@2 AD AE AF@3 AG AH
>`.pickRestart({
  A: "[~@10 [g4,b4]@2 c5 ~@3 [d3,g3,b3]@10 b4@2 [g4,c5] ~ [d3,g3,b3,g4,d5]@9 ~ [g4,b4]@2 [g4,c5]@5 ~, ~@10 c#5 ~@3 [g4,d5]@11 ~ g4 ~@13 [d3,g3,b3]@7 ~]/3", // G C5 G C5 G5 G
  B: "[g4@10 e4 ~ [e4,a4] ~@9 [e4,g4] ~ [e4,b4]@3 ~ [e4,b4]@3 ~, [e3,g3,c4]@13 ~@3 [e3,g3,c4]@13 ~@3, e4@9 ~@5 [e4,g4]@7 ~@11]/2", // A5 Em E5 C Em
  C: "[f#4,b4]@3 ~ [f#4,a4] ~@7 a3 ~ [a3,f#4,a4] ~, [d3,f#3]@7 [d3,f#3], b3@11 ~@5, ~@3 [f#4,a4]@4 ~", // B5 F#m D F#m
  D: "[[f#4,b4]@3 ~ [f#4,a4]@3 ~ [f#4,a4]@3 ~ [f#4,a4] ~@9 g4@4 d4 ~ [d4,a4] ~@3 [d3,g3,b3]@9 ~ [d3,g3,b3,d4,g4]@6, [d3,f#3,a3]@8 [d3,f#3,a3]@6 [d4,g4]@7 ~ d4@2 ~@6 [d4,g4]@12 ~@6, ~@16 [d3,g3,b3]@11 ~@21]/3", // B5 F#m D5 G D G5 G
  E: "[[d4,g4]@4 ~@2 [g4,b4]@4 d4 ~ [e4,g4,b4] ~@3 [d3,g3,b3]@5 ~@7 [e4,g4,b4]@3 ~, [d3,g3,b3]@15 ~@7 [d3,g3,b3]@9 ~, ~@3 d4 ~@3 [d4,g4,b4]@7 ~@2]/2", // G5 G Em G Em G
  F: "[[e3,g3,c4,e4,g4,c5]@5 ~ [g4,c5]@4 e4 ~ [e4,a4,c5] ~@3 [e3,g3,c4]@4 ~@6 e4 ~ [e4,a4,c5]@3 ~, ~@6 [e3,g3,c4]@8 e4@11 ~@7, ~@6 e4@2 ~@6 [g4,c5]@14 g4 ~@3, ~@22 [e3,g3,c4]@9 ~]/2", // C C5 Am C Am C C5 C
  G: "[[d3,f#3,a3,d4,f#4,a4]@5 ~ [f#4,a4]@4 d4 ~ [d4,f#4,b4] ~@3 [d3,f#3,a3]@5 ~@5 d4 ~ [d4,f#4,b4]@3 ~, ~@6 [d3,f#3,a3]@8 d4@11 ~@7, ~@6 d4 ~@7 [f#4,a4]@13 ~@5, ~@11 [d3,f#3,a3]@4 ~]/2", // D F#m Bm D Bm D F#m D
  H: "[[e3,g3,c4,e4,g4,c5]@3 ~ [e4,g4,c5] ~ [b3,d4,g4,b4]@4 ~@2 [e4,g4,b4] ~@13 d4 ~ [e4,g4,b4] ~@3 [d3,g3,b3]@4 ~@2 [g4,b4]@4 d4 ~ [e4,g4,b4] ~@3 [d3,g3,b3]@4 ~@2 [d4,g4,b4]@4 [d4,g4,b4] ~ [e4,g4,b4]@3 ~, ~@6 [d3,g3]@3 ~ [d3,g3,b3]@10 ~@2 [d3,g3,b3]@9 ~@7 [d3,g3,b3]@7 ~@9 g3@9 ~, ~@14 [g4,b4]@13 ~@37, ~@14 d4@10 ~@6 [d4,g4,b4]@7 ~ d4@2 ~@6 [d4,g4,b4]@7 ~ [d3,b3]@7 ~@3]/4", // C G Em G Em G Em G5 …
  I: "[[e3,g3,c4,e4,g4,c5]@5 ~ [g4,c5]@4 e4 ~ [e4,g4,a4,c5] ~@3 [e3,g3,c4]@5 ~ [e4,g4,c5]@5 ~ [e4,a4,c5]@3 ~, ~@6 [e3,g3,c4]@8 ~@8 [e3,g3,c4]@9 ~, ~@6 e4@3 ~@5 [e4,g4,c5]@7 ~@7 g4 ~@3]/2", // C C5 Am7 C Am C
  J: "[[d3,f#3,a3,d4,f#4,a4]@5 ~ f#4@4 d4 ~ [d4,f#4,b4] ~@9 [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~ [d4,f#4,a4] ~, ~@6 [d3,f#3,a3]@8 ~@2 [d3,f#3,a3]@9 ~ [d3,f#3,a3]@5 ~, ~@6 a4@3 ~@23, ~@6 d4 ~@7 [d4,f#4,a4]@7 ~@11]/2", // D Bm D Bm D
  K: "[[f#4,b4] ~ b4@3 ~ [g4,b4]@4 d4 ~ [e4,g4,b4] ~@3 [d3,g3,b3]@5 ~ [d3,g3,b3]@9 ~ [d3,g3,b3] ~@3 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [g4,b4] ~ [d4,g4,b4]@4 [d3,g3,b3]@2 [e4,g4,b4]@2, [d3,g3,b3,d4,g4]@5 ~ [d3,g3,b3]@7 ~@21 [d3,g3,b3]@7 ~ [d3,g3,b3]@6 ~@2 [d3,g3,b3]@8 ~@6, ~@6 d4@2 ~@6 [d4,g4,b4]@7 ~ [d4,g4,b4]@13 ~@29]/4", // B5 G Em G Em G Em G …
  L: "[~@2 [e4,g4,c5] ~ [e4,a4,c5] ~ [e4,g4,c5]@4 ~@2 [e4,a4,c5]@3 ~ [e4,g4,c5]@4 ~@2 [e4,a4,c5] ~ e4 ~ [e4,g4,c5] ~ [e4,a4,c5] ~ [e4,g4,c5]@2, [e3,g3,c4]@9 ~ [e3,g3,c4]@8 ~@2 [e3,g3,c4]@10 ~@2, ~@12 g4 ~@17 a4 ~]/2", // C Am C Am C Am C Am …
  M: "[~@2 [d4,f#4] ~ [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~@3 [d3,f#3,a3] ~@3 [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~ [d4,f#4,b4]@2, [d3,f#3,a3]@9 ~ [d3,f#3,a3]@4 [d4,f#4,a4]@4 [d3,f#3,a3]@6 ~@2 [d3,f#3,a3]@4 ~@2]/2", // D Bm D Bm D Bm D Bm …
  N: "[~@2 [d4,g4] ~ [d4,g4,b4]@4 [d3,g3,b3] ~@3 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [d4,g4,b4]@2, [d3,g3,b3]@7 ~@3 [d3,g3,b3]@7 ~ [d3,g3,b3]@6 ~@2 [d3,g3,b3]@5 ~]/2", // G5 G Em G Em G Em G
  O: "[[d3,g3,b3] ~@3 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ d4@2 ~@2 d4 ~ [e4,g4,b4] ~@3 [d4,g4,b4]@3 ~ [e4,g4,b4] ~@3 [e3,g3,c4] ~@3 [e4,a4,c5] ~ [a4,c5] ~ c5@2 ~@2 [e4,a4,c5] ~ c5@2 ~@2 c5 ~ [e4,a4,c5] ~ [e4,g4,c5]@3 ~ [e4,g4,c5]@2 [e3,g3,c4]@2 [e4,g4,c5]@2, ~@2 [d3,g3,b3]@7 ~ [d3,g3,b3]@4 [g4,b4]@5 ~@11 [d4,g4,b4]@4 ~@4 [e4,g4]@5 ~@3 [e4,g4]@5 ~@13, ~@16 [d3,g3,b3]@14 ~@4 [e3,g3,c4]@7 ~ [e3,g3,c4]@5 ~ [e3,g3,c4]@11 ~@5]/4", // G Em G Em G Em C Am …
  P: "~@2 [d4,f#4,a4] ~ [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,b4] ~ [d4,f#4,a4]@2, [d3,f#3,a3]@9 ~ [d3,f#3,a3]@5 ~", // D Bm D G D
  Q: "~@2 [d4,f#4] ~ [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,a#4,b4] ~ [d4,f#4,a4]@2, [d3,f#3,a3]@8 ~@2 [d3,f#3,a3]@5 ~", // D Bm D Bm D
  R: "[~@2 [d4,g4,b4] ~ [e4,g4,b4] ~ g4 ~ [d4,g4,b4]@4 ~@2 [d4,g4,b4] ~ d4 ~ [d4,g4,b4] ~ [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [d4,g4,b4] ~, [d3,g3,b3]@11 ~ [d3,g3,b3]@13 ~ [d3,g3,b3]@5 ~]/2", // G Em G Em G Em G
  S: "[[e3,g3,c4,e4,g4,c5]@3 ~ [e4,g4,c5] ~ [d3,g3,b3]@4 ~@2 [e4,g4,b4] ~@13 d4 ~ [e4,g4,b4] ~@3 [d3,g3,b3]@4 ~@2 [g4,b4]@4 d4 ~ [e4,g4,b4] ~@3 [d3,g3,b3]@4 ~@2 [d4,g4,b4]@4 [d4,g4,b4] ~ [e4,g4,b4]@3 ~, ~@6 [d4,g4,b4]@6 ~@2 [g4,b4]@13 ~@37, ~@10 [d3,g3,b3]@10 ~@2 [d3,g3,b3]@9 ~@7 [d3,g3,b3]@7 ~@9 g3@9 ~, ~@14 d4@10 ~@6 [d4,g4,b4]@7 ~ d4@2 ~@6 [d4,g4,b4]@7 ~ [d3,b3]@7 ~@3]/4", // C G Em G Em G Em G
  T: "[~@4 [e4,g4,c5] ~ [g4,c5]@4 ~@2 [e4,a4,c5] ~ [e4,g4,c5]@4 ~@2 [e4,a4] ~@3 [e4,g4,c5]@3 ~ [e4,a4,c5] ~ [e4,g4,c5]@2, [e3,g3,c4]@8 ~@2 [e3,g3,c4]@7 ~ [e3,g3,c4]@12 ~@2, ~@3 e4 ~@6 c5 ~@5]/2", // C C5 Am C A5 C Am C
  U: "[~@4 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~ [d4,f#4,a4]@2 ~@2 [d4,a4]@3 ~ d4 ~ [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,a#4,b4] ~ [d4,f#4,a4]@2, [d3,f#3,a3]@11 ~ [d3,f#3,a3]@13 ~ [d3,f#3,a3]@5 ~, ~@7 f#4@2 ~@7]/2", // D D5 Bm D Bm D
  V: "[b3 ~@3 [e4,a4,c5] ~@3 [e4,g4,c5]@4 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~ [e4,a4,c5] ~ [e4,g4,c5]@4 ~@2 [e4,a4,c5] ~ [e4,g4,c5]@2, [e3,g3,c4]@10 ~@2 [e3,g3,c4]@12 ~@2 [e3,g3,c4]@5 ~]/2", // Am C Am C Am C
  W: "~@2 f#4 ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,a4] ~ [d4,f#4,a4]@2 [d3,f#3,a3]@2, [d3,f#3,a3]@7 ~ [d3,f#3,a3]@5 ~ d#3 ~, ~@4 g#4 ~@11", // D
  X: "[d4,a4] ~ d4 ~ [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,a#4,b4] ~ [d4,f#4]@2, f#4@2 [d3,f#3,a3]@6 ~@2 [d3,f#3,a3]@4 b4 ~", // D5 Bm D Bm D
  Y: "[[d3,g3,b3] ~@3 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [g4,b4] ~ [d4,g4,b4]@4 [d3,g3,b3]@2 [e4,g4,b4]@2, ~@2 [d3,g3,b3]@7 ~ [d3,g3,b3]@6 ~@2 [d3,g3,b3]@8 ~@6]/2", // G Em G Em G Em G Em …
  Z: "[[d3,f#3,a3] ~@3 [d4,f#4,b4] ~@3 [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~@3 [d4,f#4,a4]@2 ~@2 [d4,f#4,b4] ~ f#4 ~ [d4,f#4,a4]@2 [d3,f#3,a3]@2 [d4,f#4,b4]@2, ~@2 [d3,f#3,a3]@8 ~@2 [d3,f#3,a3]@7 ~ [d3,f#3,a3]@7 ~ d#3 ~@3]/2", // D Bm D Bm D Bm D Bm …
  AA: "[~@2 [d4,g4,b4] ~ [e4,g4,b4]@4 [d3,g3,b3]@4 [d4,g4,b4]!2 ~@4 [d4,g4,b4] ~ [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~ [d4,g4,b4]@2, [d3,g3,b3]@3 ~@4 [d3,g3,b3]@5 ~ [d3,g3,b3]@2 ~]/2", // G Em G Em G Em G
  AB: "[~@2 [d4,f#4] ~ [d4,f#4,a#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~@3 [d3,f#3,a3] ~@3 [d4,f#4,b4] ~ [d4,f#4,a4]@4 d3 ~ [d4,f#4,b4] ~ [d4,f#4,a4]@2, [d3,f#3,a3]@7 ~@3 [d3,f#3,a3]@4 [d4,f#4,a4]@4 [d3,f#3,a3]@6 ~@2 [f#3,a3]@5 ~, ~@27 d3@3 ~@2]/2", // D Bm D Bm D Bm D Bm …
  AC: "[~@2 [d4,g4] ~ [e4,g4,b4] ~ [d4,g4,b4]@4 d#3 ~ [e4,g4,b4] ~ [d4,g4,b4]@4 [d3,g3,b3]@2 [d4,g4,b4]@2 ~@2 [d4,g4,b4] ~@5 [d3,g3,b3] ~, [d3,g3,b3]@8 ~@2 [d3,g3,b3]@7 ~@5 [d3,g3,b3]@6 ~@4, ~@13 [d4,g4,b4]@3]/2", // G5 Em G Em G
  AD: "~@2 [d4,f#4,a4] ~ [d4,f#4,a#4,b4] ~ [d4,f#4,a4]@4 [d3,f#3,a3]@2 [f#4,a4]@2 [d3,a3]@2, [d3,f#3,a3]@8 ~@4 d4 ~ [f#3,d4] ~", // D Bm D F#m D5 D
  AE: "f#4 ~@3 [d4,f#4,b4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~ [d4,f#4,a4]@2, [d3,f#3,a3]@4 ~ [d3,f#3,a3]@2 ~", // Bm D Bm D
  AF: "[~@2 [d4,g4,b4] ~ [g4,b4]@3 ~@5 [d3,g3,b3] ~@5 [d4,g4,b4] ~ [e4,g4,b4] ~ [d4,g4,b4]@4 ~@2 [e4,g4,b4] ~@3 [d3,f#3,a3] ~@3 [d4,f#4,b4,c5] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,b4] ~ [d4,f#4,a4]@2, [d3,g3,b3]@10 ~@4 [d3,g3,b3]@11 ~ [d3,g3,b3]@5 ~@3 [d3,f#3,a3]@6 ~@2 [d3,f#3,a3]@4 ~@2, ~@4 e4 ~@3 [d4,g4,b4]@7 ~@15 [d4,g4,b4]@5 ~@3 b4 ~@9]/3", // G Em G Em D Bm D Bm …
  AG: "~@2 [d4,f#4] ~ [d4,f#4,a4]@4 ~@2 [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4] ~, [d3,f#3,a3]@5 ~@3 [d3,f#3,a3]@7 ~", // D
  AH: "[d3,g3,b3,d4,g4,b4]@9 ~@7", // G
})).s("gm_piano").gain(0.2).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F B G H I@2 J K L M N A O P Q R S@2 A T@2 U V W X H A H O U V W Y@2 G B G U V Z L M G AA O AB Q F AC@2 O H
  G U V AD X A AE O G V@2 X@2 G AF V@2 AG AD Q V AH@2 AI AF AJ AK X@2 AL@2 AI AF V@2 X AD O AM X@2 O AM X@2 G O X@2 O@2
  X L AN
>`.pickRestart({
  A: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2", // G
  B: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~", // G
  C: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  D: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~", // C
  E: "[d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2", // D
  F: "[d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~", // D
  G: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~", // G
  H: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2", // G
  I: "[[d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ g3@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2, ~@7 [d3,b3,g4]@3 ~@6]/2", // G C G
  J: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~", // C
  K: "[d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2", // D
  L: "[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~", // D
  M: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2", // C G
  N: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2", // G
  O: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~", // G
  P: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  Q: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~", // C
  R: "[d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~", // D
  S: "[[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ d3@2 [d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2, ~@7 [f#3,a3,d4]@3 ~@6]/2", // D G D
  T: "[[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~]/2", // G
  U: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  V: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~", // C
  W: "[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2", // D
  X: "[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~", // D
  Y: "[[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ d3@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2, ~@7 [f#3,a3,d4]@3 ~@6]/2", // D G D
  Z: "[d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~", // D
  AA: "[d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~", // G
  AB: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2", // C
  AC: "[[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~, ~@7 [a3,d4]@3 ~@6]/2", // D G D5
  AD: "[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~", // D
  AE: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~", // G
  AF: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~", // G
  AG: "[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~", // D
  AH: "[[d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@4 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~]/2", // D
  AI: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2", // G
  AJ: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2", // C
  AK: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~ [e3,g3,c4,e4] ~", // C
  AL: "[[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@4 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~]/2", // G
  AM: "[d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4]@2 [d3,g3,b3,g4] ~ [d3,g3,b3,g4] ~", // G
  AN: "[d3,g3,b3,g4]@11 ~@5", // G
})).s("gm_acoustic_guitar_steel").gain(0.06).pan(0.4)

// chords · pad new age · "#FANTASY"
const pad_new_age = note(`<
  ~@9 A@2 B@2 C@2 D@4 B@2 C@2 E@4 B@2 F@8 C@2 A@2 G@4 C@2 H@4 B@2 C@2 E@4 B@2 C@2 E@4 B@2 C@2 A@2 B@2 C@2 B@2 C@2 A@2
  B@2 C@2 E@4 B@2 I@2 A@2 C@2 A@2 C@2 A@2 C@2 A@2 C@2 J
>`.pickRestart({
  A: "[[d4,g4,b4]@31 ~]/2", B: "[[e4,g4,c5]@31 ~]/2", C: "[[d4,f#4,a4]@31 ~]/2",
  D: "[[e4,c5]@8 ~ [d4,b4]@53 ~@2, g4@63 ~]/4", E: "[[d4,g4,b4]@63 ~]/4",
  F: "[[d4,f#4,a4]@30 ~ [d4,g4,b4]@63 ~ [e4,g4,c5]@31 ~@2]/8", G: "[[d4,g4,b4]@31 [e4,g4,c5]@31 ~@2]/4",
  H: "[[e4,c5]@5 ~ [d4,b4]@57 ~, g4@63 ~]/4", I: "[[d4,f#4,a4]@31 ~, c4 ~@31]/2", J: "[d4,g4,b4]@5 ~@3",
})).s("gm_pad_new_age").gain(0.06)

// drums · kick
const kick = s("bd").struct("<[~ x] [x!2]!110 x>").gain(0.32)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ [~@3 x ~@4]!110 ~>").gain(0.14)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!110 ~>").gain(0.32)

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

// drums · hihat
const hihat = s("hh").struct("<[~@8 x ~ x!3 ~ x!2] [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!110 ~>").gain(0.14)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@6 x!2", B: "~@3 x",
})).gain(0.11)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~ [~@11 x ~@4]!110 ~>").gain(0.07)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@15 A ~@15 A ~@15 A ~@15 A ~@7 A ~@29 A>".pickRestart({
  A: "x",
})).gain(0.18)

stack(
  bass, piano, acoustic_guitar_steel, pad_new_age, kick, kick_soft, snare, low_tom, hihat, mid_tom, mid_tom_soft, crash
)

More by Elton John