Strudelify

Squeeze Box

The Who

KeyG majorTempo135 bpm
0:00/0:00
// Squeeze Box — The Who
// 135 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Organ II" reed organ (copy of ch 3 "Organ I" rock organ); ch 6 "Acoustic Guitar II" acoustic guitar steel (copy of ch 5 "Acoustic Guitar I" acoustic guitar steel, 0.083 beats late); ch 8 "Bass Guitar I" electric guitar muted (copy of ch 9 "Bass Guitar II" fretless bass)
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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 · "Organ I"
const rock_organ = note(`<
  A B A@2 C D@2 E F G@2 H I J K L M N O G@2 P F G@2 H I J K L M N O G@2 P F G@2 H I J K L M N O G@2 P Q@2 R@2 S T U V W
  X Y@2 Z G@2 AA AB AC AD AE AF AG AH AA AI AJ AK AL AM AN AO@2 AP AQ AR AS ~
>`.pickRestart({
  A: "[c5,g5]@7 ~ [a4,d5,f#5]@7 ~", B: "[c5,g5]@7 ~ [a4,d5,f#5]@6 ~@2",
  C: "[d4,g4,b4] ~ [d4,g4,b4] ~ [g3,e4,g4,c5] ~ [g3,d4,g4,b4,d5]@3 ~ [d4,g4,b4] ~ [e4,g4,c5] ~ [g3,d4,g4,b4]@2, g3@2 ~@2 e5@2 ~@4 g3@2 e5@2 d5 ~", // G C G C G
  D: "~@2 [d4,g4,b4] ~ [e4,g4,c5] ~ [g3,d4,g4,b4]@2 ~@2 [g3,d4,g4,b4] ~ [g3,e4,g4,c5] ~ [g3,d4,g4,b4]@2, ~@2 g3@2 e5@2 d5 ~@5 e5@2 d5 ~", // G C G C G
  E: "~@2 [g3,d4,g4,b4] ~ [g3,e4,g4,c5] ~ [g3,d4,g4,b4,d5]@3 ~ [g3,d4,g4,b4] ~ [g3,e4,g4,c5] ~ [g3,d4,g4,b4,d5] ~, ~@2 e5 ~@3 e5 ~", // G C G C G
  F: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,c5,e5] ~ [g3,g4,b4,d5]@3 ~ [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2, g3!2 ~@6", // G C G C G
  G: "~@2 [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@3 ~ [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2", // G C G C G
  H: "~@2 [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2 ~@2 [g3,g4,b4,d5] ~ [g4,b4,e5] ~@3, ~@6 g3 ~", // G C G Em
  I: "[d4,a4,d5,f#5]@3 ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~@3 [d5,f#5] ~, ~@2 d4 ~", // D
  J: "[d4,a4,d5,f#5]@3 ~@3 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [d5,f#5] ~@5, ~@8 d4@5 ~@3, ~@5 a4 ~@2", // D
  K: "[c4,g4,c5,e5]@3 ~@3 [c4,g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5] ~@3 [c4,g4,c5,e5] ~, ~@2 c4 ~, ~@5 e5 ~@2", // C C5 C
  L: "[c4,g4,c5,e5]@4 ~@2 [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [g4,c5,e5] ~@5, ~@5 c4 ~@2", // C
  M: "[d4,a4,d5,f#5]@4 ~@2 [d4,a4,d5,f#5] ~ [d4,a4,d5,f#5] ~ [d4,d5]@3 ~ [a4,d5,f#5] ~, ~@10 [a4,f#5] ~@5", // D
  N: "[c4,g4,c5,e5]@4 ~@2 [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5]@2 ~@4", // C
  O: "[g3,g4,b4,d5] ~ [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@3 ~ [g3,g4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2, ~@5 b4 ~@2", // G C G G5 C G
  P: "~@2 [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@3 ~ [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5] ~", // G C G C G
  Q: "[[g3,d4,g4,b4]@21 ~ [d4,g4,b4] ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~, ~@11 g3 ~@4]/2", // G C
  R: "[[g3,d4,g4,b4]@23 ~ [g3,d4,g4,b4]@4 ~@4]/2", S: "[d4,a4,d5,f#5]@15 ~",
  T: "[d4,a4,d5,f#5]@5 ~ [d4,a4,d5,f#5] ~ [d4,a4,d5]@4 ~@4, ~@4 f#5 ~@3", U: "[c4,g4,c5,e5]@15 ~",
  V: "[g4,c5,e5]@4 ~@2 [g4,c5] ~ [c4,g4,c5,e5]@4 ~@4, c4@3 ~@5", W: "[d4,a4,d5,f#5]@7 ~", X: "[c4,g4,c5,e5]@13 ~@3",
  Y: "[[g3,g4,b4,d5]@21 ~ [g3,g4,b4,d5] ~ [g3,g4,b4,d5]@3 ~ [g3,g4,b4,d5]@2 ~@2]/2", // G
  Z: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,c5,e5] ~ [g3,g4,b4,d5]@3 ~ [g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2, g3@5 ~@5 g3@2 ~@4", // G C G C G
  AA: "~@2 [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2 ~@2 [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5] ~", // G C G C G
  AB: "[d4,d5]@4 [a4,d5,f#5] ~ [d4,a4,d5,f#5]@3 ~ [d4,a4,d5,f#5] ~ [d4,a4,d5,g5] ~ [d4,a4,d5,f#5]@2, [a4,f#5] ~@7", // D Dsus4 D
  AC: "~@2 [a4,d5,f#5] ~@3 [d4,a4,d5,f#5]@3 ~ [d4,a4,d5,f#5] ~ [d4,d5]@2 a4 ~, ~@12 [a4,g5] ~@3", // D A7
  AD: "[g4,c5,e5]@3 ~ [g4,c5,e5] ~ [c4,g4,c5,e5]@3 ~ [g4,c5,e5] ~ d5 ~ [c4,g4,c5,e5]@2", // C
  AE: "~@2 [g4,c5,e5] ~ [g4,c5,e5] ~ [c4,g4,c5,e5]@3 ~ [c4,g4,c5,e5]@2 ~@2 [c4,e5] ~", // C
  AF: "[d4,a4,d5,f#5]@3 ~ [a4,d5,f#5] ~ [d4,a4,d5,f#5]@3 ~ [d4,a4,d5,f#5] ~ [d4,a4,d5,f#5] ~ [d4,a4,d5,f#5] ~", // D
  AG: "[g4,c5,e5]@2 ~@2 [g4,c5,e5] ~ [c4,g4,c5,e5]@3 ~ [g4,c5,e5] ~ [g4,c5,e5] ~@3, c4@2 ~@3 c4 ~@2", // C
  AH: "[g3,g4,b4,d5]@2 ~@2 [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2 ~@2 [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@2", // G C G C G
  AI: "[g4,b4] ~ [g4,b4] ~ [g4,c5,e5] ~ [g4,b4,d5]@3 ~ [g4,b4,d5] ~ [g4,c5,e5] ~ [g4,b4,d5]@2, g3@5 ~ g3@7 ~@3, d5 ~@7", // G C G C G
  AJ: "~@2 [g4,b4,d5] ~ [g4,c5,e5] ~ [g4,b4,d5]@2 ~@2 [g4,b4,d5] ~ [g4,c5,e5] ~ [g4,b4,d5]@2, g3@5 ~@3 g3@4 ~@4", // G C G C G
  AK: "~@2 [g4,b4,d5] ~ [g4,c5,e5] ~ [g4,b4,d5]@3 ~ [g4,b4,d5] ~ [g4,e5] ~ [g4,b4,d5]@2, ~@5 g3 ~@2", // G C G C G
  AL: "~@2 [g4,b4,d5] ~ [g4,e5] ~ [g4,b4,d5]@3 ~ [g4,b4] ~ [g4,b4,d5] ~@3, g3@4 ~@2 g3@9 ~", // G C G
  AM: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [d4,d5,g5] ~ [a4,d5,f#5]@2 d4@2 [d5,f#5]@2 d4@2 [a4,d5,f#5]@2, d4@2 ~@8 a4 ~ a4 ~@3", // D G5 D
  AN: "d4@2 [a4,d5,f#5] ~ [d4,a4,d5,g5] ~ [a4,d5,f#5]@2 ~@2 [a4,d5,f#5] ~ [a4,d5,f#5] ~ [g4,c5,e5] ~, ~@8 d4@7 ~", // D Dsus4 D C
  AO: "[[g4,c5,e5] ~ [g4,c5,e5] ~ [c4,g4,c5,e5] ~ [g4,c5,e5]@3 ~ g4 ~ [g4,c5,e5] ~ [g4,c5,e5]@2 ~@2 [g4,c5,e5] ~ [g4,d5] ~ [c4,g4,c5,e5]@3 ~ [c4,g4,c5,e5]@4 ~@2, c4@2 ~@4 c4@6 ~@2 c4@7 ~@11]/2", // C G5 C
  AP: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~, d4@5 ~ d4@9 ~, ~@6 f#5 ~", // D D5
  AQ: "[g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~@5, c4@7 ~ c4@5 ~@3", // C
  AR: "[g3,g4,b4,d5] ~ [g3,g4,e5] ~ [g3,g4,b4,d5] ~ [g3,g4,c5,e5] ~, ~@4 c5 ~@11", // G C G C
  AS: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g3,g4,c5,e5] ~ [g3,g4,b4,d5]@10, g3 ~@7", // G C G
})).s("gm_rock_organ").gain(0.31).pan(0.1)

// chords · acoustic guitar steel · "Acoustic Guitar I"
const acoustic_guitar_steel = note(`<
  A@4 B@4 C@4 D E F G H G I@4 C@4 D E F G H G C@8 D E F G H G C@4 J@2 K@2 L M N O L N P@2 I@4 Q@2 R@2 S T U@2 V@4 Q@2
  R@2 S W X Y ~
>`.pickRestart({
  A: "[g3,c4] [f#3,a3,d4]", // C5 D
  B: "[[d3,g3,b3]!2 [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]@2 [d3,g3,b3] [e3,g3,c4,e4] [d3,g3,b3,d4]]/4", // G C G C G C G C …
  C: "[[g3,b3,d4]!2 [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,b3,e4]@2]/4", // G C G C G C G C …
  D: "[a3,d4,f#4]@3 [a3,d4,f#4]!2 [d4,f#4]@2 [d4,f#4], d3!2, ~@5 a3@3", // D
  E: "[a3,d4,f#4]@3 [a3,d4,f#4]!2 [a3,d4,f#4]@3, d3!2", // D
  F: "[c3,g3,c4,e4]@3 [c3,g3,c4,e4] [g3,c4,e4] [g3,c4,e4]@2 [c3,g3,c4,e4], ~@4 c3@3 ~", // C
  G: "[c3,g3,c4,e4]@3 [c3,g3,c4,e4]!2 [c3,g3,c4,e4]@3", // C
  H: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]!2 [a3,d4,f#4]@2 [a3,d4,f#4], ~@5 d3@3", // D
  I: "[[g3,b3,d4]!2 [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]]/4", // G C G C G C G C …
  J: "[[d3,g3,b3]@11 [d3,g3,b3] [c3,e3,g3]@2 [c3,e3,g3]@2]/2", K: "[[d3,g3,b3]@3 [d3,g3,b3]]/2", L: "[d3,a3,d4,f#4]",
  M: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4] [d3,a3,d4,f#4]@4", N: "[c3,g3,c4,e4]",
  O: "[g3,c4]@3 [g3,c4] [c3,g3,c4,e4]@4, [c3,e4] ~", P: "[[g3,b3,d4]@11 [g3,b3,d4] [g3,b3,d4]@2 [g3,b3,d4]@2]/2",
  Q: "[[a3,d4,f#4]@2 [a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [d3,a3,d4,g4] [a3,d4,f#4]@2 [a3,d4,f#4]@2 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] a3!2, d3@3 ~@4 d3@4 ~@3 [d3,d4,g4]@2]/2", // D Dsus4 D G5
  R: "[[g3,c4,e4]@2 [g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4] d4 [g3,c4,e4]@2 [g3,c4,e4]!2 [c3,g3,c4,e4]@2 [c3,e4]@2 [c3,e4], ~@3 c3@4 c3@4 ~@2 [g3,c4]@3]/2", // C C5
  S: "[a3,d4,f#4]@2 [a3,d4,f#4] [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!3, d3@3 ~@5", // D
  T: "[g3,c4,e4]@2 [g3,c4,e4] [c3,g3,c4,e4]@2 [g3,c4,e4] [g3,c4,e4]@2, c3@3 ~@2 c3@3", // C
  U: "[[g3,b3,d4]@2 [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]]/2", // G C G C G C G C …
  V: "[[g3,b3,d4] [g3,b3] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,c4,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,e4] [g3,b3,d4]@2 [g3,b3,d4] [g3,e4] [g3,b3,d4]@2 [g3,b3] [g3,b3,d4]@2]/4", // G C G C G C G C …
  W: "[g3,c4,e4]!5 [g3,c4,e4]@3, c3!2", X: "[g3,b3,d4] [g3,c4,e4] [g3,b3,d4] [g3,c4,e4]",
  Y: "[g3,b3,d4]!2 [g3,c4,e4] [g3,b3,d4]@5", // G C G
})).s("gm_acoustic_guitar_steel").gain(0.39).pan(0)

// other · distortion guitar · "Electric Guitar"
const distortion_guitar = note("<~@50 A B C D E F G H I J K L M N O P Q R S T U V W X ~@13>".pickRestart({
  A: "[g4,b4] b4 g4 b4 g4 b4 g4 [g4,b4] b4 g4 b4 g4 b4 g4 [g4,b4] b4", // G
  B: "g4 b4 g4 b4 g4 b4 [g4,b4] g4 b4 g4 b4 g4 b4 g4 [g4,b4] b4", // G
  C: "g4 b4 g4 b4 g4 [g4,b4] b4 g4 b4 g4 b4 g4 b4 g4 [g4,b4] b4", // G
  D: "g4 b4 g4 b4 g4 b4 g4 [g4,b4] b4 g4 b4 g4 b4 [g4,b4] ~@2", // G
  E: "a4 f#4 a4 f#4 [f#4,a4] a4 f#4 a4 f#4 a4 f#4 a4 f#4 [f#4,a4] a4 f#4", // F#m
  F: "a4 f#4 a4 f#4 a4 f#4 [f#4,a4] a4 f#4 a4 f#4 a4 f#4 ~ f#4 [e4,g4,g#4], ~@13 a4@2 ~", // F#m E
  G: "g4 ~ [e4,g4]!2 e4 g4 e4 g4 [e4,g4] e4 g4 e4 g4 [e4,g4] e4 g4", // Em
  H: "e4 g4 [e4,g4] e4 g4 e4 g4 e4 g4 [e4,g4] ~ [e4,g4] ~ [e4,g4] [f#4,a4] ~", // Em F#m
  I: "f#4 [f#4,a4] a4 f#4 a4 f#4 a4 [f#4,a4] f#4 a4 f#4 a4 f#4 a4 [f#4,a4] ~", // F#m
  J: "[e4,g4] e4 g4 e4 g4 [e4,g4] ~ [e4,g4] e4 g4 e4 g4 [e4,g4] e4 g4 ~", // Em
  K: "b4 g4 [g4,b4] b4 g4 b4 g4 b4 g4 b4 g4 b4 [g4,b4] g4 b4 g4", // G
  L: "b4 g4 b4 g4 [g4,b4] b4 g4 b4 g4 [g4,b4] b4 g4 b4 [g4,b4] ~@2", // G
  M: "b4@2 ~ e4 g4@2 d4@2 [g4,a4,b4] ~ g4 ~ a4@2 g4 ~, ~ d4 ~@6", // G
  N: "~ [a4,b4]@2 d4 ~@3 d4 b4@2 g4@2 a4@2 g4 ~, g4 ~ g4!2 ~@4, ~@5 a4@2 ~@9", // Asus2
  O: "[a4,b4]@2 d4 ~ a4@2 b4@2 [a4,b4]@2 g4 [d4,a4,b4] g4 ~ b4@2, ~@3 g4@3 ~@10", // Asus2 Bm7
  P: "~@2 a#4 ~ a#4 ~@3 a#4 ~ a#4 ~ a#4@2 g4 ~, a#4 ~@2 a#4 ~@4, ~ [d4,b4]@2 [d4,b4]@2 [d4,b4]@2 [d4,b4]@2 [d4,b4]@2 [d4,b4]@2 ~@3", // G
  Q: "~ f#4 d4@2 ~ f#4 d4@2 ~ f#4 d4 f#4 ~ f#4 d4@2, g4 ~ g4 ~ g4 ~ g4 ~",
  R: "~ f#4 d4 f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4 g4@2 f#4 ~, g4 ~ g4 d4 g4 d4 ~@2",
  S: "~@2 [c4,d4] ~@3 g3@2 e4@2 d4 c4 g3 ~ c4@2, ~@2 e4@3 [c4,d4]@2 ~@9", // Csus2
  T: "g3 ~ [c4,d4] e4@2 [c4,d4] g3 ~ e4@2 g3 [c4,d4] d4@2 e4 ~", // Csus2
  U: "g4 f#4 d4@2 ~@2 d4@2 ~ f#4 ~ f#4 ~ f#4 d4@2, ~@2 g4 ~ g4 ~ g4 ~, ~@5 f#4@2 ~@3 d4@2 ~@4",
  V: "g3 ~@2 e4@2 [c4,d4] g3 ~ e4@2 g3 ~ [d4,e4]@2 e4 ~, ~@2 [c4,d4]@2 ~@7 c4@2 ~@3", // Csus2 Dsus2 Csus2
  W: "b3@2 c4 ~ [d4,g4,b4] ~ b3@2 c4 ~ [d4,g4,b4]@2 b3@2 c4 ~", X: "[d4,g4,b4]@2 b3@2 c4 ~ [d4,g4,b4]@4 c4@2 ~@4",
})).s("gm_distortion_guitar").gain(0.53).pan(0.6)

// bass · fretless bass · "Bass Guitar II"
const bass = note(`<
  ~@4 A B A B C D C D E F G@2 H@2 C D C D C D C D E F G@2 I G C D C D C D C D E F G@2 J@2 C D C D K@2 L@2 M@2 N@2 M N O
  P Q@4 R@2 S@2 R S T U V@4 W@2 X@2 Y@2 Z AA ~
>`.pickRestart({
  A: "g1!4", B: "g1@2 g1@2 b1 c2 c#2 d2", C: "g1!2", D: "g1@4 b1 c2 c#2 d2", E: "d2!2", F: "d2 d2@3 d2@4",
  G: "c2@4 c2 c2@3", H: "[d2@4 d2 ~@3 c2@4 c2 c2@3, ~@5 d2@4 ~@7]/2", I: "d2@4 d2 d2@3",
  J: "[d2@8 d2@2 ~@6 c2@8 c2 ~ c2@6, ~@5 d2@4 ~@7]/2", K: "g1/2", L: "[g1@13 b1 c2 c#2]/2", M: "d2@3 d2 d2@4",
  N: "c2@3 c2 c2@4", O: "g1@3 g1 g1@4", P: "g1@3 g1!2 c2 c#2 d2", Q: "g1@8 f2@3 e2@3 d2@2", R: "d2@8 c3@3 b2@3 a2@2",
  S: "c2@8 a#2@3 a2@3 g2@2", T: "g1@3 g1 g1@3 g1", U: "g1@3 g1 b1 c2 c#2 d2",
  V: "[g1@2 a1 g1@3 a1 g1@3 a1 g1@3 a1 g1@3 a1 g1@3 a1 g1@3 a1 g1@3 c2 c#2]/4",
  W: "[d2@3 d2 d2@3 d2@2 d2@2 d2 d2@2 d2@2]/2", X: "[c2@3 c2 c2@3 c2@2 c2@2 c2!2 c2@2 c2]/2",
  Y: "[d2@3 d2!2 d2@2 c2@2 c2@2 c2 c2@2 c2 d2]/2", Z: "b2 a2 g2 d2 e2 d2 b1 a1", AA: "e2 d2 b1 g1@5",
})).s("gm_fretless_bass").gain(0.63)

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

// drums · rim
const rim = s("rim").struct("<~@54 [~ x ~ x]!7 ~@26>").gain(0.63)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@7 B ~ C ~ D ~@7 E ~@3 F ~ G ~@9 H ~ I ~ J ~@17 K ~@3 L ~@3 M ~@5 N ~ E ~@7 O ~
>`.pickRestart({
  A: "~@7 x!3 ~@4 x!2", B: "~@12 x!4", C: "~@6 x!2", D: "~@3 x ~ x ~ x ~ x ~ x!5", E: "~@7 x", F: "~@9 x ~@2 x ~@3",
  G: "~ x", H: "~@9 x ~@2 x ~ x!2", I: "~@8 x!2 ~@4 x ~", J: "x ~ x ~@5 x ~@4 x!3", K: "~@12 x!3 ~",
  L: "~@5 x ~@3 x!5 ~@2", M: "~@9 x ~ x ~ x ~ x", N: "~@2 x!3 ~@8 x ~ x", O: "~ x!2 ~@5",
})).gain(0.63)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@7 B ~ C ~ D ~@7 E ~@3 F ~ G ~@9 E ~ H ~ I ~@17 J ~@3 K ~@3 L ~@5 M ~ H ~@9
>`.pickRestart({
  A: "~@3 x!4 ~@5 x!2 ~@2", B: "~@8 x!4 ~@4", C: "~@5 x ~@2", D: "~@4 x!2 ~@2", E: "~@10 x!2 ~ x ~@2", F: "~@11 x ~@4",
  G: "~@7 x ~ x ~@6", H: "~@13 x ~@2", I: "~@9 x ~@2 x ~@3", J: "~@6 x ~ x!4 ~@4", K: "~@2 x!2 ~@3 x!2 ~@7",
  L: "~@5 x ~ x ~@4 x ~ x ~", M: "~@9 x ~ x!2 ~ x ~",
})).gain(0.63)

// drums · open hat
const open_hat = s("oh").struct("<~@85 [~ x ~@2] ~>").gain(0.63)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~@7 B ~@3 C ~@7 D ~@3 E ~@13 D ~ F ~@17 G ~@3 C ~@3 H ~@5 I ~ D ~@9
>`.pickRestart({
  A: "x!3 ~@7 x!2 ~@4", B: "~@4 x!4 ~@8", C: "~@2 x!2 ~@4", D: "~@3 x", E: "~@7 x!2 ~ x ~@5", F: "~@10 x!2 ~@4",
  G: "x!6 ~@10", H: "~@2 x!3 ~@3 x ~ x ~@5", I: "~@5 x ~ x!2 ~ x ~@5",
})).gain(0.63)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A B ~ B C ~@3 A ~ A ~@4 A@4 ~@9 A ~@3 A ~@3 A@2 ~@2 A ~ B A ~@6 D
  E F
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4", C: "x!2 ~@2", D: "x!4", E: "x ~@3 x ~ x!10", F: "x!8 ~@8",
})).gain(0.63)

// drums · ride
const ride = s("rd").struct("<~@53 x ~@33>").gain(0.63)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [~ x ~ x]!57 ~ [~ x ~ x]!15 ~ [~ x ~ x]!6 ~@3>").gain(0.63)

stack(
// … 3 more lines

More by The Who