Strudelify

Won't Get Fooled Again

The Who

KeyA majorTempo132 bpm
0:00/0:00
// Won't Get Fooled Again — The Who
// 132 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 261, 4/4 at bar 262) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 287 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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 · rock organ · "Synth"
const rock_organ = note(`<
  A B C D E F G F G F G H I J K L@2 M N O P O P O P O P O P O P Q R O P O P O P Q R S T U V S T W Q W Q W X W Y@2 O P O
  P O P O P O P O P O P Q R O P O P O P Q R S T U V S T W Q W Q W X W Y@2 O P O P Z AA Z AB AC AA AD AE AF AG AD AG AH
  AI AJ AK AL@2 Q@2 AM@2 AN@2 AO AP AO AP AO AP AO AP AO AP AO AP AO AP AO AP AO AP AO AP AO AP AO AP AQ@8 O P O P O P Q
  R O P O P O P Q R S T U V S T W Q W Q W X W Y@2 O P Z AA Z AB O AR O P O P O P O P O P O P O P O P O P O P AS AT AU AV
  AW AX AY@2 AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF CG CF CH
  CI CG CJ CK CL CM CL CM CL CM CL CM CL CM CL CM CL CM CL CN CO CP CQ CR CS CT ~@3
>`.pickRestart({
  A: "[a4,e5,a5,b5]!4 [a4,e5,a5] [a4,e5,b5] [a4,e5,c#6] [a4,e5,b5]", B: "[a4,e5,e6]!6 [a4,e5,d6] [a4,e5,c#6]",
  C: "[a4,g5,d6]!6 [a4,g5,c#6] [a4,g5,b5]", D: "[a4,f5,a5,c#6]!4 [a4,f5,a5,d6]!4",
  E: "[a4,f5,a5,c#6] [a4,f5,a5,b5] [a4,f5,a5,c#6] [a4,f5,a5,d6] [a4,f5,a5,c#6] [a4,f5,a5,b5] [a4,f5,a5,c#6] [a4,f5,a5,d6]", // Aaug Bm7b5 Aaug Dm Aaug Bm7b5 Aaug Dm
  F: "[a4,g5,e6] [a4,g5,d6] [a4,g5,c#6] [a4,g5,a5] [a4,g5,e6] [a4,g5,d6] [a4,g5,c#6] [a4,g5,a5]", // A7 Dsus4 A7 Dsus4 A7
  G: "[a4,f5,e6] [a4,f5,d6] [a4,f5,c#6] [a4,f5,a5] [a4,f5,e6] [a4,f5,d6] [a4,f5,c#6] [a4,f5,a5]", // Fmaj7 Dm Aaug Dm Fmaj7 Dm Aaug Dm
  H: "[a4,e5] [a4,e5,a5,c#6] [a4,e5,a5,d6] [a4,e5,a5,c#6] [a4,e5,a5] [a4,e5,a5,c#6] [a4,e5,a5,d6] [a4,e5,a5,c#6], a5 ~@15", // A5 A Asus4 A A5 A Asus4 A
  I: "[a4,d5,a5] [a4,d5,a5,c#6] [a4,d5,a5,d6] [a4,d5,a5,c#6] [a4,d5,a5] [a4,d5,a5,c#6] [a4,d5,a5,d6] [a4,d5,a5,c#6]", // D5 Dmaj7 D5 Dmaj7 D5 Dmaj7 D5 Dmaj7
  J: "[a4,f5,a5] [a4,f5,a5,c#6] [a4,f5,a5,d6] [a4,f5,a5,c#6] [a4,f5,a5] [a4,f5,a5,c#6] [a4,f5,a5,d6] [a4,f5,a5,c#6]", // Dm Aaug Dm Aaug Dm Aaug Dm Aaug
  K: "[a4,g5,a5] [a4,g5,a5,c#6] [a4,g5,a5,d6] [a4,g5,a5,c#6] [a4,g5,a5] [a4,g5,a5,c#6] [a4,g5,a5,d6] [a4,g5,a5,c#6]", // A7 Dsus4 A7 Dsus4 A7
  L: "[a4,f#5,a5] [a4,f#5,a5,c#6] [a4,f#5,a5,d6] [a4,f#5,a5,c#6] [a4,f#5,a5] [a4,f#5,a5,c#6] [a4,f#5,a5,d6] [a4,f#5,a5,c#6]", // D F#m D F#m D F#m D F#m
  M: "[g4,a5,c#6] ~ [a4,e5,a5,c#6]@2 [a4,e5,a5,c#6]@2 [a4,e5,a5,c#6]@2 [a4,e5,a5,c#6]@2 [a4,e5,a5,c#6]@2 [a4,e5,a5,c#6]@2 [a4,e5,a5,c#6]@2, [a4,e5] ~@7", // A7 A A5
  N: "[a4,e5,a5,c#6] [a4,e5,a5,b5]!2 [a4,d5,f#5,a5]!5", O: "[a4,e5,a5,c#6]!8",
  P: "[a4,e5,a5,c#6] [a4,d5,a5,b5]!2 [a4,d5,f#5,a5]!5", Q: "[e5,g#5,b5]!8",
  R: "[e5,g#5,b5] [c5,e5,g5]!2 [g4,d5,g5,b5]!5", S: "[a5,e6,a6]!3 [e5,a5,c#6]!4 [d5,f#5,a5]",
  T: "[d5,f#5,a5]!3 [c#5,e5,a5]!5", U: "[c#5,e5,a5] [d5,f#5,a5]!2 [c#5,e5,a5]!5",
  V: "[c#5,e5,a5] [d5,f#5,a5]!2 [e5,a5,c#6]!4 [a5,e6,a6]", W: "[d5,g5,b5]!8", X: "[d5,f#5,a5]!5 [d5,g5,b5]!3",
  Y: "[d5,f#5,a5]/2", Z: "[e5,a5]!5 ~@3", AA: "~ [c#5,e5,a5] [d5,f#5,a5] [c#5,e5,a5] [d5,f#5,a5]!4",
  AB: "~@3 [c#5,e5,a5] [d5,f#5,a5]!4", AC: "[e5,a5]!5 [d5,g5] [e5,a5] ~", AD: "[c#5,e5,a5]!8",
  AE: "[c#5,e5,a5]!4 [d5,f#5,a5]!4", AF: "[e5,a5]!4 [c#5,e5,a5]!4", AG: "[c#5,e5,a5]!3 [d5,f#5,a5]!5",
  AH: "[e5,a5,c#6]!8", AI: "[e5,a5,c#6] [f#5,a5,d6]!7", AJ: "[e5,a5,c#6]!5 [e5,a5,d6] [e5,a5,e6] [f#5,a5,d6]",
  AK: "[f#5,a5,d6]!2 [e5,a5,c#6]@2 [d5,f#5,b5]@2 [c#5,e5,a5]@2", AL: "[d#5,f#5,b5]!8",
  AM: "[a4,e5,a5]!4 [e5,a5] [c#5,e5,a5]!3", AN: "[b4,b5]!8", AO: "[c#5,f#5,b5]!8", AP: "[c#5,f#5,b5]!3 [e5,g#5,b5]!5",
  AQ: "[a3,a4,e5]!8", AR: "[a4,e5,a5,c#6] [a4,d5,g5,b5]!2 [a4,d5,f#5,a5] [a4,d5,f#5]@2 ~@2", AS: "[a4,b4,e5]!8",
  AT: "[a4,d5,g5]!3 [a4,d5,a5]!5", AU: "[e4,a4,e5]!8", AV: "[d4,a4,e5]!8", AW: "[e4,a4,c#5]!5 [a4,e5,a5]!3",
  AX: "[a4,e5,a5]!4 [d4,g4,d5] [d4,g4,b4] [d4,g4,d5] [d4,g4,b4]", // A5 G5 G G5 G
  AY: "[d4,g4,d5] [d4,g4,b4] [d4,g4,d5] [d4,g4,b4] [d4,g4,d5] [d4,g4,b4] [d4,g4,d5] [d4,g4,b4]", // G5 G G5 G G5 G G5 G
  AZ: "[e4,a4,d5] [e4,a4,b4] [e4,a4,d5] [e4,a4,b4] [e4,a4,d5] [e4,a4,b4] [e4,a4,d5] [e4,a4,b4]", // Dsus2 Esus4 Dsus2 Esus4 Dsus2 Esus4 Dsus2 Esus4
  BA: "[e4,a4,c5] [e4,a4,d5] [e4,a4,c5] [e4,a4,b4] [e4,a4,c5] [e4,a4,b4] [e4,a4,c5] [e4,a4,b4]", // Am Dsus2 Am Esus4 Am Esus4 Am Esus4
  BB: "[e4,a4,c5] [e4,a4,b4] [e4,a4,c5] [e4,a4,b4] [f4,a4,c5] [e4,a4,b4] [f4,a4,c5] [e4,a4,b4]", // Am Esus4 Am Esus4 F Esus4 F Esus4
  BC: "[e4,a4,d5] [e4,a4,b4] [e4,a4,d5]!2 [e4,a4,c#5] [e4,a4,b4] [e4,a4,c#5] [e4,a4,b4]", // Dsus2 Esus4 Dsus2 A Esus4 A Esus4
  BD: "[a3,e4,c#5] [a3,e4,d5] [a3,e4,c#5] [a3,e4,b4] [a3,e4,c#5] [a3,e4,d5] [a3,e4,c#5] [a3,e4,b4]", // A Asus4 A Asus2 A Asus4 A Asus2
  BE: "[a3,f4,c#5] [a3,f4,d5] [a3,f4,c#5] [a3,f4,b4] [a3,f4,c#5] [a3,f4,d5] [a3,f4,c#5] [a3,f4,b4]", // Aaug Dm Aaug Bm7b5 Aaug Dm Aaug Bm7b5
  BF: "[e4,a4] [e4,a4,c#5] [e4,a4,d5] [e4,a4,c#5] [e4,a4,d5] [e4,a4,c#5] [e4,a4,d5] [e4,a4,c#5]", // A5 A Dsus2 A Dsus2 A Dsus2 A
  BG: "[f4,a4,c#5] [f4,a4,e5] [f4,a4,d5] [f4,a4,c#5] [f4,a4,b4] [f4,a4,d5] [f4,a4,c#5] [f4,a4,b4]", // Faug Fmaj7 Dm Faug Bm7b5 Dm Faug Bm7b5
  BH: "[f#4,a4,d5] [f#4,a4,c#5] [f#4,a4,b4] [f#4,a4,d5] [f#4,a4,c#5] [f#4,a4,b4] [f#4,a4,d5] [f#4,a4,c#5]", // D F#m B7 D F#m B7 D F#m
  BI: "[a3,e4,b4] [a3,e4,d5] [a3,e4,c#5] [a3,e4,b4] [a3,e4,d5] [a3,e4,c#5] [a3,f4,b4] [a3,f4,d5]", // Asus2 Asus4 A Asus2 Asus4 A Bm7b5 Dm
  BJ: "[a3,e4,c#5] [a3,e4,b4] [a3,f4,c#5] [a3,f4,b4] [a3,e4,a4] [a3,e4,d5] [a3,f4,d5]!2", // A Asus2 Aaug Bm7b5 A5 Asus4 Dm
  BK: "[a3,e4,a4]!2 [a3,f4,a4]!2 [a3,e4,a4]!2 [a3,d4,a4]!2", // A5 Dm A5 D5
  BL: "[a3,e4,a4] [a3,e4,c#5] [a3,d4,d5] [a3,d4,c#5] [a3,e4,a4] [a3,e4,c#5] [a3,d4,d5] [a3,d4,c#5]", // A5 A D5 Dmaj7 A5 A D5 Dmaj7
  BM: "[a3,e4,d5] [a3,e4,c#5] [a3,d4,b4] [a3,d4,c#5] [a3,e4,d5]!2 [a3,d4,c#5] [a3,d4,b4]", // Asus4 A Bm7 Dmaj7 Asus4 Dmaj7 Bm7
  BN: "[a3,e4,c#5] [a3,e4,a4] [a3,d4,c#5] [a3,d4,a4] [a3,e4,g4] [a3,e4,a4] [a3,d4,c#5] [a3,d4,b4]", // A A5 Dmaj7 D5 A7 A5 Dmaj7 Bm7
  BO: "[a3,e4,a4] [a3,e4,b4] [a3,d4,c#5] [a3,d4,b4] [a3,e4,c#5] [a3,e4,a4] [a3,d4,c#5] [a3,d4,b4]", // A5 Asus2 Dmaj7 Bm7 A A5 Dmaj7 Bm7
  BP: "[a3,e4,c#5] [a3,e4,a4] [a3,d4,c#5] [a3,d4,b4] [a3,e4,c#5] [a3,e4,a4] [a3,d4,c#5] [a3,d4,b4]", // A A5 Dmaj7 Bm7 A A5 Dmaj7 Bm7
  BQ: "[a3,e4,c#5] [a3,e4,b4] [a3,d4,d5] [a3,d4,c#5] [a3,e4,b4] [a3,e4,c#5] [a3,d4,a4] [a3,d4,d5]", // A Asus2 D5 Dmaj7 Asus2 A D5
  BR: "[a3,e4,c#5] [a3,e4,a4] [a3,d4,c#5] [a3,d4,b4] [a3,e4,c#5] [a3,e4,a4] [a3,d4,d5] [a3,d4,c#5]", // A A5 Dmaj7 Bm7 A A5 D5 Dmaj7
  BS: "[a3,e4,d5] [a3,e4,c#5] [a3,d4,c#5] [a3,d4,a4] [a3,e4,c#5] [a3,e4,b4] [a3,d4,d5]!2", // Asus4 A Dmaj7 D5 A Asus2 D5
  BT: "[a3,e4,c#5] [a3,e4,b4] [a3,d4,c#5] [a3,d4,a4] [a3,e4,d5] [a3,e4,c#5] [a3,d4,b4] [a3,d4,c#5]", // A Asus2 Dmaj7 D5 Asus4 A Bm7 Dmaj7
  BU: "[a3,e4,d5]!2 [a3,d4,c#5] [a3,d4,a4] [a3,e4,d5] [a3,e4,c#5] [a3,d4,b4] [a3,d4,c#5]", // Asus4 Dmaj7 D5 Asus4 A Bm7 Dmaj7
  BV: "[a3,e4,a4] [a3,e4,d5] [a3,d4,b4] [a3,d4,c#5] [a3,e4,a4] [a3,e4,d5] [a3,d4,c#5] [a3,d4,b4]", // A5 Asus4 Bm7 Dmaj7 A5 Asus4 Dmaj7 Bm7
  BW: "[a3,e4,c#5] [a3,e4,a4] [a3,d4,a4]!2 [a3,e4,a4]!2 [a3,d4,a4]!2", // A A5 D5 A5 D5
  BX: "[a3,e4,a4]!2 [a3,d4,a4]!2 [a3,e4,a4] [a3,e4,c#5] [a3,d4,d5] [a3,d4,c#5]", // A5 D5 A5 A D5 Dmaj7
  BY: "[a3,e4,b4] [a3,e4,a4] [a3,d4,b4]!2 [a3,e4,c#5]!2 [a3,d4,b4] [a3,d4,a4]", // Asus2 A5 Bm7 A Bm7 D5
  BZ: "[a3,e4,g4]!2 [a3,d4,a4]!2 [a3,e4,a4]!2 [a3,d4,b4] [a3,d4,c#5]", // A7 D5 A5 Bm7 Dmaj7
  CA: "[a3,e4,d5] [a3,e4,c#5] [a3,d4,b4] [a3,d4,a4] [a3,e4,b4] [a3,e4,c#5] [a3,d4,d5] [a3,d4,c#5]", // Asus4 A Bm7 D5 Asus2 A D5 Dmaj7
  CB: "[a3,e4,b4] [a3,e4,a4] [a3,d4,b4] [a3,d4,c#5] [a3,e4,d5]!2 [a3,d4,c#5] [a3,d4,b4]", // Asus2 A5 Bm7 Dmaj7 Asus4 Dmaj7 Bm7
  CC: "[a3,e4,a4]!2 [a3,d4,b4] [a3,d4,g4] [a3,e4,a4]!2 [a3,d4,b4] [a3,d4,g4]", // A5 Bm7 Dsus4 A5 Bm7 Dsus4
  CD: "[a3,e4,a4]!2 [a3,d4,b4] [a3,d4,g4] [a3,e4,a4]!2 [a3,d4,b4] [a3,d4,c#5]", // A5 Bm7 Dsus4 A5 Bm7 Dmaj7
  CE: "[a3,e4,d5]!2 [a3,d4,d5]!2 [a3,e4,a4]!2 [a3,d4,a4]!2", CF: "[a4,e5,a5]!8", CG: "[a3,a4]!4 [a4,e5,a5]!4",
  CH: "[a3,a4]!4 [a4,a5]!4", CI: "[a4,a5]!7 [g4,g5]", CJ: "[a4,d5,a5] [a4,d#5,f#5] [a4,d#5,g5]!3 [a4,d5,f#5]!2 [a4,d5]",
  CK: "[a4,e5]!2 [a4,b4,e5]!2 [a4,e5,a5,c#6]!4", CL: "[a4,e5,a5,c#6]!5 [a4,d5,a5,b5]!2 [a4,d5,f#5,a5]",
  CM: "[a4,d5,f#5,a5]!4 [a4,e5,a5,c#6]!4", CN: "[a4,d5,f#5,a5]!4 [c#4,e4,a4]!3 [d4,f#4,a4]",
  CO: "[a3,c#4,e4] [c#4,e4,a4]!2 [a3,c#4,e4] [c#4,e4,a4] [d4,f#4,a4] [a3,c#4,e4] [d4,f#4,a4]", // A D A D
  CP: "[d4,f#4,a4]!4 [e4,a4,c#5]!4", CQ: "[e4,a4,c#5]!8", CR: "[e4,a4,c#5]!4 [a4,c#5,e5]@2 ~@2",
  CS: "[a4,c#5,e5] ~ [c#4,e4,a4] ~", CT: "[e4,a4,c#5]@2 ~@2 [e4,a4]!2 [e4,a4,b4] [e4,a4,c5]",
})).s("gm_rock_organ").gain(0.34)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  A@4 ~@12 B C@2 D@2 E ~@109 F G H I J K L M N@2 O@2 P@2 Q@2 R@6 S@2 ~@106 T@2 U@6 V W X W Y W Y Z AA AB@2 AC@2 AD AE@4
>`.pickRestart({
  A: "[a2,e3,a3]/4", B: "~@7 g2", C: "[[a2,e3,a3]@15 g2]/2", D: "[[a2,e3,a3]@15 [g2,d3,g3,b3]]/2",
  E: "[a2,e3,a3]@4 [a2,e3,a3,c#4]@3 [a2,e3]", F: "~ [d#4,f#4] b3@2", G: "~ f#4 e4 d4 d#4 e4 b4 ~",
  H: "a4@4 ~@2 a4!2 a4@6 a4!2", I: "a4@4 a4@3 a4 g#4 g#4@2 g#4 g#4@3 g#4", J: "f#4@2 d4 d#4 b3@4",
  K: "~ [a4,b4] b4!3 [a4,b4]!3", L: "[a4,b4]@2 [e4,g#4]@2 ~ [c#4,f#4] [d#4,f#4] [c#4,f#4]",
  M: "[d#4,f#4] [c#4,f#4] [d#4,f#4] [c#4,f#4] c#4 g#3 b3@2", // D#m F#5 D#m F#5
  N: "[e3 f#3 a3 f#3 a3@2 ~@2 a2 a3!2 f#3 a3 d3 a2!2, ~@6 b3@3 ~@7]/2",
  O: "[b2@2 e3 f#3 [f#3,b3,d#4]@3 e3@2 [e3,a3]@7]/2", // B A5
  P: "[[f#3,d#4]@2 [f#3,d#4]@2 [f#3,d#4] [f3,d4] [e3,c#4] b3@2 a3 e4@3 e4!2 e3, ~@7 d#3 ~@8]/2", // D#m Dm C#m
  Q: "[e3 f#3 [f#3,d#4] [f3,d4] [f#3,d#4] [f3,d4] [e3,c#4] [g#3,b3]@2 [b3,e4]@7]/2", // D#m Dm D#m Dm C#m G#m E5
  R: "[[a2,e3]@9 [g2,d3,g3,d4,g4] ~ [d3,a3,d4,f#4] ~@4]/2", // A5 G5 D
  S: "[[a2,e3,a3]@9 [g2,d3,g3,d4,g4]@2 [g2,d3,g3,d4,g4] [d3,a3,d4,f#4]@4]/2", T: "[~@4 [a2,e3,a3]@9 [g2,d3,g3]@3]/2",
  U: "[[d3,a3,d4,f#4]@3 [d3,a3,c#4] [a2,e3,a3]@9 [g2,d3,g3]@3]/2", // D Dmaj7 A5 G5
  V: "[d3,a3,d4,f#4]@3 [d3,a3,c#4] [a2,e3,a3,c#4]@2 ~ [a2,e3,a3]", // D Dmaj7 A A5
  W: "[a2,e3,a3]@2 ~ [a2,e3,a3] [a2,e3,a3]@2 ~ [d3,g3]", X: "[d3,a3,d4,f#4]@2 ~ [a2,e3] [a2,e3,a3,c#4]@2 ~ [a2,e3,a3]",
  Y: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a2,d3] [a2,e3,a3,c#4]@2 ~ [a2,e3,a3]", // D D5 A A5
  Z: "[a2,e3,a3]@2 ~ [a2,e3,a3] [a2,e3,a3]@2 ~ [a2,d3]", // A5 D5
  AA: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a2,d3] [a2,e3]@2 [a3,c#4] [g3,b3]", // D D5 A5 A G
  AB: "[[a2,e3] [a3,e4,a4] [g3,b3] e3 [a3,e4,a4] [g3,b3] [a3,c#4] [f#3,a3,d4]@5 [a2,e3]@2 [a3,c#4] [g3,b3]]/2", // A5 G A5 G A D A5 A …
  AC: "[[a2,e3] [a3,e4,a4] [g3,b3] e3 [a3,e4,a4] [g3,b3] [d3,g3,b3] [f#3,a3,d4]@5 [a3,e4,a4,c#5]@2 ~@2]/2", // A5 G A5 G D A
  AD: "[a3,e4,a4,c#5] ~ [a3,e4,a4,c#5] ~", AE: "[[a3,e4,a4,c#5]@4 ~@2 [a2,e3,a3]!2 [a2,e3,a3]@48 [a2,a3]@4 ~@4]/4",
})).s("gm_overdriven_guitar").gain(0.31)

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

// drums · kick
const kick = s("bd").struct(`<
  ~@16 A B C B C B C B A B A B C B C B C B D B E B C B F B A B G B G B A B A B A B A H D B E B E B F I B A B C B C B C B
  D B E B C B F B A B G B G B A B A B A B A H D B E B C G A@2 G F G J G@3 D I E I B@2 F B G B E B E B E B E B A B F B G
  B F B A B F B J B K C G E B ~@7 A B A B C B C B C B D B E B C B F B A B G B G B A B A B A B A H D B C G A@2 B G B A B
  C B E B A B D B G B F B A B G B E B F B A B K@2 L ~@32 E F D E G A F M N O K M N O P Q K M K R K M K R K R K S T F U
  ~@2
>`.pickRestart({
  A: "x!2 ~ x ~@4", B: "x ~@2 x!2 ~@2 x", C: "~ x ~@6", D: "~ x!2 ~ x!2 ~@2", E: "~@9 x ~@6", F: "x!2 ~ x ~ x ~ x",
  G: "x!2 ~ x!3 ~ x", H: "x", I: "~@4 x!2 ~@2", J: "~@7 x", K: "x ~@2 x!3 ~ x", L: "~ x ~ x ~@2 x ~",
  M: "x!2 ~ x!2 ~@2 x", N: "x ~@2 x ~ x!2 ~", O: "x!2 ~@2 x ~@2 x", P: "x ~@2 x ~ x ~@2", Q: "~@4 x ~@2 x",
  R: "~ x ~ x!2 ~@2 x", S: "~ x ~ x ~@4", T: "~ x ~@6 x ~@5 x ~", U: "~ x ~@2",
})).gain(0.39)

// drums · snare
const snare = s("sd").struct(`<
  ~@16 A B C B C B C B A B A B C B C B C B D B E B C B F B A B G B G B A B A B A B A B D B E B E B F H B A B C B C B C B
  D B E B C B F B A B G B G B A B A B A B A B D B E B C G A@2 G F G I G@3 D H E H B@2 F B G B E B E B E B E B A B F B G
  B F B A B F B I B@2 C G E B ~@7 A B A B C B C B C B D B E B C B F B A B G B G B A B A B A B A B D B C G A@2 B G B A B
  C B E B A B D B G B F B A B G B E B F B A B@3 J ~@32 E F D E G A F@2 K L B M K L K N O M B P O M B P B P B Q R S ~@3
>`.pickRestart({
  A: "~@4 x ~@3 x!5 ~ x ~", B: "~ x ~ x", C: "x ~@2 x ~@2 x!2", D: "x ~@2 x ~@3 x", E: "x!2 ~ x!2 ~ x!2 ~@2 x!3 ~@3",
  F: "~ x!3", G: "~@2 x!6", H: "x!3 ~ x ~ x ~@5 x ~@3", I: "x!14 ~@2", J: "x ~ x!2 ~@4", K: "~@2 x ~ x ~@2 x",
  L: "~@3 x ~@2 x ~", M: "x!4 ~@2 x ~", N: "~@2 x!2 ~@2 x ~", O: "~@2 x ~@3 x!2", P: "x!2 ~ x",
  Q: "x ~@3 x ~@3 x!2 ~ x!2 ~ x!2", R: "~@2 x!3 ~@7 x ~@3", S: "~@2 x ~ x ~ x!2",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@34 A ~ B ~@7 C ~ C ~@9 A ~ B ~ B ~@12 A ~ B ~@7 C ~ C ~@9 A ~ B ~@2 C ~@2 C ~ C ~ C@3 A ~ B ~@5 C ~ B ~ B ~ B ~ B
  ~@5 C ~@11 C B ~@18 A ~ B ~@7 C ~ C ~@9 A ~@2 C ~@3 C ~@5 B ~@3 A ~ C ~@5 C ~ B ~@40 B ~ A B C ~@4 D B E ~ D ~@2 B E
  ~@2 B E ~@6 F ~@4
>`.pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@3 x!5", D: "~ x ~@2", E: "x!4 ~@4", F: "~@3 x ~@4",
})).gain(0.39)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct(`<
  ~@44 A ~ A ~@36 A ~ A ~@14 A ~@2 A ~ A ~ A@3 ~@8 A ~@13 A ~@11 A ~@29 A ~ A ~@12 A ~@3 A ~@11 A ~@5 A ~@46 A ~@5 B ~@5
  B ~@3 B ~@12
>`.pickRestart({
  A: "~ x ~@2", B: "~@3 x",
})).gain(0.22)
// … 68 more lines

More by The Who