Strudelify
The Spirit Of Radio cover art

1980 · Permanent Waves

The Spirit Of Radio

Rush

KeyE majorTempo136 bpm
0:00/0:00
// The Spirit Of Radio — Rush
// 136 bpm, 4/4, key E major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 10, 4/4 at bar 10, 3/4 at bar 98, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 165 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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.

// other · distortion guitar · "guitar"
const distortion_guitar = 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 W X Y Z S T U V W X Y Z W X Y Z O P Q R ~@2 AA@14 W X Y Z AB X Y Z
  AB X Y Z W X Y Z O P Q R ~@2 AA@12 AC AD AE AF@2 AG@2 AH@2 AI@2 AJ AK@2 AL@3 AM AN@3 AO AP AQ AR AS AT AU@3 AV AW AX
  AY AX AY AX AZ@2 BA@2 BB AX AY AX AZ@2 BA@2 BC@2 BD BE BF@2 BG BH BI BJ BK BL@3 BM BN BO BP BQ BR
>`.pickRestart({
  A: "~@5 f#5 e5 d5 e5 a5 [d5,e5] e5 f#5 e5 d5 e5", B: "f#5 e5 d5 [e5,f#5] e5 d5 e5 a5 e5 d5 e5 [e5,f#5] d5 e5 f#5 e5",
  C: "d5 e5 f#5 e5 [d5,e5] a5 e5 d5 e5 f#5 e5 d5 [e5,f#5] e5 d5 e5", // Dsus2 Esus2
  D: "f#5 e5 d5 e5 a5 [d5,e5] e5 f#5 e5 d5 e5 f#5 e5 [d5,e5] f#5 e5", // Dsus2
  E: "d5 e5 a5 e5 d5 e5 [e5,f#5] d5 e5 f#5 e5 d5 e5 f#5 [d5,e5] e5", // Esus2 Dsus2
  F: "a5 e5 d5 e5 f#5 e5 d5 [e5,f#5] e5 d5 e5 f#5 e5 d5 e5 [e5,a5]", // Esus2 A5
  G: "d5 e5 f#5 e5 d5 e5 f#5 e5 [d5,e5] f#5 e5 d5 e5 a5 e5 d5", // Dsus2
  H: "[e5,f#5] e5 d5 e5 f#5 e5 d5 e5 f#5 [d5,e5] e5 a5 e5 d5 e5 f#5", // Esus2 Dsus2
  I: "e5 [d5,e5] f#5 e5 d5 e5 f#4 ~ e4 d4 [c#4,d4] c#4 b3 e4@2 ~", J: "f#3@2 g3@2 ~@2 g#3 a3@3 ~ b3@2 ~ c4 c#4",
  K: "~ e4 e4@2 f#3@2 ~ g3@2 ~@2 g#3 a3@3 ~", L: "b3@2 ~ c4 c#4 e4 ~ e4@2 f#3@2 ~ g3@2 ~@2",
  M: "g#3 a3@3 ~ b3@2 c4 ~ c#4 e4 e4@2 ~ f#3@2", N: "g3@2 ~@2 g#3 ~ a3@3 ~ b3@2 c4 c#4 ~ e4",
  O: "[b4,e5] [b4,e5]@11 ~@4, e4@11 ~@5", P: "b4 [b4,e5]@11 ~@4, [b3,f4]@11 ~@5",
  Q: "[g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~", // E
  R: "[a3,e4,a4] ~@3 [a3,e4,a4] ~@3 [g#3,e4,c#5] ~@3 [g#3,f#4,b4]@4", S: "~@2 e4 ~ [b4,e5]@3 ~ b4@5 ~@3",
  T: "~@2 d#5 ~ [b4,d#5,e5]@3 ~ b4@5 ~@3", U: "~@2 e4 ~ [b4,e5]@3 ~ b4@4 e4@3 ~",
  V: "[a3,e4,a4]@3 ~ a3 ~ c#4@3 ~ b3@3 ~ e4 ~", W: "~@4 e4 ~ b4@5 ~ b4@4, ~@6 e5@3 ~@7",
  X: "b3@3 ~@3 [b4,e5]@2 [b4,e5]@2 b4 ~ f#4@3 ~, ~ f#4@2 ~", Y: "g#3@3 ~ e4 ~ [b4,e5]@3 ~ b4@4 ~@2",
  Z: "[a3,e4,a4]@4 ~@2 [a3,e4,a4]@3 ~ [b3,f#4,b4]@4 ~@2", AA: "f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5",
  AB: "e4@4 e4 ~ b4@5 ~ b4@4, ~@6 e5@3 ~@7", AC: "e4@3 [b3,e4]@4 ~, b3 ~@3",
  AD: "[b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~ [f#3,a4,d5,f#5]@4", AE: "~@2 [f#3,d5,f#5]@7 ~@3 [d5,f#5]@3 ~, ~@2 a4@13 ~",
  AF: "[[a4,d#5,g5]@3 ~ [a4,d#5,f#5]@3 ~ [g#3,b4,e5,g#5]@4 ~@2 [g#3,b4,e5,g#5]@7 ~@3 [b4,e5,a5]@3 ~ [b4,e5,g#5]@3 ~]/2", // Am7b5 D#dim E Esus4 E
  AG: "[[b4,e5,a5]@3 ~ [f#3,a4,d5,f#5]@4 ~@2 [f#3,d5,f#5]@7 ~@3 [f#3,d5,g5]@3 ~ [f#3,a4,d5,f#5]@3 ~ [f#3,a4,d5,g5]@3 ~, ~@10 a4@13 ~@9]/2", // Esus4 D Gmaj7 D
  AH: "[[f#3,a4,d5,f5]@3 ~ e4@6 [b3,e4]@8 ~@2 [b3,e4]@3 ~ [b3,e4]@3 ~ [b3,e4]@3 ~, ~ b3 ~@6]/2", // D E5
  AI: "[[f#3,a4,d5,f#5]@4 ~@2 [f#3,d5,f#5]@7 ~@3 [d5,f#5]@3 ~ [a4,d#5,g5]@3 ~ [a4,d#5,f#5]@3 ~ [g#3,b4,e5,g#5]@4, ~@6 a4@13 ~@13]/2", // D Am7b5 D#dim E
  AJ: "~@2 [g#3,b4,e5,g#5]@7 ~@3 [b4,e5,a5]@3 ~", // E Esus4
  AK: "[[b4,e5,g#5]@3 ~ [b4,e5,a5]@3 ~ [f#3,a4,d5,f#5]@4 ~@2 [f#3,d5,f#5]@7 ~@3 [f#3,d5,g5]@3 ~ [f#3,a4,d5,f#5]@3 ~, ~@14 a4@13 ~@5]/2", // E Esus4 D Gmaj7 D
  AL: "[[f#3,a4,d5,g5]@3 ~ [f#3,a4,d5,f5]@3 ~@5 e4 ~ b4@5 ~ b4@4 b3@3 ~@3 [b4,e5]@2 [b4,e5]@2 b4 ~ f#4@3 ~ g#3@3 ~ e4 ~ [b4,e5]@2, ~@14 e5@3 ~@11 f#4@8 ~@12]/3", // D E5
  AM: "~ b4@2 ~ [a3,e4,a4]@2 ~ [a3,e4,a4]", // A5
  AN: "[~@2 [b3,f#4,b4]@4 ~@2 [b4,e5] [b4,e5]@11 ~@4 b4 [b4,e5]@11 ~@4 [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~, ~@8 e4@11 ~@5 [b3,e4]@11 ~@13]/3", // B5 E5 E E5
  AO: "[g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [g#3,e4,b4,e5] ~ [a3,e4,a4] ~@3 [a3,e4,a4] ~@3", // E A5
  AP: "[g#3,e4,c#5] ~@3 [g#3,f#4,b4]@4 f#5 e5 d#5 e5 a5 e5 d#5 e5", // C#m G#m7
  AQ: "f#5 e5 d#5 e5 g#5 f#5 d#5 e5 f#5 e5 d5 e5 a5 e5 d5 e5", AR: "f#5 e5 d5 e5 g#5 f#5 d5 e5 d5 ~ c5 b4 a4 b4 a4 g4",
  AS: "f#4 g4 f#4 [e4,f#4] e4 d4 a3 ~ f#4 ~ e4 d4 c#4 d4 c#4 b3", AT: "e4@2 ~ f#3@2 g3@2 ~@2 g#3 a3@3 ~ b3@2",
  AU: "[~ c4 c#4 e4 ~ e4@2 f#3@2 ~ g3@2 ~@2 g#3 a3@3 ~ b3@2 ~ c4 c#4 e4 e4@2 ~ f#3@2 ~ g3@2 ~@2 g#3 a3@3 ~ b3@2 c4 ~ c#4 e4 e4@2]/3",
  AV: "~ f#3@2 g3@2 ~@2 g#3 ~ a3@3 b3@2 ~ c4", AW: "c#4 ~ e4!2 f#4 e4 ~@5 [b4,e5,g#5] ~@3 e5",
  AX: "~ b4 ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ a3 ~ a3 ~ [c#5,e5,a5]@3 ~ b3", // E A
  AY: "~ b3 ~ [c#5,e5,a5]@3 ~@5 [b4,e5,g#5] ~@3 e5", // A E
  AZ: "[~ b3 ~ [c#5,e5,a5]@3 ~@5 f#3@3 ~ g3@3 ~ g#3 ~ a3@3 ~ a3 ~ b3 ~ b3 ~ c4]/2", // A
  BA: "[~ c#4 ~ e4 ~@7 f#3@3 ~ g3@3 ~ g#3 ~ a3@3 ~ a3 ~ b3 ~ b3 ~ c4]/2", BB: "~ c#4 ~ e4 ~@7 [b4,e5,g#5] ~@3 e5",
  BC: "[~ c#4 ~ e4 ~@3 d#5@5 ~@3 d5@3 ~ b4 ~ c#5@11]/2", BD: "~@3 b4 ~ b5 b4 b4@5 ~ b4 ~ b4",
  BE: "~ b4 ~ b4 ~ b4@3 ~ b4 ~ a4@5", BF: "[~@3 d5@2 e5 b4 d5@2 e5 b4 d5@2 e5 b4 d5@2 e5 d5 e5 b4 g5 ~ g5@8 ~]/2",
  BG: "~@3 g5 ~ d4 ~ d4@8 ~", BH: "~@3 d4 ~ e4 ~ f4 ~ f#4 ~ g4 ~ g#4 ~ a4", BI: "~ d4 ~@3 a5 b5 d6!4 a5 b5 d6!3",
  BJ: "d6!2 a5 b5 d6!3 a5 b5 d6 ~ a5 b5 d6 ~ a5", BK: "b5 d6 ~ a5 b5 d6 ~ a5 b5 d6 ~ a5 b5 d6 ~@2",
  BL: "[d5 e5 g5 e5 d5 b4 d5 e5 d#5 ~@18 f#3@2 ~ g3@2 g#3 ~ a3@3 ~ b3@2 ~ c4 c#4 e4 ~@4, ~@9 e5@37 ~@2]/3",
  BM: "~ f#3@2 g3@2 ~ g#3 ~ a3@3 ~ b3@2 c4 ~", BN: "c#4 e4 ~@4 f#3@2 ~ g3@2 ~ g#3 a3@3",
  BO: "~ b3@2 ~ c4 c#4 ~ e4 ~@4 f#3@2 ~ g3", BP: "g#3 ~ b3 ~@4 f#3@2 ~ g3 g#3 ~ b3 f#5 e5",
  BQ: "d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 g#5 f#5 d5 e5 [e4,g#4,b4,e5] ~", BR: "~@6 [e4,g#4,b4,e5]@5 ~@3 [e4,g#4,b4,e5] ~",
})).s("gm_distortion_guitar").gain(0.51).pan(0.4)

// bass · electric bass pick · "bass"
const bass = note(`<
  ~@2 A B C D@2 E F G H I J K L M N O P Q R S T Q R U P Q R U T Q R S T Q R U T Q R S L V N W L@5 X Y X L Z@2 X Y X L AA
  T AB AC AD T AB AC AD T AB AC AD T AB AC AD L V N W L@5 X Y X L X L X Y X AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR
  AS AT AU AV@2 AW AX AY@3 AZ BA BB@3 BC BD BE BF BG BH BI BJ@2 BK@2 BL BG BH BI BM@2 BN@2 BO@2 BP@2 BQ@2 BP@6 BR BS BT
  BU BV BW BX BY
>`.pickRestart({
  A: "~ e2@5 ~@2", B: "d4!2 ~@6 b3 c#4@3 ~@2 b3!2", C: "~@2 a3!2 ~@3 a3!2 d3 ~@3 a3 [d3,a3] ~",
  D: "[~ f#3 g3 g#3 a3 g#3 f#3 e3 d#3 ~ d#3 e3 ~@3 e2@13 ~ e3!2 ~]/2",
  E: "~ f#3 g#3!2 a3 ~ b3 a3 g3 [g3,a3] f#3 e3 f#3 e3 d3 c#3", // Gsus2
  F: "d3 [b2,c#3] c#3 b2 a2 ~ f#3 ~ e3 d#3 [c#3,d#3] c#3 b2 e2@3", G: "f#2@2 g2@3 ~ g#2 a2@3 ~ b2@2 ~ c3 d3",
  H: "~ e3 e2@2 f#2@2 ~ g2@3 ~ g#2 a2@3 ~", I: "b2@2 ~ c3 d3 e3 ~ e2@2 f#2@2 ~ g2@3 ~",
  J: "g#2 a2@3 ~ b2@2 c3 ~ d3 e3 e2@3 f#2@2", K: "g2@3 ~ g#2 ~ a2@3 ~ b2@2 c3 d3 ~ e3", L: "e2@11 ~@5",
  M: "b2@8 ~@4 c#3 b2 a2 g#2", N: "g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~ g#2 ~", O: "a2!3 ~ a2!3 ~ a2 ~@3 b2@3 ~",
  P: "e2@4 ~@2 e2@3 ~ e2@3 ~ e2 ~", Q: "b2@4 ~@2 d#3@2 d#3@3 ~ c#3 ~ b2 a2", R: "g#2@6 g#2@2 g#2@3 ~ g#2 ~ g#2!2",
  S: "a2@4 ~@2 c#3@3 ~ b2@3 ~ g#2 ~", T: "[e2,e4]@4 ~@2 e2@3 ~ e2@3 ~ e2 ~", U: "a2@4 ~@2 c#3@3 ~ b2@5 ~",
  V: "b2@8 ~@4 c3@2 c3 b2", W: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ b2@4 ~@2", X: "f#2@11 ~@5", Y: "g#2@11 ~@5",
  Z: "[e2@27 ~@5]/2", AA: "e2!8, e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  AB: "[b2,b3]@4 ~@2 d#3@2 d#3@3 ~ c#3 ~ b2 a2", AC: "g#2@6 g#2@2 g#2@3 ~ g#2 ~ g#2!2, g#3@3 ~@13",
  AD: "[a2,a3]@4 ~@2 [c#3,a3]@3 ~ [b2,b3]@4 g#2 ~", AE: "[e2,e4]@2 ~ [e2,e4]@4 ~",
  AF: "[e2,e4]@3 ~ [e2,e4]@3 ~ [e2,e4]@3 ~ f#2@4", AG: "~@2 f#2@7 ~@3 f#2 ~ b2 ~", AH: "e3@3 ~ e3@3 ~ g#2@4 ~@2 g#2@2",
  AI: "~@2 e3 ~ e3 ~ g#2 ~ e3 ~ g#2 ~ e3 ~ g#2 ~", AJ: "e3 ~@3 f#2 ~ f#2@3 ~ f#2@3 ~@3",
  AK: "~ f#2@4 ~ b2 ~ e3 ~ b2 ~ e3 ~ b2 ~",
  AL: "[e3 ~ b2 ~ [e2,e4]@4 ~@2 [e2,e4]@8 ~@2 [e2,e4]@3 ~ [e2,e4]@3 ~ [e2,e4]@3 ~]/2", AM: "f#2@4 ~@2 f#2@7 ~@3",
  AN: "f#2 ~ b2 ~ e3@3 ~ e3@3 ~ g#2@4", AO: "~@2 g#2@3 ~ e3 ~ e3 ~ g#2 ~ e3 ~ g#2 ~",
  AP: "e3 ~ g#2 ~ e3 ~@3 f#2 ~ f#2@3 ~ f#2@2", AQ: "~@5 f#2@4 ~ b2 ~ e3 ~ b2 ~",
  AR: "e3 ~ b2 ~ e3 ~ b2 ~ [e2,e4]@4 ~@2 e2@2", AS: "~@2 e2@3 ~ e2 ~ b2@4 ~@2 d#3@2",
  AT: "d#3@3 ~ c#3 ~ b2 a2 g#2@6 g#2@2, ~@8 g#3@3 ~@5", AU: "g#2@3 ~ g#2 ~ g#2!2 [a2,a3]@4 ~@2 [c#3,a3]@2",
  AV: "[~@2 [b2,b3]@4 g#2 ~ e2@11 ~@5 b2@8]/2", AW: "~@4 c#3 b2 a2 g#2!2 ~ g#2 ~ g#2 ~ g#2 ~",
  AX: "g#2 ~ g#2 ~ g#2 ~ g#2 ~ a2!3 ~ a2!3 ~", AY: "[a2 ~@3 b2@3 ~ e2@11 ~@5 e2@11 ~@5 d4 ~ c#4 b3 a3 b3 a3 g3]/3",
  AZ: "f#3 g3 f#3 e3 f#3 e3 d3 a2 f#3 ~ e3 d3 c#3 d3 c#3 b2", BA: "e2@3 f#2@2 g2@2 ~@2 g#2 a2@3 ~ b2@2",
  BB: "[~ c3 d3 e3 ~ e2@2 f#2@2 ~ g2@3 ~ g#2 a2@3 ~ b2@2 ~ c3 d3 e3 e2@3 f#2@2 ~ g2@3 ~ g#2 a2@3 ~ b2@2 c3 ~ d3 e3 e2@2]/3",
  BC: "~ f#2@2 g2@3 ~ g#2 ~ a2@3 b2@2 ~ c3", BD: "d3 ~ e3!2 f#3 e3 ~ [e3,f#4] ~ [e3,f#4] ~@6", BE: "~@7 a3 ~ a3 ~@5 b2",
  BF: "~ b2 ~ d#3 ~ b2 ~ [e3,f#4] ~ [e3,f#4] ~@6", BG: "~@7 a3 ~ a3 ~@5 [b2,e3]",
  BH: "~ b2 f#3 b2 ~@3 e3@2 f#4 ~@5 [e3,f#3], ~@7 f#4 ~@8", BI: "~ e3 ~@5 a3 ~ a3 ~@5 b2",
  BJ: "[~ b2 ~ d#3 ~ e2@2 f#4@2 e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c#3]/2",
  BK: "[~ c#3 ~ e3 ~ e2@2 f#4@2 e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3, ~@5 f#4 ~@26]/2",
  BL: "~ c#3 ~ e3 ~ [f#3,f#4] ~ [e3,f#4] ~ [e3,f#4] ~@6", // F# Esus2
  BM: "[~ b2 ~ d#3 ~ e2@2 f#4@2 e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c#3, ~@7 e2 ~@24]/2",
  BN: "[~ c#3 ~ e3 ~ e2@2 f#4@2 e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3, ~@5 f#4 ~ e2 ~@24]/2",
  BO: "[~ c#3 ~ e3 ~ [f#3,f#4] ~ e2 ~ e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3]/2", // F#
  BP: "[~ c#3 ~ e3 ~ e2 ~ e2 ~ e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3]/2",
  BQ: "[~ c#3 ~ [e3,c#5] ~ e2 ~ e2 ~ e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3]/2", // C#m
  BR: "~ c#3 ~ e3 ~ e2 ~ [e2,f4]@3 ~ f#2@2 ~ g2@2", BS: "g#2 ~ a2@3 ~ b2@2 ~ c3 c#3 e3 ~ e2@3",
  BT: "~ f#2@2 g2@2 ~ g#2 ~ a2@3 ~ b2@2 c3 ~", BU: "c#3 e3 e2@3 ~ f#2@2 ~ g2@2 ~ g#2 a2@3",
  BV: "~ b2@2 ~ c3 c#3 ~ e3 [e2,f#4]@3 ~ f#2@2 ~ g2", BW: "g#2 ~ b2 [e2,f#4]@3 ~ f#2@2 ~ g2 g#2 ~ b2 e2 ~",
  BX: "~@14 e2 ~", BY: "~@6 e2@5 ~@3 e2 ~",
})).s("gm_electric_bass_pick").gain(0.51)

// other · guitar harmonics · "harmonics"
const guitar_harmonics = note("<~@8 A@2 B C D@2 ~@32 E ~@35 E ~ F@3 ~@58 G@5 ~@7 C A@2 B H ~@3>".pickRestart({
  A: "[~@13 e5@7 ~@12]/2", B: "~@2 e5@7 ~@7", C: "~@7 e5@7 ~@2", D: "[~@11 e5@7 ~@14]/2", E: "[b4,g5]@11 ~@5",
  F: "[e4@43 ~@5]/3", G: "[~@7 d5@11 ~@5 c5@11 ~@5 b4@11 ~@5 b4@11 ~@14]/5", H: "~@8 e5@7 ~",
})).s("gm_guitar_harmonics").gain(0.51)

// chords · string ensemble 1 · "strings"
const string_ensemble_1 = note(`<
  A B C ~@5 D@2 E F G@2 H I J K L M L N O M L K L M L K L P Q N L P L K L P L K H I J K R@2 S@2 R T U T V@2 W T U T X V
  L P L Y L P L Y L P L Y L P L Y H Z AA AB AC@5 R@3 V AD W T U T H AE@5 AF AG@2 AH AI@8 AJ@7 AK AL AM@3 AN AO AP AQ AP
  AQ AP AR@2 AS@2 AT AP AQ AP AR@2 AS@2 AU@2 AV@2 AW@2 AX@2 AY@2 AZ@2 BA BB BC BD BE@2 BF BG
>`.pickRestart({
  A: "~@5 f#5 e5 d5 e5 a5 [d5,e5] e5 f#5 e5 d5 e5", B: "f#5 e5 d5 [e5,f#5] e5 d5 e5 a5 e5 d5 e5 [e5,f#5] d5 e5 f#5 e5",
  C: "d5 e5 ~@14", D: "[~@13 e5@7 ~@12]/2", E: "~@2 e5@7 ~@7", F: "~@7 e5@7 ~@2", G: "[~@11 e5@7 ~@14]/2",
  H: "[e4,b4,e5]@11 ~@5", I: "[b3,f4,b4]@11 ~@5", J: "[g#4,b4,e5]@11 ~@5", K: "[a4,e5,a5]@5 ~@3 [b4,f#5,b5]@5 ~@3",
  L: "[e4,g#4,b4]@11 ~@5", M: "[e4,b4,d#5,f#5]@11 ~@5", N: "[a4,e5,a5]@11 ~@5", O: "[b4,e5,g#5]@11 ~@5",
  P: "[b4,d#5,f#5]@11 ~@5", Q: "[e4,g#4,b4,g#5]@11 ~@5", R: "~@2 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~",
  S: "f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5", T: "~@2 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~, f#4@11 ~@5",
  U: "~@2 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~, g#4@11 ~@5",
  V: "f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5, e4@11 ~@5",
  W: "~@2 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~, e4@11 ~@5",
  X: "f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5, [a3,e4]@11 ~@5", Y: "[e4,a4,e5]@5 ~@3 [e4,b4,e5]@5 ~@3",
  Z: "[b3,e4,b4]@11 ~@5", AA: "[g#3,e4,b4,e5]@11 ~@5", AB: "[a3,e4,a4]@5 ~@3 [g#3,e4,c#5]@5 ~@3",
  AC: "[~@2 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~@3 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~ f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5 ~@2 d5 ~ e5 ~ d5 ~@3 f#5 ~ e5 ~ d5 ~, e4@15 ~]/5",
  AD: "f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5, f#4@11 ~@5",
  AE: "[e4@11 ~ a4@11 ~@5 a4@11 ~ b4@11 ~@5 b4@11 ~ a4@11 ~]/5", AF: "~@4 a4@11 ~", AG: "~@4 e4@11 ~", AH: "a4@11 ~@5",
  AI: "[a4@11 ~ b4@11 ~@5 b4@11 ~ a4@11 ~@5 a4@11 ~@5 [e4,g#4,b4]@11 ~@5 [b4,d#5,f#5]@11 ~@5 [e4,g#4,b4]@11 ~@5 [e4,a4,e5]@5 ~@3]/8", // E B E A5
  AJ: "[[f#4,b4,e5]@5 ~@3 [e4,b4,e5]@11 ~@5 [b3,e4,b4]@11 ~@5 [g#3,e4,b4,e5]@11 ~@5 [a3,e4,a4]@11 ~@5 f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 f#5 e5 d5 e5 d5 ~ c5 b4 a4 b4 a4 g4, ~@72 e4@11 ~@5 e4@11 ~@13]/7", // Esus2 E5 E A5
  AK: "f#4 g4 f#4 [e4,f#4] e4 d4 a3 ~ f#4 ~ e4 d4 c#4 d4 c#4 b3", AL: "e4@2 ~ f#3@2 g3@2 ~@2 g#3 a3@3 ~ b3@2",
  AM: "[~ c4 c#4 e4 ~ e4@2 f#3@2 ~ g3@2 ~@2 g#3 a3@3 ~ b3@2 ~ c4 c#4 e4 e4@2 ~ f#3@2 ~ g3@2 ~@2 g#3 a3@3 ~ b3@2 c4 ~ c#4 e4 e4@2]/3",
  AN: "~ f#3@2 g3@2 ~@2 g#3 ~ a3@3 b3@2 ~ c4", AO: "c#4 ~ e4 ~@8 [b4,e5,g#5] ~@4",
  AP: "~@3 [b4,e5,g#5] ~ [b4,e5,g#5] ~@5 [c#5,e5,a5]@3 ~@2", AQ: "~@3 [c#5,e5,a5]@3 ~@5 [b4,e5,g#5] ~@4",
  AR: "[~@3 [c#5,e5,a5]@3 ~@5 f#3@3 ~ g3@3 ~ g#3 ~ a3@3 ~ a3 ~ b3 ~ b3 ~ c4]/2", // A
  AS: "[~ c#4 ~ e4 ~@7 f#3@3 ~ g3@3 ~ g#3 ~ a3@3 ~ a3 ~ b3 ~ b3 ~ c4]/2", AT: "~ c#4 ~ e4 ~@7 [b4,e5,g#5] ~@4",
  AU: "[~ c#4 ~ e4 ~@3 d#5@4 f#3@3 ~ [g3,d5]@3 ~ [g#3,b4] ~ [a3,c#5]@2 ~@2 a3 ~ b3 ~ b3 ~ c4, ~@23 c#5@9]/2", // G5 G#m A
  AV: "[~ c#4 ~ [e4,b4] ~ b5 b4 b4@4 f#3@2 b4 ~ g3@2 b4 ~ [g#3,b4] ~ [a3,b4]@2 b4 ~ [a3,b4] ~ b3 ~ b3 ~ c4, ~@15 b4 ~@11 a4@5]/2", // E5 G#m Asus2
  AW: "[~ c#4 ~ d5@2 e5 b4 d5@2 e5 b4 [f#3,d5]@2 e5 b4 [g3,d5]@2 e5 d5 [g#3,e5] b4 a3@2 ~@2 a3 ~ b3 ~ b3 ~ c4, ~@3 e4 ~@17 g5 ~ g5@8 ~]/2", // D G5 C#m
  AX: "[~ c#4 ~ [e4,g5] ~ d4 ~@5 f#3@3 ~ g3@3 ~ [g#3,d4] ~ a3@2 f4 ~ [a3,f#4] ~ [b3,g4] ~ [b3,g#4] ~ [c4,a4], ~@7 d4@8 ~@6 e4 ~@10]/2", // Em G#dim D Em E F
  AY: "[~ [c#4,d4] ~ e4 ~ a5 ~ d6!4 a5 b5 d6!3 d6!2 a5 [g#3,b5] d6!3 a5 b5 [a3,d6] ~ [b3,a5] b5 [b3,d6] ~ [c4,a5], ~@11 f#3@3 ~ g3@3 ~@3 a3@3 ~@8]/2", // Dmaj7 G#m D5 B7 Bm F
  AZ: "[b5 [c#4,d6] ~ [e4,a5] b5 d6 ~ a5 b5 d6 ~ a5 b5 d6 ~@2 d5 e5 g5 [g#3,e5] d5 b4 d5 e5 d#5 a3 ~ b3 ~ b3 ~ c4, ~@11 f#3@3 ~ g3@3 ~@3 a3@3 ~ e5@7]/2", // Dmaj7 A5 C#m
  BA: "~ c#4 ~ e4 ~@3 d4@3 ~@4 g3@2", BB: "g#3 ~ a3@3 ~ b3@2 ~ c4 c#4 e4 ~@4", BC: "~@3 g3@2 ~ g#3 ~ a3@3 ~ b3@2 c4 ~",
  BD: "c#4 e4 ~@7 g3@2 ~ g#3 a3@3", BE: "[~ b3@2 ~ c4 c#4 ~ e4 ~@7 g3@2 ~ g#3 a3@3 ~ b3@2 ~ c4 c#4 ~ e4 f#5 e5]/2",
  BF: "d5 e5 a5 e5 d5 e5 f#5 e5 d5 e5 g#5 f#5 d5 e5 [e4,g#4,b4,e5] ~", BG: "~@6 [e4,g#4,b4,e5]@5 ~@3 [e4,g#4,b4,e5] ~",
})).s("gm_string_ensemble_1").gain(0.26).pan(0.4)

// bass · slap bass 2 · "slap"
const bass_2 = note(`<
  ~@7 A B C D E F G H I J K L M N O P M N Q L M N Q P M N O P M N Q P M N O H R J S H@5 T U T H V@2 T U T H ~ W ~ X ~@2
  Y ~@2 Z ~ X ~@2 AA ~@2 H R J AB H@5 T U T H T H T U T AC AD AE AF AG AH AI AJ@2 AK AL AM AN AO AP AQ AR AS AT@2 AU AV
  AW@3 AX AY AZ@3 BA BB BC BD BE BF BG BH@4 BI BE BF BG BJ@8 BK@8 BL@8
>`.pickRestart({
  A: "~@6 b3 a3 ~@8", B: "~@13 e2@3", C: "~@7 a2@3 ~ b2@2 ~ c3 d3", D: "~ e3 e2@2 f#2@2 ~ g2@3 ~ g#2 a2@3 ~",
  E: "b2@2 ~ c3 d3 e3 ~ e2@2 f#2@2 ~ g2@3 ~", F: "g#2 a2@3 ~ b2@2 c3 ~ d3 e3 e2@3 f#2@2",
  G: "g2@3 ~ g#2 ~ a2@3 ~ b2@2 c3 d3 ~ e3", H: "e2@11 ~@5", I: "b2@8 ~@4 c#3 b2 a2 g#2",
  J: "g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3", K: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~@3 b2@3 ~", L: "e2@4 ~@2 e2@3 ~ e2@3 ~ e2 ~",
  M: "b2@4 ~@2 d#3@2 d#3@3 ~ c#3 ~ b2 a2", N: "g#2@6 g#2@2 g#2@3 ~ g#2 ~ g#2!2", O: "a2@4 ~@2 c#3@3 ~ b2@3 ~ g#2 ~",
  P: "[e2,e4]@4 ~@2 e2@3 ~ e2@3 ~ e2 ~", Q: "a2@4 ~@2 c#3@3 ~ b2@5 ~", R: "b2@8 ~@4 c3@2 c3 b2",
  S: "a2 ~@3 a2 ~@3 a2 ~ b2@4 ~@2", T: "f#2@11 ~@5", U: "g#2@11 ~@5", V: "[e2@27 ~@5]/2", W: "e4 ~@3", X: "~@14 g#2!2",
  Y: "~@12 c#3 ~ b2 a2", Z: "~@10 e2@3 ~ e2 ~", AA: "~@14 b2 a2", AB: "a2 ~@3 a2 ~@3 a2 ~@7", AC: "e4@2 ~ e4@4 ~",
  AD: "[e2,e4]@3 ~ e4@3 ~ [e2,e4]@3 ~ f#2@4", AE: "~@2 f#2@7 ~@3 f#2 ~ b2 ~", AF: "e3@3 ~ e3@3 ~ g#2@4 ~@2 g#2@2",
  AG: "~@2 e3 ~ e3 ~ g#2 ~ e3 ~ g#2 ~ e3 ~ g#2 ~", AH: "e3 ~@3 f#2 ~ f#2@3 ~ f#2@3 ~@3",
  AI: "~ f#2@4 ~ b2 ~ e3 ~ b2 ~ e3 ~ b2 ~",
  AJ: "[e3 ~ b2 ~ [e2,e4]@4 ~@2 [e2,e4]@8 ~@2 [e2,e4]@3 ~ [e2,e4]@3 ~ [e2,e4]@3 ~]/2", AK: "f#2@4 ~@2 f#2@7 ~@3",
  AL: "f#2 ~ b2 ~ e3@3 ~ e3@3 ~ g#2@4", AM: "~@2 g#2@3 ~ e3 ~ e3 ~ g#2 ~ e3 ~ g#2 ~",
  AN: "e3 ~ g#2 ~ e3 ~@3 f#2 ~ f#2@3 ~ f#2@2", AO: "~@5 f#2@4 ~ b2 ~ e3 ~ b2 ~",
  AP: "e3 ~ b2 ~ e3 ~ b2 ~ e2@4 ~@2 e2@2", AQ: "~@2 e2@3 ~ e2 ~ b2@4 ~@2 d#3@2",
  AR: "d#3@3 ~ c#3 ~ b2 a2 g#2@6 g#2@2, ~@8 g#3@3 ~@5", AS: "g#2@3 ~ g#2 ~ g#2!2 a3@4 ~@2 a3@2",
  AT: "[~@2 b2@3 ~ g#2 ~ e2@11 ~@5 b2@8]/2", AU: "~@4 c#3 b2 a2 g#2!2 ~@3 g#2 ~@3", AV: "g#2 ~@3 g#2 ~@3 a2 ~@7",
  AW: "[a2 ~@3 b2@3 ~ e2@11 ~@5 e2@11 ~@5 d4 ~@2 b3 ~ b3 ~ g3]/3",
  AX: "~ g3 ~ e3 f#3 ~ d3 a2 f#3 ~ e3 d3 c#3 d3 c#3 b2", AY: "e2@3 f#2@2 g2@2 ~@2 g#2 a2@3 ~ b2@2",
  AZ: "[~ c3 d3 e3 ~ e2@2 f#2@2 ~ g2@3 ~ g#2 a2@3 ~ b2@2 ~ c3 d3 e3 e2@3 f#2@2 ~ g2@3 ~ g#2 a2@3 ~ b2@2 c3 ~ d3 e3 e2@2]/3",
  BA: "~ f#2@2 g2@3 ~ g#2 ~ a2@3 b2@2 ~ c3", BB: "d3 ~ e3!2 f#3 e3 ~ f#4 ~ f#4 ~@6", BC: "~@7 a3 ~ a3 ~@5 b2",
  BD: "~ b2 ~ d#3 ~ b2 ~ f#4 ~ f#4 ~@6", BE: "~@7 a3 ~ a3 ~@5 e3", BF: "~ b2 ~ b2 ~@3 f#4 ~ f#4 ~@5 e3",
  BG: "~ e3 ~@5 a3 ~ a3 ~@5 b2",
  BH: "[~ b2 ~ d#3 ~ e2@2 f#4@2 e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@4 ~@2 b2@3 ~ c#3 ~ c#3 ~ e3 ~ f#4 ~ f#4@2 e2 ~ f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3, ~@25 a2@15 ~@24]/4",
  BI: "~ c#3 ~ e3 ~ f#4 ~ f#4 ~ f#4 ~@6",
  BJ: "[~ b2 ~ d#3 ~ e2@2 [e2,f#4]@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c#3 ~ c#3 ~ e3 ~ e2@2 [e2,f#4]@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3 ~ c#3 ~ e3 ~ f#4 ~ e2@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3 ~ c#3 ~ e3 ~ e2@2 e2@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3, ~@9 e2@28 f#4 ~@3 e2@30 ~@2 e2@28 ~@4 e2@23]/8", // Esus2
  BK: "[~ c#3 ~ c#5 ~ e2@2 e2@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3 ~ c#3 ~ e3 ~ e2@2 e2@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3 ~ c#3 ~ e3 ~ e2@2 e2@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3 ~ c#3 ~ e3 ~ e2@2 e2@2 ~@2 f#2@3 ~ g2@3 ~ g#2 ~ a2@3 ~ a2 ~ b2@3 ~ c3, ~@9 e2@28 ~@4 e2@28 ~@4 e2@28 ~@4 e2@23]/8",
  BL: "[~ c#3 ~ e3 ~ e2@2 f4@3 ~ f#2@2 ~ g2@2 g#2 ~ a2@3 ~ b2@2 ~ c3 c#3 e3 ~@5 f#2@2 g2@2 ~ g#2 ~ a2@3 ~ b2@2 c3 ~ c#3 e3 ~@4 f#2@2 ~ g2@2 ~ g#2 a2@3 ~ b2@2 ~ c3 c#3 ~ e3 f#4@3 ~ f#2@2 ~ g2 g#2 ~ b2 f#4@3 ~ f#2@2 ~ g2 g#2 ~ b2 e2@16 e2@8 e2@9 ~, ~@7 e2@22 e2@21 e2@22 e2@11 e2@11 ~@34]/8",
})).s("gm_slap_bass_2").gain(0.51)

// drums · rim
const rim = s("rim").struct("<~@7 A B C D E ~ F ~@5 E ~ G ~ E ~ G ~ E ~ G ~ E ~ G ~ E ~ G ~ E ~ G ~@123>".pickRestart({
  A: "~@15 x", B: "~ x!2 ~@7 x!2 ~@4", C: "~ x ~@6", D: "~@7 x ~@8", E: "~@3 x", F: "x", G: "~@3 x ~@4",
})).gain(0.41).pan(0.3)

// … 183 more lines

More by Rush