Strudelify

I'm Still Standing

Elton John

KeyA majorTempo172 bpm
0:00/0:00
// I'm Still Standing — Elton John
// 172 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(172/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@8 B@5 C@5 B@5 D@5 E@2 F@4 G@4 H@7 I J@6 K@5 L@5 E@2 F@4 G@4 H@7 I J@6 M@5 N@5 E@2 F@4 G@4 O@2 P@5 I Q@5 R@2 I Q@5
  R@2 I S@3 I T@2 ~
>`.pickRestart({
  A: "[[a3,a4,c5]@14 ~ [a3,d4,f4,a4,c5]@15 ~ [a3,g#4,b4]@23 ~ [c4,f4]@3 ~ [d4,g4]@5, e4@12 ~@19 e4@21 ~@12]/4", // Am Dm7 E F5 G5
  B: "[[a2,e3,a3,c#4]@11 ~@4 [f#3,a3]@11 [f#3,a3,d4]@2 a2@2 b3@3 ~ d4@3 ~ [g#3,b3]@6 a2@3 [e3,a3,c#4]@11 e3 a3 a2@3 [f#3,a3,d4]@16 a2, ~@11 [e3,a3,c#4]@2 ~@17 e3@15 ~@35, ~@12 a2@9 ~@9 g#3@8 ~@20 c#4@2 ~@20]/5", // A F#m D G#m A D A
  C: "[~@3 d4 a2@3 [e3,g#3,b3]@3 ~ g#3 g#3@2 ~@2 [f#3,a3,c#4]@10 c#4 [f#3,a3] f#2@2 [d2,f#3,a3,d4]@11 ~ [d2,f#3,a3,d4]@4 ~@25 [e3,a3,b3]@3 ~ [e3,a3,b3]@4 ~, ~@3 [f#3,a3]@2 ~@2 e2@7 f#2@13 ~@19 a2@16 ~ a2@17, ~@11 [e3,b3]@4 ~@33 [e3,a3]@21 ~@11, ~@48 c#4@19 ~@13]/5", // E F#m D Esus4 F#m E5 A5
  D: "[~@3 d4 a2@3 [e3,g#3,b3]@3 ~ g#3 g#3@2 ~@2 [f#3,a3,c#4]@10 c#4 [f#3,a3] f#2@2 [d2,f#3,a3,d4]@11 ~ [d2,f#3,a3,d4]@4 ~@25 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~, ~@3 [f#3,a3]@2 ~@2 e2@7 f#2@13 ~@19 a2@16 ~ a2@17, ~@11 [e3,b3]@4 ~@33 [e3,a3]@21 ~@11, ~@48 c#4@19 ~@13]/5", // E F#m D A F#m E5 A5
  E: "[~@4 [c4,e4]@2 ~ a3@4 ~ c4@2 ~ [a3,c4]@4 ~ [c4,e4]@2 ~ [a3,c4]@4 ~ [a3,c4]@3 a2, ~@3 a2@7 ~ a2@5 ~@3 a2@5 ~@3 a2@2 ~@3, ~@12 a3 ~@7 a3 ~@11]/2", // C Am C Am
  F: "[g2@4 [g3,b3,e4]@2 ~ [g3,b3]@4 ~ [g3,b3,d4]@2 ~ [g3,b3]@4 ~ [g3,d4] ~@2 [g3,b3,d4]@4 ~ [g3,b3,e4]@3 ~@5 [f3,a3,c4,e4]@2 ~ [f3,a3,c4]@4 ~ [f3,a3,c4] ~@2 [f3,a3,c4,e4]@4 ~@4 [f3,a3,c4]@4 ~ [f3,a3,c4]@3 d2, ~@4 d4@7 g2@2 ~@2 d4 ~@3 g2@4 ~@4 g2@3 ~@2 d2@6 ~@5 d2@5 ~@3 d2@6 ~@2 d2@2 ~@3, ~@20 b3@2 ~@9 d4@2 ~@31]/4", // Em G G5 G Em Fmaj7 F Fmaj7 …
  G: "[[f3,a3,c4]@4 ~@3 [f3,a3,c4] ~@3 [f3,a3,c4]@4 ~ g2@4 ~@3 [g3,b3,d4] ~@3 [g3,b3,d4]@3 ~ [a3,c4,e4]@4 ~ [c4,e4]@2 ~ a3@4 ~ c4@2 ~ [a3,c4]@4 ~ [c4,e4]@2 ~ [a3,c4]@4 ~ [a3,c4]@3 a2, e4@15 ~ [g3,b3,d4]@6 ~@22 a3 ~@7 a3 ~@11, f2@3 ~ f2@8 ~@3 f2@2 ~@3 g2@9 ~@6 a2@7 ~ a2@5 ~@3 a2@5 ~@3 a2@2 ~@3]/4", // F G Am C Am C Am G
  H: "[g2@4 [g3,b3,e4]@2 ~ [g3,b3]@4 ~ [g3,b3,d4]@2 ~ [g3,b3]@4 ~ [g3,d4] ~@2 [g3,b3,d4]@4 ~ [g3,b3,e4]@3 ~@5 [f3,a3,c4,e4]@2 ~ [f3,a3,c4]@4 ~ [f3,a3,c4] ~@2 [f3,a3,c4,e4]@4 ~@4 [f3,a3,c4]@4 ~ [f3,a3,c4]@3 d2@2 ~@3 e2@4 [e3,g#3,b3]@3 ~ b3 ~@2 [e3,g#3,b3]@4 ~@4 [g#3,d4,e4,g4]@2 ~@2 [g#3,d4,e4,g4]@4 [a3,c4]@5 a2@6 ~ [a2,a3,c4,e4]@5, ~@4 d4@7 g2@2 ~@2 d4 ~@3 g2@4 ~@4 g2@3 ~@2 d2@6 ~@5 d2@5 ~@3 d2@6 ~@2 d2@2 ~@14 e2@7 ~ e2@12 ~@17, ~@20 b3@2 ~@9 d4@2 ~@62 e4@8 ~@9]/7", // Em G G5 G Em Fmaj7 F Fmaj7 …
  I: "~@7 [c4,d4]@4 ~ [c4,d4]@4, ~@4 d2@6 ~ d2@5, ~@7 [f3,a3]@8 ~", // Csus2 F
  J: "[~@3 [e3,g#3,b3] ~@3 [g#3,b3]@4 ~ b3@2 ~ [e3,g#3,b3]@4 ~@4 [g#3,d4,e4] ~@3 [g#3,d4,e4,g4]@4 [a3,c4]@5 [a2,c4]@5 ~@2 [a3,c4] ~@3 [f3,a3,c4]@5 ~@3 [f3,a3]@4 ~ a3 ~@6 e2@7 ~ [g#3,b3] ~@3 [e3,g#3,b3]@4 ~@3 [a3,c4] e2@3 ~ g2@4 ~, e2@10 ~ e2@4 ~@4 e2@10 ~@14 a2@6 ~@3 d2@6 ~ d2@7 ~@9 e2@8 ~@13, ~@7 e3@3 ~@2 g#3 ~@18 e4@13 ~@3 d4@12 c4@3 ~@2 [e3,g#3]@9 ~@2 e3@2 ~@19, ~@64 b3@6 ~@16 f4@2 ~@2 [b3,d4,g4]@5 ~]/6", // E G#m E E7 Am F G#m E …
  K: "[[a2,e3,a3,c#4]@11 ~@4 [f#3,a3]@11 [f#3,a3,d4]@2 ~@2 b3@3 ~ d4@3 ~ [g#3,b3]@6 a2@3 [e3,a3,c#4]@11 [e3,c#4] a3 a2@3 [f#3,a3,d4]@16 a2, ~@11 [e3,a3,c#4]@2 ~@17 e3@15 ~@35, ~@12 a2@9 ~@7 a2@4 ~@48, ~@15 g#3@4 ~@21]/5", // A F#m D G#m A C#m D A
  L: "[~@3 d4 a2@2 ~ [e3,g#3,b3]@3 ~ g#3 g#3@2 ~@2 [f#3,a3,c#4]@10 c#4 [f#3,a3] f#2@2 [d2,f#3,a3,d4]@11 ~ [d2,f#3,a3,d4]@4 ~@25 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~, ~@3 [f#3,a3]@2 ~@2 e2@7 f#2@13 ~@19 a2@16 ~ a2@17, ~@11 [e3,b3]@4 ~@33 [e3,a3]@21 ~@11, ~@48 c#4@19 ~@13]/5", // E F#m D A F#m E5 A5
  M: "[[a2,e3,a3,c#4]@11 ~@4 [f#3,a3]@11 [f#3,a3,d4]@2 a2@2 [g#3,b3]@8 [g#3,b3]@6 a2@3 [e3,a3,c#4]@11 e3 a3 a2@3 [f#3,a3,d4]@16 a2, ~@11 [e3,a3,c#4]@2 ~@17 e3@15 ~@13 c#4@2 ~@20, ~@12 a2@9 ~@59]/5", // A F#m D G#m A D A
  N: "[~@3 d4 a2@3 [e2,e3,g#3,b3]@7 ~@2 [f#3,a3,c#4]@10 c#4 [f#3,a3] f#2@2 [d2,f#3,a3,d4]@11 ~ [d2,f#3,a3,d4]@4 ~@25 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~, ~@3 [f#3,a3]@2 ~@9 f#2@13 ~@19 a2@16 ~ a2@17, ~@48 [e3,a3]@21 ~@11, ~@48 c#4@19 ~@13]/5", // E F#m D A F#m A5
  O: "[g2@4 [g3,b3,e4]@2 ~ [g3,b3]@4 ~ [g3,b3,d4]@2 ~ [g3,b3]@4 ~ [g3,b3,d4] ~@2 [g3,b3,d4]@4 ~ [g3,b3,e4]@3 d4, ~@4 d4@7 g2@2 ~@2 d4 ~@3 g2@4 ~@4 g2@3 ~@2]/2", // Em G Em
  P: "[~@4 [f3,a3,c4,e4]@2 ~ [f3,a3,c4]@4 ~ [f3,a3,c4] ~@2 [f3,a3,c4,e4]@4 ~@4 [f3,a3,c4]@4 ~ [f3,a3,c4]@3 d2@2 ~@3 e2@4 [e3,g#3,b3]@3 ~ b3 ~@2 [e3,g#3,b3]@4 ~@4 [g#3,d4,e4,g4]@2 ~@2 [g#3,d4,e4,g4]@4 [a3,c4]@5 a2@6 ~ [a2,a3,c4,e4]@5, d2@6 ~@5 d2@5 ~@3 d2@6 ~@2 d2@2 ~@14 e2@7 ~ e2@12 e4@8 ~@9]/5", // Fmaj7 F Fmaj7 F E E7 Am
  Q: "[~@3 [e3,g#3,b3] ~@3 [g#3,b3]@4 ~ b3@2 ~ [e3,g#3,b3]@4 ~@4 [g#3,d4,e4] ~@3 [g#3,d4,e4,g4]@4 [a3,c4]@5 [a2,c4]@5 ~@2 [a3,c4] ~@3 [f3,a3,c4]@5 ~@3 [f3,a3]@4 ~ a3 ~@6 e2@7 ~ [g#3,b3] ~@3 [e3,g#3,b3], e2@10 ~ e2@4 ~@4 e2@10 ~@14 a2@6 ~@3 d2@6 ~ d2@7 ~@9 e2@4 ~, ~@7 e3@3 ~@2 g#3 ~@18 e4@13 ~@3 d4@12 c4@3 ~@2 [e3,g#3]@9 ~@2 e3@2 ~@3, ~@32 b3@3 ~@5]/5", // E G#m E E7 Am F G#m E
  R: "[[e3,g#3,b3]@3 ~@4 [g#3,d4,e4,g4]@2 ~@2 [g#3,d4,e4,g4]@4 [a3,c4]@5 a2@6 ~ [a2,a3,c4,e4]@5, e2 ~@2 e2@12 e4@8 ~@9]/2", // E E7 Am
  S: "[~@3 [e3,g#3,b3] ~@3 [g#3,b3]@4 ~ b3@2 ~ [e3,g#3,b3]@4 ~@4 [g#3,d4,e4] ~@3 [g#3,d4,e4,g4]@4 [a3,c4]@5 [a2,c4]@5 ~@2 [a3,c4] ~@3 [f3,a3,c4,d4], e2@10 ~ e2@4 ~@4 e2@10 ~@14 a2@4 ~, ~@7 e3@3 ~@2 g#3 ~@18 e4@13 ~@4]/3", // E G#m E E7 Am Dm7
  T: "[~@3 [e3,a3,c4] ~@3 [a3,b3]@4 ~ b3@2 ~ [c3,e3,a3]@3 ~@14, a1@10 ~ a1@4 a1 ~@16, ~@7 e3@3 ~@2 a3 ~@19]/2", // Am Asus2 Am
})).s("gm_piano").gain(0.34).pan(0.4)

// chords · piano · "tk1" · soft notes
const piano_soft = note(`<
  ~@8 A@2 ~@8 A@2 ~@8 B ~@4 C ~@2 B ~@4 C D ~ E ~ F@2 G H I ~ A@2 ~@8 B ~@4 C ~@2 B ~@4 C D ~ E ~ F@2 G H I ~ A@2 ~@8 B
  ~@4 C ~@2 B ~@4 C D ~ E ~ F@2 G H I ~ E ~ F@2 G H I ~ E ~ F@2 G ~ J ~@2
>`.pickRestart({
  A: "[~@15 d4@11 ~@6]/2", B: "~@7 c4@4 ~@5", C: "~@4 [f3,a3] ~@11", D: "e2@3 ~@9 [e3,g#3] ~@3", E: "~@4 [a3,c4] ~@3",
  F: "[e3 ~@10 e3@3 ~ e2@2 ~@15]/2", G: "~@4 a3@5 ~@7", H: "~@11 f3@2 ~@3", I: "~@7 b3@3 ~@6", J: "e3 ~@10 e3@3 ~@2",
})).s("gm_piano").gain(0.11).pan(0.4)

// bass · slap bass 2 · "tk2"
const bass = note(`<
  A@2 B@6 C D E@2 F G@2 H F I@2 C J F@2 K@4 L M N O P Q R S T M U V P W X Y Z F AA Y AB AC X AD Y C@2 F@3 AE@4 L AF N O
  P W R S T M U V P W X Y Z F AA Y AG@2 AA AH Y C@2 F@3 AE@4 L M N O P W R S T M U V P W X Y Z F AA Y AG@2 AI AD Z F AA
  Y AG@2 AJ AD Z F AA Y AG@2 AA AK@2 ~
>`.pickRestart({
  A: "[a1@3 ~ a1@3 ~ a1@2 ~@2 a1@3 a2@5 a1@3 ~ a1@3 ~ a1@2 ~ g1]/2",
  B: "[a1@3 ~ a1@2 ~@2 a1@2 ~@2 a1@3 a2@5 a1@3 ~ a1@2 ~@2 a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 a2@5 a1@3 ~ a1@3 ~ a1@2 ~@2 a1@3 ~ a1@3 ~ a1@3 ~ a1@3 a2@5 a1@3 ~ a1@3 ~ a1@3 g1, ~@31 g1@2 ~@30 g1@2 ~@31]/6",
  C: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 g1", D: "a1@3 ~ a1@3 ~ a1@3 ~ a1@2 ~@2",
  E: "[a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 g1, ~@15 g1@2 ~@15]/2", F: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~",
  G: "[a1@2 ~@2 a1@3 e1@5 e1@2 ~ f#1@5 f#1@3 ~ f#1@3 ~ f#1@3 ~]/2", H: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 g1",
  I: "[a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 g1, ~@11 b1@2 ~@2 b1@2 ~@15]/2",
  J: "a1@2 ~@2 a1@3 ~ a1@3 ~ a1@3 ~",
  K: "[a1@3 ~ a1@3 e1@5 e1@3 f#1@4 ~ f#1@3 ~ f#1@3 ~ f#1@2 ~@2 d2@2 ~@2 d2@3 ~ d2@3 ~ d2@2 ~@2 a1@3 ~ a1@3 ~ a1@2 ~@2 a1@2 ~@2, ~@31 c2@2 ~@14 g1@2 ~@15]/4",
  L: "a1@2 ~@2 a1@3 c#2@4 ~ f#2@3 e2, ~@11 e2@2 ~@3", M: "a1@3 ~ a1@3 ~ b1@3 ~ b1@3 ~",
  N: "c2@3 ~ c2@3 ~ e2@2 ~@2 e2@3 ~", O: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 f1",
  P: "g1@2 ~@2 g1@3 ~ c2@3 ~ b2@4, ~@7 b1@2 ~@2 c3@2 ~@3", Q: "d2@3 ~ d2@3 ~ d2@2 ~@2 d2@3 ~",
  R: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 e2", S: "f2@3 ~ f2@3 ~ f2@3 ~ f2@2 ~ f2", T: "g2@3 ~ g2@3 ~ g2@3 ~ g2@3 ~",
  U: "c2@3 ~ c2@3 ~ e2@3 ~ e2@2 ~ e2", V: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~", W: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~",
  X: "d2@3 ~ d2@3 ~ d2@2 ~@2 d2@2 ~ d2", Y: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~", Z: "e2@3 ~ e2@3 ~ e2@3 ~ e2@2 ~ e2",
  AA: "d2@3 ~ d2@3 ~ d2@3 ~ d2@2 ~ d2", AB: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 g1", AC: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 c2",
  AD: "e2@3 ~ e2@3 ~ e2@3 ~ e2@2 ~ d2",
  AE: "[a1@3 ~ a1@3 e1@5 e1@3 f#1@4 ~ f#1@3 ~ f#1@3 ~ f#1@2 ~@2 d2@3 ~ d2@3 ~ d2@3 ~ d2@2 ~@2 a1@3 ~ a1@3 ~ a1@2 ~@2 a1@2 ~@2, ~@31 c2@2 ~@14 g1@2 ~@15]/4",
  AF: "a1@3 ~ a1@3 ~ b1@3 ~ b1@4", AG: "[e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 c2, ~@15 g1@2 ~@15]/2",
  AH: "e2@3 ~ e2@3 ~ e2@2 ~@2 e2@2 ~ d2", AI: "d2@2 ~@2 d2@3 ~ d2@2 ~@2 d2@2 ~ d2",
  AJ: "d2@2 ~@2 d2@3 ~ d2@3 ~ d2@2 ~ d2", AK: "[a1@3 ~ a1@3 ~ a1@3 ~ a1@2 ~ a1@6 ~@11]/2",
})).s("gm_slap_bass_2").gain(0.33)

// chords · acoustic guitar steel · "tk3"
const acoustic_guitar_steel = note(`<
  A@4 B@4 C D E C F G H D I C@2 D E C F G H D I C ~@15 J@4 K@5 C D E C F G H D I C ~@15 J@4 K@5 C D E C F G H D I C ~@15
  J@4 L@4 J@4 L@4 J@4 M@2 N@2 ~@2
>`.pickRestart({
  A: "[[e3,a3,c4,e4]@12 ~@4 d4@12 ~@3 [e3,g#3,b3,e4]@18 ~@5 [f3,a3,c4]@2 ~@2 [g3,b3,d4]@2 ~@4, ~@14 d3@13 ~@37, ~@15 [f3,a3]@13 ~@36]/4", // Am E F G F
  B: "[[e3,a3,c4,e4]@12 ~@4 d4@12 ~@3 [e3,g#3,b3,e4]@18 ~@5 [f3,a3,c4]@2 ~@2 [g3,b3,d4]@3 ~@3, ~@14 d3@13 ~@37, ~@15 [f3,a3]@13 ~@36]/4", // Am E F G F
  C: "~@4 e4@3 [e4,a4]@4 c#4 [c#4,e4,a4]@3 ~, ~@4 [a3,c#4]@7 a3@5", // A5 A
  D: "~@4 f#4@3 [f#4,a4]@4 d4 [d4,f#4,a4]@3 ~, ~@4 [a3,d4]@7 a3@5", // F#m D D5
  E: "~@4 e4@3 [e4,g#4]@4 b3 [b3,e4,g#4]@3 ~, ~@4 [g#3,b3]@7 g#3@5", // E G#m
  F: "~@4 f#4@3 [f#4,a4]@4 d4 [d4,f#4,a4]@3 ~, ~@4 [b3,d4]@7 b3@5", // F#m D Bm
  G: "~@4 [f#3,d4]@3 [e4,g#4]@4 b3 [b3,e4,g#4]@3 ~, ~@4 b3@6 ~ g#3@5", // D E
  H: "~@4 f#4@3 [f#4,a4]@4 c#4 [c#4,f#4,a4]@3 ~, ~@4 [a3,c#4]@7 a3@5", // F#m A
  I: "~@4 f#4@3 [e4,a4]@4 c#4 [c#4,e4,a4]@3 ~, ~@4 [a3,c#4]@7 a3@5", // A5 A
  J: "[~@7 [g#3,b3,g4]@2 ~@2 [g#3,b3,f4]@2 ~@2 [e3,a3,e4]@13 ~@3 [f3,c4,f4]@13 ~@3 [e3,b3,e4]@16 ~]/4", // G#m Fdim A5 F5 E5
  K: "[~@7 [g#3,b3,g4]@2 ~@2 [g#3,b3,f4]@2 ~@2 [e3,a3,e4]@13 ~@3 [f3,c4,f4]@14 ~@2 [e3,b3,e4]@18 ~ [e3,e4]@2 a3 ~ [f3,c4,f4]@2 ~@2 [g3,d4,g4]@4 ~@2, ~@66 a3 ~@13]/5", // G#m Fdim A5 F5 E5 E F5 G5
  L: "[~@7 [g#3,b3,g4]@2 ~@2 [g#3,b3,f4]@2 ~@2 [e3,a3,e4]@14 ~@2 [f3,c4,f4]@14 ~@2 [e3,b3,e4]@17, ~@15 f3 ~@48]/4", // G#m Fdim A5 F5 E5
  M: "[~@7 [g#3,b3,g4]@2 ~@2 [g#3,b3,f4]@2 ~@2 [e3,a3,e4]@14 ~@2 [f3,c4,f4], ~@15 f3 ~@16]/2", // G#m Fdim A5 F5
  N: "[[f3,c4,f4]@12 ~@3 [a3,c4,a4]@16 ~]/2", // F5 Am
})).s("gm_acoustic_guitar_steel").gain(0.16)

// chords · acoustic guitar steel · "tk3" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@8 A B C A D E F B G A@2 B C A D E F B G A ~@24 A B C A D E F B G A ~@24 A B C A D E F B G A ~@41
>`.pickRestart({
  A: "~@4 e3@11 ~, ~@4 a4@3 ~@9", B: "~@4 d3@11 ~, ~@4 a4@3 ~@9", C: "~@4 e3@11 ~, ~@4 g#4@3 ~@9", D: "~@4 a4@3 ~@9",
  E: "~@4 f#4@3 ~@9", F: "~@4 f#3@11 ~, ~@4 a4@3 ~@9", G: "~@4 e3@11 ~, ~@4 b4@3 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.1)

// chords · distortion guitar · "tk7"
const distortion_guitar = note("<~@86 A B C D@4 E@3 ~@41>".pickRestart({
  A: "a2@4 [c3,c#3]@2 ~@3 f#3@2 ~ a3@2 ~@2, ~@7 a2@2 ~@7, ~@4 e3 ~@3", B: "b3@4 a3@2 ~@2 a3@5 ~@3, ~@7 f#3@3 ~@6",
  C: "~ f#3@2 ~ a3@2 ~@2 b3@4 a3@2 ~ f#3, e3 ~@7",
  D: "[a3@2 ~@2 a3@7 ~ a3 ~@2 a3@3 f#4 ~@5 f#4@6 a3@4 [b3,g#4]@2 ~@4 g#4@6 ~ c4@3 [c#4,a4]@2 ~@10 c#4@2, ~@22 a3@6 ~@10 b3@7 ~@9 c#4@6 ~@4, ~@7 a4]/4", // E F#m
  E: "[~@2 [d4,b4]@2 ~@4 b4@7 d#4@4 [e4,c#5] [d4,b4]@4 [c#4,a4]@6 d#4@4 [e4,c#5] ~ [d4,b4]@4 a4@2 ~ f#4 e4@2 ~@2, ~@2 d4@3 ~@11]/3", // G C#m G F#m C#m G
})).s("gm_distortion_guitar").gain(0.41)

// other · pad bowed · "tk9"
const pad_bowed = note(`<
  ~@8 A B C D E@2 B F G@2 A B C D H@2 B F I@2 ~@24 A B C D H@2 B F I@2 ~@24 A B C D H@2 B F I@2 ~@41
>`.pickRestart({
  A: "e4", B: "f#4", C: "g#4", D: "a4", E: "[f#4@23 e4@9]/2", F: "a4@15 ~", G: "[a4@31 ~]/2", H: "[f#4@22 ~ e4@9]/2",
  I: "[a4@15 ~]/2",
})).s("gm_pad_bowed").gain(0.37).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  A@3 B A@7 C D C D A@13 C@3 E C@4 E C E@13 D A C D A@7 C E C E C@3 E@3 C E C E C E@2 C E@4 C@2 A@10 C@6 E C@3 E@3 C E C
  E@4 C E C@2 E@4 C E C@2 E@4 C@2 E ~@2
>`.pickRestart({
  A: "x!2", B: "x ~@6 x ~@8", C: "x ~@7 x ~@6 x", D: "~ x", E: "~@8 x ~@6 x",
})).gain(0.27)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@31 A ~@4 A ~@5 A@5 ~@18 A ~@5 A ~ A ~ A ~@2 A ~@3 A@2 ~@22 A@2 ~@4 A ~ A@2 ~@4 A ~ A@2 ~@4 A ~ A@2 ~@2 A ~@2
>`.pickRestart({
  A: "x",
})).gain(0.14)

// drums · snare
const snare = s("sd").struct("<A@3 B A@27 B A@18 C A@8 B A@46 C A@8 B A@7 B A@7 B A@2 D ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@6 x ~@4", C: "~@3 x ~@8 x ~@3", D: "~@4 x ~@6 x!2 ~@3",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@3 x]!24 ~@10 [~@3 x]!24 ~@10 [~@3 x]!39 ~@2>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@3 x]!24 ~@10 [~@3 x]!24 ~@10 [~@3 x]!39 ~@2>").gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<A@8 B A@19 B A@23 B A@9 B A@23 B A@9 B A@38 ~@2>".pickRestart({
  A: "x!4", B: "~ x!3",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@19 A ~@23 A ~@9 A ~@23 A ~@9 A ~@37 B ~@2>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.31)

stack(
  piano, piano_soft, bass, acoustic_guitar_steel, acoustic_guitar_steel_2, distortion_guitar, pad_bowed, kick,
  kick_soft, snare, low_tom, mid_tom, open_hat, crash
)

More by Elton John