Strudelify

Daniel

Elton John

KeyB♭ majorTempo135 bpm
0:00/0:00
// Daniel — Elton John
// 135 bpm, 4/4, key Bb 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 129 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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 · epiano1
const epiano1 = note(`<
  ~ A B C D E F G@2 H@6 I@2 J@4 K L M@3 N O P Q@6 I@2 J@4 K L R@4 S T U@2 V@2 W@3 X Y Z AA@3 AB AC@4 AD@2 I@2 AE@4 K L
  R@4 S T AF@2 V@2 W@3 X Y Z AA@3 AB Q@6 I@2 AE@4 K L R@4 K L AG@3 B C D E F AH AI@3
>`.pickRestart({
  A: "c3@7 ~ g3@4 e4@2 g3@2, c5, e4@3 ~",
  B: "~@2 [g4,e5] ~ [f4,d5] ~ [e4,c5]@2 ~@2 b4@4 d4 ~, c3@7 ~ c3@7 ~, ~@10 d4@3 ~@3", // C Dm C
  C: "[d4,b4]@5 ~@5 c4@5 ~, f3@6 a4@9 ~, ~@3 c4@2 ~@3, ~@4 f3@3 ~", // G
  D: "~@2 a4@2 [g4,e5] ~ [f4,d5]@3 ~ [e4,c5]@5 ~, f3@3 ~@5, ~@2 f5 ~@13", // C Dm C
  E: "[e4,c5]@5 ~@6 d4 ~@4, g3@3 b4@4 ~, ~@6 d4@5 ~@5, ~@8 g3@5 ~@3", // C
  F: "g3@2 [b4,g5] ~ [a4,f5] ~ [g4,e5]@4 [f4,d5]@4 g3 ~", // Em Dm C Dm
  G: "[e4@2 g3@2 e4 ~ a3@3 ~ a3@2 c5 ~ g3@3 ~ g3@2 e4 ~ f4@4 ~@2 f4@4, c3@31 ~, c5@5 ~ [f4,c5]@6 ~@2 [e4,c5]@6 ~@2 a3@7 ~@3, ~@13 c5@2 ~]/2", // F5 C
  H: "[e4@3 ~ e4@2 ~@2 [e4,c5] ~ [e4,c5]@2 ~@6 e4@3 ~ [e4,c5]@4 [d4,b4] ~ [c4,a4] ~@9 a3@2 ~@2 a3@2 d4 ~ a3@2 ~@6 f4@2 d3@2 a3@2 d3 ~ a3 ~ g4@4 b3 ~ [d4,b4]@3 ~ [e4,c5]@3 ~@3 g3@2 b4@2 ~@2 a4@2 ~@2 g3@3 ~ g3 ~, [c3,c5]@6 c3@8 c5@7 ~@9 c4@5 ~@3 [d4,f4]@5 ~@3 [d4,f4]@5 ~ d4@4 ~@2 d4@10 ~@10 f4@8 ~@2 g4@5 ~@3, ~@14 e4@4 ~@12 f4@7 ~@13 a3@6 ~@2 f4@5 ~ b3@3 ~@11 d5@4 ~@14, ~@16 c3@14 ~@2 d3@8 d3@7 ~ d3@7 ~@9 g3@16 ~@4 g3@5 ~@7]/6", // C G F G C Dm
  I: "[ab4@4 d4@2 d4@2 ~@2 d4@2 ab4 ~ e4@2 ~@2 e4@2 a4 ~ [e4,a4,c5]@2 a3@2 d4@2 g3@2 d4 ~, e3@6 ab4@5 ~@3 [a4,c5]@6 ~@6 [g4,b4]@5 ~, d4@3 ~@3 b4@7 ~@19, ~@8 e3@7 ~ a3@7 ~@9]/2", // Am G
  J: "[[f4,a4]@4 ~@6 [f4,a4,c5]@3 ~ g4@2 ~@2 g4@2 b4 ~ [d4,g4,b4]@3 ~ [c4,a4] ~ [b3,g4] ~ c4@6 ~@2 c4@2 ~@2 [b3,d4,g4] ~@7 [a3,c4,e4]@2 ~@4 a2 ~@3 a3@2 c4 ~, f3@6 [f4,a4]@4 ~@4 [b4,d5]@6 ~@10 a4@11 ~@5 [b3,d4,g4]@4 ~@4 [c4,e4]@8 ~@2, c4@3 ~ c4@4 f3@7 ~ g3@13 ~@7 e4@4 a2@7 ~ a2@6 a3@5 ~@5]/4", // F G F Em G Am F Bm …
  K: "~@10 a3@2 c4@2 a3 ~, f2, ~@2 a3@6 c3@5 ~@3, ~@4 c4@7 ~@5, ~@3 f4@5",
  L: "~@2 a4@2 [g4,e5] ~ f4@2 ~@2 c5@4 e4 ~, f3@15 ~, ~@2 f5 ~@3 d5 ~@3 e4@3 ~@3", // C
  M: "[d4@4 g4 ~ g4@2 ~@2 g4@2 d4 ~ c4@2 ~@12 g3@2 ~@2 c5@6 e4@2 ~@2 [e4,c5] ~@3 e4@2, b4@6 ~ a4@8 ~@9, g3@6 d4@5 ~@3 f4@4 c4@6 c4@5 ~ c4@5 ~@5 g3@6 ~@2, ~@8 g3@7 ~ g3@4 f4@5 ~ f4@4 ~@2 e4@5 ~@11, ~@22 g3@5 ~@5 c3@15 ~]/3", // C
  N: "~@2 [g4,e5] ~ [f4,d5] ~ [e4,c5]@3 ~ [d4,b4] ~ [c4,a4]@3 ~, c3 ~@3", // C Dm C G F
  O: "[c4,a4]@2 ~ b3@3 d3 b3, g2@13 ~@3, ~@3 g4@5", P: "~@2 [a4,f5] ~@3 [g4,e5]@3 ~ [f4,d5]@4 ~@2, g2@15 ~",
  Q: "[e4@3 ~ e4@2 ~@2 [e4,c5] ~ [e4,c5]@2 ~@6 e4@3 ~ [e4,c5]@3 ~ [d4,b4] ~ [c4,a4] ~@9 a3@2 ~@2 a3@2 d4 ~ a3@2 ~@6 f4@2 d3@2 a3@2 d3 ~ a3 ~ g4@4 b3 ~ [d4,b4]@3 ~ [e4,c5]@3 ~@3 g3@2 b4@2 ~@2 a4@2 ~@2 g3@3 ~ g3 ~, [c3,c5]@6 c3@8 c5@7 ~@9 c4@5 ~@3 [d4,f4]@5 ~@3 [d4,f4]@5 ~ d4@4 ~@2 d4@10 ~@10 f4@8 ~@2 g4@5 ~@3, ~@14 e4@4 ~@12 f4@7 ~@13 a3@6 ~@2 f4@5 ~ b3@3 ~@11 d5@4 ~@14, ~@16 c3@14 ~@2 d3@8 d3@7 ~ d3@7 ~@9 g3@16 ~@4 g3@5 ~@7]/6", // C G F G C Dm
  R: "[d4@4 g4 ~ g4@2 ~@2 g4@2 d4 ~ c4@2 ~@12 g3@2 ~@2 e4@4 c4@2 e4 ~@3 [e4,f4,c5] ~@7 e4@3 ~ e4@4 ~@2 e4@2 a3 ~, b4@6 ~ a4@8 ~@8 c5@3 ~ c5@4 ~, g3@6 d4@5 ~@3 f4@4 c4@6 c4@5 ~ c4@5 ~@23 g3@4 ~@2, ~@8 g3@7 ~ g3@4 f4@5 ~ f4@4 ~@16 e4@4 ~@14, ~@22 g3@5 ~@5 [c3,g4]@7 ~ c3@8 c3@10 ~@6]/4", // Fmaj7 C5
  S: "[a4,c5]@4 f4 ~ c5@2 ~@2 d5@2 ~@2 [f4,a4,c5]@2, f3@7 ~ f3@6 ~@2, f4@3 ~@3 [f4,a4]@6 ~@4", // Am F
  T: "~@2 c4@3 ~ c4@2 ~@4 f4@2 a4 ~, f3@7 ~ f3@6 ~@2, ~ [f4,a4]@4 c4@2 ~", // F
  U: "[[c4,e4,g4,c5] ~@5 [e4,g4,c5]@12 ~@8 c5@4 c4 ~, ~@6 c4@11 ~ c4@11 ~@3, ~@20 e4@11 ~, ~@22 g4@9 ~]/2", // C
  V: "[[f4,a4]@4 c4 ~ [c4,f4]@3 ~ d4@2 ~@6 f4@2 ~@6 c4@2 f4 ~ f3@2, f3@8 f3@3 f4@2 ~@3, c4@3 ~@7 a4 ~@3 a4@12 ~@6, ~@14 c4@5 ~ c4@4 f3@4 ~@4]/2", // F F5
  W: "[[g4,e5]@4 g4 ~ [e4,c5] ~@3 [f4,d5] ~@7 e4@2 ~@2 [c4,e4,g4]@2 c3@2 b3@2 b2@2 a3@2 ~@2 a3@2 c4 ~ a3@2 e3@2 a3@2 e3 ~ [g3,b3,d4] ~, c3@7 c5@3 ~@14, ~@14 e4@4 ~@12 c4@5 ~@3 [c4,e4]@6 ~@4, ~@16 c3@7 ~@9 a2@8 ~@8]/3", // C Dm C G C
  X: "~@2 a3@3 ~@3 a2@2 ~@2 g2@2 a3 ~, a2@6 a3@7 ~@3, ~@2 e4@11 ~@3, ~ c4@3 ~ c4@2 ~",
  Y: "[f3,a3]@4 ~@2 a3@2 f2@2 [f3,c4]@2 f2@3 ~, [f2,c4]@3 ~@5, ~@4 f3@5 ~@7", Z: "[ab3,c4,eb4,ab4]@15 ~",
  AA: "[g3@5 ~@3 c3@2 c4@2 g3 ~ a3@2 ~@2 a3@2 db4 ~ [a3,db4,e4]@2 ~@2 [db4,e4]@4 ~@2 [d4,f4]@4 ~@2 d4@2 d3@2 [d4,f4]@2 a3@2 d3 ~, [c4,e4]@10 ~@4 [db4,e4]@5 ~@7 a3@2 ~@2 a3@5 ~ a3@5 ~ a3 ~@5, ~@6 g3@5 ~@5 a2@7 ~ a2@7 ~ d3@7 ~@9]/3", // A Dbm Dm C Dbm
  AB: "[f3,b3]@4 d3 ~ [a4,f5]@2 ~@2 [g4,e5] ~ [f4,d5]@3 ~, g2@13 ~@3", // Fdim Dm C Dm
  AC: "[e4@3 ~ e4@2 ~@2 [e4,c5] ~ [e4,c5]@2 ~@6 e4@3 ~ [e4,c5]@4 [d4,b4] ~ [c4,a4] ~@7 [d4,f4,a4] ~@3 c4@2 [d4,f4,a4] ~@3 c4@2 [d4,f4,a4]@4 c4@2 [d4,f4,a4]@4 c4@2 [d4,f4,a4] ~@3, [c3,c5]@6 c3@8 c5@7 ~@43, ~@7 e4@2 ~@6 [c4,f4]@3 ~@14, ~@8 c3@7 ~ d3@15 ~]/4", // C G F Dm C F5
  AD: "[g4@4 b3 ~ [d4,b4]@3 ~ [e4,c5]@3 ~@3 g3@2 b4@2 ~@2 a4@2 ~@2 g3@3 ~ g3 ~, g3@16 ~@4 g3@5 ~@7, b3@3 ~@11 f4@8 ~@2 g4@5 ~@3, ~@7 d5@2 ~@7]/2", // G C
  AE: "[[f4,a4]@4 ~@6 [f4,a4,c5]@3 ~ g4@2 ~@2 g4@2 b4 ~ [d4,g4,b4]@3 ~ [c4,a4] ~ [b3,g4] ~ c4@6 ~@2 c4@2 ~@2 [b3,d4,g4] ~@7 [a3,c4,e4]@2 ~@4 a2 ~@3 a3@2 c4 ~, f3@6 [f4,a4]@4 ~@4 [b4,d5]@6 ~@10 a4@11 ~@5 [b3,d4,g4]@4 ~@4 [c4,e4]@8 ~@2, c4@3 ~ c4@4 f3@7 ~ g3@13 ~@7 e4@4 a2@7 ~ a2@6 a3@4 g2@5 ~]/4", // F G F Em G Am F Bm …
  AF: "[[c4,e4,g4,c5] ~@5 [e4,g4,c5]@12 ~@8 c5@5 ~, ~@6 c4@11 ~ c4@13 ~, ~@20 e4@11 ~, ~@22 g4@9 ~]/2", // C
  AG: "[d4@4 g4 ~ g4@2 ~@2 g4@2 d4 ~ c4@2 ~@12 g3@2 ~@2 c3@7 ~ g3@4 e4@2 g3@2, b4@6 ~ a4@8 ~ c5@8, g3@6 d4@5 ~@3 f4@4 c4@6 c4@5 ~ c4@5 ~@13, ~@8 g3@7 ~ g3@4 f4@5 ~ f4@4 ~@2 e4@12 ~@4, ~@22 g3@5 ~@21]/3",
  AH: "[e4,c5]@13 ~ [e4,c5]@2, c3@7 ~", AI: "[[c3,g3]@3 ~, [e4,c5] ~@23]/3",
})).s("gm_epiano1").gain(0.22).pan(0.2)

// bass · fretless bass · "Daniel            2"
const bass = note(`<
  ~ A B C D E F G@2 H I J K L M N O P Q R S T U V W X Y Z AA H I J K L M N O P Q AB AC AD AE AF AG AH AI AJ AK AL AM AN
  AO AP AQ AR AS AT AU AV AW AX AY AL AZ BA BB BC BD BE@2 BF@2 BG@2 BH BI AF BJ BK BL BM AK BN BO AN BP BQ BR BS BT BU
  AU BV BW BX BY X BZ CA CB CC CD CE CF CG CH CI CJ AJ CK CL CM CN CO AJ CK CL CM CP CQ CR CS CT CU X CV@3
>`.pickRestart({
  A: "c2@5 ~ g1@2 c2@6 g1@2", B: "c2@5 ~ g1@2 c2@2 e2@5 ~", C: "f2@6 c2 ~ f1@6 c2 ~", D: "f2@6 c2 ~ f1 ~ a1@5 ~",
  E: "g1@5 ~ g1 ~ g1@4 ~@2 g1 ~", F: "g1@5 ~ g1 ~ g1@2 a1@2 c2@2 a1 ~",
  G: "[c2@5 ~ c2 ~ c2@5 ~ c2@7 ~ c2@2 g1@2 a1@2 c2@2 a1 ~]/2", H: "c2@5 ~ g1 ~ c2@5 ~ g1 ~",
  I: "c2@5 ~ c2 ~@3 b1@2 ~@2 c2 ~", J: "d2@4 ~@2 a1 ~ d2@4 ~@2 d2@2", K: "~@2 e2@2 ~@2 f2@2 ~@2 gb2@2 ~@2 g2 ~",
  L: "g1@5 ~ d2 ~ g2@6 d2 ~", M: "g1@5 ~ g2 ~@3 gb2@2 ~@2 f2 ~", N: "e2@5 ~ b1 ~ e1@5 ~ ab1 ~",
  O: "a1@4 ~@2 a1 ~@3 g1@2 ~@2 g1 ~", P: "f1@5 ~ f1 ~ f1@4 ~@2 gb1 ~", Q: "g1@5 ~ g1 ~ g1@5 ~ ab1 ~",
  R: "a1@5 ~ a1 ~ a1@5 ~ c2 ~", S: "~@2 a1@2 ~@2 g1@2 ~@2 a1@3 ~ g1 ~", T: "f1@5 ~ f1 ~ f1@5 ~ c2 ~",
  U: "f1@5 ~ f1 ~@3 f1@2 ~@2 gb1 ~", V: "g1@5 ~ g1 ~ g1@5 ~ g2 ~", W: "~@2 g1@2 ~@2 g1@6 a1 ~ g1 ~",
  X: "c2@5 ~ c2 ~ g1@5 ~ g1 ~", Y: "a1 ~ c2@2 ~@2 c2@3 ~ b1 ~ a1@2 ~@2", Z: "g1@5 ~ g1 ~ g1@2 d2@2 ~@2 g2@2",
  AA: "~@2 d2@2 ~@2 g1@4 a1 ~ c2@2 a1 ~", AB: "a1@5 ~ a1 ~ a1@2 c2@2 ~@2 d2@2",
  AC: "~@2 e2@2 ~@2 g2@2 ~@2 a2@2 ~@2 g2 ~", AD: "f2@5 ~ d2 ~ c2@5 ~ d2 ~", AE: "f1@5 ~ f1@2 ~@2 e1@2 f1@2 gb1 ~",
  AF: "g1@5 ~ g1 ~ g1@5 ~ d2 ~", AG: "g2@2 d2 ~@3 g1@2 ~@2 g1 ~ a1 ~ g1 ~", AH: "c2@4 ~@2 c2 ~ g1@5 ~ c2@2",
  AI: "~@2 g1 ~ c2@3 ~ d2 ~ e2@5 ~", AJ: "f2@5 ~ f2 ~ c2@5 ~ c2 ~", AK: "f2@2 a1@2 ~@2 bb1@2 ~@2 b1@2 ~@2 b1 ~",
  AL: "c2@4 ~@2 c2 ~ g1@5 ~ g1 ~", AM: "c2@2 g2 ~@3 c2 ~@3 d2 ~ e2 ~@3", AN: "f2@4 ~@2 f2 ~ c2@4 ~@2 c2 ~",
  AO: "f2@2 c2@2 ~@2 d2@2 ~@2 f2@2 f2 ~@3", AP: "c2@5 ~ c2 ~ g1@2 a1@2 c2 ~ c2@2", AQ: "~ g2 ~ c3 ~ b2@2 ~",
  AR: "a2@5 ~ e2 ~ a1@5 ~ e2 ~", AS: "a2@2 e2 ~@3 a1@2 ~@2 a2@2 g2 ~@3", AT: "f2@5 ~ c2 ~ f2@5 ~ g2 ~", AU: "ab2@7 ~",
  AV: "c2@9 ~ g1@2 ~@2 ab1 ~", AW: "a1@4 e2@2 ~@2 a2@2 e2 ~ a1@2 ~@2", AX: "d2@5 ~ a2@2 ~@2 d2@2 ~@2 g1@2",
  AY: "~ d2 ~ g2 ~ a1 b1 ~", AZ: "c2@2 e1@2 ~@2 g1@2 ~@2 a1@2 c2 ~@3", BA: "d2@4 ~@2 d2 ~ a1@4 ~@2 a1 ~",
  BB: "d2 a2 ~ d3 ~ a2 d2 ~", BC: "g2@4 ~@2 g2 ~ d2@4 ~@2 d2 ~", BD: "g1 d2 ~ g2 ~ gb2 f2 ~",
  BE: "[e2@2 ~ d2 b1 ~ e1@3 ~ ab1@3 ~ a1@4 e2@3 ~ a2@3 ~ g2@4 ~@2]/2",
  BF: "[f1@5 ~ f1 ~ a1@2 c2@2 d2 ~ g1@7 ~ g1@7 ~ g1 ~]/2", BG: "[a1@5 ~ a1 ~ a1@5 ~ c2@4 b1@3 ~ a1@3 ~ a1 ~ g1@3 ~]/2",
  BH: "f1@5 ~ f1 ~ a1@2 c2 ~ c2 ~ c2@2", BI: "~@2 c2 ~ d2@3 ~ c2@3 ~ a1@3 ~", BJ: "g2@2 g1@2 ~@2 g1@3 ~ a1 ~ c2@2 a1 ~",
  BK: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", BL: "c2@5 ~ c2 ~ d2 ~ e2@5 ~", BM: "f2@6 c2 ~ f2@5 ~ c2 ~",
  BN: "c2@4 ~@2 c2 ~ g1@4 ~@2 g1 ~", BO: "c2@2 g2@2 ~@2 c2 ~ d2@2 ~@2 e2@2 ~@2",
  BP: "f2@2 c2@2 ~@2 d2@2 ~@2 d2 ~ f2@2 ~@2", BQ: "c2@5 ~ c2 ~ g1@2 a1 ~ c2 ~ c2@2",
  BR: "~@2 g2@2 ~@2 c3@2 ~@2 b2@2 ~@2 b2 ~", BS: "a2@5 ~ e2 ~ a2@5 ~ e2 ~", BT: "a1@2 e2@2 ~@2 a2@2 ~@2 g2@2 ~@2 g2 ~",
  BU: "f2@4 ~@2 c2 ~ f2@5 ~ g2 ~", BV: "c2@5 ~ c2 ~ g1@7 ~", BW: "a1@5 ~ a1 ~ e2@4 a1@3 ~",
  BX: "d2@5 ~ d2 ~ a2@4 d2@3 ~", BY: "g1@5 ~ g1 ~ d2@3 ~ g1@3 ~", BZ: "c2@5 ~ g1 ~ c2@4 db2@3 ~",
  CA: "d2@5 ~ d2 ~ a1@5 ~ a1 ~", CB: "d2@6 a1 ~ d2@2 e2 ~ f2@2 g2 ~", CC: "g1@5 ~ g1 ~ d2@4 ~@2 d2 ~",
  CD: "g1@6 d2 ~ g2 ~ f2@5 ~", CE: "e2@6 e1@2 ab1@7 ~", CF: "a1@6 e2 ~ a2 ~ g2@4 ~@2", CG: "f2@6 f2 ~ c2@6 d2 ~",
  CH: "g2@5 ~ g2 ~ d2@5 ~ e2 ~", CI: "a1@5 ~ a1 ~ e2@5 ~ e2 ~", CJ: "a2@6 e2 ~ a2 ~ g2@5 ~",
  CK: "f2@6 c2 ~ f2@2 e2 ~ f2@2 gb2 ~", CL: "g2@5 ~ g2 ~ d2@5 ~ d2 ~", CM: "g1@5 ~ g1 ~ g2@2 g1 ~ a1@2 g1 ~",
  CN: "c2@4 ~@2 c2 ~ g1@7 ~", CO: "c2@6 g1 ~ c2@2 d2@2 e2@3 ~", CP: "c2@5 ~ c2 ~ g1@4 ~@2 g1 ~",
  CQ: "c2@5 ~ g1 ~ c2 ~ e1@5 ~", CR: "f1@5 ~ f1 ~ c2@5 ~ c2 ~", CS: "f2@5 ~ f2 ~ c2 ~ a1@5 ~",
  CT: "g1@5 ~ g1 ~ d2@5 ~ d2 ~", CU: "g2@6 d2 ~ g2 ~ g1@6", CV: "[c2@17 ~@7]/3",
})).s("gm_fretless_bass").gain(0.45)

// chords · acoustic guitar steel · "Daniel            4"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C D E@2 F@2 G@2 H@2 I@2 J K L@2 M@2 N O P@2 Q@2 F@2 G@2 H@2 I@2 J K L@2 R@2 N O P@2 S@2 T@2 U V W@2 X Y Z AA
  AB@2 AC AD F@2 G@2 H@2 I@2 J K AE@2 M@2 N O P@2 S@2 T@2 U V W@2 X Y Z AA AB@2 AC AD F@2 G@2 H@2 I@2 J K AE@2 M@2 N O
  P@2 M@2 N O A@2 B@2 C D AF@4
>`.pickRestart({
  A: "[~@10 c4@2 ~@16 g3@3 ~, c3@3 d4@2 ~@2 e4@3 c4@2 c3@2 ~@2, ~@2 g3@9 ~ g3@5 ~ g3@8 c4@5 ~, ~@4 c4@4 c3@7 ~ c3@6 e4@9 ~]/2",
  B: "[~@14 f4@2 ~@6 a3@2 f3@2 a3@2 gb3@2 a3 ~, f3@6 f4@6 a3@8 c4@11 ~, ~ a3@4 c4@4 f4@7, ~@4 c4@4 f3@7 ~ f3@7 ~@9]/2",
  C: "~@5 d4 ~ d4, g3@3 g4@5, ~ b3@3 g3@4, ~@4 d4@5 ~@3 b3@4",
  D: "~@2 b3@2 ~@6 d4@2 b3@2 d4 ~, f3@6 g4@9 ~, ~@2 d4@2 f3@3 ~",
  E: "[~@14 g3@2 ~@6 e4@4 d4@2 c4@2 g3 ~, e3@4 c4@4 g3@5 ~@5 g3@6 ~@8, ~ g3@2 f3@3 d3@2 e3@7 ~, ~@5 c4@4 ~ c4@2 ~@4]/2",
  F: "[~ g3 ~@11 g3 ~ g3, c3@6 g3@5 ~ g3@4 c3@6 e4@10, ~@4 c4@6 e4@8 g3@6 c3@7 ~, ~@8 c3@6 c4@5 ~ c4@7 ~ c4@4]/2",
  G: "[~@12 d4@2 f4@2 ~@4 d4@3 ~@3 a3@2 d4@2 a3@2, d3@6 f4@6 ~@2 d4 ~@3 f4@10 ~@4, ~@2 a3@6 d3@7 ~ d3@7 ~ d3@7 ~, ~@4 d4@6 a3@11 ~@11]/2",
  H: "[~ f3 ~ f3 ~@4 b3 f3 ~ f3 g2 f3 f2 f3, g2@7 ~ g2@7 ~ g2@7 ~@9, ~@4 b3@10 d4@7 ~@11, ~@10 f3@7 ~@3 b3@12]/2",
  I: "[~@4 ab3@2 ~@6 d4@2 ~@10 a2@2 ~@2 g2@3 ~, e2@6 b3@6 ~@2 c4@5 ~ a3@5 ~@7, ~@2 e3@6 ab2@7 ~ a2@6 c4@4 b3@6, ~@10 e3@7 ~ e3@9 ~@5]/2",
  J: "~ c3 f3 ~@2 a3 f3 a3, f2@6 c4@7 ~@3, ~@8 f2@7 ~", K: "~ g3 b3 ~@3 b3 g3, g2@3 g3@2 d4@3, ~@8 g2@7 ~",
  L: "[~@6 c4@2 ~@2 b3 ~@7 c4@2 ~@4 a2@3 ~@3 e3@2, a2@7 ~ a2@7 ~ a2@7 ~@9, ~@2 e3@7 ~@11 e3@8 ~@4, ~@2 a3@2 ~@3 b3@2 ~@2 a3@5]/2",
  M: "[~@5 a3 f3 ~@2 c4 ~@5 f3, f2@6 c4@4 ~@4 f4@7 ~ f3@6 a3@4, ~@2 f3@8 ~@10 a3@5 ~ c4@6, ~@4 a3@4 f2@7 ~ f2@7 ~ f2@7 ~]/2",
  N: "~ g3 ~@5 b3, g2@3 g3@2 d4@2 ~, ~@2 b3@2 g2@3 ~, ~@3 g3",
  O: "~ f3 ~@3 f3 ~ f3, g2@3 a3@2 ~ a3@2, ~@4 c4@7 ~@5, ~@4 g2@3 ~",
  P: "[~@2 e3@2 ~@6 g3@2 ~@14 e3@2 g3@2 e3 ~, c3@6 e3@5 ~ e3@5 ~ e3@6 c3@7 ~, ~@4 c4@6 ~@4 c4@5 ~ g3@6 ~@6, ~@8 c3@7 ~ c3@6 c4@5 ~@5]/2",
  Q: "[~@2 d3@2 ~@10 g3@2 ~@10 d3@2 f3@2 d3 ~, g2@6 d3@5 ~ d3@5 ~ d3@6 g2@7 ~, ~@2 g3@3 b3@4 ~ f3@3 ~@3, ~@8 g2@7 ~ g2@6 b3@8 ~@2]/2",
  R: "[~@5 a3 f3 ~@8 f3, f2@6 c4@4 ~@4 f4@6 a3@5 ~ c4@6, ~ f3@4 ~@4 c4@2 f3@3 a3@2, ~@4 a3@4 f2@7 ~ f2@7 ~ f2@7 ~]/2",
  S: "[~ a3 ~@11 c4 ~ c4, f3@6 a3@4 f4@6 f3@7 ~ f3@6 ~@2, ~@4 c4@7 ~ a3@7 ~ a3@6 ~@2 a3@4, ~@8 f3@6 c4@7 ~ f4@9 ~]/2",
  T: "[~@10 c4@2 ~@14 c4@2 g3@2 c4 ~, c3@14 c4@4 ~@2 g3@7 ~@5, ~@2 e3@13 ~ c3@12 ~@4, ~@4 g3@7 ~ g3@6 e3@11 ~@3, ~@6 e4@9 ~@7 e4@8 ~@2]/2",
  U: "~@3 f4@2 c4 ~ c4, f3@7 ~, ~@2 a3@9 ~ a3@4, ~@2 c4@3 ~@3",
  V: "~@2 c4@2 ~@6 c4@2 a3 ~ c4@2, f3@7 ~, ~@2 a3@3 ~@3, ~@3 f4@3 ~@2",
  W: "[~@5 c4 ~@6 c3 g3 b2 g3, c3@14 ~@2 c3@7 ~@9, ~@2 e3@12 c4@5 ~ g3@6 ~@6, ~@4 g3@7 ~ g3@6 e3@5 ~@9, ~@6 e4@13 ~@3 e4@9 ~]/2",
  X: "~@5 e3 ~ e3, a2@15 ~, ~@2 e3@7 ~@7, ~@2 a3@3 ~ a3@2, ~@3 c4@4 ~",
  Y: "~@5 a3 ~ a3, a2@7 ~, ~@2 e3@9 ~ e3@4, ~@4 a3@5 ~@7, ~@3 c4@4 ~",
  Z: "~@4 a3@2 ~@4 a3@2 f3@2 f2 ~, f2@6 c4@7 ~@3, ~ f3@4 ~@3, ~@8 f2@5 ~@3", AA: "[eb3,ab3,c4]@3 ~",
  AB: "[~@10 g3@3 ~@13 a3@2 db4@2 a3@2, e4@4 g3@4 c3@7 ~ a2@6 e4@5 ~@5, ~@2 c3@4 c4@5 ~@3 db4@4 a3@6 a2@7 ~, ~@20 db4@7 ~@5]/2",
  AC: "~ a3 ~@5 d4, d3@3 a3@2 f4@2 ~, ~@2 d4@2 d3@3 ~, ~@3 a3",
  AD: "~@10 f3@2 b3@2 f3 ~, g2@6 d4@5 ~@5, ~@2 f3@6 g2@7 ~, ~@4 b3@5 ~@7",
  AE: "[~@6 c4@2 ~@2 b3 ~@7 c4@2 ~@4 a2@3 ~@3 e3@2, a2@7 ~ a2@7 ~ a2@7 ~@5 g2@4, ~@2 e3@7 ~@11 e3@8 ~@4, ~@2 a3@2 ~@3 b3@2 ~@2 a3@5]/2",
  AF: "[~@14 g3@2 ~@2 c4 ~@45, e3@4 c4@4 g3@5 ~@4 g3@32 ~@15, ~ g3@2 f3@3 d3@2 [c3,e3]@17 ~@7, ~@5 c4@4 ~@23]/4", // C
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.8)

// other · flute · "Daniel            5"
const flute = note(`<
  ~ A@2 B C D E F@2 ~@45 G H@2 I J K@2 L M N@2 O@2 P@2 Q@2 R S T@2 U@2 V W F@2 ~@7 G H@2 I J K@2 L M ~@22 X Y Z@2 AA@2
  AB@2 ~@2
>`.pickRestart({
  A: "[c5@9 e5 d5 c5@2 b4@2 a4]/2", B: "b4@3 a4@5", C: "~@2 f5@2 e5@2 d5@4 c5@5 ~", D: "c5@3 b4@5",
  E: "~ g5 f5 e5@2 d5@3", F: "[c5@7 ~]/2", G: "~@2 e5 d5", H: "[c5@23 ~ c5@4 b4@4]/2", I: "a4", J: "ab4@15 ~",
  K: "[~@8 g4@8 a4@15 ~, ~@8 e5@23 ~]/2", L: "d5@3 c5@2 d5 c5@2",
  M: "b4@5 ~ [f5,a5]@4 [e5,g5]@2 [d5,f5]@3 ~, ~@6 e5 ~@9", N: "[e5@3 c5@8 g4 c5 e5@3]/2", O: "[f5@3 d5@6 ~@7]/2",
  P: "[f5@3 d5@8 g4 b4 d5@3]/2", Q: "[e5 f5 e5 d5@2 e5 d5 c5@4 c5!2 b4@3]/2", R: "a4 a5", S: "g5@5 e5 g5 e5",
  T: "[c5@6 e5 d5]/2", U: "[c5@7 f5@2 e5@2 c5@2 a4@3]/2", V: "g4", W: "f5@3 e5@3 d5@2", X: "c5",
  Y: "~ e5 d5 c5@2 b4@2 a4", Z: "[b4@6 a4@12 f5@2 e5@2 d5@4 c5@5 ~]/2", AA: "[c5@3 b4@6 g5 f5 e5@2 d5@3]/2",
  AB: "[c5@9 ~@7]/2",
})).s("gm_flute").gain(0.22)

// other · string ensemble 1 · "Daniel            6"
const string_ensemble_1 = note("<~@63 A@2 B@2 C@2 D@2 E F G@2 H@2 I J K@2 ~@48>".pickRestart({
  A: "[e5@3 c5@8 g4 c5 e5@3]/2", B: "[f5@3 d5@6 a4 d5 e5 f5 e5 d5@2]/2", C: "[f5@3 d5@8 g4 b4 d5@3]/2",
  D: "[e5 f5 e5 d5@2 e5 d5 c5@4 c5!2 b4@3]/2", E: "a4 a5", F: "g5@5 e5 g5 e5", G: "[c5@6 e5 d5]/2",
  H: "[c5@7 f5@2 e5@2 c5@2 a4@3]/2", I: "g4", J: "f5@3 e5@3 d5@2", K: "[c5@7 ~]/2",
})).s("gm_string_ensemble_1").gain(0.24)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A B A C D E A@29 B A@8 D E A@11 ~ A@10 D F A@7 G D H A@7 C A@3 I A@20 D E A@11 ~@3
>`.pickRestart({
  A: "~ x", B: "~@3 x!2 ~@3", C: "~@3 x!4 ~", D: "~@4 x ~@2 x", E: "~@3 x!3 ~@2", F: "~ x!4 ~@3", G: "x ~@2 x ~@4",
  H: "~ x!2 ~ x ~@3", I: "x",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@46 A ~@11 B ~@19 A ~@13 A ~@21 A ~@14>".pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C A ~ A D B A@4 D A D B A@4 D A D A D A D B A@4 D A D B A@4 D A D A C B A@4 D A D B A@2 ~ A D A D B A@4 D A E
  B A@4 D A ~ A F B A@4 D A C B A@2 ~ B D A D B A@4 D A D B A@4 D A D A C A D A D B A@4 D A ~@3
>`.pickRestart({
  A: "x!4", B: "~ x!3", C: "x!2 ~@2", D: "x ~ x ~ x!3 ~", E: "~@3 x", F: "x",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@78 [~@5 x ~@2] ~@13 [~@5 x ~@2] ~@36>").gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~@3 B ~@63 C ~@7 D ~ A ~@7 E ~@40>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x", C: "x ~@4 x ~@2", D: "~ x ~@6", E: "~@7 x",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@58 x ~@33 x!2 ~@35>").gain(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~ A ~ A ~@5 A ~@7 A ~@11 A ~@7 A ~@9 A ~@7 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A ~@7 A ~@13 A ~@6 A ~@2
>`.pickRestart({
  A: "x",
// … 9 more lines

More by Elton John