Strudelify

You're Still the One Something About the Way You Look Tonight

Elton John

KeyB♭ majorTempo77 bpm
0:00/0:00
// You're Still the One   Something About the Way You Look Tonight — Elton John
// 77 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 13 Guitar 2 -> acoustic guitar steel
// 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(77/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 · fretless bass
const bass = note(`<
  ~ A@11 B C@3 D E F G H I J K L M N O P Q R S T U R V W ~ X Y Z AA AB AC AD AE AF AG AH AI J AJ L M N AK P Q R AL AM AN
  AO AP AQ AR AS AT AU AV AW AX AY M N AZ P Q R AL BA BB L M N BC BD Q R BE BF BB L BG BH AM BI BJ BK BL BM BN AV BL BO
  BP BQ BR BS BT BU BV
>`.pickRestart({
  A: "c3@3 c3 c3@2 c3@2", B: "b2@3 b2 b2@2 b2@2", C: "bb2@3 bb2 bb2@2 bb2@2", D: "f2@3 f2 f2@4", E: "bb1!2",
  F: "bb1@6 bb2 c3 bb2@5 f2 bb1@2", G: "a1", H: "bb1@5 ~ bb1@2 bb1@3 ~ ab1@4", I: "ab1@7 ab1", J: "g1@3 g1 a1@2 b1@2",
  K: "c2@3 e1", L: "f1@5 ~ f1@2 f1@8", M: "bb1@4 ~@2 bb1 ~ bb1@8", N: "gb1@4 ~@2 gb1 ~ gb1@7 ~",
  O: "g1@5 ~ g1 ~ g1@3 g1 d2@2 g2@2", P: "f2@8 f1@7 ~", Q: "gb1@5 ~ gb1 ~ gb1@2 bb2 ab2 gb2@2 db2@2",
  R: "f1@5 ~ f1 ~ f1@8", S: "bb1@6 f1@2 bb1@3 f1 bb1@2 bb1@2", T: "eb2@6 eb2 ~ eb2@2 bb1 eb2 d2@2 bb1 d2",
  U: "c2@5 ~ c2@2 c2@7 ~", V: "bb1@5 ~ bb1 ~ bb1@4 f1@4", W: "bb1@5 ~ bb1 ~ bb1@7 ~", X: "~@6 g2 d3 c3@7 g2", Y: "c2",
  Z: "b1@2 f3 d3", AA: "bb2", AB: "eb2@7 bb2", AC: "eb2@13 f2 g2 eb2", AD: "f2@11 g2 bb2 f2 g2 f2",
  AE: "bb2@5 ~ bb2@2 bb2@3 f2 bb2@2 f2@2", AF: "bb2@5 ~ f2 g2 bb2@4 bb2@4", AG: "a2@5 ~ a2@2 a2@4 a2@4",
  AH: "bb2@5 ~ bb2@2 bb2@2 c2 d2 f2 d2 c2 bb1", AI: "ab1@5 ~ ab1@2 ab1@3 ab1 eb2@2 ab1@2", AJ: "c2@5 ~ c2@2 c2@4 e1@4",
  AK: "g1@5 ~ g1 ~ g1@3 d2 g2@2 d2@2", AL: "bb1@5 ~ bb1@2 c2 ~ d2@4 f2@2", AM: "eb2@7 bb1 eb2@4 d2@4",
  AN: "c2@5 ~ c2@2 c2@6 eb2 g2", AO: "f2@3 c2 f1@12", AP: "bb1@5 ~ bb1 ~ bb1@8", AQ: "bb2@3 c3@3 d3@4 c3@2 bb2@2 d2@2",
  AR: "c2@5 ~ c2 ~ c2@7 ~", AS: "c2 c3 g2 c3", AT: "c2@5 ~ c2 ~ c2@4 e3@4", AU: "b1@5 ~ b1 ~ b1@7 ~", AV: "bb1 bb2",
  AW: "eb2@11 bb2 eb3@2 bb2@2", AX: "eb2@7 bb1 eb2@5 f2 g2 eb2", AY: "f2@8 a2@6 d2 c2",
  AZ: "g1@5 ~ g1 ~ g1@3 bb1@3 d2@2", BA: "eb2@5 ~ eb2@2 eb2@4 d3 bb2 d3@2", BB: "c2@5 ~ c2@2 c2@8",
  BC: "g1@5 ~ g1 ~ g1@3 d2 g2@4", BD: "f1@4 ~@2 f1 ~ f1@4 f1@4", BE: "bb1@5 ~ bb1@2 c2 ~ d2@6",
  BF: "eb2@7 bb2 eb3 bb2 eb2@6", BG: "bb2@7 f2 d3@3 f2 bb2@4", BH: "bb2@7 f2 bb2@3 f2 bb2@2 f2@2", BI: "c2 f1",
  BJ: "bb1@5 ~ bb1 ~ bb1@3 f2 bb2@2 d3@2", BK: "bb1@5 ~ bb1 ~ bb1@4 c3@2 bb2@2", BL: "eb2@5 ~ eb2@2 eb2@4 d2@4",
  BM: "c2@5 d2 eb2 g2 f2@4 d2 c2 a1 f1", BN: "bb1@5 ~ bb1@2 bb1@8", BO: "c2@5 d2 eb2 g2 f2@8",
  BP: "bb2@5 ~ bb2@2 bb2@8", BQ: "bb2@7 a2 gb2@8", BR: "eb2@5 ~ eb2@2 eb2@2 eb3@2 d3@2 bb2@2",
  BS: "c3@5 ~ c3@2 f2@5 ~ f2@2", BT: "bb1@8 d3@3 eb3@3 f3@2", BU: "bb2@5 ~ bb2@2 bb2@4 g2@2 f2@2",
  BV: "eb2@5 ~ eb2 ~ eb2@4 d2@4",
})).s("gm_fretless_bass").gain(0.8)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@17 A@2 B C@5 D@8 E@2 F@2 ~@8 A@2 B C@5 D@8 E@2 F@2 ~@8 D@8 E@2 D@8 E@2 G@2 H I G@2 H I G@2 H I G@2 H I G@2 H
>`.pickRestart({
  A: "[[f3,d4] [g3,eb4], bb3]/2", B: "[a3,c4,f4]",
  C: "[bb3@4 ab3@4 b3@2 [a3,c4] [b3,d4] eb4@3 ~ [a3,c4]@4, d4@5 ~ c4@2 ~@2, f3@2 g3@2 ~, ~@3 f4]/5", // Am Bm Am
  D: "[[bb3,f4]@4 [a3,gb4]@4 g4@8 [db4,gb4]@4 [d4,f4]@8 [eb4,g4]@3 [d4,f4], d4 ~, ~ bb3@3]/8", // Bb5 D Gb5 Dm Eb Dm
  E: "[c4@16 bb3@12 ~ f4@3, [g3,eb4]@7 [a3,c4]]/2", F: "[f3,bb3,d4]/2", G: "[[f4,bb4] [gb4,a4], d5]/2",
  H: "[g4,eb5]@3 [f4,d5], bb4", I: "[g4,eb5] [a4,f5], c5",
})).s("gm_synth_strings_1").gain(0.16)

// chords · piano
const piano = note(`<
  ~ A@2 B@2 C D E F G H G I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE@2 ~ AF ~ AG ~ AH AI AJ M AK@2 AL Q R S AM
  U V W AN Y Z AA AB AC AD AO@2 AP AQ AR AS AT AU AV AW AX AY W AZ Y Z AA AB AC AD BA AY W AZ Y BB AA AB AC AD BC BD BE
  BF BG BH BE BI BC BD BE BF BG BH BE BI BG BH BJ
>`.pickRestart({
  A: "[d4@15 ~ d4 e4@7 ~@2 g5 ~ g4 ~ c4 ~, ~@15 g3@15 ~@2]/2",
  B: "[d4@15 ~@13 d5 g5 d5 g5, ~@15 g3@16 ~, ~@16 d4@15 ~, ~@13 g4@3, ~@27 c5@5]/2",
  C: "[a4,d5,gb5]@11 ~ [d4,gb4,a4]@4", D: "d4 e4@9 ~@3 d5 g5 d5, [g3,c4]@10 ~ g4@5, ~@3 c5", E: "gb5 d5 a4 gb4",
  F: "d4 ~@3 g3@4 c4@2 ~@4 g4@2, c4@6 ~@5 c4@5, g3@3 ~@7 g3@6, ~ e4@9 ~@2 d4@4, ~@13 e4@3", G: "[a3,d4,gb4]",
  H: "d4@3 e4, [g3,c4]", I: "[b3,d4,g4]@11 ~@3 g3@2, ~@11 g3@2 g4@3, ~@3 d4",
  J: "[~@16 [bb3,eb4,g4]@10 ~@4 f4 ~, [bb3,d4,g4]@14 ~@13 g3@5, ~@3 bb2@5, ~@7 bb3, ~@29 eb4@3]/2", // Eb Gm
  K: "eb4@2 eb4 [eb3,g3,bb3], [bb3,g4]@3 ~", L: "[f3,a3,c4]@3 [f3,a3,eb4]", M: "[bb2,f3,bb3,d4]@15 ~",
  N: "[g3,bb3,eb4]@11 ~ [g3,bb3,f4]@4, bb2", O: "[a2,c4,f4], a3@7 ~", P: "[bb3,d4,f4]@11 ~ [bb3,d4,f4]@3 ~, bb2",
  Q: "[ab3,c4,f4]@7 ~, ab2", R: "[g2,g3,b3,f4]@2 [a2,a3,c4,f4] [b2,b3,d4,f4]", S: "[g3,c4,eb4]@11 ~ [g3,c4,f4]@3 ~, c3",
  T: "[a3,c4,f4]@8 ~@4 [f3,a3,eb4]@3 ~, f2@7 ~ [f1,f2]@7 ~", U: "[bb2,bb3], [d4,f4]@7 ~",
  V: "[a3,d4,gb4]@11 ~ [a3,d4,gb4]@3 ~, gb2@15 ~", W: "[bb3,d4,g4]@11 ~ [bb3,d4,g4]@4, g2",
  X: "[bb3,d4,g4]@9 ~@4 d4 bb3@2, f2, ~@5 g3@3, ~@11 bb3@2 ~@3, ~@3 g4", // Gm
  Y: "[bb3,db4,gb4]@13 ~ [db4,gb4]@2, gb2, ~@14 bb3 ~", Z: "[bb3,d4,f4]@11 ~ [bb3,d4,f4]@3 ~, f2@15 ~",
  AA: "[f3,ab3,d4]@11 ~@3 bb2 ~, bb2@3 [f3,ab3,d4]", AB: "[eb3,bb3,eb4]@3 [d3,bb3,d4,f4], g3@5 ~@3",
  AC: "[g3,c4,eb4]@11 ~@3 c3@2, c3@3 [g3,c4,eb4]", AD: "[f2,g3,bb3,eb4]@12 [f2,a3,c4,f4]@3 ~",
  AE: "[[f3,bb3,d4]@12 ~@4 f5@11 ~@3 f5@2, bb2, ~@13 f4@13 ~ f4@5, ~@14 bb4@13 ~ bb4@4, ~@15 c5@12 ~@2 c5@3]/2", // Bb
  AF: "~@11 c4 ~@2 c4@2, ~@5 g3 d4 ~, ~@13 g3@3", AG: "~@11 g3 ~@2 g3@2, ~@3 g4, ~@13 d4@3",
  AH: "~@3 eb4, ~@5 g3@3, ~@11 bb3@5", AI: "~@3 eb4 ~@4 g4@3 ~ [g3,bb3,eb4]@4, g4@6 eb4@5 ~@5, ~@4 bb3@7 ~@5",
  AJ: "[a3,c4,f4]@11 ~ [f2,g3,bb3,eb4,f4]@3 ~", // F Eb
  AK: "[[g3,bb3,eb4]@11 ~ [g3,bb3,f4]@4 [a3,c4,f4]@11 ~ [a3,c4,f4]@3 ~, bb2, ~@16 a2 ~@15]/2", // Eb Gm7 F
  AL: "[bb3,d4,f4]@11 ~@3 f4@2, bb2, ~@11 f3@5, ~@3 bb3, ~@13 d4@3", // Bb
  AM: "[a3,c4,f4]@5 ~@7 f4@4, f2, ~@3 f3@5, ~@7 a3@3 ~ a3@5, ~ c4", AN: "[bb3,d4,g4]@11 ~ [bb3,d4,g4]@4, f2",
  AO: "[[f3,bb3,d4]@8 ~@4 f4 ~@3 f5@15 ~, bb2 ~, ~@9 f3@4 f4@19, ~@10 bb3@4 ~ c5@16 ~, ~@11 c4@3 bb4@18]/2", // Bb
  AP: "~ c4 d4 gb4 gb4@2 c5 d5 ~@2 d5@2 ~@2 [gb4,a4]@2, d3@8 a5@4 ~ d4@3, ~@9 gb5@3 d3@4", // Gbm
  AQ: "[g3,c4,e4]@6 ~ [g3,c4] d4 ~@6 g5, ~@4 e4 c4@2 d5, ~@9 g3@7, ~@3 g4, ~@13 c5@3", // C C5
  AR: "~@2 a4@3 a3 gb4 g4 gb4 d4 a3@2 e4 gb4 d4 a3, gb5@5 ~@11, ~ d5@3 ~@8 a3@2 ~@2",
  AS: "[b3,d4,g4]@6 ~ [g3,b3] [d4,g4] ~ g4 a4 b4 a4 g4 d4, ~@9 d4@5 ~@2", // G G5
  AT: "[g3,d4,g4]@2 ~@2 g4@2 g3 [bb3,d4] g4 ~ bb4 d5 g5 d5 bb4 g4, bb3 ~ bb3@4 ~@10, ~@3 d4@2 ~@4 g4@5 ~@2", // G5 Bb
  AU: "[eb4,g4,bb4,eb5]@4 eb4 f4 ~ bb4 g5 eb5 bb4 g4 f5 eb5 bb4 g4, ~@6 g4@3 ~@7", // Eb
  AV: "[eb4,g4,bb4,eb5]@4 f3 g3 bb3 eb4 g4 bb4 eb5 f5 g5 eb5 bb4 g4", // Eb
  AW: "[a3,c4,f4]@4 ~@2 f4 g4 a4 g4 f4@5 ~, ~@4 f3@11 ~, ~@5 c4@10 ~", AX: "[bb3,d4,f4]@11 ~ [bb3,d4,f4]@3 ~, bb2@15 ~",
  AY: "[a3,d4,gb4]@9 ~@2 d4 ~ gb4 d4 a3, d3, ~@10 a3@2 a4@3 ~", // D
  AZ: "[bb3,d4,g4]@8 ~@3 bb3 g4 d4 bb3 g3, f2@7 ~, ~@10 g3@3 ~@3", // Gm
  BA: "[f3,bb3,d4]@5 ~@2 f4, bb2, ~@11 f3@5, ~@3 bb3, ~@13 d4@3", // Bb
  BB: "[f3,bb3,d4]@9 ~@2 bb3 d4 c4 bb3@2, f2, ~@10 f3@5 ~", BC: "d5 bb4 f4 ~@2 bb4 c5 d5 f5 d5 bb4 ~@2 f4 bb4 d5",
  BD: "gb5 d5 a4@2 ~ a4 d5 gb5 a5@4 ~ a4 d5 gb5", BE: "g5 eb5 bb4 ~ eb3 f3 g3 bb3 eb4 g4 bb4 eb5 g5 f5 eb5 d5",
  BF: "eb5 c5 g4 ~ eb4 g4 c5 eb5 f4 g4 a4 bb4 c5 d5 eb5 f5",
  BG: "d5 bb4 f4 ~@2 f4 [bb4,c5] d5 bb4 ~ bb4 ~ bb4 c5 d5 f5", BH: "gb5 d5 a4@2 ~ a4 d5 gb5 a5 gb5 d5@2 ~ a4 d5 gb5",
  BI: "eb5 c5 g4 ~@2 g4 c5 eb5 f4 g4 a4 bb4 c5 d5 eb5 f5", BJ: "g5 eb5 bb4 ~ eb3 f3 g3 bb3 eb4 g4 bb4 eb5 g5 ~@3",
})).s("gm_piano").gain(0.64).pan(0.7)

// chords · pad warm
const pad_warm = note("<~ A B A B A B A B A B C@5 D ~@48 A E C@5 D ~@39>".pickRestart({
  A: "[a3,d4,gb4]", B: "[c4,e4,g4]", C: "[[a3,gb4] b3 ~ eb4@2, d4@3 ~@2, ~ g4@4, ~@2 bb3@3]/5", D: "[a3,c4,f4]",
  E: "[g3,c4,e4]", // C
})).s("gm_pad_warm").gain(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A ~ B C ~ C ~@2 D ~@54 E F E G H@2 I J K E H@2 E L@2 M N ~ K E H@2 E L@2 M N ~ O P Q R O P Q R O P Q R O P Q R O P
  Q
>`.pickRestart({
  A: "~@10 g5 ~ c5 ~ g4 ~", B: "~@11 c5 d5 g5 d5 g5", C: "[d5,gb5]", D: "e4", E: "gb5", F: "e5", G: "d5", H: "g5/2",
  I: "eb5@2 bb4 eb5", J: "f5@15 ~", K: "f5", L: "f5/2", M: "g5@3 f5", N: "eb5",
  O: "[bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [f3,bb3,d4,f4] ~@3, f3 ~ f3 ~ f3 ~@3", // Bb
  P: "[gb3,a3,d4,gb4] ~@3 [gb3,a3,d4,gb4] ~@3 [a3,d4,gb4] ~@3 [gb3,a3,d4,gb4] ~@3, ~@4 gb3 ~@3", // D
  Q: "[bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [g3,bb3,eb4,g4] ~@3 [g3,bb3,eb4,g4] ~@3, g3 ~ g3 ~@5", // Eb
  R: "[g3,c4,eb4,g4] ~@3 [g3,c4,eb4,g4] ~@3 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~@3", // Cm F
})).s("gm_string_ensemble_1").gain(0.48).pan(0.2)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~ A B A C ~ D ~ D E F G@2 H@3 I ~@65 J ~@9 J ~@19>".pickRestart({
  A: "[d5,gb5]", B: "[e5,g5] ~", C: "[e5,g5]@9 ~ g4 ~@5", D: "[c4,e4]", E: "[d4,gb4]", F: "g4",
  G: "[gb4@16 b5@8 g5@7 ~, d4@31 ~, ~ g4]/2", H: "[~ d6 [eb4,bb5,eb6]@4, [g4,g5], d4 ~@2]/3", I: "[f4,a4,f5,a5,c6]",
  J: "f5@15 ~",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.2)

// other · orchestral harp
const orchestral_harp = note("<~@9 A B A C D E F G ~@95>".pickRestart({
  A: "gb4 ~@3 d4 ~@3 a3 ~@3 gb3 ~@3", B: "e3 ~@3 g3 ~@3 c4 ~@3 e4 ~@3", C: "g3 ~@3 b3 ~@3 d4 ~@3 g4 ~@3",
  D: "g4 ~@3 d4 ~@3 d4 ~@3 bb3 ~@3", E: "eb4 ~@3 g4 ~@3 eb4 ~@3 bb3 ~@3", F: "g4 ~@3 g4 ~@3 eb4 ~@3 bb3 ~@3",
  G: "g4 ~@3 f4 ~@3 c4 ~@3 a3 ~@3",
})).s("gm_orchestral_harp").gain(0.4).pan(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@25 A B C A D A E F G H I J ~@16 A B C A D A E F G H I J ~@8 A B C A D A E F G H A B C A D A E F G H K L M N K L M N
  K L M N K L M N K L O
>`.pickRestart({
  A: "[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]@2 [f3,bb3,d4]!2", // Bb
  B: "[gb3,a3,d4]@2 [gb3,a3,d4]!2 [gb3,a3,d4]@2 [gb3,a3,d4]!2 [gb3,a3,d4]@2 [gb3,a3,d4]!2 [gb3,a3,d4]@2 [gb3,a3,d4]!2", // D
  C: "[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]@2 [g3,bb3,d4]!2", // Gm
  D: "[gb3,bb3,db4]@2 [gb3,bb3,db4]!2 [gb3,bb3,db4]@2 [gb3,bb3,db4]!2 [gb3,bb3,db4]@2 [gb3,bb3,db4]!2 [gb3,bb3,db4]@2 [gb3,bb3,db4]!2", // Gb
  E: "[f3,ab3,d4]@2 [f3,ab3,d4]!2 [f3,ab3,d4]@2 [f3,ab3,d4]!2 [f3,ab3,d4]@2 [f3,ab3,d4]!2 [f3,ab3,d4]@2 [f3,ab3,d4]!2", // Ddim
  F: "[g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2", // Eb
  G: "[g3,c4,eb4]@2 [g3,c4,eb4]!2 [g3,c4,eb4]@2 [g3,c4,eb4]!2 [g3,c4,eb4]@2 [g3,c4,eb4]!2 [g3,c4,eb4]@2 [g3,c4,eb4]!2", // Cm
  H: "[g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2", // Eb F
  I: "[f3,bb3,d4]@2 [f3,bb3,d4]!2 [f3,bb3,d4]@2 [f3,bb3,d4]!2 [f3,bb3,d4]@2 [f3,bb3,d4] [bb3,d4] [f3,bb3,d4]@2 [bb3,d4] [f3,bb3,d4]", // Bb
  J: "[f3,bb3,d4]@2 [f3,bb3,d4]!2 [f3,bb3,d4]@2 [bb3,d4] [f3,bb3,d4] [f3,bb3,d4]@2 [f3,bb3,d4]!2 [f3,bb3,d4]@2 [f3,bb3,d4] ~", // Bb
  K: "[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]@2 [bb3,d4,f4]!2", // Bb
  L: "[a3,d4,gb4]@2 [a3,d4,gb4]!2 [a3,d4,gb4]@2 [a3,d4,gb4]!2 [a3,d4,gb4]@2 [a3,d4,gb4]!2 [a3,d4,gb4]@2 [a3,d4,gb4]!2", // D
  M: "[bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2", // Eb
  N: "[c4,eb4,g4]@2 [c4,eb4,g4]!2 [c4,eb4,g4]@2 [c4,eb4,g4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2", // Cm F
  O: "[bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 ~@2", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.48).pan(0.3)

// chords · drawbar organ
const drawbar_organ = note("<~@37 A B C@5 D ~@20 A B C@5 D ~@39>".pickRestart({
  A: "[a5,d6,gb6]", B: "[g5,c6,e6]", C: "[[a5,gb6] b5 ~ eb6@2, d6@3 ~@2, ~ g6@4, ~@2 bb5@3]/5", D: "[a5,c6,f6]",
})).s("gm_drawbar_organ").gain(0.4).pan(0.2)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@45 A@2 B C D E F G ~@3 H I ~@4 J@2 ~@3 K ~@4 L ~@4 M N ~ O P Q R S T@2 U V@2 W@3 ~@8 X@2 Y R Z@2 Y AA AB AC AD
>`.pickRestart({
  A: "bb2/2", B: "a2", C: "bb2", D: "ab2", E: "g2@2 a2 b2", F: "c3", G: "f2", H: "~@2 a4 bb4", I: "gb4",
  J: "[f5@25 ~@7]/2", K: "d5", L: "~@3 c5", M: "~@4 bb2 ab2 gb2@2", N: "~@6 d4 ~ bb3@7 ~", O: "~@2 g3 f3",
  P: "eb3@3 g3", Q: "f3@11 ~@5", R: "f5", S: "a5", T: "d6/2", U: "db6", V: "f5/2", W: "bb5/3",
  X: "[bb4@12 d5@2 c5 bb4]/2", Y: "bb4", Z: "[bb4@5 d5@2 c5]/2", AA: "bb5 c5", AB: "bb3@15 ~", AC: "d4@7 c4", AD: "bb3",
})).s("gm_distortion_guitar").gain(0.64).pan(0.8)

// other · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~@68
  [~@13 d5 g5 a5]
  [bb5@6 g5@8 a5 bb5]
  [g5@15 ~]
  [~@10 eb5 f5 g5 eb5 f5 g5]
  [a5@15 ~]
  ~@39
>`).s("gm_lead_8_bass_lead").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@16 B A B A B A B A@11 B A C ~@7 B A B A B A B A@11 B A@6 D A@21 E A@5 D A E A@5 D A E A@3
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2", C: "x", D: "x ~@5 x ~ x ~@2 x ~@2 x ~", E: "x ~@2 x!2 ~ x ~",
})).gain(0.72)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@111>").gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A@7 B A@9 B A B ~@8 A@7 B A@9 B A B A@7 B A@9 B A@9 B A@7 B A@7 B A@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@17 A@7 B C A@8 D A E ~@8 A@7 E C A@6 D C F A E C A@6 E C A@3 C A@2 E C D C A@3 C A@2 F C D C A@3 C A@2 D C A@2 E C
  A@2 D C A G
// … 47 more lines

More by Elton John