Strudelify

Don't Go Breaking My Heart

Elton John

KeyF majorTempo134 bpm
0:00/0:00
// Don't Go Breaking My Heart — Elton John
// 134 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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 · slap bass 2 · "Bass"
const bass = note(`<
  ~ A@7 B C D@2 E F G@2 H B C D@2 E F I@2 J K L M N O P Q K R M O S T U V W X@3 Y@3 Z@4 B C D@2 E F G@2 H B C D@2 E F
  I@2 J K L M N O P Q K R M O S T U V W X@3 Y@3 AA@4 B C D@2 E F I@2 J K@2 M N O P O P T U V W X@3 Y@3 X@3 Y@3 X@3 Y@3
  X@3 Y@3 ~
>`.pickRestart({
  A: "[f2@10 b1@2 c2@2 d2@12 c2@2 b1@2 bb1@8 b1@2 c2@2 a1@2 g1@2 f1@12 f1@4 f1@11 ~ f1@2 ~@2 f1@11 ~ f1 ~@3 f1@12 f1@4 ~@2]/7",
  B: "f1@4 ~@2 f1 ~ f1@5 ~@3", C: "f1@4 ~@2 f1 ~ f1@4 ~@4", D: "[f1@5 ~@3 f1@2 g1@2 a1@2 bb1@5 ~@3 bb1 ~ bb1@5 ~@3]/2",
  E: "f1@5 ~ f1 ~ a1@4 ~@2 a1@2", F: "bb1@4 ~@2 bb1 ~ b1@4 ~@2 b1 ~",
  G: "[c2@4 ~@2 c2@3 ~ c2@2 ~@2 bb1@8 ~@4 a1@2 ~@2 bb1@2]/2", H: "~ a1 ~ bb1 ~ c2@2 ~",
  I: "[c2@4 ~@2 c2@3 ~ c2@2 ~@2 bb1@8 ~@4 bb1@2 ~@2 bb1@2]/2", J: "~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1 ~",
  K: "a1@5 ~@3 a1@5 ~@3", L: "a1@6 ~@2 a1@5 ~@3", M: "c2 ~ c2 ~", N: "c2@2 ~@2 c2@3 ~", O: "bb1@5 ~ f1@8 ~@2",
  P: "c2@3 g1@4 ~", Q: "a1 ~ a1 ~", R: "c2@5 ~@3 c2@4 ~@4", S: "c2@3 g1@5", T: "ab1@5 ~@3 ab1@7 ~", U: "e1@3 ~ e1@3 ~",
  V: "bb1@4 ~ a1 ~ bb1", W: "~ a1 ~ bb1 ~ c2 d2 e2",
  X: "[f2@6 ~@2 f2@2 c2@2 db2@2 d2@5 ~@5 d2@2 c2@2 b1@2 bb1@6 ~@2 b1@2 c2@2 a1@2 g1@2 f1@2]/3",
  Y: "[~@2 f1 ~ f2@3 ~ f2@2 c2@2 db2@2 d2@6 ~@4 d2@2 c2@2 b1@2 bb1@5 ~@3 b1@2 c2@2 a1@2 g1@2 ~@2, ~@4 e2 ~@43]/3",
  Z: "[~@10 f1 ~@3 f1@11 ~ f1@2 ~@2 f1@11 ~ f1 ~@3 f1@12 f1@6]/4",
  AA: "[~@10 f1 ~@3 f1@11 ~ f1@2 ~@2 f1@11 ~ f1 ~@3 f1@12 f1@5 ~]/4",
})).s("gm_slap_bass_2").gain(0.4)

// chords · piano
const piano = note(`<
  ~@7 A B@5 C D@2 E F@2 G@2 H I J@3 K L@3 M N O@2 P@2 Q R S T U V W@6 ~@3 A B@5 C D@2 E X@2 Y@2 H Z AA@8 AB O@2 P@2 Q R
  S T U V AC@6 ~@3 A B@5 C AD@7 AE AF AE AF S T AG AH AI@6 AJ@6 AK@6 AJ@6 ~
>`.pickRestart({
  A: "~@9 bb3 f4 ~@2 f4 ~@2",
  B: "[[f4,a4,c5]@7 ~@3 f4 ~ [f4,a4,c5] ~ [d4,f4,bb4]@10 ~@2 d4 ~ [d4,f4,bb4] ~ [c4,f4]@3 ~ c4 ~@4 c4 ~@2 c4 ~ [c4,f4,a4] ~ [d4,f4,bb4]@12 bb3 ~ [d4,f4,bb4] ~ [f4,a4]@8 c4 ~@3 db4@3 ~ db4 ~, ~@15 a4@6 ~@2 bb3@5 ~@3 c4@3 ~@2 a3@2 ~@2, ~@37 [e4,a4]@3]/5", // F Bb F5 F Bb F A5
  C: "~@2 [d4,f4,bb4]@3 ~ d4@2 b3@2 [d4,g4,b4]@5 ~, bb3@3 ~@5", // Bb G
  D: "[c4@3 ~ f4@4 e4@2 f4 ~ a4 ~ [f3,bb3,d4]@9 ~@3 [f3,a3,c4]@2 ~@2 [f3,bb3,d4]@2]/2", // Bb F Bb
  E: "~@2 [f3,a3]@2 ~@2 [f3,bb3] ~@3 [g3,c4,e4]@4 ~@2, ~@2 c4 ~@3 d4@2 ~@8", // F Bb5 C
  F: "[c5 f5 a5 ~@5 [bb4,d5]@2 ~@4 [bb4,d5,f5]@6 ~@6 c5 ~ [c5,e5,g5] ~@3]/2", // Bb C
  G: "[[c5,f5,a5]@3 ~@5 f5 ~ [bb4,d5] ~@3 f4@4 ~@4 [f4,a4] ~@5 [c4,f4] ~@3, ~@7 bb4 ~@8]/2", // F Bb F F5
  H: "[c4,f4,a4]@3 ~@5 [a3,db4,e4]@4 ~@4", I: "[bb3,d4,f4]@5 ~@3 [g3,b3,d4]@8",
  J: "[~@4 f4 ~ f4@2 e4@2 f4 ~ a4 ~ [f3,bb3,d4]@24 ~@10]/3", K: "[e4,a4,c5]", L: "[~@14 [g4,c5,eb5,g5]@23 ~@11]/3",
  M: "[f4,bb4,d5]@4 f4 ~ [a4,c5]@4 f4 ~@3 f4 ~, ~@6 f4@3 ~@7", N: "[g4,c5]@4 e4 ~ [d4,g4,b4]@8 ~@2, e4@3 ~@13, b4 ~@15",
  O: "[[e4,a4]@25 ~@7, c5@23 ~@9]/2", P: "[[g4,c5,eb5,g5]@23 ~@9]/2",
  Q: "[f4,bb4,d5]@2 ~ [f4,a4]@2 f4 ~@2, ~@3 c5@3 ~@2", R: "[e4,g4,c5]@5 ~ [d4,g4,b4]@6 ~@4", S: "[eb4,ab4,c5]@13 ~@3",
  T: "[e4,g4,c5]@3 ~", U: "[f4,bb4,d5]@9 ~ [f4,a4,c5]@2 ~@2 [f4,bb4,d5]@2",
  V: "~@2 [f4,a4,c5]@2 ~@2 [bb4,d5]@2 ~@2 [g4,c5,e5]@5 ~, ~@6 f4 ~@9", // F Bb C
  W: "[[a3,c4,f4]@8 ~@2 a3 ~ f4 ~ [a3,d4,f4]@11 ~ a3 ~ [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@2 [a3,c4,f4]@10 ~@2 a3 ~ [c4,f4] ~ [a3,d4,f4]@11 ~@3 [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@4]/6", // F Dm Bb C F F5 Dm Bb …
  X: "[f5 c5 f4 ~@5 [c5,f5,a5]@2 ~@4 [bb4,d5,f5]@6 ~@6 bb4 ~ [bb4,d5,f5] ~@3]/2", // F Bb
  Y: "[[c5,f5,a5]@3 ~@5 c5 ~ [c5,f5,a5] ~@3 [bb4,d5,f5]@4 ~@4 [f4,bb4,d5] ~@5 [f4,bb4] ~@3]/2", // F Bb Bb5
  Z: "[bb3,d4,f4]@5 ~@3 [g3,b3,d4]@4 ~@4", // Bb G
  AA: "[~@4 f4 ~ f4@2 e4@2 f4 ~ a4 ~@35 [e4,a4,c5]@16 ~@14 [g4,c5,eb5,g5]@23 ~@11 [f4,bb4,d5]@4 f4 ~ [a4,c5]@4 f4 ~@3 f4 ~, ~@7 d4@57, ~@118 f4@3 ~@7]/8", // Am Cm Bb Am
  AB: "[g4,c5]@4 e4 ~ [d4,g4,b4]@8 ~@2, e4@3 ~@13", // C5 G
  AC: "[[a3,c4,f4]@8 ~@2 a3 ~ f4 ~ [a3,d4,f4]@11 ~@3 [a3,d4,f4] ~ [d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@2 [a3,c4,f4]@10 ~@2 a3 ~ [c4,f4] ~ [a3,d4,f4]@11 ~@3 [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@4]/6", // F Dm C F F5 Dm Bb C
  AD: "[c4@3 ~ f4@4 e4@2 f4 ~ a4 ~ [f3,bb3,d4]@9 ~@25 [e4,a4,c5]@16 ~@14 [g4,c5,eb5,g5]@23 ~@11, ~@11 f4@101, ~@48 b4 ~@63]/7", // Bb Am Cm
  AE: "[f4,bb4,d5]@4 f4 ~ [a4,c5]@4 f4 ~@3 f4 ~, db5 ~@5 f4@3 ~@7", // Bb Am
  AF: "[g4,c5]@4 e4 ~ [d4,g4,b4]@8 ~@2, e4@3 ~@13, [bb4,b4] ~@15", // C5 G Bmaj7
  AG: "[f4,bb4,d5]@9 ~ [f4,a4,c5]@2 ~@2 [f4,bb4,d5]@2, db5 ~@13 db5 ~", // Bb F Bb
  AH: "~@2 [f4,a4,c5]@2 ~@2 [bb4,d5]@2 ~@2 [g4,c5,e5]@5 ~, ~@6 [f4,db5] ~@9", // F Bb C Db
  AI: "[[a3,c4,f4]@8 ~@2 a3 ~ f4 ~ [a3,d4,f4]@11 ~ a3 ~ [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@2 [a3,c4,f4]@10 ~@2 a3 ~ [c4,f4] ~ [a3,d4,f4]@11 ~@3 [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@4, ~@30 e4 ~@65]/6", // F Dm Bb C F F5 Dm Bb …
  AJ: "[~@10 a3 ~ f4 ~ [a3,d4,f4]@11 ~ a3 ~ [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@2 [a3,c4,f4]@10 ~@2 a3 ~ [c4,f4] ~ [a3,d4,f4]@11 ~@3 [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@4, ~@30 e4 ~@65]/6", // Dm Bb C F F5 Dm Bb C
  AK: "[~@10 a3 ~ f4 ~ [a3,d4,f4]@11 ~ a3 ~ [a3,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@2 [a3,c4,f4]@10 ~@2 a3 ~ [c4,f4] ~ [a3,d4,f4]@11 ~@3 [a3,d4,f4] ~ [bb3,d4,f4]@8 ~@2 [g3,c4,e4]@4 ~@4, ~@28 d4@2 e4 ~@65]/6", // Dm Bb C F F5 Dm Bb C
})).s("gm_piano").gain(0.35)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@7 A B C B D E F G@2 ~ B C B D E F G@2 ~ H@2 I@2 J K H@2 I@2 L M N O P@2 B Q R B Q S@2 ~@2 T B C B D E F G@2 ~ B C B
  D E F G@2 ~ H@2 I@2 J K H@2 I@2 L M N O P@2 B Q R B Q S@2 ~@2 U B C B D E F G@2 ~ H@2 I@2 J K J K N O P@2 B Q R B Q V
  B Q R B Q V B Q R B Q V B Q R B Q V ~
>`.pickRestart({
  A: "~@4 a4 ~ a4!2 ~ a4!2 ~ [g4,a4] ~ f4 ~", B: "~@4 [a4,c5,f5] ~@7 [a4,c5,f5] ~@3",
  C: "~@4 [bb4,d5,f5] ~@3 bb4 [d5,f5] ~@2 [bb4,d5,f5] ~@3", D: "~@4 [bb4,d5,f5] ~@4 [d5,f5] ~@2 [bb4,d5,f5] ~@3",
  E: "~@4 [a4,c5,f5] ~@7 [e4,a4,db5] ~@3", F: "~@4 [f4,bb4,d5] ~@7 [g4,b4,d5] ~@3",
  G: "[~@4 f5 ~ f5 ~ e5@2 f5 ~ a5 ~ [f4,bb4,d5]@17 ~]/2", H: "~@4 [e4,a4,c5] ~@7 [e4,a4,c5] ~@3",
  I: "~@4 [g4,c5,eb5] ~@7 [g4,c5,eb5] ~@3", J: "~@4 [f4,bb4,d5] ~@7 [f4,a4,c5] ~@3",
  K: "~@4 [e4,g4,c5] ~@7 [d4,g4,b4] ~@3", L: "~@2 [d4,f4,bb4] ~@2 [d4,f4,bb4] ~@6 [c4,f4,a4] ~@3",
  M: "~@4 [c4,f4,a4] ~@7 [d4,g4,b4] ~@3", N: "~@4 [eb4,ab4,c5] ~@7 [eb4,ab4,c5] ~@3",
  O: "~@4 [e4,g4,c5] ~@7 [e4,g4,bb4,c5] ~@3", P: "[[f4,bb4,d5]@7 ~]/2", Q: "~@4 [f4,a4,d5] ~@7 [f4,a4,d5] ~@3",
  R: "~@4 [f4,bb4,d5] ~@7 [e4,g4,c5] ~@3", S: "[~@4 [f4,bb4,d5] ~@7 [g4,c5,e5] ~ [a4,c5,f5]@15 ~@3]/2",
  T: "~@4 a4 ~ a4!2 ~ a4!2 ~ a4 g4 f4 ~", U: "~@4 a4 ~@2 a4 ~@2 a4 ~ a4 g4 ~@2",
  V: "~@4 [f4,bb4,d5] ~@7 [g4,c5,e5] ~@3", // Bb C
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.3)

// chords · electric guitar clean · "Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@11 A ~@8 A ~@10 B ~@4 C D ~ E ~@3 F G ~@2 H ~@7 A ~@8 A ~@10 B ~@4 C D ~ E ~@3 F G ~@2 H ~@3 I ~@3 A ~@10 B ~ B ~ E
  ~@3 F G ~@2 H ~ F G ~@2 H ~ F G ~@2 J@4 ~@2 H ~
>`.pickRestart({
  A: "~@8 bb4 ~@7", B: "~@4 bb4 ~@11", C: "~@4 d4 ~@11", D: "~@4 ab4 ~@11", E: "~@5 bb4 ~@10", F: "~@12 c5 ~@3",
  G: "~@4 db5 ~@7 bb4 ~@3", H: "~@12 d5 ~@3", I: "~@6 a4 ~@2 a4 ~@4 f4 ~",
  J: "[~@12 d5 ~@31 c5 ~@7 db5 ~@7 bb4 ~@3, ~@13 g4@47 ~@4]/4",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.3)

// chords · synth strings 1 · "Fl„che"
const synth_strings_1 = note("<~ A@7 ~@40 B@4 ~@40 B@4 ~@46>".pickRestart({
  A: "[[f3,c4,f4,a4]@11 ~ [c3,c4,e4,g4]@2 d3@4 ~@2 d3@2 ~@2 d3@2 c4@2 [b2,b3] ~ [bb2,bb3]@6 ~@2 [b2,b3]@2 c4@2 a3@2 g3@2 f2@4 ~@2 f2@3 ~ f2@2 ~@2 [f2,c4,e4,g4] ~ f2@3 ~@3 f2@2 ~@2 f2@3 ~ [f2,f4,bb4,d5] ~ f2@2 ~@4 f2@2 ~@2 f2@2 ~@2 [f2,c4,e4,g4] ~ f2@2 ~@4 f2@2 ~@2 f2@2 ~@2 f2 ~@3, ~@14 [a3,d4,f4]@12 c3 ~@13 c3 ~ a2 ~ g2 ~ f3@2 ~@14 [bb3,d4,f4]@9 ~@7 [f4,a4,c5]@9 ~@7 [bb3,d4,f4]@13 ~@5]/7", // F C B Bb B C Bb C …
  B: "[~@4 f2@3 ~ f2@2 ~@2 [f2,c4,e4,g4] ~ f2@3 ~@3 f2@2 ~@2 f2@3 ~ [f2,f4,bb4,d5] ~ f2@3 ~@3 f2@2 ~@2 f2@2 ~@2 [f2,c4,e4,g4] ~ f2@2 ~@4 f2@2 ~@2 f2@2 ~@2 f2 ~@3, ~@14 [bb3,d4,f4]@9 ~@7 [f4,a4,c5]@9 ~@7 [bb3,d4,f4]@13 ~@5]/4", // C Bb C Bb F Bb
})).s("gm_synth_strings_1").gain(0.1).pan(0.6)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@2 A@6 ~@16 B C D@3 E F G H@2 I@2 J K@3 L M N O@5 P@8 Q R S@2 T U@2 V@2 W X Y@2 C D@3 E F G H@2 I@2 J K@3 L M N O@5
  Z@4 AA@2 AB@2 AC AD AE@2 C AF@3 E F G F G AG@2 L M AH@7 AI@12 AJ@6
>`.pickRestart({
  A: "[~@10 c3@2 ~ bb2@8 ~ b2@2 ~ a2@2 g2@2 ~@7 f3@4 ~@2 f3 ~ [f3,c4] ~ f3@3 ~ f3 ~ f3@3 ~@4 f3 [f4,bb4]@2 f3@2 ~@4 f3@4 ~@2 f3 ~ [f3,f4,a4,c5] ~ f3@2 ~@2 f3 ~ f3@4 ~@2 f3 ~ f3 ~ f3 ~, ~@12 b2@2 ~@10 c3@2 ~@3 f2@14 ~ [e4,g4]@2 ~@16 [c4,f4,a4]@11 ~@5 [f4,bb4,d5]@17 ~, ~@45 [bb3,d4,f4]@13 ~@2 [f3,d4] ~@35]/6", // F5 Bb5 F Em F Bb Dm
  B: "~@5 [a3,c4] ~ [bb3,d4]", C: "~ [a3,c4] [bb3,d4] [c4,e4] [d4,f4] [e4,g4] [f4,a4] [g4,bb4]",
  D: "[[a3,c4,a4,c5]@26 ~@4 [g4,c5,eb5]@17 f5]/3", E: "g5@2 f5@2 eb5@2 f5@4 eb5@5 ~",
  F: "[f4,bb4,d5]@6 [f4,a4,c5]@4 a5@2 f5@3 ~", G: "[e4,g4,c5]@6 [d4,g4,b4]@9 ~",
  H: "[a5@14 b5@2 c6@4 b5@2 a5@9 ~, [a4,c5,e5]@31 ~]/2", // Am
  I: "[~ [eb5,eb6] [d5,d6] [c5,c6]@2 [bb4,bb5] [a4,a5] [g4,g5]@2 [f4,f5]@6 ~]/2", J: "~ [d3,d4] [eb3,eb4] [f3,f4]@5",
  K: "[~@10 d4@2 b3@3 [eb3,ab3]@16 ~ [e3,g3]@16, ~@15 c4@32 ~]/3", L: "[f3,bb3,d4]@9 ~ [f3,a3,c4]@2 ~@2 [f3,bb3,d4]@2",
  M: "~@2 [f3,a3,c4]@2 ~@2 [f3,bb3,d4]@2 ~ [g3,c4,e4]@5 ~@2", N: "~@7 a5",
  O: "[~@2 g5@2 f5@2 f5@4 e5@4 [f4,bb4,d5]@16 [a4,c5,f5]@10 ~@2 [g3,c4,e4]@3 ~ [a3,d4,f4]@12 [g3,c4,e4]@4 [f3,bb3,d4]@8 [b2,b3]@2 [c3,c4]@2 [a2,a3]@2 g3@2 [f2,f3]@2, ~@76 g2 ~@3]/5", // Bb F C Dm C Bb B C …
  P: "[~@4 f3@4 ~@2 f3 ~ [f3,c4] ~ f3@3 ~ f3 ~ f3@3 ~@4 f3 [f4,bb4]@2 f3@2 ~@4 f3@4 ~@2 f3 ~ [f3,f4,a4,c5] ~ f3@2 ~@2 f3 ~ f3@4 ~@2 f3 ~ f3 ~ f3 [f4,a4,c5]@13 ~@2 [f4,bb4,d5]@15 ~ [f4,a4,c5]@15 ~ [d4,f4,bb4]@15 ~ [c4,f4,a4]@2, ~@12 [e4,g4]@2 ~@16 [c4,f4,a4]@11 ~@5 [f4,bb4,d5]@17 ~@65, ~@13 [bb3,d4,f4]@13 ~@2 [f3,d4] ~@99]/8", // F5 Bb5 F Bb F Bb F Em …
  Q: "~ [db4,e4,a4]", R: "[d4,f4,bb4]@7 ~ [d4,g4,b4]@7 ~",
  S: "[c5@4 a5@2 f5@6 ~@2 [f4,bb4,d5]@11 ~ [f4,a4,c5]@3 ~ [f4,bb4,d5]@2, [f4,a4]@13 ~@19]/2", // Bb F Bb F
  T: "~@2 [f4,a4,c5]@2 ~@2 [f4,bb4,d5]@2 ~ [g4,c5,e5]@5 ~@2", U: "[~@6 a5@5 ~ g5@2 f5@14 ~@4]/2",
  V: "[~@4 a5 ~ a5@2 g5@2 a5@2 c6@2 bb5@14 ~@4]/2", W: "~ f4 g4 ~@2 g4 a4 ~", X: "~@2 f5 ~@3 g5 ~@3 f5@2 g5@2 ~@2",
  Y: "[~@4 a5 ~ a5@2 g5@2 a5@2 g5@2 ~@12 [a3,c4]@2 ~@2 [bb3,d4]@2, ~@7 f5@7 ~@2]/2", // Am Bb
  Z: "[~@4 f3@4 ~@2 f3 ~ [f3,c4] ~ f3@3 ~ f3 ~ f3@3 ~@4 f3 [f4,bb4]@2 f3@2 ~@4 f3@4 ~@2 f3 ~ [f3,f4,a4,c5] ~ f3@2 ~@2 f3 ~ f3@4 ~@2 f3 ~ f3 ~ f3 ~, ~@12 [e4,g4]@2 ~@16 [c4,f4,a4]@11 ~@5 [f4,bb4,d5]@17 ~, ~@13 [bb3,d4,f4]@13 ~@2 [f3,d4] ~@35]/4", // F5 Bb5 F Em F Bb Dm
  AA: "[[c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5] ~ [c5,e5,g5] c5 [a4,f5] ~ [bb4,d5,f5]@7 ~ [d5,f5,bb5]@2 ~@2 [f5,bb5,d6]@5 ~, ~@4 a5 ~@11]/2", // F F5 C Dm Bb
  AB: "[~@2 [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,g5] ~ [c5,f5,a5] ~ [e5,g5,c6] ~ [d5,f5,bb5]@10 f5@2 eb5 ~ d5 ~ c5@2, ~@4 e5 ~@11]/2", // F C5 F C Bb
  AC: "~ f5 a4 ~@2 g5 [bb4,d5] ~, ~@4 c5 ~@11", // Bb
  AD: "~@2 [c4,c5]@2 [d4,d5] ~ f4@2 [g4,g5]@2 [f4,f5]@2 [g4,g5]@3 ~, ~@6 f5 ~@9", // C D G F G
  AE: "[~@2 a5 ~ a5 f5 d5 c5 [a3,d4,f4] ~ [g3,c4,e4]@2 ~@2 [f3,bb3,d4]@9 ~@3 [a3,c4]@2 ~@2 [bb3,d4]@2]/2", // Dm C Bb Am Bb
  AF: "[[a4,c5,a5,c6]@25 ~@5 [g4,c5,eb5]@17 f5]/3", AG: "[[eb3,ab3] [e3,g3], c4]/2",
  AH: "[~@14 a5@4 g5@2 f5@2 f5@4 e5@4 [f4,bb4,d5]@8 ~@8 [a4,c5,f5]@10 ~@2 [g3,c4,e4]@3 ~ [a3,d4,f4]@12 [g3,c4,e4]@4 [f3,bb3,d4]@8 [b2,b3]@2 [c3,c4]@2 [a2,a3]@2 g3@2 [f2,f3]@10 ~@6 a5@2, ~@92 g2 ~@19]/7", // Bb F C Dm C Bb B C …
  AI: "[~@2 g5@2 f5@2 f5@4 e5@4 [f4,bb4,d5]@8 ~@8 [a4,c5,f5]@10 ~@2 [g3,c4,e4]@3 ~ [a3,d4,f4]@12 [g3,c4,e4]@4 [f3,bb3,d4]@8 [b2,b3]@2 [c3,c4]@2 [a2,a3]@2 g3@2 [f2,f3]@10 ~@6 a5@2, ~@76 g2 ~@19]/6", // Bb F C Dm C Bb B C …
  AJ: "[~@2 g5@2 f5@2 f5@4 e5@4 [f4,bb4,d5]@8 ~@8 [a4,c5,f5]@10 ~@2 [g3,c4,e4]@3 ~ [a3,d4,f4]@12 [g3,c4,e4]@4 [f3,bb3,d4]@8 [b2,b3]@2 [c3,c4]@2 [a2,a3]@2 g3@2 [f2,f3]@14 ~@4, ~@76 g2 ~@19]/6", // Bb F C Dm C Bb B C …
})).s("gm_string_ensemble_1").gain(0.25)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@7 A ~ B ~@8 B ~@8 B ~@4 C D ~@3 C D ~@6 D@3 ~@3 A ~ B ~@8 B ~@8 B ~@4 C D ~@3 C D ~@6 D@2 ~@4 A ~ B ~@8 B ~@6 D ~@6
  D@3 ~@3 D@3 ~@3 D@3 ~@3 D@3 ~
>`.pickRestart({
  A: "~@10 x!2 ~ x ~@2", B: "~@2 x!2 ~@12", C: "~@3 x ~@4", D: "~@7 x ~@8",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!8]!91 ~ [~@8 x!7 ~] ~ [x!8]!45 [x!7 ~] ~>").gain(0.32)

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

// drums · crash
const crash = s("cr").struct("<~@42 A ~@9 A ~@33 A ~@9 A ~@20 A ~@5 A ~@5 A ~@5 A ~@6>".pickRestart({
  A: "x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@8 A@7 ~@2 A@7 ~@2 A@14 ~ A@7 ~@4 A@7 ~@2 A@7 ~@2 A@14 ~ A@7 ~@4 A@7 ~@2 A@10 ~ A@25 ~
>`.pickRestart({
  A: "~ x ~ x",
})).gain(0.56)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@7 A B C B D B@3 ~ A B C B D B@3 ~ A B C B D B@2 C@2 B@3 C@2 B ~ D B@3 C@3 ~@3 A B C B D B@3 ~ A B C B D B@3 ~ A B C
  B D B@2 C@2 B@3 C@2 B ~ D B@3 C@2 B ~@3 A B C B D B@3 ~ A B C B D B@4 C B ~ D B@3 C@3 B@3 C@3 B@3 C@3 B@3 C@3 ~
>`.pickRestart({
  A: "~@9 x ~@6", B: "~ x ~@2", C: "~ x", D: "~@4 x ~@4 x ~@6",
})).gain(1.26)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  ~@7 A ~@8 A ~@8 A ~@3 B ~@21 A ~@8 A ~@8 A ~@3 B ~@21 A ~@8 A ~@3 B ~@33
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@2 x!2 ~@12",
})).gain(1.26)

// drums · congas
const congas = s("conga:18").struct("<~@7 A ~@8 A ~@8 A ~@25 A ~@8 A ~@8 A ~@25 A ~@8 A ~@37>".pickRestart({
  A: "~@3 x",
// … 14 more lines

More by Elton John