Strudelify
Bennie & The Jets cover art

Goodbye Yellow Brick Road

Bennie & The Jets

Elton John

KeyG majorTempo66 bpm
0:00/0:00
// Bennie & The Jets — John Elton
// 66 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/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 · "A.PIANO 1"
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP@2 AQ AR AS AT AD
  AE AF AG AU AV AJ AW AX AM AY AZ BA BB BC AZ BA BB BC S T U BD@3
>`.pickRestart({
  A: "[g2,d3,b3,d4,f#4,b4] ~@3 [g2,d3,b3,d4,f#4,b4] ~@3 [g2,d3,b3,d4,f#4,b4] ~@3 [g2,d3,b3,d4,f#4,b4] ~@3", // Gmaj7
  B: "[g2,d3,b3,d4,f#4,b4] ~@3 [g2,d3,b3,d4,f#4,b4] ~@3 [g2,d3,b3,d4,f#4,b4] ~@2 g2 [g2,d3,b3,d4,f#4,b4] [f#2,f#3]@2 ~", // Gmaj7 F#
  C: "[f2,c3,a3,c4,e4,a4] ~@3 [f2,c3,a3,c4,e4,a4] ~@3 [f2,c3,a3,c4,e4,a4] ~@3 [f2,c3,a3,c4,e4,a4] ~@3", // Fmaj7
  D: "[f2,c3,a3,c4,e4,a4] ~@3 [f2,c3,a3,c4,e4,a4] ~@3 [f2,c3,a3,c4,e4,a4] ~@2 f2 [f2,a3,c4,e4,a4] g2@2 g#2", // Fmaj7
  E: "[a2,e3,a3,c4,e4,g4]@8 [d3,a3,c4,d4,f#4]@7 ~", // Am7 D7
  F: "[g2,d3,g3,b3,d4,g4]@5 [g3,b3,d4]@3 [g#2,d3,g#3,d4,f4]@5 ~ g#4@2, ~@8 b3@4 ~ b3@2 ~", // G Ddim
  G: "[a2,d3,g3,a3,c4]@6 [e4,g4]@2 [a3,d4]@5 ~ d4@2, e4@5 ~@3 [a2,d3,f#3,c4]@7 ~, ~@13 a3@2 ~", // Am7 Em D5 D7
  H: "[g3,b3,e4]@7 b2 e3 [b3,d4,g4]@3 ~ [g3,d4,e4]@3, e3@3 ~@3 e3@2", // Em G Em7
  I: "[g3,a3,c4,e4]@5 g4 ~ e4 [b2,f#3,b3,d4]@4 ~ [b3,d4]@2 ~, [a2,e3] f#4, ~@8 a3@3 ~ a3@4", // Am7 Bm A5
  J: "c3 ~@4 g3@2 g2 c3 [g3,g4] e4 g2 c3 g4 e4 ~, [c4,e4,g4]@5 ~@4 c4@2 ~@5, ~ g2@5 ~@10, ~ c3@3 ~@4, ~@3 e3@5 ~@5 [g3,c4]@2 ~", // G C C5
  K: "[g3,g4,b4,d5] [g3,g4] [g3,g4,b4]!2 [g3,g4,b4,d5] g3 [g3,b4] [g3,g4,b4] [g3,g4,b4,d5] g3 [g3,b4] [g3,g4,b4,d5] ~ [g2,d4] [g4,b4,d5] e2", // G G5 G
  L: "[a2,e4,g4,c5] ~@2 [e4,a4,b4] a2 ~ [c4,e4,a4] e2 a2 ~@2 [c4,e4,b4]@2 a2 [c4,e4,a4] ~", // Am7 Esus4 Am Cmaj7 Am
  M: "[c4,e4]@2 ~@2 c3 ~@2 g2 c3 ~ [g3,c4,d4] c4 [c3,g3,c4,d4] e2 f2 f#2, c3 ~@2 [c4,e4,g4]@2 ~ [g3,c4,e4]@2 ~@5 [g3,c4,e4]@2 ~", // C Gsus4 Csus2 C
  N: "[g2,g4,b4,d5] ~@2 [g4,b4,e5] g2 ~ [g4,b4,d5] d2 g2 ~@2 [g4,b4,e5] g2 ~ [g4,b4,d5] d2", // G Em G Em G
  O: "[a2,c4,e4,a4] ~@2 [c4,e4,b4] ~ a2 ~ [e2,c4,e4,a4] e3 a2 ~ e2 ~ [c4,e4,b4]@2 ~, ~@12 a2@3 ~", // Am Cmaj7 Am Cmaj7
  P: "[c4,e4]@4 ~@2 e4 ~ [d4,f#4]@4 ~@2 f#4 ~, c3@8 d3@7 ~, g3@3 ~ g3@3 ~ a3@3 ~ a3@4, ~@5 c4@2 ~@6 d4@3", // C D
  Q: "e2@3 b2 ~ [g3,b3,e4]@2 ~ [d2,g3,b3,d4]@3 b2 d2 [d2,g3,b3,d4]@3, [g3,b3,e4] e2 ~@2", // Em G Em
  R: "[c3,g3]@4 ~ g3@3 ~ [c3,d3,f3,a#3]!3 [d3,f#3,a3,d4] ~ [e3,f#3,a3,d4] e4, [e3,c4] ~, ~ c3 ~@2", // C5 A# D C
  S: "[g2,g4,b4,e5] ~@3 [g2,g4,b4,d5] ~@3 [g2,g4,b4,e5] ~@2 [g4,b4,d5] ~ g2 [g4,b4,e5] d2", // Em G Em G Em
  T: "g2 ~ [g4,b4,d5] ~ [g2,g4,b4,d5] [g4,b4,e5] ~ d2 [g2,g4,b4,e5] ~@3 [g2,g4,b4,d5] f#2@3", // G Em G
  U: "[f2,e4,a4,c5] ~@2 [d4,g4,b4] ~ f2 ~ [c2,c4,f4,a4] f1 c2 f2 [e4,a4,c5] ~ [d4,g4,b4] ~ f2", // Fmaj7 G F Am G
  V: "f1 c2 [f1,f4,a4,c5] ~ [f1,d4,g4,b4] [c2,c4,f4,a4] ~ [f1,f4,a4,c5] ~ [f2,d4,g4,b4] ~ [c2,c4,f4,a4] f1 g2!2 g#2, ~@4 f1 ~@3", // F G7 F G7 F
  W: "[a2,g3,a3,c4,e4]@8 e4 f#4@2 [e4,g4]@2 [f#4,a4]@3, ~ [d3,a3,c4], ~@4 d4 ~@3", // Am7 Em F#m D7
  X: "[d4,g4,b4]@4 d4 [d4,g4,b4]@2 ~ [f4,g#4,b4]@2 ~@4 g#4@2, [g2,g3]@7 ~ [g#2,g#3]@5 a4@2 ~, ~@8 d4 ~ d4@5 ~, ~@11 f4@5, ~@11 g#4 b4@3 ~", // G Fdim G G#
  Y: "e3@2 c4 d4@2 e4@2 ~@3 f#4 [d4,e4,g4]@2 [a3,d4,f#4]@3, [a2,a3]@5 ~@3 d3@7 ~, ~@3 g3@4 ~ a3@3 a3 ~@4, ~@3 c4 ~@5 d4@2 ~@5", // Em7 D A
  Z: "[g3,b3,e4]@3 g3 [g3,b3,e4] [g3,b3,d4] ~@3 g3 b3 [b3,e4]@2 g3 [g3,b3,d4] ~, e3@7 [g3,b3]@2 ~@2 g3 ~@4, ~@4 e3@3 ~", // Em G E5 G
  AA: "[g3,a3,c4,e4]@5 [g3,a3,c4,e4,g4] [a3,c4,e4] ~ [d4,e4] f#4 ~ [a3,b3,f#4]@2 e4 [a3,b3,f#4] ~, [a2,e3]@7 ~ [b2,f#3]@7 ~, ~@8 [a3,b3]@2 ~ d4@4 ~", // Am7 Am Dsus2 B7 A5 B5 Asus2
  AB: "[c4,e4,g4]@2 ~ [e4,g4]@2 ~ [c4,e4,g4]@2 ~ [c3,g3]@3 [c4,e4,g4] ~ [c4,e4,g4] ~, [c3,g3]@8 ~ d4 ~@4 [c3,g3]@2, ~@3 d4 ~@5 [e4,g4]@2 ~@5", // C Em C C5 C C5 Em
  AC: "[g2,f#4,b4,d5] ~@2 [f#4,b4,d5] g2 ~ [f#4,b4,d5] ~ g2 ~ [f#4,b4,e5] ~ [g2,f#4,b4,e5] [f#4,b4,d5] ~ e2", // Gmaj7 Bm Esus2 Em Bm
  AD: "[a2,e4,a4,c5] ~@2 [d4,g4,b4] a2 e2 [c4,e4,a4] e2 a2 ~ [d4,g4,b4] ~ [d4,g4,b4] [c4,e4,a4] b2 ~, ~@6 a2 ~", // Am G Am G Am
  AE: "[c4,e4,g4]@2 g3 ~ c2 g3!2 g2 c2 [c4,e4,g4] ~ g3 [c4,e4,g4] [c4,e4]@2 ~, c2 ~@2 [c4,e4,g4]@2 ~ [c4,e4]@2 ~@4 c2@2 ~@2", // C
  AF: "[g2,g4,b4,d5] ~@2 [g4,b4,e5] g2 ~ [g4,b4,d5] d2 g2 ~ [g4,b4,e5] ~ [g2,g4,b4,e5] [g4,b4,d5] ~ e2", // G Em G Em G
  AG: "[a2,e4,a4,c5] ~@2 [d4,g4,b4] a2 ~ [c4,e4,a4] e2 a2 ~ [c4,e4,a4] ~@2 [c4,e4,a4] b2@2, ~@6 a2 ~", // Am G Am
  AH: "[c2,c3,g3,c4,e4]@3 g3 [c4,e4] [g3,c4,d4]@2 ~ [d2,d3,d4,f#4]@3 [e4,g4] ~ [d4,f#4]@2 ~, ~@4 [c2,c3]@2 ~@2 a3@7 ~, ~@6 [d2,d3] ~", // C Gsus4 D Em D C D
  AI: "[e2,e3,g3,b3,e4]@3 b2 [g3,b3,e4] [g3,b3,d4]@3 [d2,d3,e3,g3,b3]@3 [b2,e3,g3,b3,e4] ~ [e3,g3,b3,d4]@3, ~@2 [e2,e3] ~@3 [d2,d3] ~", // Em G Em7 Em Em7 E D
  AJ: "[c3,g3,c4,e4]@3 ~ e4 g3 e4 [f3,a#3]@2 [f3,a#3]@2 [f3,a#3]!2 [f#3,a3,d4]!3, ~@3 g3@2 ~@11, ~@4 [c3,c4]@2 ~ c3@6 ~ d3@2", // C A#5 D C
  AK: "[g2,f#4,b4,d5] ~@3 [g2,f#4,b4,d5] [b4,e5] ~ [f#4,b4,d5] g2 ~ [g4,b4,d5] [g4,b4] [g2,g4,b4,d5] [g4,b4,e5]@2 d2, ~@5 f#4@2 ~@9", // Gmaj7 E5 Bm G Em
  AL: "[g2,g4,b4,e5] d2 g2 [g4,b4,e5] ~ g2 [f#4,b4,d5] d2 g2 ~@3 g2 f#2@2 ~", // Em Bm
  AM: "[f2,e4,a4,c5] ~@2 [d4,g4,b4] ~ f2 [c4,f4,a4] c2 f1 ~ [e4,a4,c5] ~ [d4,g4,b4] [c4,f4,a4] f2 c2", // Fmaj7 G F Am G F
  AN: "f1 [e4,a4,c5] [d4,g4,b4] ~@2 [e4,a4,c5] ~ [d4,g4,b4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~ [c4,f4,a4] ~@2", // Am G Am G F
  AO: "[g3,a3,c4,e4]@5 [g3,a3,c4,e4]@3 [f#3,a3,c4,d4]@5 [f#3,a#3]@3", // Am7 D7 F#
  AP: "[[g3,b3]@5 g3@3 [g#3,b3,d4]@5 b3!2 ~ [g3,c4]@5 ~ [g3,c4,e4] ~ [d3,f#3,a3,c4,d4]@5 [d3,f#3,a3,c4,d4]@3, d4@7 ~@6 g#3@2 e4@7 ~@10]/2", // G G#dim C5 C D7
  AQ: "~@8 [e3,g3,b3]@4 [e3,g3,b3]@3 ~, [e3,g3,b3]@7 ~@9, ~@5 d3@11", // Em
  AR: "[g3,a3,c4,e4]@5 [g3,a3,c4,e4]@2 ~ [a3,b3,d4,f#4]@3 [a3,b3,d4,f#4]@3 [a3,b3,d4,f#4]@2", // Am7 Bm7
  AS: "[g3,c4,e4]@3 [g3,c4,e4,g4]@2 g3 [g3,c4,e4]@3 [g3,e4,g4]@2 g3 [g3,c4,e4]@2 [g3,g4]@2, ~@9 c4 ~@4 [c4,e4] ~", // C G C
  AT: "[g2,f#4,g4,b4,d5] ~@2 [f#4,g4,b4] g2 ~ [f#4,g4,b4] ~ g2 ~ [f#4,g4,b4,e5] ~ [g2,f#4,g4,b4,e5] [f#4,g4,b4,d5] ~ e2", // Gmaj7 Em Gmaj7
  AU: "[c2,c3,g3,c4,e4]@3 ~ [c4,e4] [g3,c4,d4]@2 ~ [d2,d3,d4,f#4]@3 [e4,g4] ~ [d4,f#4]@2 ~, ~@3 g3@2 ~@3 a3@7 ~, ~@2 [c2,c3] ~@3 [d2,d3] ~", // C Gsus4 D Em D C D
  AV: "[e2,e3,g3,b3,e4]@3 b2 [g3,b3,e4] [g3,b3,d4]@2 ~ [d2,d3,e3,g3,b3]@3 [b2,e3,g3,b3,e4] ~ [e3,g3,b3,d4]@3, ~@2 [e2,e3] ~@3 [d2,d3] ~", // Em G Em7 Em Em7 E D
  AW: "[g2,f#4,g4,b4,d5] ~@3 [g2,f#4,g4,b4,d5] [g4,b4,e5] ~ [f#4,g4,b4,d5] g2 ~ [g4,b4,d5] [g4,b4] [g2,g4,b4,d5] [g4,b4,e5]@2 d2, ~@5 f#4@2 ~@9", // Gmaj7 Em Gmaj7 G Em
  AX: "[g2,g4,b4,e5] d2 g2 [g4,b4,e5] ~ g2 [f#4,g4,b4,d5] d2 g2 ~@3 g2 f#2@2 ~", // Em Gmaj7
  AY: "f1 [e4,a4,c5] [d4,g4,b4] f2 c2 [f1,e4,a4,c5] ~ [f2,d4,g4,b4] ~ [c2,c4,f4,a4] f1 [c4,f4,a4] f2 [f2,c4,f4,a4] f#2@2", // Am G Fmaj7 G7 F
  AZ: "g2 ~ [g4,b4,e5]!2 [g2,g4,b4,e5] [g4,b4,d5] ~ d2 [g1,g4,b4,e5] ~@2 [g2,g4,b4,d5] ~ d2 [g4,b4,e5] d2", // Em G Em G Em
  BA: "g1 ~ [g4,b4,d5] ~ g2 [g4,b4,e5] ~ d2 g1 ~ [f#4,g4,b4,d5] ~ g2 [f#2,f#4,g4,b4,d5]@2 ~", // G Em Gmaj7
  BB: "[e4,a4,c5] ~@2 [d4,g4,b4] ~ f2 [c4,f4,a4] c2 f1 ~@2 [e4,a4,c5] f2 ~ [d4,g4,b4] c2, f2 ~@7", // Am G F Am G
  BC: "f1 ~@2 [f4,a4,c5] ~ f2 ~ c2 f1 ~@2 [f2,f4,a4,c5] ~ f2 [f4,a4,c5]@2, ~@6 [d4,g4,b4]@2 ~@6 f2 ~", // F G
  BD: "[f1 c2 [f1,f4,a4,c5] ~ [f1,d4,g4,b4] [c2,c4,f4,a4] ~ [f1,f4,a4,c5] ~ [f2,d4,g4,b4] ~ [c2,c4,f4,a4] f1 ~@2 c2 d5 ~@6 g4@11 ~@14, ~@8 f1@2 ~@5 g4@7 ~@26, ~@16 [g2,g3,f#5]@19 ~@13, ~@16 b4@6 b4@13 ~@13, ~@17 d5@18 ~@13]/3", // F G7 F G7 F Gmaj7
})).s("gm_piano").gain(0.4)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D E F G H I J K L M K N O P Q R S T U V W X Y Z AA K AB AC K AD AE AF AG R S T U V W X AH I AA K AB AC K AD AE
  AF AG R S T AI R S T AI R S T AI R S T U AJ@2
>`.pickRestart({
  A: "g1 ~@3 g1 ~@3 g1 ~@3 g1 ~@3", B: "g1 ~@3 g1 ~@3 g1 ~@2 g1!2 f#1@2 ~", C: "f1 ~@3 f1 ~@3 f1 ~@3 f1 ~@3",
  D: "f1 ~@3 f1 ~@3 f1@2 ~ f1!2 g1 ~@2", E: "a1@3 ~@3 e2 d#2 d2@3 ~@3 d2 e2", F: "g2@4 ~@2 g2 ~ g#2@4 ~@2 g#2 ~",
  G: "a2@3 ~@3 e2 d#2 d2@4 ~@2 b1 d2", H: "e2@3 ~@4 b1 e2@4 ~@2 d2 b1", I: "a1@4 ~@2 a1 a#1 b1@4 ~@2 b1 ~",
  J: "c2@4 ~@3 g1 c2@4 ~@2 d2@2", K: "g1 ~@3 g2 ~@3 g1 ~@3 g2 ~@2 g1", L: "a1 ~@3 a2 ~@3 a1 ~@3 a1 b1@3",
  M: "c2 ~@3 c2 ~@2 g1 c2 ~@3 c2 e1 f1 f#1", N: "a1 ~@3 a2 ~@3 a1 ~@3 a1@2 b1@2",
  O: "c2@2 ~@2 c2@2 g2 c2 d2@3 ~ d2@2 ~ [d#2,a2]", P: "e2@3 b1 e2@2 ~ d#2 d2@2 ~ b1 d2 e2 d2 b1",
  Q: "c2@2 ~@2 c2@2 ~ g1 c2 ~ c2 ~ d2 ~ e2@2", R: "g2@2 ~@2 g2 ~@3 g2 ~@3 g2 ~@3", S: "g2 ~@3 g2 ~@3 g2 ~@3 g2 f#2@2 ~",
  T: "f2@2 ~@2 f2 ~@2 f1!2 ~@3 f2 ~@2 f1", U: "f1 ~@3 f2 ~@2 f1!2 ~@2 f1 ~ g1!2 g#1", V: "a1@5 ~ e2 d#2 d2@4 ~@2 d2 e2",
  W: "g2@4 ~ d2 e2 g2 g#2@4 ~@2 g#2 ~", X: "a2@4 ~@2 a2 [d#2,e2] d2@4 ~@2 b1 ~", Y: "e2@4 ~@2 b1@2 e1@5 ~ e1 g1",
  Z: "a1@3 ~@3 a1 a#1 b1@4 ~@2 b1 ~", AA: "c2@5 ~ c2@3 ~ c2 d2 e2 ~ d2 e1", AB: "a1 ~@3 a2 ~@2 e1 a1 ~@3 a2 ~ b1@2",
  AC: "c2 ~@3 c2 ~@2 g1 c2 ~@2 c2 e1 f1 f#1@2", AD: "a1 ~@3 a2 ~@2 e1 a1 ~@3 a1@2 b1@2",
  AE: "c2 ~@3 c2@3 c2 d2 ~@2 a1 b1 c2 d2 d#2", AF: "e2 b1 e2 ~@3 b1 d2 ~ b1 d2@3 ~ b1 ~",
  AG: "c2 ~ c2@3 ~ c2 ~ c2@3 ~ d2@2 e2@2", AH: "e2@4 ~@2 b1@2 e1@4 ~@2 e1 g1",
  AI: "f1 ~@3 f2 ~@2 f1!2 ~@2 f1 ~ f1!2 f#1", AJ: "[g1 ~@4 g2 d2 g1@12 ~@13]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@6 A@4 B ~@4 C D E ~@4 F@2 G@2 H I ~@5 C D E ~@4 J@2 G@2 K I ~@5 C D E ~@18
>`.pickRestart({
  A: "[~@16 [b3,e4,g4,b4]@8 [e3,b3,e4,g4,b4]@6 ~@2 [c4,e4,a4]@6 ~@2 [b2,f#3,b3,d4,f#4,b4]@5 ~@3 [g3,c4,e4,g4]@6 ~@2 [g3,c4,e4,g4]@4 ~@2 [g3,c4,e4,g4] ~, ~@15 e3@8 ~@8 a2@7 ~@9 c3@7 ~ c3@4 ~ [c3,g3,c4,e4,g4]@2 ~@2, ~@32 [e3,a3]@8 ~@21 [c3,g4]@2 ~]/4", // Em Am Bm C A5 C5
  B: "[g2,d3,g3,b3,d4,g4] ~@15", // G
  C: "[c3,g3,c4,e4,g4]@4 [c3,g3,c4,e4,g4]@3 ~ [d3,a3,d4,f#4,a4]@4 [d3,a4]!2 [d3,a3,f#4,a4] a4, ~@12 [a3,d4,f#4]@3 ~", // C D D5 D
  D: "[e3,e4,g4,b4]@4 [e3,e4,g4,b4]@4 [e3,b3,d4,g4,b4]@4 [d4,g4,b4] [d4,g4,b4]@2 b4, b3@8 ~@4 [e3,b3]@3 ~", // Em Em7 G E5
  E: "[c4,e4,g4]@4 [c4,e4,g4]@7 ~@2 [c3,c4,e4,g4]!2 [c4,e4,g4], [c3,g3]@11 ~@2 g3@3", // C C5
  F: "[[a2,e3,a3,c4,e4]@7 ~ [d3,a3,d4]@7 ~ [b2,g3,b3,g4]@7 ~ [f3,b3,d4,g#4]@7 ~, ~@8 f#4@5 ~@2 g2@6 ~@11, ~@16 d3@5 ~@11]/2", // Am D5 Em Fdim
  G: "[[a2,e3,a3,c4,e4]@7 ~ [d3,a3,d4,f#4]@6 ~@2 [b2,e3,g3,b3,e4]@10 [b2,e3,g3,b3,e4]@3 ~ [b2,e4] [g3,b3,e4], ~@15 e2@11 ~@3 [b2,e3,g3,b3,e4]@2 ~]/2", // Am D Em E5 Em
  H: "[e3,a3,c4,e4]@5 [c4,e4]!2 [a3,c4] [f#3,b3,d4,f#4]@4 [f#3,b3,d4,f#4]@3 ~, a2 ~, ~@5 e3@3 ~@8", // Am C Am Bm
  I: "[g3,c4,e4,g4]@4 [c4,e4,g4]@3 [c4,e4,g4]@2 g4 [g3,c4,e4,g4]@2 e4 [g3,e4,g4] [g3,e4,g4]@2, ~@4 g3@6 ~@3 c4@3", // C
  J: "[[a2,e3,a3,c4,e4]@7 ~ [a3,d4,f#4]@5 ~@3 [b2,g3,b3,g4]@7 ~ [f3,b3,d4,g#4]@7 ~, ~@8 d3@7 g2@6 ~@11, ~@16 d3@5 ~@11]/2", // Am D Em Fdim
  K: "[e3,a3,c4,e4]@5 [e3,c4,e4] [c4,e4] [a3,c4] [f#3,b3,d4,f#4]@4 [f#3,b3,d4,f#4]@3 ~, a2 ~", // Am C Am Bm
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.3)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note("<~@12 A ~@4 B@2 ~@11 A ~@4 B@2 ~@35>".pickRestart({
  A: "c5@3 d5 g4@2 ~@10, [e5,g5]@4 c5 ~@11", B: "[~@6 [g5,c6]@2 [f#5,b5] ~@7, ~@6 d5@3 ~@7]/2",
})).s("gm_percussive_organ").gain(0.33).pan(0.6)

// chords · piano · "A.PIANO 2"
const piano_2 = note("<~ A B ~@16 A B ~@16 A B C D E F G H I ~@9 A B ~@15>".pickRestart({
  A: "~@8 [e4,e5] ~ [d4,d5] ~ [b3,b4] [c4,c5]@2 [f1,c3]", B: "[c2,f2,e3,a3] ~@15", C: "~@13 a4 c5 d5",
  D: "[d#5,e5] g5@5 a5 g5 [a#5,b5] d6@3 [a#5,b5] a#5 a5 e5", // Emaj7 Bmaj7
  E: "~ [g4,a4] [a#4,b4] g4@2 ~@4 [g#4,b4] [d5,e5] d5@2 e5@2 ~, g5 ~@7", // Gsus2 Bmaj7 G#m Dsus2
  F: "[d5,d#5] [e5,g5] a5 g5 a5 g5 a5 g5 b5 d6 e6 b5@2 a5 g5 a5, ~@11 a#5 ~@4", // D#maj7 Em
  G: "~ d#5 e5 b4 a#4 b4 g4 d#4 e4 ~ g4 ~ [a4,a#4,b4] d5 e5 d5, ~@9 b3@2 ~@5",
  H: "~ [e5,g5]@2 [e5,g5] ~ [d5,d#5,e5,g5] ~ [e5,g5] ~ [a4,b4,d5,f#5]@2 a4 [a#4,b4] d5 e5 d5, ~ [d5,d#5] ~@14", // Em D#maj7 Em Bm7 Bmaj7 D#maj7
  I: "[a4,g5]@3 [e5,g5] [a4,g5] [a4,e5,g5]!2 [a4,g5] [a4,e5,g5] e5 [a4,e5,g5] e5@3 ~@2, c5@7 ~, ~@11 a4 ~@4", // A7 Em A7
})).s("gm_piano").gain(0.5)

// chords · piano · "A.PIANO 2" · soft notes · A7
const piano_soft = note("<~@45 [~@2 a4!2 e5 ~@2 e5 ~ [a4,g5] ~ g5 [a4,g5]@2 ~@2] ~@26>").s("gm_piano").gain(0.29)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@58 A B C D A B C D A B C D ~@2>".pickRestart({
  A: "~@4 [e2,e3,g3] [g2,b2,d3,b3,d4] [b2,b3] ~@5 [e2,e3] [g2,b2,d3,g3,b3,d4] [f#3,f#4] [d3,d4]", // Em G B E G F# D
  B: "~@4 [e2,e3] [b2,d3,b3,d4] [f#3,a3,f#4,a4] [f#3,f#4] [f#4,a4] [d4,e4]!2 d4@2 b3 [d4,f#4] [f#4,a4], ~@11 b3 ~@4", // E Bm F#m F# F#m Dsus2 D F#m
  C: "e4 ~@7 [g3,c4] [d4,g4] ~@6", D: "[c4,f4] [g4,c5] ~@6 [g4,c5] [c4,f4]!2 [g4,c5] ~@4",
})).s("gm_lead_2_sawtooth").gain(0.19).pan(0)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth_2 = note("<~@58 A B C ~ A B C ~ A B C ~@3>".pickRestart({
  A: "[e5,g5] b5 [b5,d6] ~@5 [e5,g5] [b5,d6] f#6 d6 ~@4", // Em Bm Em Bm
  B: "e5 [b5,d6,f#6] a6 f#6 ~@4 [f#6,a6] e6 [d6,e6] d6@2 b5 [d6,f#6] a6, ~@11 b5 ~@4", C: "[e6,f#6] ~@15",
})).s("gm_lead_2_sawtooth").gain(0.21).pan(1)

// drums · kick
const kick = s("bd").struct("<A B A C D@12 E ~ D@2 F G D@2 H D@3 I@2 D@5 E D@9 E D@2 J D@20 E K ~>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@4 x ~@2", C: "x!3 ~", D: "x!2", E: "x", F: "x ~@7 x ~@6 x",
  G: "x ~@4 x ~ x!2 ~@2 x ~@3 x", H: "x ~@2 x!2 ~@3", I: "x!2 ~@2 x ~@3", J: "x ~@3 x ~@2 x", K: "x ~@2 x ~@4 x ~@7",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct(`<
  A B A B C@3 D C E C@4 F C G H C I J K C@3 G C L C@4 M C N H C O C P C@5 Q C R C@5 G C@3 S C@3 G C@3 T C@3 U V ~
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "~ x ~ x", D: "~@4 x ~@6 x!2 ~ x!2", E: "~@4 x ~@7 x!2 ~ x", F: "~@4 x ~@6 x!4 ~",
  G: "~ x ~@2", H: "~ x ~@6", I: "~@4 x ~@6 x!5", J: "~@4 x ~@7 x ~@2 x", K: "~@4 x ~@7 x ~ x!2",
  L: "~@4 x ~@4 x ~@4 x ~", M: "~@4 x ~@6 x!3 ~@2", N: "~@4 x ~@8 x!3", O: "~@4 x ~@4 x!2 ~@2 x ~@2",
  P: "~@4 x ~@4 x ~ x ~@4", Q: "~@4 x ~@3 x!2 ~ x ~@4", R: "~@4 x ~@4 x!2 ~@2 x ~ x", S: "~@4 x ~@8 x ~@2",
  T: "~@2 x ~@2 x ~@2", U: "~@4 x ~@2 x ~ x ~@6", V: "~@3 x ~@12",
})).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@16 A B ~ C ~@5 C ~ C ~@4 C ~@2 C ~ C ~ C ~@3 C ~ C ~@6 D B ~@7 C ~ E ~ C ~ D ~ B F ~
>`.pickRestart({
  A: "~@13 x!3", B: "~@14 x!2", C: "~@15 x", D: "~@13 x ~@2", E: "~@13 x ~ x", F: "~@7 x ~@8",
})).gain(0.49)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B A B C D C E F G F D H I E F J ~ C K L A F C M B ~@2 H N H F O ~@3 H P C E D Q C K R S N O F@2 H M K ~ T K U D C V
  C K D K W X Y Q Z AA AB ~
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x!8", D: "x!7 ~", E: "x!5 ~@3", F: "x!3 ~ x!4", G: "x ~ x!5 ~", H: "x ~ x!6",
  I: "x!5 ~ x!2", J: "x!4 ~@4", K: "x!6 ~@2", L: "x ~ x ~ x ~@3 x ~ x ~ x ~ x!2", M: "x!5 ~ x ~", N: "x ~ x!3 ~ x!2",
  O: "x!3 ~ x ~@3", P: "x!3 ~@5", Q: "x!3 ~ x!3 ~", R: "~ x!4 ~ x!2", S: "x ~ x!2 ~@4", T: "x!3 ~ x ~ x!2",
  U: "~@2 x ~ x!4", V: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", W: "~ x!7", X: "x ~ x!3 ~@3", Y: "~@4 x!4",
  Z: "~ x!2 ~ x ~ x!2", AA: "x!2 ~@2", AB: "x!2 ~@6",
})).gain(0.38)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  ~@5 A ~@2 B C B A C D@2 B ~@4 B E B ~ F G ~@3 H C B@2 ~@3 C B ~@2 A I ~@2 D C H B@3 C J ~@2 K ~ G ~@5 A ~@2 C B@2 K C
  ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~ x ~@6", D: "~@5 x ~@2", E: "~@2 x ~@3 x!2 ~@2 x ~@5", F: "~@5 x ~ x",
  G: "~ x ~ x ~@4", H: "~ x ~@3 x ~@2", I: "~@3 x ~@3 x", J: "~@10 x ~@4 x", K: "~@3 x ~ x ~@2",
})).gain(0.22)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A ~ A ~@12 B C ~ D ~@5 E ~ F ~@4 G ~@2 H ~ G ~ D ~@3 I ~ D ~@6 J F ~ K ~ J ~@3 L ~@3 L ~ J ~ F M ~
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~@9 x!4 ~@3", C: "~@4 x ~@3 x!2 ~@2 x!2 ~@2", D: "~@13 x!2 ~", E: "~@10 x ~@2 x ~@2",
  F: "~@11 x ~ x ~@2", G: "~@7 x", H: "~@4 x ~@2 x!2 ~@2 x ~ x!2 ~", I: "~@13 x ~@2", J: "~@15 x", K: "~@13 x ~ x",
  L: "~@12 x!2 ~@2", M: "~@5 x!2 ~@9",
})).gain(0.49)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@13 x ~@2] ~@57 [~@13 x ~@2] ~@10 [~ x ~@14] ~>").gain(0.49)
// … 18 more lines

More by Elton John