Strudelify
Pieces of Eight cover art

Pieces of Eight

Rush

KeyD majorTempo158 bpm
0:00/0:00
// Pieces of Eight — Rush
// 158 bpm, 8/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (7/4 at bar 1, 3/4 at bar 10, 7/4 at bar 10, 3/4 at bar 11, ...) are rendered on a constant 8/4 grid of one bar per cycle
// note: ch 1 "Marimba" named as a mallet, played on marimba (its piano patch is not one); ch 2 "Bass Marimba" named as a bass, played on electric bass finger (its piano patch is not one)
// note: Full arrangement: all 101 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(158/8)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass finger · "Bass Marimba"
const bass = 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 L M N AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV N AE AW AX AY AZ BA BB AY BC BA BD AY BC BA BE BF BG BH BI BJ BK BJ BL BF BG BM ~ BN BO BP BQ BR BS BT BU BV BW
  BX BY BZ CA CB CC CD O CE CF R CG
>`.pickRestart({
  A: "~@11 f#2 ~@4", B: "~@4 f#2 ~@13 f#2 ~@13",
  C: "f#2 ~@13 [f#2,c#3]@2 ~@2 c#3@2 ~@8 c#3@2 ~@2, ~@18 f#2 ~@9 f#2 ~@3", // F#5
  D: "~@5 c#3 ~@6 c#3 ~ c#3 ~, ~@10 f#2 ~@13 f#2 ~@3 f#2 ~@3", E: "~@6 f#2 ~@3 f#2 ~@9 f#2 ~@11",
  F: "~@2 f#2@2 ~@2 f#2@2 ~@2 f#2 ~@5 f#2 ~@13 c#3@2, ~@30 f#2 ~",
  G: "~ c#3 ~@4 c#3 ~@6 c#3 ~ [f#2,c#3], ~@2 f#2 ~@9 f#2 ~@13 f#2 ~@5", // F#5
  H: "~@2 c#3@2 ~@4 c#3@2 ~@12 f#2 ~@3 f#2 ~@3 f#2 ~, ~@2 f#2 ~@5 f#2 ~@23", I: "~@4 f#2 ~@13 f#2 ~@3 f#2 ~@3 f#2 ~@5",
  J: "f#2 ~@7 g2 ~@5 a2 ~@5 b2 ~@11", K: "~@2 g2 ~@7 a2 ~@5 b2 ~@13 g2 ~", L: "~@4 a2 ~@5 b2 ~@13 g2 ~@7",
  M: "a2 ~@5 b2 ~@13 g2 ~@5 a2 ~@5", N: "b2 ~@13 g2 ~@7 a2 ~@5 b2 ~@3",
  O: "d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~",
  P: "e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~",
  Q: "~@2 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3@2 ~@2 a#2 ~@3 c#3 ~@3 a#2 ~@3",
  R: "c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3",
  S: "a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~",
  T: "~@2 f3 ~ d#3 ~@3 c#3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~",
  U: "~@2 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3",
  V: "b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3",
  W: "d3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~",
  X: "~@2 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~",
  Y: "~@2 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 f#2@2 ~@2", Z: "~@5 f#2 ~ f#2 ~@4 f#2 ~@3",
  AA: "~@3 f#2 ~ f#2 ~@4 [f#2,c#3] ~@5", AB: "~ [f#2,c#3] ~ [f#2,c#3] ~@4 [f#2,c#3] ~@6 [f#2,c#3]",
  AC: "~@2 [f#2,c#3]@2 ~@8 f#2@2 ~@12 f#2@2 ~@2 f#2 ~", AD: "~@8 f#2 ~@13 f#2 ~@3 f#2 ~@3 g2 ~",
  AE: "~@10 g2 ~@5 a2 ~@5 b2 ~@9", AF: "~@4 g2 ~@7 a2 ~@5 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~",
  AG: "d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~",
  AH: "~@2 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3",
  AI: "f#3 ~ e3 ~@3 d3@2 ~@2 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3",
  AJ: "a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~",
  AK: "~@2 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~",
  AL: "~@2 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3",
  AM: "b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3",
  AN: "e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 a#2 ~@3 c#3 ~",
  AO: "~@2 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~",
  AP: "~@2 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3",
  AQ: "c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 f#2@2 ~@12", AR: "f#2 ~ f#2 ~@4 f#2 ~@6 f#2 ~",
  AS: "f#2 ~@4 [f#2,c#3] ~@6 [f#2,c#3] ~ [f#2,c#3] ~", AT: "~@3 [f#2,c#3] ~@6 [f#2,c#3] ~ [f#2,c#3] ~@3",
  AU: "~@2 f#2@2 ~@12 f#2@2 ~@2 f#2 ~@9 f#2 ~", AV: "~@12 f#2 ~@3 f#2 ~@3 g2 ~@5 a2 ~@5",
  AW: "~@4 g2 ~@7 a2 ~@5 b2 ~@13", AX: "g2 ~@5 a2 ~@5 b2 ~@13 a2 ~ a2 ~@3",
  AY: "a2 ~ a2 ~@3 a2 ~ a2 ~@7 a2 ~ a2 ~@3 b2 ~@3 a2 ~ a2 ~@3",
  AZ: "a2 ~ a2 ~@3 a2 ~ a2 ~@7 a2 ~ a2@2 ~@2 b2 ~@3 g#2 ~ g#2 ~@3",
  BA: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@7 g#2 ~ g#2 ~@3 f#2 ~@3 g#2 ~ g#2 ~@3",
  BB: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@7 g#2 ~ g#2 ~@3 f#2 ~@3 a2 ~ a2 ~@3",
  BC: "a2 ~ a2 ~@3 a2 ~ a2 ~@3 a2 ~@3 a2 ~ b2 ~@3 b2@2 ~@2 g#2 ~ g#2 ~@3",
  BD: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@3 f#2 ~@3 f#2 ~ f#2 ~@3 f#2 ~@3 a2 ~ a2 ~@3",
  BE: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@3 f#2 ~@3 f#2 ~ f#2 ~@3 f#2 ~@3 a3!4 [e2,e3] ~", // E
  BF: "~@4 a3!6 [e2,e3] ~@7 a3!4 [e2,e3] ~@3 g#3!4 [c#2,c#3] ~", // E C#
  BG: "~@4 g#3!6 c#2@2 ~@6 g#3!4 [c#2,c#3] ~@3 a3!4 [e2,e3] ~, ~@10 c#3 ~@21", // C# E
  BH: "~@4 a3!6 [e2,e3] ~@7 a3!4 [e2,e3] ~@3 g#3!4 c#2@2, ~@30 c#3 ~", // E
  BI: "~@4 g#3!6 c#2@2 ~@6 g#3!4 [c#2,c#3] ~@3 a3 e3 a3 e3 a3 e3, ~@10 c#3 ~@21", // C#
  BJ: "a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 a3 e3 g#3 c#3 g#3 c#3 g#3 c#3",
  BK: "g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 a3 e3 a3 e3 a3 e3",
  BL: "g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 g#3 c#3 a3!4 [e2,e3] ~", // E
  BM: "~@4 a3!6 [e2,e3] ~@7 a3!4 [e2,e3] ~@9", BN: "~@5 f#2 ~@6 f#2 ~ f#2 ~", BO: "~@3 f#2 ~@6 f#2 ~ f#2 ~@3",
  BP: "~ [f#2,c#3] ~@6 [f#2,c#3] ~ [f#2,c#3] ~@4 [f#2,c#3]", BQ: "~@6 [f#2,c#3] ~ [f#2,c#3] ~@4 f#2 ~@2",
  BR: "~@8 f#2@2 ~@2 f#2 ~@9 f#2 ~@9", BS: "~@4 f#2 ~@3 f#2 ~@3 g2 ~@5 a2 ~@5 b2 ~@7", BT: "~@6 g2 ~@7 a2 ~@5 b2 ~@11",
  BU: "~@2 g2 ~@5 a2 ~@5 b2 ~@13 g2 ~@3", BV: "~@4 a2 ~@5 b2 ~@13 g2 ~@5 a2 ~", BW: "~@4 b2 ~@13 g2 ~@7 a2 ~@5",
  BX: "b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~",
  BY: "~@2 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~",
  BZ: "~@2 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3@2 ~@2 a#2 ~@3 c#3 ~@3",
  CA: "a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3",
  CB: "c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~",
  CC: "~@2 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~",
  CD: "~@2 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3",
  CE: "e3 ~@3 d3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~",
  CF: "~@2 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3", CG: "a3!4 e3 ~@5 a3!6 [a2,a3] ~@15",
})).s("gm_electric_bass_finger").gain(0.41)

// other · piano · "Synth Pad  for"
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 L M N AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV N AE AW AX AY AZ BA BB AY BC BA BD AY BC BA BE ~@12 BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV O BW BX R
  ~
>`.pickRestart({
  A: "~@4 a#2!7 f#2 ~@4", B: "~@4 f#2 ~@13 f#2 ~@13",
  C: "f#2 ~@13 [c#3,f#3]@2 ~@2 c#3@2 ~@8 c#3@2 ~@2, ~@18 f#3 ~@9 f#3 ~@3", // F#5
  D: "~@5 c#3 ~@6 c#3 ~ c#3 ~, ~@10 f#3 ~@13 f#3 ~@3 f#3 ~@3", E: "~@6 f#2 ~@3 f#2 ~@9 f#2 ~@11",
  F: "~@2 f#2@2 ~@2 f#2@2 ~@2 f#2 ~@5 f#2 ~@13 c#3@2, ~@30 f#3 ~",
  G: "~@2 [c#3,f#3] ~@9 [c#3,f#3] ~@13 c#3@2 ~@2 [f#2,c#3]@2, ~@26 f#3 ~@5", // F#5
  H: "~@2 [c#3,f#3] ~@5 [f#2,c#3] ~@13 f#2 ~@3 f#2 ~@3 f#2 ~", I: "~@4 f#2 ~@13 f#2 ~@3 f#2 ~@3 f#2 ~@5",
  J: "f#2 ~@7 g2 ~@5 a2 ~@5 b2 ~@11", K: "~@2 g2 ~@7 a2 ~@5 b2 ~@13 g2 ~", L: "~@4 a2 ~@5 b2 ~@13 g2 ~@7",
  M: "a2 ~@5 b2 ~@13 g2 ~@5 a2 ~@5", N: "b2 ~@13 g2 ~@7 a2 ~@5 b2 ~@3",
  O: "d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~",
  P: "e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~",
  Q: "~@2 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3@2 ~@2 a#2 ~@3 c#3 ~@3 a#2 ~@3",
  R: "c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3",
  S: "a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~",
  T: "~@2 f3 ~ d#3 ~@3 c#3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~",
  U: "~@2 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3",
  V: "b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3",
  W: "d3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~",
  X: "~@2 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~",
  Y: "~@2 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 f#2@2 ~@2", Z: "~@5 f#2 ~ f#2 ~@4 f#2 ~@3",
  AA: "~@3 f#2 ~ f#2 ~@4 [c#3,f#3] ~@5", AB: "~ [c#3,f#3] ~ [c#3,f#3] ~@4 [c#3,f#3] ~@6 [c#3,f#3]",
  AC: "~@2 [c#3,f#3]@2 ~@8 f#2@2 ~@12 f#2@2 ~@2 f#2 ~", AD: "~@8 f#2 ~@13 f#2 ~@3 f#2 ~@3 g2 ~",
  AE: "~@10 g2 ~@5 a2 ~@5 b2 ~@9", AF: "~@4 g2 ~@7 a2 ~@5 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~",
  AG: "d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~",
  AH: "~@2 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3",
  AI: "f#3 ~ e3 ~@3 d3@2 ~@2 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3",
  AJ: "a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~",
  AK: "~@2 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~",
  AL: "~@2 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3",
  AM: "b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3",
  AN: "e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 a#2 ~@3 c#3 ~",
  AO: "~@2 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~",
  AP: "~@2 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3",
  AQ: "c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 f#2@2 ~@12", AR: "f#2 ~ f#2 ~@4 f#2 ~@6 f#2 ~",
  AS: "f#2 ~@4 [f#2,c#3] ~@6 [c#3,f#3] ~ [c#3,f#3] ~", AT: "~@3 [c#3,f#3] ~@6 [c#3,f#3] ~ [c#3,f#3] ~@3",
  AU: "~@2 f#3@2 ~@12 f#2@2 ~@2 f#2 ~@9 f#2 ~", AV: "~@12 f#2 ~@3 f#2 ~@3 g2 ~@5 a2 ~@5",
  AW: "~@4 g2 ~@7 a2 ~@5 b2 ~@13", AX: "g2 ~@5 a2 ~@5 b2 ~@13 a2 ~ a2 ~@3",
  AY: "a2 ~ a2 ~@3 a2 ~ a2 ~@7 a2 ~ a2 ~@3 b2 ~@3 a2 ~ a2 ~@3",
  AZ: "a2 ~ a2 ~@3 a2 ~ a2 ~@7 a2 ~ a2@2 ~@2 b2 ~@3 g#2 ~ g#2 ~@3",
  BA: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@7 g#2 ~ g#2 ~@3 f#2 ~@3 g#2 ~ g#2 ~@3",
  BB: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@7 g#2 ~ g#2 ~@3 f#2 ~@3 a2 ~ a2 ~@3",
  BC: "a2 ~ a2 ~@3 a2 ~ a2 ~@3 a2 ~@3 a2 ~ b2 ~@3 b2@2 ~@2 g#2 ~ g#2 ~@3",
  BD: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@3 f#2 ~@3 f#2 ~ f#2 ~@3 f#2 ~@3 a2 ~ a2 ~@3",
  BE: "g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@3 f#2 ~@3 f#2 ~ f#2 ~@3 f#2 ~@9", BF: "~@5 f#2 ~@6 f#2 ~ f#2 ~",
  BG: "~@3 f#2 ~@6 f#2 ~ f#2 ~@3", BH: "~ [f#2,c#3] ~@6 [c#3,f#3] ~ [c#3,f#3] ~@4 f#3, ~@30 c#3 ~",
  BI: "~@6 [c#3,f#3] ~ [c#3,f#3] ~@4 f#3 ~@2", BJ: "~@8 f#2@2 ~@2 f#2 ~@9 f#2 ~@9",
  BK: "~@4 f#2 ~@3 f#2 ~@3 g2 ~@5 a2 ~@5 b2 ~@7", BL: "~@6 g2 ~@7 a2 ~@5 b2 ~@11",
  BM: "~@2 g2 ~@5 a2 ~@5 b2 ~@13 g2 ~@3", BN: "~@4 a2 ~@5 b2 ~@13 g2 ~@5 a2 ~", BO: "~@4 b2 ~@13 g2 ~@7 a2 ~@5",
  BP: "b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~",
  BQ: "~@2 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~@3 e3 ~",
  BR: "~@2 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3@2 ~@2 a#2 ~@3 c#3 ~@3",
  BS: "a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3",
  BT: "c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~@3 c#3 ~",
  BU: "~@2 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 c#3 ~ d3 ~",
  BV: "~@2 e3 ~@3 b2 ~@3 d3 ~@3 b2 ~@3 f#3 ~ e3 ~@3 d3 ~@3 b2 ~@3",
  BW: "e3 ~@3 d3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3 c3 ~ c#3 ~@3 d#3 ~@3 a#2 ~",
  BX: "~@2 c#3 ~@3 a#2 ~@3 f3 ~ d#3 ~@3 c#3 ~@3 a#2 ~@3 c#3 ~@3 a#2 ~@3",
})).s("gm_piano").gain(0.46)

// bass · piano · "Shakers"
const bass_2 = note("<~@13 A B@10 C ~@9 D B@10 E ~@25 F G F H ~@14 B@11 ~>".pickRestart({
  A: "~@28 d#2 d2 d#2 d2",
  B: "d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2",
  C: "d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 ~@4",
  D: "~@18 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2",
  E: "d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 d#2 d2 ~@14", F: "~@20 d5!3 ~@9", G: "~@22 d5!3 ~@7",
  H: "~@21 d5!3 ~@8",
})).s("gm_piano").gain(0.36)

// other · piano · "Timbales"
const piano_2 = note("<~@10 A ~@9 B C ~@2 D ~@17 E F G H ~@48 I J K L M N ~>".pickRestart({
  A: "~@25 a#6!3 ~@4", B: "~@4 b6 ~ b6 ~ b6!2 ~@2 b6 a6 ~@18",
  C: "~@16 [a4,b4] ~ [a4,b4] ~ [a4,b4]!2 ~ [a4,b4] e4@2 ~@6, ~@24 d4 ~@7", D: "~@8 g6 ~ g6 ~@2 g6!2 ~ g6 f6 ~@14",
  E: "~@28 a6 ~ a6 ~", F: "a6!2 ~ a6 b6 ~@13 a6 ~ a6 ~ a6!2 ~ a6 f6 ~@5", G: "~@8 a6 ~ a6 ~ a6!2 ~ a6 b6 ~@13 a6 ~",
  H: "a6 ~ a6!2 ~ a6 f6 ~@25", I: "~@18 d4 ~ d4 ~ d4!2 ~ d4 a4 ~@5", J: "~@8 d4 ~ d4 ~ d4!2 ~ d4 b3 ~@13 d4 ~",
  K: "d4 ~ d4!2 ~ d4 a4 ~@13 d4 ~ d4 ~ d4!2 ~ d4 b3 ~@3", L: "~@10 d4 ~ d4 ~ d4!2 ~ d4 g4 ~@13",
  M: "d4 ~ d4 ~ d4!2 ~ d4 b3 ~@13 d4 ~ d4 ~ d4!2 ~ d4 g4 ~", N: "~@12 d4 ~ d4 ~ d4!2 ~ d4 b3 ~@11",
})).s("gm_piano").gain(0.46)

// drums · kick
const kick = s("bd").struct(`<
  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 AQ AR AS AT AU AV
  AW AX AY AZ BA BB BC BD BE BD BF BD BE BD BG BD BH BI BJ BK@3 BL BM@3 BN BK@2 BO BL BP BQ BR BS BT BU BV BW BX I BY BZ
  CA CB CC CD CE CF CG CH CI CJ
>`.pickRestart({
  A: "~@11 x ~@4", B: "~@2 x ~@6 x ~@6", C: "x ~@6 x ~ x ~@4 x ~", D: "~@5 x ~@6 x ~ x ~", E: "~@3 x ~ x ~@4 x ~@5",
  F: "~ x ~ x ~ x ~@2 x ~@6 x", G: "~ x ~@4 x ~@6 x ~ x", H: "~ x ~@2 x ~@6 x ~ x ~@2", I: "~@2 x ~@6 x ~ x ~@4",
  J: "x ~@3 x ~@2 x ~@2 x ~@5", K: "~ x ~@3 x ~@2 x ~@6 x", L: "~@2 x ~@2 x ~@6 x ~@3", M: "x ~@2 x ~@6 x ~@2 x ~@2",
  N: "x ~@6 x ~@3 x ~@2 x ~", O: "~@4 x ~@5 x ~@7 x ~@2 x ~@4 x!3 ~@3", P: "x ~@7 x ~ x!2 ~@4 x ~ x!2 ~@2 x ~@7 x ~",
  Q: "x ~@5 x ~ x ~@3 x ~@3 x ~@3 x ~@7 x ~ x!2", R: "~@2 x ~@7 x ~ x!2 ~@4 x ~ x!2 ~@2 x ~@7",
  S: "x ~ x!2 ~@4 x ~@5 x ~@7 x ~ x!2 ~@4 x ~", T: "x ~ x ~ x ~ x ~@3 x!2 ~ x ~@2",
  U: "~@2 x ~ x!2 ~@4 x ~ x!2 ~@2 x ~@7 x ~ x!2 ~@4", V: "x ~@2 x ~@2 x ~@7 x ~ x ~@5 x ~ x ~@3 x ~@3",
  W: "~@4 x ~@7 x ~@2 x ~@2 x ~@7 x ~ x ~@3", X: "~@2 x ~@5 x ~@7 x ~ x!2 ~@4 x ~@5 x ~",
  Y: "~@3 x!2 ~@2 x ~ x ~@2 x ~ x ~", Z: "~ x ~@3 x ~ x ~@2 x!3 ~@2 x", AA: "~@3 x ~ x ~@2 x ~ x ~@2 x ~@2",
  AB: "~ x ~ x ~@2 x!3 ~@2 x ~@3 x", AC: "~ x ~@4 x ~@2 x ~@3 x ~ x", AD: "~@4 x ~@2 x ~@4 x!3 ~",
  AE: "x!2 ~ x!2 ~@7 x ~@2 x", AF: "~@2 x ~@2 x ~@14 x ~@5 x ~@5", AG: "x ~@6 x ~@2 x ~@2 x!2 ~",
  AH: "~@10 x!2 ~@4 x ~@5 x ~@9", AI: "~@2 x ~@2 x ~@3 x ~@3 x ~@2", AJ: "x ~@7 x ~@2 x ~@4 x!3 ~@3 x ~@7 x ~",
  AK: "x!2 ~@4 x ~ x!2 ~@2 x ~@7 x ~ x ~@5 x ~ x ~", AL: "~@2 x ~@3 x ~@3 x ~@7 x ~ x!2 ~@2 x ~@7",
  AM: "x ~ x!2 ~@4 x ~ x!2 ~@2 x ~@7 x ~ x!2 ~@4 x ~", AN: "~@4 x ~@7 x ~ x!2 ~@4 x ~ x ~@3 x ~@3 x ~",
  AO: "~@2 x ~@7 x ~ x ~@3 x ~@7 x ~ x!2 ~@4", AP: "x ~ x!2 ~@2 x ~@7 x ~ x!2 ~@4 x ~@2 x ~@2 x ~@3",
  AQ: "~@2 x ~@10 x ~@2", AR: "~@2 x ~@2 x ~@2 x ~@7 x ~@2 x ~@4 x ~@5 x ~",
  AS: "~@6 x ~@2 x ~@4 x ~@5 x ~ x!2 ~@4 x ~@3", AT: "~@5 x ~ x ~ x ~@2 x ~ x!2", AU: "x ~ x ~@4 x ~@2 x ~ x!3 ~",
  AV: "x ~@4 x ~@2 x ~ x!3 ~ x ~", AW: "~@3 x ~@2 x ~ x!3 ~ x!3 ~", AX: "~ x ~ x ~@4 x ~@2 x ~@3 x",
  AY: "~@2 x ~ x!3 ~@2 x ~@6", AZ: "~@7 x ~@2 x ~ x!3 ~", BA: "~@5 x ~@2 x ~@2 x ~@4", BB: "~@2 x ~@2 x ~@2 x!2 ~@6",
  BC: "x ~@2 x ~@2 x ~@6 x ~@2", BD: "x ~@3 x ~@2 x!2 ~@3 x!2 ~@2", BE: "x ~@3 x!2 ~@2 x ~@4 x ~@2",
  BF: "x ~@3 x!2 ~@3 x ~@3 x ~@2", BG: "x ~@3 x!2 ~@2 x!2 ~ x ~ x ~@2", BH: "x ~@3 x ~@2 x ~@3 x ~ x ~@2",
  BI: "x ~@3 x ~@2 x!2 ~@7", BJ: "~@15 x", BK: "~@5 x ~@5 x ~@3 x", BL: "~@13 x ~@2", BM: "~ x ~@3 x ~@3 x ~@3 x ~@2",
  BN: "~ x ~@3 x ~@3 x ~@5 x", BO: "~@5 x ~@5 x ~@4", BP: "~@5 x ~@2 x ~@3 x ~ x ~",
  BQ: "~@6 x ~@5 x ~@7 x ~@2 x ~@5 x ~ x", BR: "~ x ~@2 x ~@3 x ~ x ~@4 x", BS: "~@12 x ~@2 x ~@5 x ~@4 x!2 ~@4",
  BT: "x ~@3 x ~@6 x ~@2 x ~", BU: "~@2 x ~@3 x ~@2 x ~@2 x ~@3", BV: "~@3 x ~@2 x ~@3 x ~@5",
  BW: "~ x ~@2 x ~@2 x ~@6 x ~", BX: "~ x ~@3 x ~@6 x ~@2 x", BY: "x ~@7 x ~@5 x ~@7 x ~@2 x ~@4 x!2",
  BZ: "x ~@3 x ~@7 x ~ x!2 ~@4 x ~ x!2 ~@2 x ~@5", CA: "~ x!2 ~@17 x ~@3 x ~@7",
  CB: "x ~ x!2 ~@2 x ~@7 x ~ x!2 ~@4 x ~ x!2 ~@2 x ~@3", CC: "~@4 x ~ x!2 ~@4 x ~@5 x ~@7 x ~ x!2 ~@2",
// … 94 more lines

More by Rush