Strudelify

Something About the Way You Look Tonight

Elton John

KeyF♯ majorTempo71 bpm
0:00/0:00
// Something About the Way You Look Tonight — John Elton
// 71 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 8 "Organ" rock organ (copy of ch 2 "Piano" piano)
// note: Full arrangement: all 71 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/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
const piano = note(`<
  A B@2 C@2 D E F G H I J K@2 L M N@2 O P Q R@2 S T U V W Q X@4 Y Z AA AB@2 AC AD AE@2 AF AG Q AH@2 AI T U V W Q AJ@3 AK
  AL AM AN AO@6 AP AQ@4
>`.pickRestart({
  A: "~@8 [d#4,f#4,b4]@2 [c#4,f#4,a#4]@2 [b3,d#4,g#4] [a#3,c#4,f#4]@3", // B F# G#m F#
  B: "[[f3,g#3]@4 [f#3,a#3]@2 [f3,g#3]@5 ~ [f#4,a#4,d#5]@2 [f4,g#4,c#5]@9 ~@3 c#4 d#4 f#4 f4 d#4 c#4, c#4@11 ~@21]/2", // Fm F# Fm D#m C#
  C: "[~@4 [b3,d#4]@2 a#3@5 ~ f#3@2 ~@2 a#4@2 a#4 a#4@4 a#4 d#5@2 c#5@2 a#4@2 g#4@2, f#4@10 ~@4 a#3@5 ~@13, ~@6 c#4@9 ~ [c#4,f4]@14 ~@2]/2", // B C#
  D: "g#4 f#4@3 [g#3,c#4,f4]@2 [a#3,d#4,f#4]@4 f#3 a#3 f#3 a#3 f#3 a#3, [a#3,d#4] ~@2 [d#3,d#4,f#4]", // C# D#m D#5 D#m
  E: "c#3@4 c#3@4 [a#3,c#4,f#4]@2 f#3 a#3 ~ a#3 [f#3,b3] [a#3,c#4], [a#3,c#4,f#4]@7 ~@5 f#3@2 ~@2, f#3 ~@7 c#3@4 ~@4", // F# B5 A#m F#
  F: "d#5@2 d#5 c#5 [e4,g#4]@2 ~@8 [g#3,f#4] [a#3,f#4], [d#4,f#4] b4@2 b2, ~@6 [d#4,f#4]@9 ~", // E G#7 D#m
  G: "b4@2 b4 b4@2 b4 d#5@4 ~@2 [g#3,c#5]@2 [f#4,d#5]@2, [d#4,f#4]@7 ~, b3@2 ~@3 [g#3,c#5] ~@2, ~@11 b3@2 ~@3", // C#5 D#m C#5
  H: "a#4 g#4@3 [a#3,c#4,f#4]@2 ~@6 c#3@3 g#2, [c#4,f4]@4 ~@2 [g#3,c#4,f4]@9 ~", // F# C#
  I: "[g#3,c#4,f4] [g#3,c#4,f4]@3 [a#3,c#4,f#4]@2 [b3,f4,g#4]@5 ~ [d#4,f4,g#4]@3 c#5", // C# F# Fdim Fm7
  J: "a#4 g#4 ~@2 [b3,d#4]@2 a#3@6 f#3@2 f#4 g#4, [a#3,c#4]@4 ~@2 c#4@9 ~, ~@2 f#4@11 ~ a#3@2", // B A#m
  K: "[a#4@2 a#4@2 a#4@2 a#4 d#5@3 c#5@2 a#4@2 g#4 ~@3 f#4@2 [b3,d#4]@2 ~@2 f#3@2 f#3 ~ [f#3,d#4,f#4]@4, [c#4,f4]@14 ~ g#4@3 ~@4 a#3@5 a#3@4 ~, ~@16 [a#3,d#4]@4 ~@2 c#4@9 ~]/2", // B D#m C# D#5
  L: "[a#3,c#4,f#4]@7 ~ [a#3,c#4,f#4]@2 f#3 a#3 f#4@2 b4 c#5", // F#
  M: "d#5@2 d#5 c#5 [e4,g#4]@2 ~@8 f#4!2, [d#4,f#4]@4 b4@9 ~@3, ~@6 [d#4,f#4]@9 ~, ~@5 f#3!3, ~@11 b3@2 b3@2 ~", // E D#m
  N: "[b4@4 b4@2 b4 ~@3 c#5 [b3,d#5]@2 ~ f#5 ~@3 c#5@2 [c#4,f#4,a#4]@2 [f4,g#4]@6 c#3 g#3 ~ c#4, [d#4,f#4]@7 d#5@3 f#3@2 ~ d#4@2 [d#4,d#5]@3 ~@4 c#4@5 ~@3 a#3@2, ~@4 [f#4,b4]@3 b3 [f4,g#4]@2 ~@6]/2", // B F# Fm D#m D# B5 Fm
  O: "g#3@4 [a#3,c#4,f#4]@2 [g#3,c#4,f4]@4 c#4!2 d#4@2 f#4@2", // F# C#
  P: "f#4 d#4 ~@2 [f#3,b3]@2 [f#3,a#3]@4 f#3@2 a#3 f#3!3, [f#3,a#3] ~@3, ~@2 c#4@11 ~@3", // B5 F#
  Q: "f#4@2 f#4 f#4@3 f#4 f4@6 ~ f#4@2, [g#3,c#4]@7 ~", // C#5
  R: "[f4@2 d#4 d#4@8 ~ [g#3,c#4,f4]@2 ~@6 d#3@4 [f#3,a#3,d#4]@4 c#4 b3 ~ a#3, [f#3,a#3]@11 ~@3 [a#3,d#4,f#4]@9 ~@5 [f#3,a#3]@4]/2", // C# D#m F# D#m F#
  S: "[d#3,g#3,b3]@5 ~ [d#3,g#3,a#3] [d#3,g#3]@7 b3 c#4", T: "d#4!3 d#4@3 c#4 d#4@4 ~ f#4@4, [f#3,b3]@7 ~",
  U: "d#4@2 c#4 ~ [f#3,a#3]@2 [f3,g#3]@9 ~, [f3,g#3]@3 c#4@12 ~", // F# Fm
  V: "[g#3,c#4,f4]@4 [a#3,c#4,f#4]@2 [g#3,c#4,f4]@4 c#4!2 d#4@2 f#4@2", // C# F# C#
  W: "f#4 d#4 ~@2 [f#3,b3]@2 [f#3,a#3]@8 f#3!2, [f#3,a#3] ~@3, ~@2 c#4@11 ~@3", // B5 F#
  X: "[f4@2 f4 d#4@3 [f#3,a#3,d#4] [g#3,b3,f#4] d#4@3 ~ f#4@2 ~@2 [f#3,b3]@7 ~ [f#3,b3,d#4]@2 [f#3,a#3,c#4]@2 [f#3,b3,d#4] f#4 d#4 ~ [f3,g#3]@4 [f#3,a#3]@2 [f3,g#3]@5 ~ [f#4,a#4,d#5]@2 [f4,g#4,c#5]@5 ~@4 c#4 f4 ~@2 c#5 ~ a#3@2 d#4, [f#3,a#3]@5 ~@3 [f#3,a#3]@6 d#4@9 ~@8 c#4@4 ~ c#4@7 ~@11 g#3@2 b4@2 c#4@2 ~@4, ~@57 f#4@2 ~ [f#4,a#4]@3 ~]/4", // D#m G#m7 B5 B F# B Fm F# …
  Y: "[a#3,c#4,f#4]@7 ~ [g#3,b3,e4]@2 [f#3,a#3,d#4]@2 [e3,g#3,c#4] [c#3,b3]@3", // F# E D#m C#m C#7
  Z: "[f#2,a#3,c#4,f#4]@6 ~ b3 g#3@2 g#3 f#3 [g#3,f#4] f#3 g#3 ~, ~@3 f#3 [c#4,f4]@2 c#4@2, ~@13 g#4@3", // F# G#7 C#
  AA: "a#4 g#4 f#4@2 [b3,d#4]@2 a#3@6 f#3@2 f#4 g#4, [a#3,c#4]@4 f#4@7 ~@3 a#3@2, ~@6 c#4@9 ~", // B A#m
  AB: "[a#4@2 a#4@2 a#4@2 a#4 d#5@3 c#5@2 a#4@2 g#4 ~@3 f#4@2 [g#3,c#4,f4]@2 ~@2 f#3@2 f#3 a#3 [f#3,d#4,f#4]@4, [c#4,f4]@14 ~ g#4@3 ~@14, ~@8 [a#3,d#4]@2 ~ [a#3,d#4,f#4]@2 ~@3]/2", // C# D#m C# D#5 D#m
  AC: "a#3@2 f#3 ~ f#3@3 ~ [a#3,c#4,f#4]@2 f#3 a#3 f#4@2 b4 c#5, [c#4,f#4]@7 ~@9, ~@3 a#3@3 ~@10", // F# F#5
  AD: "d#5@2 d#5 c#5 [e4,g#4]@2 [d#4,f#4]@8 f#4!2, [d#4,f#4]@4 b4@9 ~@3", // E D#m
  AE: "[b4@4 b4@2 b4 ~@3 c#5 d#5@3 f#5 ~@3 c#5@2 [c#4,f#4,a#4]@2 c#4@4 ~ c#4 g#3 c#4 g#3 c#4, [d#4,f#4]@7 d#5@3 ~@5 d#5@3 ~@8 g#3@2 c#3@4, ~@8 [f#4,b4]@7 ~ [f4,g#4]@4 ~@2 [f4,g#4]@7 ~@3]/2", // F# D#m B5 Fm
  AF: "[g#3,c#4]@4 [a#3,c#4,f#4]@2 [g#3,c#4,f4]@4 c#4!2 d#4@2 f#4@2", // C#5 F# C#
  AG: "f#4 d#4 ~@2 [f#3,b3]@2 [f#3,a#3]@4 f#3!2 ~ f#3 f#3@2, [f#3,a#3]@2 ~@4 a#3 ~, ~@2 c#4@11 ~@3", // B5 F#
  AH: "[f4@2 d#4 d#4@8 ~ [g#3,c#4,f4]@2 [a#3,d#4,f#4]@9 ~ [f#3,a#3,d#4]@4 c#4 b3 ~ a#3, [f#3,a#3]@11 ~@17 [f#3,a#3]@4]/2", // C# D#m F#
  AI: "g#3@6 a#3 g#3@7 b3 c#4, d#3@7 ~, b3@5 ~@11",
  AJ: "[f4@2 f4 ~@9 f#4@2 ~@2 [f#3,b3]@7 ~ [f#3,b3,d#4]@2 [f#3,a#3,c#4]@2 [f#3,b3,d#4] f#4 d#4 ~ [f3,g#3]@4 [f#3,a#3]@2 [f3,g#3]@5 ~ [f#4,a#4,d#5]@2 [f4,g#4,c#5]@2, [f#3,a#3]@7 ~ [f#3,a#3]@7 ~@33, ~@3 d#4@8 ~@3 d#4@9 ~@8 c#4@12 ~@5]/3", // B5 B F# B Fm F# Fm D#m …
  AK: "~@7 c#4 b4@3 c#5 a#4@3 d#4", AL: "[a#3,c#4,f#4]@4 [f#3,b3,d#4]@2 [f#3,a#3,c#4]@9 ~",
  AM: "[f#3,a#3,c#4]@2 [f#3,b3,d#4] [f#3,a#3,c#4]@3 ~ f#3, ~@6 f#4 ~, ~@13 c#4@2 ~", // F# B F#
  AN: "[a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@4 [a#3,c#4,f#4,a#4]@5 ~ [a#3,c#4,f#4,a#4]@4", // A B F#
  AO: "[a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@4 [a#3,c#4,f#4,a#4]@9 ~", AP: "[a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@13 ~",
  AQ: "[[f#3,a#3,c#4,f#4]@25 ~@7]/4", // F#
})).s("gm_piano").gain(0.27)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B@2 C D E B F G B@2 H D E B F G I J K L M N O@2 B J K P Q R I B S T H D E B F G I J K L M N O@2 B J K P Q R I B U@2
  V@7 W X@2 ~@2
>`.pickRestart({
  A: "~@8 [b1,b2]@2 [a#1,a#2]@2 [g#1,g#2] [f#1,f#2]@3", B: "[c#1,c#2]@5 ~ [c#1,c#2]@2 [c#1,c#2]@7 ~",
  C: "f#1@5 ~ f#1@2 f#1@7 ~, f#2@15 ~", D: "a#1@5 ~ a#1@2 a#1@4 c#2@4, g#2@7 ~",
  E: "[d#1,d#2]@5 ~ [d#1,d#2]@2 [d#1,d#2]@5 ~ [d#1,d#2]@2", F: "b1@5 ~ b1@2 b1@5 ~ a#1@2, f#2@7 ~",
  G: "g#1@5 ~ g#1@2 g#1@5 ~ g#1@2, f#2@7 ~", H: "f#1@5 ~ f#1@2 f#1@6 ~@2, f#2@15 ~",
  I: "[c#1,c#2]@5 ~ [c#1,c#2]@2 [c#1,c#2]@5 ~ g#1@2", J: "[c#1,c#2]@5 ~ [c#1,c#2]@2 [c#1,c#2]@2 c#1@2 d#1@2 c#1@2",
  K: "[f#0,f#1]@5 ~ [f#0,f#1]@2 [f#0,f#1]@5 ~ [g#0,g#1]@2", L: "[a#0,a#1]@5 ~ [a#0,a#1]@2 [a#0,a#1]@4 f1@4",
  M: "d#1@5 ~ d#1@2 d#1@7 ~", N: "d#1@5 ~ d#1@2 d#1@4 f#1@4", O: "[g#0,g#1]@5 ~ [g#0,g#1]@2 [g#0,g#1]@7 ~",
  P: "[a#0,a#1]@5 ~ [a#0,a#1]@2 [a#0,a#1]@4 [f1,f2]@4", Q: "[d#1,d#2]@5 ~ [d#1,d#2]@2 [c#1,c#2]@5 ~ [c#1,c#2]@2",
  R: "[b0,b1]@7 ~ b1@2 a#1@2 g#1 f#1@3", S: "f#1@5 ~ f#1@2 e1@2 d#1@2 c#1 b0@3", T: "[f#0,f#1]@5 ~ [f#0,f#1]@2 c#1@7 ~",
  U: "f#1@5 ~ f#1@2 f#1@7 ~", V: "a1@2 b1@4 f#1@5 ~ f#2@2 f#1@2", W: "a1@2 b1@13 ~", X: "[[f#0,f#1]@29 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · french horn · "Horns"
const french_horn = note("<A B@2 ~@68>".pickRestart({
  A: "~@8 [d#4,f#4,b4]@2 [c#4,f#4,a#4]@2 [b3,d#4,g#4] [a#3,c#4,f#4]@3", B: "[[f3,g#3,c#4]@11 ~@5]/2",
})).s("gm_french_horn").gain(0.31)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A B@2 ~@8 C D E F G H I@2 J K L@2 M@2 N@2 O P Q@6 ~@3 R@3 S@2 T U V@2 W@2 X Y Z AA AB@6 AC AD@3 AE AF AG AH AI@4
>`.pickRestart({
  A: "~@8 [d#4,f#4,b4]@2 [c#4,f#4,a#4]@2 [b3,d#4,g#4] [a#3,c#4,f#4]@3", // B F# G#m F#
  B: "[~@6 [f#4,a#4,d#5] [f4,g#4,c#5]@8 ~, [f3,g#3,c#4]@29 ~@3]/2", C: "f#4@11 ~ a#4@4", D: "f4@7 ~ c#4@7 ~",
  E: "d#4@9 ~ f#4@2 f4@2 d#4@2", F: "d#4@2 c#4@2 a#3@11 ~", G: "d#4@9 ~ d#4@2 f4@2 f#4@2", H: "g#4@7 ~",
  I: "[f4@29 ~@3]/2", J: "f#4 d#4 ~@2 [f#3,b3]@2 [f#3,a#3]@8 f#3!2, [f#3,a#3] ~@3, ~@2 c#4@11 ~@3",
  K: "f#4@2 f#4 f#4@3 f#4 f4@6 ~ f#4@2, [g#3,c#4]@7 ~", // C#5
  L: "[f4@2 d#4 d#4@8 ~ [g#3,c#4,f4]@2 [a#3,d#4,f#4]@9 ~ [f#3,a#3,d#4,b4]@4 c#4 b3 ~ a#3, [f#3,a#3]@11 ~@17 [f#3,a#3,c#5]@4]/2", // C# D#m Bmaj7 F#
  M: "[g#3@6 a#3 g#3@7 b3 c#4 d#4!3 d#4@3 c#4 d#4@4 ~ [f#4,f#5]@4, b4@25 ~@7, d#3@7 ~ [f#3,b3]@7 ~, b3@5 ~@27]/2", // F# B5
  N: "[d#4@2 c#4 ~ [f#3,a#3]@2 [f3,g#3]@9 ~ [g#3,c#4,f4]@4 [a#3,c#4,f#4]@2 [g#3,c#4,f4]@4 c#4!2 [d#4,f#5]@2 ~ a#5, c#5@29 ~@3, [f3,g#3]@3 c#4@12 ~@15 f#4@2]/2", // F# Fm C# F# C# D#m Fm
  O: "f#4 d#4 ~@2 [f#3,b3]@2 [f#3,a#3]@8 f#3!2, c#6@7 ~, [f#3,a#3] ~@3, ~@2 c#4@11 ~@3", // B5 F#
  P: "f#4@2 f#4 f#4@3 f#4 f4@6 ~ f#4@2, [g#3,c#4,c#5]@7 ~", // C#5
  Q: "[f4@2 f4 ~@9 f#4@2 ~@2 [f#3,b3]@7 ~ [f#3,b3,d#4]@2 [f#3,a#3,c#4]@2 [f#3,b3,d#4] f#4 d#4 ~ [f3,g#3]@4 [f#3,a#3]@2 [f3,g#3]@5 ~ [f#4,a#4,d#5]@2 [f4,g#4,c#5]@8 ~ c#4 b4@2 ~ c#5 a#4@3 d#4 [a#3,c#4,f#4]@7 ~ [e3,b3,e4]@2 [d#3,g#3,d#4]@2 [c#3,f#3,c#4] [b2,e3,b3]@3 [f#2,a#3,c#4,f#4]@7 ~ [c#3,g#3,c#4,f4]@7 ~, d#5@11 ~ f#5@4 d#5@14 ~@28 c#6@2 f#6@22 ~@14, [f#3,a#3]@7 ~ [f#3,a#3]@7 ~@81, ~@3 d#4@8 ~@3 d#4@9 ~@8 c#4@12 ~@53]/6", // B5 B F# B Fm F# Fm D#m …
  R: "[~@12 d#4@23 ~@3 c#5@2 a#4@4 g#4@4]/3", S: "[c#4@29 ~@3]/2",
  T: "f#4 d#4 ~@2 [f#3,b3]@2 [f#3,a#3]@8 f#3!2, a#5@7 ~, [f#3,a#3] ~@3, ~@2 c#4@11 ~@3", // B5 F#
  U: "f#4@2 f#4 f#4@3 f#4 f4@5 d#6@2 [f#4,f#6]@2, [g#3,c#4]@7 ~, d6@11 ~@5", // F# C#5
  V: "[f4@2 d#4 d#4@8 ~ [g#3,c#4,f4,c#6]@2 [a#3,d#4,f#4,d#6]@9 ~ [f#3,a#3,d#4,a#5]@4 c#4 b3 ~ a#3, [f#3,a#3,d#6]@11 ~@17 [f#3,a#3,c#6]@4]/2", // C# D#m F#
  W: "[g#3@6 a#3 g#3@7 b3 c#4 d#4!3 d#4@3 c#4 d#4@4 ~ [f#4,d#6]@4, b5@25 ~@7, d#3@7 ~ [f#3,b3]@7 ~, b3@5 ~@27]/2", // D#m B5
  X: "d#4@2 c#4 ~ [f#3,a#3]@2 [f3,g#3]@9 ~, c#6@7 ~, [f3,g#3]@3 c#4@12 ~", // F# Fm
  Y: "[g#3,c#4,f4]@4 [a#3,c#4,f#4]@2 [g#3,c#4,f4]@4 c#4!2 [d#4,d#6]@2 [f#4,f#6]@2, c#6@11 ~@5", // C# F# C# D# F#
  Z: "[f#4,f#6] [d#4,d#6] ~@2 [f#3,b3]@2 [f#3,a#3]@8 f#3!2, [f#3,a#3] ~@3, ~@2 c#6@13 ~, ~@2 c#4@11 ~@3", // F# D# B5 F#
  AA: "f#4@2 f#4 f#4@3 f#4 ~ d5@6 f#4@2, [g#3,c#4]@7 ~, d#5@7 f4@6 ~@3", // C#5
  AB: "[f4@2 f4 ~@9 f#4@2 ~@2 [f#3,b3,d#5]@7 ~ [f#3,b3,d#4]@2 [f#3,a#3,c#4]@2 [f#3,b3,d#4] f#4 d#4 ~ [f3,g#3]@4 [f#3,a#3]@2 [f3,g#3]@5 ~ [f#4,a#4,d#5]@2 [f4,g#4,c#5]@8 ~ c#4 b4@3 c#5 a#4@3 d#4 [a#3,c#4,f#4]@29 ~@3, d#5@11 ~ f#5@4 ~@44 f#6@28 ~@8, [f#3,a#3]@7 ~ [f#3,a#3]@7 ~@81, ~@3 d#4@8 ~@3 d#4@9 ~@8 c#4@12 ~@53]/6", // B F# B Fm F# Fm D#m C# …
  AC: "[a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@4 [a#3,c#4,f#4,a#4]@9 ~", // A B F#
  AD: "[[a3,c#4,e4,a4]@2 [b3,d#4,f#4,a5]@4 [a#3,c#4,f#4]@9 ~ [a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@4 ~@10 [a3,c#4,e4,a4]@2 ~@6 f#5@8, ~@6 f#5@16 [a#3,c#4,f#4]@9 ~@3 [b3,d#4,f#4]@4 [a#3,c#4,f#4]@9 ~, ~@24 c#6@11 ~ a5@4 ~@8]/3", // A B7 F# A B A F# B …
  AE: "[a3,c#4,e4,a4]@2 ~@2 [c#6,d6]!2 c#6 [c#6,d6] c#6 [c#6,d6]!2 c#6 [c#6,d6] c#6 [c#6,d6] c#6, ~@2 [b3,d#4,f#4,b4]@4 [a#3,c#4,f#4,a#4]@9 ~", // A Dmaj7 B F#
  AF: "[c#6,d6]!2 c#6 [c#6,d6]!3 c#6 [c#6,d6] c#6 [c#6,d6]!2 c#6 [c#6,d6]!4, [a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@4 [a#3,c#4,f#4,a#4]@9 ~", // Dmaj7 A B F#
  AG: "f#6 [f#6,g6]!2 f#6 [f#6,g6]!2 f#6 [f#6,g6]!2 f#6 [f#6,g6] f#6 a6@4, [a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@4 [a#3,c#4,f#4,a#4]@9 ~, ~@12 g6 ~@3", // Gmaj7 A B F#
  AH: "[a3,c#4,e4,a4]@2 [b3,d#4,f#4,b4]@13 ~, f#6@13 ~@3", AI: "[[f#3,a#3,c#4,f#4]@25 ~@7]/4",
})).s("gm_string_ensemble_1").gain(0.12)

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

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

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!65 ~@5>").gain(0.31)

// drums · snare
const snare = s("sd").struct("<~@18 A B@7 C B@3 D B@2 E F ~@7 G B@3 H B@3 D B@3 I B@3 J K@5 ~ L ~@5>".pickRestart({
  A: "~@10 x ~ x!3 ~", B: "~ x ~ x", C: "~@4 x ~@3 x ~ x ~ x!3 ~", D: "~@4 x ~@5 x ~ x!3 ~", E: "~@4 x ~@5 x ~@2 x ~@2",
  F: "~@9 x!2 ~@5", G: "~@5 x ~@2", H: "~@4 x ~@5 x ~@2 x!2 ~", I: "~@4 x ~@3 x ~@3 x!3 ~", J: "~ x ~@2",
  K: "~ x ~@3 x ~@2", L: "~@6 x ~ x!3 ~ x!3 ~",
})).gain(0.23)

// drums · low tom
const low_tom = s("lt").struct("<~@30 [~@7 x] ~@11 [~@10 x ~@2 x!2 ~] ~@18 [~@12 x!3 ~] ~@9>").gain(0.23)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A B A@3 B A@3 C A@2 B@2 A@3 D A@14 E A@4 C A@15 E A@11 F ~@4>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~@2 x", C: "x ~ x!3 ~ x!3 ~@2 x!2 ~@2 x",
  D: "x ~ x!3 ~ x!3 ~@2 x!2 ~ x!2", E: "x ~ x!3 ~ x!3 ~ x!3 ~@3", F: "x",
})).gain(0.31)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~@3 A ~@3 B ~@2 A@2 ~@3 C ~@14 A ~@4 B ~@15 A ~@16>".pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@5 x ~@2",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct("<~@19 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~@7 A ~@3 A ~@3 A ~@3 A ~@10 B ~@4>".pickRestart({
  A: "x", B: "x!2 ~@6",
})).gain(0.23)

// drums · ride
const ride = s("rd").struct("<~@43 A B@9 C B@3 ~@11 D E F>".pickRestart({
  A: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "x ~ x!3 ~ x!3 ~ x!2 ~@2 x!2", D: "~@3 x",
  E: "x!2 ~@2", F: "x",
})).gain(0.31)

// drums · bongos
const bongos = s("bongo:4").struct("<~ [~ x ~ x]!65 ~@5>").gain(0.51)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~ [x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2]!65 ~@5>").gain(0.51)

stack(
  piano, bass, french_horn, string_ensemble_1, kick, kick_soft, rim, snare, low_tom, pedal_hat, open_hat, crash, ride,
  bongos, bongos_2
)

More by Elton John