Strudelify

Blue Eyes

Elton John

KeyB♭ majorTempo70 bpm
0:00/0:00
// Blue Eyes — Elton John
// 70 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 25, 5/4 at bar 25, 4/4 at bar 26, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "tk2" fretless bass (copy of ch 11 "tk11" synth brass 2)
// note: Full arrangement: all 59 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 · "tk1"
const piano = note(`<
  A@7 B@2 C@7 D@8 E F G@2 H@2 I J K L G@2 M N O@2 P Q R@2 S T U V W R@2 X T Y V W Z AA@2
>`.pickRestart({
  A: "[~@3 [bb2,bb3,d4,f4]@10 bb2!2 [a2,a3,c4,f4]@4 a2!2 [ab2,ab3,c4,f4]@4 ab2!2 [g2,bb3]@3 ~@2 d3 ~@5 a4 ~@5 d3 ~@4 [g3,bb3,d4,g4]@2 ~@5 bb2 ~@5 bb2 ~@6 [bb3,d4,f4]@3 ~@2 bb2 [a3,c4]@3 ~@3 [a3,c4]@3, ~@3 f3@12 ~@12 d4@4 d4@5 [g3,bb3]@2 d3@6 d4@4 d3@3 ~@3 eb3@3 ~@3 eb3@3 ~@3 d3@3 ~@3 [d3,bb3,d4,f4]@3 ~@3 [a3,c4]@2 c3@4, ~@13 [bb3,d4,f4]@2 ~@4 [a3,c4,f4]@2 ~@4 [ab3,c4,f4]@2 g3@5 bb4@7 ~@4 bb3@6 ~@6 g3@2 [bb3,db4,f4,g4]@4 [g3,bb3,db4,f4,g4]@2 [bb3,d4,f4]@4 [f3,bb3,d4,f4]@2 ~@4 f3@2 f4@9, ~@10 g2@3 [g2,g4]@2 g2@2 [eb2,bb3,db4,f4,g4,ab4,a4]@2 eb2@2 d2@2 d2@2 c2@2 ~, ~@30 bb3@3 [d3,a4]@4 d4@2 ~@3 g3@3 g4@4 ~@19 bb2@6 ~@4 c3 f3@2 ~@3]/7", // Bb F Fm Gm Bb Am Gm Bb …
  B: "[~@2 [c3,bb4] ~@5 [c3,c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4] ~@2 [c3,c4,f4,a4] [f3,bb3,d4]@3 f3@4 ~ bb3, c4@3 ~@3 c3@2 ~@4 [c3,c4,f4,a4]@2 ~ bb2@9, c3@3 a4@2 ~@9 g3@4 a3@12 ~@6 d4@12, ~ f4@4 ~ [f4,a4]@10 ~@10 g3@4 ~@6 bb3@10 ~@2, ~ f3@2 f2@12 ~@7 f3@2]/2", // C7 F Bb F
  C: "[d4 ~ bb2 [a2,a3,c4]@4 a2!2 [ab2,f3,ab3,c4]@4 ab2!2 [g2,bb3]@3 ~@2 bb4 ~@5 [d3,a4] ~@5 d3 ~@4 [g3,bb3,d4,f4]@2 ~@5 bb2 ~@5 bb2 ~@5 bb2 ~@5 bb2 ~@5 d3 ~@5 d3 [a2,a3,db4,g4]@4 [a2,a3,db4,g4]@2 [a2,a3,db4,g4]@3, [f3,bb3,c4] [bb3,c4] ~@10 [g2,bb3]@2 ~@2 [g3,bb3]@2 ~@2 g3@2 ~@2 d3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 eb3@2 ~@2 bb2@2 ~@2 bb2@2 ~@6, ~ d4@2 ~@16 d4@6 d4@2 ~@4 bb3@6 ~@6 g3@2 ~@4 g3@2 ~@4 g3@2 ~@4 g3@2 [bb3,d4,e4,g4]@4 [g3,bb3,d4,e4,g4]@2 [bb3,d4,e4,g4]@4 [g3,bb3,d4,e4,g4]@2 ~@9, ~ bb2 f3@5 [f3,a3,c4]@2 ~@4 [f3,ab3,c4]@2 [d3,g3]@6 [d3,a4]@5 ~ [g2,g4]@6 [g2,g4]@6 [eb2,bb3,db4,f4,a4]@6 [eb2,bb3,db4,f4,g4]@6 [eb2,bb3,db4,f4,a4]@6 [eb2,bb3,db4,f4,g4]@6 e2@6 e2@6 ~@9, ~@32 d4@5 ~@47]/7", // Am Fm Gm D5 Gm7 A7 Fsus4 Bbsus2 …
  D: "[[a2,a3,db4,g4]@6 ~@6 d3@6 [a3,d4,f4]@6 [a3,d4,f4]@6 ~@22 d3@2 ~@8 c4@2 f4!2 g4 ~@9 a3@2 ~@10 a3@2 ~@10 ab3@2 g2@6 ~@4 d3@2 ~@10 [d3,a4]@2 ~@10 bb2@2 ~@10 eb3@2 c2@6 ~@4 g3@2 c2@6 ~@2 [f3,g3,c4,e4]@4 ~@8 f3@4 [eb2,eb3,g3]@6, ~@3 [d2,a3,d4,f4]@6 d2@6 d2@6 d2@6 f2@6 f2@6 f2@6 f2@6 ~@3 g2@7 d4@2 ~@3 eb3@3 ~@3 eb3@2 ~@5 [f3,bb3,d4,f4]@2 [g3,c4,e4]@4 ~@5 c3@3 ~@3, ~@24 d3@12 d3@4 d3@8 d3@4 ~@2 c4@8 ~@3 c4@4 f4@3 a3@2 a4@4 ~@12 [f4,ab4,c5]@8 ~@4 g4@23 ~@9 g3@4 ~@8 g3@4 [bb3,d4,f4]@8 ~@34, ~@15 [bb3,d4,f4]@4 [f3,bb3,d4,f4]@2 [bb3,d4,f4]@4 [f3,bb3,d4,f4]@2 [f4,a4]@5 a4 a4@3 g4@3 [f4,a4,c5]@4 [c4,f4,a4,c5]@2 ~@4 [c4,f4,ab4,c5]@2 bb4@4 d4@2 [d3,a4]@3 [g3,bb3]@3 [eb2,bb3,db4,f4,a4]@6 [eb2,bb3,db4,f4,g4]@6 ~@3 c2@3 ~@3 c2@3 [f2,a3,c4,f4]@6 ~@3, ~@60 a3@4 a3@5 g4 c4@8 ~@6 a3@4 ~@8 ab3@4 ~@2 d4@6 bb3@4 bb4@14 ~@66]/8", // A7 Dm D5 C Eb Dm Bb C …
  E: "[ab2,ab3,c4] [gb2,gb3,bb3] [db3,f3,ab3] [ab2,ab3,c4]", F: "[eb2,eb3,g3,bb3]",
  G: "[[f3,bb3,d4]@3 f3@4 ~ bb3 d4 ~ bb2 [a2,a3,c4]@4 a2!2 [ab2,f3,ab3,c4]@4 ab2!2, bb2@10 bb2 ~@13, ~@3 d4@6 ~ d4@2 ~@12, ~@6 bb3@10 ~@5 [bb3,c4]@3 ~@24, ~@7 f3@2 [f3,bb3,c4]@2 f3@5 [f3,a3,c4]@2 ~@4 [f3,ab3,c4]@2]/2", // Bb Am Fm Bbsus2 Fsus4 F Fm
  H: "[g2@3 ~ [g4,bb4] [d3,g4,bb4] ~ [f4,a4]!2 ~ [d4,g4]!2 ~@5 d3 ~@4 g3@2, ~ g2@3 [g2,d4,g4]@2 g2@2, ~ bb4 ~@2, ~@6 d3@5 d3@6 ~@4 d3@3, ~@2 g4 [g3,f4,a4] ~ g3 ~@2]/2", // Gm F G5 Dm
  I: "~@5 bb2 ~@5 bb2, [eb2,bb3,db4,f4,g4,ab4,a4] eb2, ~ eb3 ~ eb3, ~@2 g3 [bb3,db4,f4,g4]@2 [g3,bb3,db4,f4,g4]", // Eb7 Gm7b5
  J: "~@6 [bb3,d4,f4]@3 ~@2 bb2, d2!2, [bb3,d4,f4]@2 [f3,bb3,d4,f4] ~@2 f3, ~ d3 ~ [d3,bb3,d4,f4], ~@5 bb2@6 ~", // Bb
  K: "[a3,c4]@3 ~@3 c4@3 ~@2 [c3,bb4], f4@19 f4@2 a4@2 ~, c2@5 c3@4 c3 f3@2, ~ [a3,c4] a3@2, ~@3 c3 f3@2 ~@3 c4@3", // Am C7 Am
  L: "~@5 [c3,c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4] ~@2 [c3,c4,f4,a4], f2, [f4,a4]@5 ~@5 g3@2, ~@3 c3@2 ~@4 [c3,c4,f4,a4]@2 ~, ~@2 g3 a3@3", // F
  M: "[g2,bb3]@3 ~@2 bb4 ~@5 [d3,a4], [d3,g3]@6 [d3,a4]@5 ~, ~ [g2,bb3] ~ [g3,bb3], ~@2 d4@3 d4", // Gm D5 G5 D5 Gm
  N: "~@5 d3 ~@4 [g3,bb3,d4,f4]@2, [g2,g4]!2, ~ g3 ~ d3, ~@2 bb3@3 ~, ~@5 d4@5 ~@2", // Gm7 G
  O: "~@5 bb2 ~@5 bb2, [eb2,bb3,db4,f4,a4] [eb2,bb3,db4,f4,g4], ~ eb3 ~ eb3, ~@2 g3 ~@2 g3", // Bbm Eb7
  P: "~@5 d3 ~@5 d3, e2!2, [bb3,d4,e4,g4]@2 [g3,bb3,d4,e4,g4] [bb3,d4,e4,g4]@2 [g3,bb3,d4,e4,g4], ~ bb2 ~ bb2", // Em7b5
  Q: "[a2,a3,db4,g4]@4 [a2,a3,db4,g4]@2 [a2,a3,db4,g4]@3 [a2,a3,db4,g4]@3", // A7
  R: "[~@3 d3@3 [a3,d4,f4]@3 [a3,d4,f4]@3 ~@11 d3, [d2,a3,d4,f4] d2 d2!2, ~@9 d3@6 d3@2 d3@4 d3@2 ~, ~@6 [bb3,d4,f4]@2 [f3,bb3,d4,f4] [bb3,d4,f4]@2 [f3,bb3,d4,f4]]/2", // Dm Bb
  S: "~@8 c4@2 f4!2 g4 ~@9 a3@2, f2!2, [f4,a4]@5 a4 a4@3 g4@3, c4@8 ~@3 c4@4 f4@3 a3@2 a4@4, ~@6 a3@4 a3@5 g4 c4@8", // F
  T: "~@5 a3 ~@5 ab3, f2!2, [f4,a4,c5]@2 [c4,f4,a4,c5] [f4,ab4,c5]@2 [c4,f4,ab4,c5], ~@3 a3@2 ~@4 ab3@2 ~", // F Fm
  U: "g2@3 ~@2 d3 ~@5 [d3,a4], g4@5 d4, bb4@4 d4@2 [d3,a4]@3 [g3,bb3]@3, d4@3 bb3@2 bb4@7, ~@6 g2@17 ~", // D5 Gm
  V: "~@5 bb2 ~@5 eb3, [eb2,bb3,db4,f4,a4] [eb2,bb3,db4,f4,g4], ~@3 eb3@3 ~@3 eb3@2 ~, ~@2 g3 ~@2 g3", // Bbm Eb7
  W: "c2@3 ~@2 g3 c2@3 ~ [f3,g3,c4,e4]@2, [bb3,d4,f4]@2 [f3,bb3,d4,f4] [g3,c4,e4]@2 ~, ~ c2 ~ c2", // C Bb C
  X: "~@11 a3, f2!2, ~@3 a3@2 a3@4 a3@2 ~, ~@2 c4 ~@2 c4",
  Y: "g2@6 ~@2 c4@2 f4 ~ g4@3 ~@7 d3@2, g4@5 bb4@7, [f4,a4,bb4]@8 d4@4 a4@3 f4@3 [g3,bb3,g4]@6, [c4,d4]@6 bb3@4 [d3,a4] [c4,f4] d3@3 g4 c4@8, ~@3 g2@7 [d4,a4]@2", // Bbmaj7 Gm Csus2 D5 F5 D5
  Z: "~@4 f3@2 [eb2,eb3,g3]@3 [ab2,ab3,c4]@3, [f2,a3,c4,f4] ~, ~ c3 ~@2", // Eb Ab F
  AA: "[[gb2,gb3,bb3] [db3,f3,ab3] [ab2,ab3,c4] [eb2,eb3,g3,bb3]@4 ~]/2", // Gb Db Ab Eb
})).s("gm_piano").gain(0.33).pan(0.4)

// chords · epiano2 · "tk3"
const epiano2 = note("<A@8 B@8 C ~ D@6 ~@2 E F G H I J K L M N O H I P Q R S ~ T U V W X ~@10>".pickRestart({
  A: "[~@6 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@11 ~ [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [ab3,c4,f4]@10 ~@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3]@11 ~ [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@9 ~@3 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@11 ~ [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@10 ~@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@12 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@6, ~@22 bb3@3 ~@39]/8", // Bb F Fm Gm G5 Gm Bbm Bb …
  B: "[~@6 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@11 ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,c4]@2 [f3,ab3,c4]@9 ~@3 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@11 ~ [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@9 ~@3 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@11 ~ [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@8 ~@4 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@10 ~@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@6, ~@40 a3 ~@151]/8", // Bb F F5 Fm Gm Bbm Gm A
  C: "~@3 [f3,a3,d4]@2 ~@7", // Dm
  D: "[~@6 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@11 ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,ab3,c4]@9 ~@3 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@11 ~ [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@9 ~@3 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3]@2 [e3,g3,c4]@12 [f3,a3,c4]@2 [f3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@6 ~@6, ~@112 d4 ~@15 a3 ~@15]/6", // F Fm Gm Bbm Bb Bb5 C F …
  E: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@11 ~", // Bb
  F: "[a3,c4,f4]!6 [ab3,c4,f4]@5 ~", // F Fm
  G: "[d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3]@11 ~, ~@4 bb3@3 ~", // Gm G5
  H: "[g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@9 ~@3", // Gm
  I: "[f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@11 ~", // Bbm
  J: "[f3,bb3,d4]!6 [f3,bb3,d4]@5 ~", K: "[f3,a3,c4]!6 [f3,a3,c4]@6",
  L: "[f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@9 ~@3", // F
  M: "[f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@2 [f3,bb3,d4]@11 ~", // Bb
  N: "[f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,c4]@2 [f3,ab3,c4]@9 ~@3, ~@10 a3 ~@13", // F F5 Fm
  O: "[g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@2 [g3,bb3,d4]@11 ~", // Gm
  P: "[f3,bb3,db4]!6 [f3,bb3,db4]@4 ~@2", Q: "[g3,bb3,d4]!6 [g3,bb3,d4]@5 ~",
  R: "[a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@2 [a3,db4]@9 ~@3", S: "[f3,a3,d4] ~@5",
  T: "[f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@11 ~", // F
  U: "[f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,ab3,c4]@9 ~@3", // F Fm
  V: "[d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@2 [d3,g3,bb3]@11 ~", // Gm
  W: "[f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]@9 ~@3", // Bbm
  X: "[f3,bb3,d4]!5 [f3,bb3] [e3,g3,c4]@6, ~@10 d4 ~@13", // Bb Bb5 C
})).s("gm_epiano2").gain(0.09)

// chords · epiano1 · "tk6"
const epiano1 = note(`<
  ~ A@7 B@8 C@8 D E ~ F G H I J K L M N O@2 P Q@2 R S T U V W X Y Z T U V W X Y AA AB@2
>`.pickRestart({
  A: "[~@3 [a3,c4,f4]@6 [ab3,c4]@4 [ab3,c4]@2 [g3,d4]@4 [g3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4]@2 [g3,bb3,d4]@4 [g3,bb3,d4]@2 [g3,bb3,d4]@6 [bb3,db4,f4,a4]@12 [d4,f4,bb4]@6 [a4,c5,d5,f5]@6 [f4,a4,c5]@6 ~@5 bb4 ~ f5@5 [c5,f5,g5]@3, ~@3 f4@2 bb3@2 ~@16 [c4,f4,a4]@2 a4@2 ~]/7", // F Ab G5 Gm Bbm Bb Dm7 F …
  B: "[~@2 [c5,f5,a5]@4 [bb3,d4,f4]@12 [bb3,d4,f4]@12 [a3,c4,f4]@8 [a3,c4,f4]@4 [ab3,c4,f4]@12 ~@6 [d5,f5]@42 [bb3,db4,f4,a4]@12 [bb3,db4,f4,g4]@12 [bb3,db4,f4,a4]@12 [bb3,db4,f4,bb4]@11 ~ [d5,g5]@12 [g4,bb4,d5]@11 ~ [g3,a3,db4]@12 [g3,a3,db4,f4]@6, ~ g5 ~@25 [g3,bb3]@24 ~@45, ~@59 [g4,bb4]@43 ~@47 [g4,bb4]@13 ~@30]/8", // F Bb F Fm Dm Bbm Gm7b5 Bbm …
  C: "[[g3,a3,db4,e4]@6 ~@9 g4@3 ~@6 c4@3 [c4,e4]@3 [bb3,d4,f4]@12 ~@10 g4@2 [c4,f4,a4]@24 ~@8 a3@4 [ab3,c4,f4]@12 [g3,bb3,d4,f4]@24 ~@18 bb5@6 [bb4,d5,f5]@12 [g4,c5,e5]@12 [f4,a4,c5]@12 [g3,bb3,eb4]@5 ~, ~@6 [d3,f3,a3,d4]@12 ~@3 c5@9 ~@20 a4@4 ~@138, ~@12 [a4,f5]@6 [f4,d5]@11 ~@13 [f4,d5]@12 ~@24 [c4,f4]@12 ~@36 [bb3,db4,f4,a4]@24 ~@42, ~@15 e5@14 ~@109 eb6@12 ~@42, ~@21 e4@3 a4@5 ~@19 bb4@6 ~@138]/8", // A7 C Bb F Fm Gm7 Bb C …
  D: "[ab3,c4,eb4]@5 ~ [gb3,bb3,db4]@6 [f3,ab3,db4]@6 [ab3,c4,eb4]@5 ~", E: "[g3,bb3,eb4]",
  F: "[a3,c4,f4]@3 [ab3,c4]@2 [ab3,c4], ~ f4", G: "[g3,d4]@2 [g3,d4] [g3,bb3,d4]@2 [g3,bb3,d4], bb3 ~",
  H: "[g3,bb3,d4]@2 [g3,bb3,d4] [g3,bb3,d4]@3", I: "[bb3,db4,f4,a4]", J: "[d4,f4,bb4] [a4,c5,d5,f5]",
  K: "[f4,a4,c5]@6 ~@5 bb4, ~ [c4,f4,a4]", L: "~ f5@5 [c5,f5,g5]@4 [c5,f5,g5,a5]@2, a4 ~", M: "[bb3,d4,f4]!2",
  N: "[a3,c4,f4]@2 [a3,c4,f4] [ab3,c4,f4]@3", O: "[~ [d5,f5]@7, [g3,bb3], ~@5 [g4,bb4]@43]/2",
  P: "[bb3,db4,f4,a4] [bb3,db4,f4,g4]", // Bbm Gm7b5
  Q: "[[bb3,db4,f4,a4]@12 [bb3,db4,f4,bb4]@11 ~ [d5,g5]@12 [g4,bb4,d5]@11 ~, ~@23 [g4,bb4]@13 ~@12]/2", // Bbm G5 Gm
  R: "[g3,a3,db4]@2 [g3,a3,db4] [g3,a3,db4,e4], ~ f4", // A7
  S: "~@3 g4 ~@2 c4 [c4,e4], [d3,f3,a3,d4]@4 ~ c5@3, ~@6 [a4,f5]@6 [f4,d5]@11 ~, ~@9 e5@14 ~, ~@15 e4@3 a4@5 ~", // C Dm
  T: "[bb3,d4,f4]@6 ~@5 g4, ~ [f4,d5], ~@3 bb4, ~@5 a4", U: "[c4,f4,a4]", V: "~@2 a3 [ab3,c4,f4]@3, [c4,f4] ~",
  W: "[g3,bb3,d4,f4]", X: "~@3 bb5, [bb3,db4,f4,a4], ~ eb6", Y: "[bb4,d5,f5] [g4,c5,e5]",
  Z: "a4@2 ~ g4 ~@2 c4 [c4,e4], [d4,f4,d5]@12 [f4,d5]@11 ~, ~@2 [a4,f5]@2 ~ c5@3, ~@9 e5@14 ~, ~@15 e4@3 a4@5 ~", // C Dm
  AA: "[f4,a4,c5]@12 [g3,bb3,eb4]@5 ~ [ab3,c4,eb4]@5 ~", // F Eb Ab
  AB: "[[gb3,bb3,db4]@6 [f3,ab3,db4]@6 [ab3,c4,eb4]@5 ~ [g3,bb3,eb4]@24 ~@6]/2", // Gb Db Ab Eb
})).s("gm_epiano1").gain(0.24).pan(0.7)

// other · string ensemble 2 · "tk7"
const string_ensemble_2 = note(`<
  ~@8 A@4 B@3 C@2 D E@2 ~ F@3 G H ~@7 I J K L@2 M N O P Q R S ~@3 T U@2 V@2 W X Y Z AA@2
>`.pickRestart({
  A: "[~ f4@8 d4@6 ~]/4", B: "[a4@2 bb4@2 c5@2 a4@11 g4@13 a4@12 [g4,bb4]@12 ~@15 a4@3]/3",
  C: "[g4@2 d4@4 db4@24 ~@6 [d5,f5]@3 [c5,e5]@3 [bb4,d5]@3 [a4,c5]@3]/2", D: "[f4,a4] [e4,g4] [d4,f4]@6",
  E: "[~ [d4,f4] [e4,g4] [f4,a4]@12 ~@9]/2", F: "[~ f4@6 e4@2 f4@2 ~]/3", G: "~@4 db4 c4!2 bb3", H: "eb4@5 ~",
  I: "~@6 f4@3 f4 eb4 d4", J: "~@5 bb4 c5 bb4, f4@17 ~@7", K: "f5@3 c6", L: "[bb5@18 ~@4 f4 g4]/2", M: "a4 bb4",
  N: "c5 db5", O: "~@3 g5@3 a5@2 bb5@3 ~ d6@3 a6@3 g6@3 d6@3", P: "f6@3 e6",
  Q: "d6@2 ~@4 [d5,f5]@3 [c5,e5]@3 [bb4,d5]@3 [a4,c5]@3 [f4,a4]@3 [e4,g4]@3", R: "[d4,f4]@19 ~ [d4,f4]@2 [e4,g4]@2",
  S: "[f4,a4]", T: "f4 g4", U: "[a4@3 g4@3 a4@3 g4@3 f4@3 e4@3 c4@3 bb3@26 ~]/2", V: "c6/2", W: "bb5@5 ~", X: "~@3 f4",
  Y: "f4 e4", Z: "f4@11 ~@13", AA: "[~@6 db4@3 c4@3 c4@3 bb3@3 eb4@20 ~@10]/2",
})).s("gm_string_ensemble_2").gain(0.19).pan(0.3)

// chords · string ensemble 1 · "tk8"
const string_ensemble_1 = note(`<
  ~@8 A@4 B@5 ~@4 C@3 D E F G H ~ I J K ~@5 L@2 M N@2 ~@5 O P Q R@2 S T@3 U@2
>`.pickRestart({
  A: "[~@3 [bb3,d4]@12 a3@6 ab3@6 [g3,bb3]@17 ~@4, ~@5 c4@4 ~@7]/4", // Bb Gm
  B: "[~@2 [bb3,db4,f4]@16 ~@2 a3 bb3 d4@4 [a2,a3]@8 ~@6]/5", // Bbm A
  C: "[~@6 a3@11 ~ g3@11 ~ [bb3,d4]@12 [g3,c4]@11 ~ [a3,c4]@12 ~@6, ~@6 [bb3,db4]@23 ~@43]/3", D: "~@13 f3@5 eb3@6",
  E: "eb3@5 ~", F: "~@3 d4", G: "c4", H: "bb3 ~", I: "a3 g3 a3 bb3", J: "bb3", K: "c4@11 ~",
  L: "[~@2 a4 bb4, [db4,eb4,f4]@47 ~]/2", M: "g4@4 a4@2 g4 d4", N: "[a4@12 [d4,f4] ~@11, a3@13 ~@11]/2",
  O: "[bb3,d4]@6 [c4,e4]@3 c5 d5 e5", P: "f5 e5 f5 e5 d5 c5 a4 g4", Q: "f4@23 ~", R: "c4!2", S: "bb3@5 ~",
  T: "[~@18 db4@6 d4@12 g3@11 a3@13 ~@12, ~@3 bb3@3 c4@4 ~@2]/3", U: "[~@7 f3@5 eb3@6 eb3@20 ~@10]/2",
})).s("gm_string_ensemble_1").gain(0.14).pan(0.6)

// other · french horn · "tk9"
const french_horn = note("<~@23 A B C ~@2 D E F G H I J K L@2 M@2 N@2 O ~@4 P@2 ~ Q R@2 S ~@2 T U@2>".pickRestart({
  A: "~@3 bb3", B: "c4@2 bb3@2 db4@2 c4 bb3", C: "bb3@5 ~", D: "~@8 bb4 ~ bb4 ~ bb4@2 a4 ~ a4 ~ a4@2 g4 ~ g4 ~",
  E: "g4 ~", F: "a3 g3 a3 bb3", G: "bb3", H: "c4@7 bb4", I: "a4 ~@8 f4 d4 eb4", J: "f4@9 c5 ~ bb4", K: "f4@3 f4",
  L: "bb3/2", M: "[db4@12 db4@11 db4@12 ~ db4@12]/2", N: "[d4@6 d4@6 g4@6 bb4@5 a4@12 ~ a4@12]/2", O: "d4 ~@11",
  P: "[~@26 d4 ~@9 g4@11 ~, f4@3 ~]/2", Q: "~@18 a3@2 bb3@2 c4 ~", R: "c4/2", S: "bb3@11 ~", T: "~@2 bb3 c4",
  U: "[bb3@6 db4@6 c4@3 bb3@3 bb3@20 ~@10]/2",
})).s("gm_french_horn").gain(0.22).pan(0.1)

// chords · synth brass 2 · "tk11"
const synth_brass_2 = note("<~@23 A B C ~@2 D E ~@26 F G@2>".pickRestart({
  A: "~@18 g4@3 f4@2 ~, ~@3 bb3", B: "f4@3 eb4@2 ~ eb4@3 db4@2 ~ db4@3 c4@2 ~ c4@3 bb3@2 ~, c4 bb3 ab3@2",
  C: "g3@11 ~, bb3@19 ~@5", D: "~@8 g4 ~ g4 ~ g4@2 f4 ~ f4 ~ f4@2 d4 ~ d4 ~", E: "d4@11 ~@13",
  F: "~@12 g4@3 f4@2 ~ f4@3 eb4@2 ~, ~@2 bb3 c4",
  G: "[eb4@3 db4@2 ~ db4@3 c4@2 ~ c4@3 bb3@2 ~ g3@22 ~@8, bb3@6 ab3@12 bb3@19 ~@11]/2",
})).s("gm_synth_brass_2").gain(0.28)

// drums · kick
const kick = s("bd").struct(`<
  A B C D@2 B D B E D B@2 E D@2 F E B@3 G C@2 H I J K L M L N L N O M N@2 O M L N P Q N@3 M@2 R Q N@3 M@2 R S I ~
>`.pickRestart({
  A: "~ x ~@2", B: "~@2 x!2 ~@5 x ~@2", C: "~@3 x ~@4 x!2 ~@2", D: "~ x ~ x", E: "~ x ~ x ~@4 x!2 ~@2",
  F: "~@2 x!2 ~@3 x ~ x ~@2", G: "~@2 x!2 ~@4 x!2 ~@2", H: "~ x ~ x ~@5 x ~@2", I: "x!4", J: "x", K: "x ~@10 x",
  L: "x!2", M: "x ~@4 x!2 ~@5", N: "x ~@5 x ~@4 x", O: "x ~@2 x ~ x", P: "x ~ x!2 ~ x", Q: "x ~@4 x!2 ~@4 x",
  R: "x ~@4 x!2 ~@3 x ~", S: "x ~ x!2",
})).gain(0.27)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B@3 C B C B D B C@2 D B C B@2 C B C B@3 E ~ F B@3 G B G B H B G@2 H B G B@2 G B G B@3 I G B G B@3 G J ~@2
>`.pickRestart({
  A: "~@3 x!9", B: "x!12", C: "x!2 ~ x!9", D: "x ~@2 x!9", E: "x!2 ~ x ~@8", F: "~@7 x!4 ~", G: "x!11 ~", H: "x!10 ~@2",
  I: "x!9 ~@3", J: "x",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~ A ~ B ~ A@2 B ~ A ~@2 A ~ A ~@3 C ~ D ~@3 D ~ D ~ E ~ D@2 E ~ D ~@2 D ~ D ~@3 F D ~ D ~@3 D G ~@2
>`.pickRestart({
  A: "~ x ~@4", B: "~ x!2 ~@9", C: "~@2 x ~@3 x!3 ~@3", D: "~@11 x", E: "~@10 x!2", F: "~@9 x!3", G: "~@3 x!3 ~@6",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~ A ~ A ~ A@3 ~ A@6 ~@3 A ~@2 B ~@3 B ~ B ~ B ~ B@3 ~ B@6 ~@3 B@4 ~@3 B ~@2
>`.pickRestart({
  A: "~ x ~@2", B: "x",
})).gain(0.2)

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

// drums · tambourine
const tambourine = s("tb").struct("<~ x!23 ~@2 [~@3 x]!30 ~@3>").gain(0.34)

// drums · shaker
const shaker = s("sh").struct("<A B@9 C B@6 A B@5 C ~@2 D@10 E D@5 F D@6 F D@6 ~@3>".pickRestart({
  A: "~ x", B: "x!2", C: "x", D: "~ x ~ x", E: "~@3 x", F: "~ x ~@2",
})).gain(0.24)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@7 A B ~ C ~@6 D ~@15 E ~@2 F ~@5 G ~@6 G ~@9>".pickRestart({
  A: "~@11 x", B: "~ x ~@4", C: "~@5 x!2 ~@5", D: "~ x ~@10", E: "~@8 x ~@2 x", F: "~@2 x!2 ~@8", G: "~@5 x",
})).gain(0.07)

stack(
  piano, epiano2, epiano1, string_ensemble_2, string_ensemble_1, french_horn, synth_brass_2, kick, pedal_hat, open_hat,
  crash, ride, tambourine, shaker, shaker_soft
)

More by Elton John