Strudelify

Subterranean Homesick Alien

Radiohead

KeyG majorTempo150 bpm
0:00/0:00
// Subterranean Homesick Alien — Radiohead
// 150 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 220 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Track 7.
setcpm(150/3)

// 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 · electric guitar jazz · "Track 1"
const electric_guitar_jazz = note(`<
  A@2 B C D@4 E@4 F@2 G@2 H@4 F@2 G@2 ~@16 E@4 F@2 G@2 I@2 J@2 K@2 L@2 I@2 J@2 K@2 L@2 M@6 N@2 O P Q R S@2 T@2 O P Q R
  S@2 T@2 O P Q R U@3 ~@4 V W X@2 Y@2 Z AA@2 ~@42 E@4 F@2 G@2 H@4 F@2 G@2 O P Q R S@2 T@2 O P Q R S@2 T@2 O P Q R S@2
  T@2 O P Q R ~@2 AB@2 F@2 G@2 AC@4 AD@2 AE@2 AF@2 AG@8
>`.pickRestart({
  A: "[~ f4@4 f4@3 a4@5 ~@3 f4@3 e4@2 d4@5 ~ c#4@5, d4@5 ~@3, d3 d3, ~ a4@7 f4@8 ~@16, ~@13 a4@19]/2",
  B: "~ g#4@4 ~@8 g#4@3, [g#2,c4], d#4!2, ~@5 g#4@8 ~@3", C: "c#4@3 c4@2 g#3@5 ~ g3@5, [g#2,d#4,g#4]",
  D: "[g2@3 ~@13 g2@3 ~@13 g2@3 ~@13 g2@3 ~@10 c#3@3, [d4,f#4] [d4,f#4] [d4,f#4] [c#4,f4], f#3 f#3@2 f#3@2 f#3 f3!2, ~@3 a2@13 ~@3 a2@13 ~@3 a2@13 ~@3 g#2@13, ~@13 d3@8 ~@8 d3@8 ~@8 d3@8 ~@11]/4", // D C#
  E: "[d5 ~@3 d5 ~ b5@2, b3, [g3,d4,f4,b4]@2 b5@3 d5@3, ~ d5@3 [g3,d4,e4,b4]@4, ~@13 f5@32 e5@19]/4", // G7 Em7
  F: "[g3,d#4,g4,b4]/2", G: "[g3,d4,g4,b4]/2",
  H: "[d5 ~@3 d5 ~ b5@2, b3, [g3,d4,f4,b4]@2 b5@3 d5@3, ~ d5@3 [g3,d4,e4,b4]@4, ~@12 f5@33 e5@19]/4", // G7 Em7
  I: "[~ f5@31, [b4,c5,d5]]/2", J: "[g4,c5,e5]/2", K: "[[g4,c5,d#5]@31 ~]/2", L: "[g4,b4,d5]/2",
  M: "[~@91 d#3@5, b3@59 e5@21 c4@5 ~@11, [g3,d4,f4,b4,d5] [g3,d4,e4,b4,d5] [g4,b4,d#5], ~@16 c6@32 c6@32 ~@3 b3@5 ~@8, ~@19 b5@2 g5@6 f5@5 e5@19 b5@2 g5@11 g3@21 g3@11]/6", // G7 Em7 Gaug
  N: "[d3,g3,d4,g4,b4]/2", O: "a3 g3", P: "f3 d3", Q: "e3 d3", R: "c3 a2", S: "g2@3 a2@2 b2@3 c3@3 b2@2 a2@3",
  T: "g2/2", U: "g3/3", V: "~@5 g4@5 ~ a4@5, c4 ~, ~@3 d4@8 ~@5", W: "~@5 d5@11, a4@11 ~@5, ~@3 b4@11 ~@2",
  X: "[~@5 b4@27, e5@19 ~@13, ~@3 d5@13 ~@16]/2", Y: "[~@5 b4@27, e5 ~, ~@3 d5@13 ~@16]/2",
  Z: "~@5 d#4@11, c5@11 ~@5, ~@3 g4@8 ~@5", AA: "[c5 b4, [d#4,g4]]/2", AB: "[~ b5, [g3,d4], ~ d5@3, ~@13 e5@19]/2",
  AC: "[d5 ~@3 d5 ~ b5@2, b4 b4, ~ d5@3 ~ d5@3, ~@13 f5@32 e5@19, ~ b5@2 ~]/4", AD: "[g4,b4]/2", AE: "[d4,g4,b4]/2",
  AF: "[~ f4@4 f4@3 a4@5 ~@3 f4@3 e4@3 d4@6 c#4@4, [d5,f5], d4@5 ~@3, d3@13 a4@19, ~ a4@7 f4@8 d3@16]/2", // Dm
  AG: "[~@3 g#4@5 ~@9 g#4@3 c#4@3 ~ c4@3 g#3@7 g3@9 ~@2 d4@75 ~@8, ~@2 [g#2,c4]@18 g#2@25 ~@83, ~@2 d#4@9 d#4@9 [d#4,g#4]@23 [d3,f#3,f#4]@77 ~@8, ~@8 g#4@9 ~@111]/8", // G# G#5 D
})).s("gm_electric_guitar_jazz").gain(0.37).pan(0.4)

// chords · electric guitar jazz · "Track 2"
const electric_guitar_jazz_2 = note(`<
  ~@13 A@2 ~@6 A@2 ~@8 B C@2 ~@11 A@2 ~@8 B C@2 ~ D E F ~ G@2 ~@8 H I@2 J@2 ~@3 H I@2 J@2 ~@3 H I@2 J@2 ~@21 B C@2 ~ B
  K@2 L@2 ~@3 M N O@3 ~@33 P ~ H I@2 J@2 ~@3 H I@2 J@2 ~@3 H I@2 J@2 ~@3 H I@2 Q R@2 S@2 T U@2 ~@5 V@3 ~@10
>`.pickRestart({
  A: "[~ [g2,b4,d5], d5@5 b4@5 ~ [b4,d5]@5 ~@16, ~@3 c5@5 c5@5 c5@5 ~@14]/2", B: "~@5 e4@11", C: "d5/2",
  D: "~@5 e4@3 e4@3 e4@5", E: "d#5 ~ d#5@3 d#5@2 ~ d#5@8", F: "d#5", G: "[g5@21 ~@11]/2", H: "~@11 [g5,b5]@2 [g5,b5]@3",
  I: "[g5,b5]@3 [g5,b5]@2 [g5,b5]@3 [g5,b5]@3 [g5,b5]@2 [g5,b5]@3", J: "[g5,b5]/2", K: "[~@21 e4@11, d5]/2",
  L: "[f5@21 f#5@5 ~ g#5@5]/2", M: "~@5 g5@5 ~ a5@5", N: "b5", O: "[a5@5 g5@5 ~ d5@37]/3", P: "[a3,a4,a5,c#6]",
  Q: "~@5 d5@11, a4@11 ~@5, ~@3 b4@11 ~@2", R: "[~@5 b4@27, e5@19 ~@13, ~@3 d5@13 ~@16]/2",
  S: "[~@5 b4@27, e5 ~, ~@3 d5@13 ~@16]/2", T: "~@5 d#4@11, c5@11 ~@5, ~@3 g4@8 ~@5", U: "[c5 b4, [d#4,g4]]/2",
  V: "[~ [g2,b4,d5]@2, d5@5 b4@5 ~ [b4,d5]@5 ~@32, ~@3 c5@5 c5@5 c5@5 ~@30]/3", // G Bm
})).s("gm_electric_guitar_jazz").gain(0.41).pan(0.8)

// chords · epiano2 · "Track 3"
const epiano2 = note(`<
  ~@8 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M N O@2 P@2 Q@2 R S T@2 U@2 V@2 W@2 J@2 K@2 L@2 X Y
  A@2 B@2 C@2 D@2 Z AA AB AC AD@3 AE Z AA AB AC AD@3 AE Z AA AB AC AF@2 ~@14 AG@2 AH@2 AI@2 ~@2 AJ@2 AK@2 AL@4 AJ@2 AK@2
  AL@4 AJ@2 AK@2 AL@4 AM@2 AK@2 AN@3 AO ~ AP AQ@2 AR@2 AS@2 D@2 A@2 B@2 AT@4 Z AA AB AC AD@3 AE Z AA AB AC AD@3 AE Z AA
  AB AC AD@3 AE Z AA AB AC ~@8 A@2 B@2 C@2 A@2 AU@2 AV@8
>`.pickRestart({
  A: "[g2,b3,d4]/2", B: "[b3@21 b3@5 ~ g3@5, [g2,e4]]/2", C: "[g2,c4,d#4]/2", D: "[b3@21 c4@5 ~ b3@5, [g2,d4]]/2",
  E: "[b3@3 ~@2 b3@3 [c3,c4]@8 b3@3 [c3,c4]@5 [c3,c4]@8, b2, ~@3 [c3,c4]@5 ~@24]/2", F: "[g2,b2,d3,f3,b3]/2",
  G: "[b3@21 [b3,e4] ~@10, [g2,b2,e3]]/2", H: "[~@21 d4@11, [c3,g3,d#4]]/2", I: "[c4 b3, [g2,d3,g3]]/2",
  J: "[g2,f3,b3,d4]/2", K: "[g2,b2,e3,b3,e4]/2", L: "d#4/2", M: "~@3 [f3,g3,c4]@5 ~@3 f3@3 ~@2",
  N: "~@3 [f3,g3,c4]@3 ~@2 [f3,g3,c4]@3 f3 ~ [g3,c4] ~@2, ~@13 f3@3", O: "[b3@24 b3@5 b3@3, [g2,f3,d4]]/2",
  P: "[~@21 g3@5 ~ b3@5, [d3,e4], b3@27 ~@5]/2", Q: "[~ d4, d#4]/2", R: "~@3 g3@5 ~@8, c4",
  S: "~@3 g3@3 ~@2 g3@3 ~@2 g3 ~@2, c4", T: "[f3@19 [f3,c4]@5 [f3,c4]@8, [g2,b2,d3], b3 ~]/2",
  U: "[[g2,b2,e3], b3@21 ~@11]/2", V: "[~@21 d4@11, [c3,g3,c4]]/2", W: "[c4@2 c4 b3, [g2,d3,g3]]/2",
  X: "~@3 [g3,c4]@5 ~@8", Y: "~@3 [g3,c4]@3 ~@2 [g3,c4]@3 ~@2 [g3,c4] ~@2", Z: "[a3,a4] [g3,g4]", AA: "[f3,f4] [d3,d4]",
  AB: "[e3,e4] [d3,d4]", AC: "[c3,c4] [a2,a3]", AD: "[f3,b3]@3 [g3,c4]@5 [g3,c4]@8", AE: "c4@5 g3@11", AF: "[g2,g3]/2",
  AG: "[~@16 d4@11 ~@5, [g3,b3]]/2", AH: "[g3, e4@29 ~@3]/2", AI: "[g3, d#4@29 ~@3, c4@27 ~@5]/2", AJ: "[g3,b3]/2",
  AK: "[g3,e4]/2", AL: "[d#4, g3 ~]/4", AM: "[g3,d4]/2", AN: "[[c4,d#4]@37 [c4,d#4]@5 ~@6]/3", AO: "[c4,d#4]@3 ~@13",
  AP: "[c4,d#4]@3 ~@8 [c4,d#4]@2 ~@3", AQ: "[g2@16 ~@11 b3@5, d4, b3@27 ~@5, ~ g2]/2",
  AR: "[e4@16 ~@5 b3@5 ~ g3@5, g2, b3@21 ~@11, ~ e4]/2", AS: "[c4@27 c4@5, [g2,d#4]]/2",
  AT: "[[c4,d#4]@16 ~@21 c4@6 ~@5 g3@16, g2 g2, ~@27 d#4@7 ~@30, ~@32 d4@7 ~@4 b3@7 ~@14]/4", // Cm
  AU: "[[d4,d5] d4, d2, ~@8 f4@3 ~@5]/2", AV: "[~@2 g#2@41 [d4,d5,f#5]@77 ~@8, ~@43 d2@75 ~@10]/8",
})).s("gm_epiano2").gain(0.62).pan(0.8)

// chords · epiano2 · "Track 3" · soft notes
const epiano2_soft = note(`<
  ~@38 A B ~@6 C D ~@14 A B ~@45 E@2 F@2 G@3 ~@6 H@2 ~@6 H@2 ~@6 H@2 ~@6 I J K L ~@61 M@4 ~@5
>`.pickRestart({
  A: "~@11 [g3,c4]@3 ~@2", B: "~@11 [g3,c4] ~@4", C: "~@11 g3@3 ~@2", D: "~@11 g3 ~@4", E: "[~@11 d4@19 ~@2]/2",
  F: "[~@11 b3@16 ~@5, ~@5 d4@13 ~@14]/2",
  G: "[~@2 b4, ~@5 d4@16 b4@11 ~@16, ~@11 c4@16 a4@13 ~@8, ~ [g3,g4]@2, ~ c5 ~]/3", H: "g3/2", I: "~@11 [c4,d#4]@5",
  J: "~@3 [c4,d#4]@5 [c4,d#4]@3 [c4,d#4]@5", K: "[c4,d#4]@3 [c4,d#4]@8 [c4,d#4]@5",
  L: "~@3 [c4,d#4]@2 c4@3 c4@3 ~@2 [c4,d#4]@3, ~@5 d#4@5 ~@6", // Cm
  M: "[~@6 a4@6 d5@6 d#5@18 g#4@3 ~ c5@3 d#5@7 g#5@9 ~@5, ~@18 d#4@41 ~@5]/4",
})).s("gm_epiano2").gain(0.39).pan(0.8)

// chords · electric guitar clean · "Track 4"
const electric_guitar_clean = note(`<
  ~@13 A@2 ~@6 A@2 ~@22 A@2 ~@7 B@2 ~@16 C@4 D@4 C@4 D@4 C@4 E@2 ~@61 A@2 ~@6 A@2 ~ C@4 D@4 C@4 D@4 C@4 D@4 C@4 E@2 ~@3
  F G ~@6 A@2 ~@11
>`.pickRestart({
  A: "[~ [g2,b4,d5], d5@5 b4@5 ~ [b4,d5]@5 ~@16, ~@3 c5@5 c5@5 c5@5 ~@14]/2", B: "[~ g5@3]/2",
  C: "[~@3 d5@2 ~@6 d5@2 ~@6 d5@2 ~@6 d5@2 ~@6 d5@2 ~@6 d5@2 ~@6 d5@2 ~@6 d5@2 g5@3, a4 g4 f4 d4 e4 d4 c4 a3, ~@5 g5@7 ~ g5@7 ~ g5@7 ~ g5@7 ~ g5@7 ~ g5@7 ~ g5@7 ~@4]/4",
  D: "[~@32 [d4,g4]@3 ~@2 [d4,g4]@3 [d4,g4]@3 [d4,g4]@2 [d4,g4]@3 [d4,g4]@3 ~@2 [d4,g4]@3 [d4,g4]@3 [d4,g4]@2 [d4,g4]@3, [g2,d3,g3]]/4", // G5
  E: "[g3,d5,g5]/2", F: "d6@3 c6@2 b5@3 c6@3 [b5,d6]@2 c6@3", G: "b5",
})).s("gm_electric_guitar_clean").gain(0.29).pan(1)

// chords · epiano2 · "Track 6"
const epiano2_2 = note("<~@8 A@8 B@8 C@4 D@6 E@5 F G@4 H@3 ~@173>".pickRestart({
  A: "[~ [g2,b3,d4]@32 b3@21 ~ b3@5 g3@5 [g2,c4,d#4]@32 b3@21 ~ c4@5 b3@4, ~@33 [g2,e4]@32 ~@32 [g2,d4]@31]/8", // G Cm C G5
  B: "[~ [g2,b3,d4]@32 b3@21 ~ b3@5 g3@5 [g2,c4,d#4]@32 b3@3 ~@3 b3@2 [c3,c4]@8 b3@3 [c3,c4]@5 [c3,c4]@7, ~@33 [g2,e4]@32 ~@32 b2@31, ~@100 [c3,c4]@5 ~@23]/8", // G Cm C
  C: "[~ [g2,b2,d3,f3,b3]@32 b3@21 ~ [b3,e4] ~@8, ~@33 [g2,b2,e3]@31]/4", // G7 E5 Em
  D: "[~@23 d4@10 c4@16 b3@16 [g2,f3,b3,d4]@31, ~ [c3,g3,d#4]@32 [g2,d3,g3]@32 ~@31]/6", // G7 Cm G5
  E: "[~ [g2,b2,e3,b3,e4]@32 d#4@32 ~@3 [g3,c4]@5 ~@7]/5", F: "~@4 [g3,c4]@3 ~@2 [g3,c4]@3 ~@3 [g3,c4]",
  G: "[~ b3@24 b3@5 ~ b3@2 ~@22 g3@5 b3@4, ~ [g2,f3,d4]@32 e4@31, ~@33 b3@27 ~@4]/4", // G7
  H: "[~@17 d4@16 ~@3 g3@5 ~@7, ~ d#4@32 c4@15]/3",
})).s("gm_epiano2").gain(0.46).pan(0)

// chords · epiano2 · "Track 6" · soft notes · C5
const epiano2_soft_2 = note("<~@38 [~@12 [g3,c4]@3 ~] [~@12 [g3,c4] ~@3] ~@6 [~@12 g3@3 ~] ~@173>")
  .s("gm_epiano2").gain(0.29).pan(0)

// chords · guitar harmonics · "Track 7"
const guitar_harmonics = note("<~@32 A@3 ~@21 A@3 ~@57 A@3 ~ B@2 C@2 D@3 ~@93>".pickRestart({
  A: "d4/3", B: "d#4/2", C: "g#4/2", D: "[~@5 f#4@43]/3",
})).s("gm_guitar_harmonics").gain(0.37).pan(0.2)

// bass · fretless bass · "Track 9"
const bass = note(`<
  ~@8 A@6 ~@2 A@6 ~@2 A@6 ~@2 A@4 B C@2 D A@6 ~@2 A@6 ~@2 A@4 B C@2 D A@4 B C@2 E F@2 G@2 A@2 H I F@2 G@2 A@2 H I F@2
  G@2 J K L K B K A@2 J K L K B K A@2 J K L K B K A@2 J K L K B K A@2 J K L K B K A@2 J M L N O P Q R J M L K S@4 T@2
  A@6 ~@2 A@6 ~@2 U@2 G@2 A@2 V W U@2 G@2 A@2 V W U@2 G@2 X B Y Z F@2 G@2 J K L K B K A@8 AA@2 AB@8 ~@2
>`.pickRestart({
  A: "g1/2", B: "g1", C: "[~@16 g2@5 a2@5 ~ b2@5, g1]/2", D: "c3@5 d3@5 ~ c3@5, g1", E: "c3@5 d3@5 ~ e3@5, g1",
  F: "f2/2", G: "c2/2", H: "[g1,g2]@3 [a1,a2]@2 [b1,b2]@3 [c2,c3]@3 [b1,b2]@2 [a1,a2]@3",
  I: "[b1,b2]@3 [c2,c3]@2 [d2,d3]@3 [e2,e3]@3 [f2,f3]@2 [g2,g3]@3", J: "g1!2", K: "g2", L: "g1@8 g1@5 g1@3",
  M: "g2@5 f2@3 d2@3 f2@2 d2@3", N: "g2@5 f2@3 d2@3 f2@2 g2@3", O: "g1@11 g1@2 g1@3", P: "g2 f2", Q: "g2@5 a2@5 ~ b2@5",
  R: "c3@5 b2@3 a2@3 g2@2 d2@3", S: "g1/4", T: "g1@3 g1@3 ~@2 g1@3 ~@2 g1 ~@2", U: "f1/2",
  V: "g2@3 [a1,a2]@2 [b1,b2]@3 [c2,c3]@3 b2@2 [a1,a2]@3, g1@5 a1@5 ~ b1@5", // A B C A
  W: "[b1,b2]@3 c3@2 [b1,d2,d3]@3 [a1,e2,e3]@3 [f2,f3]@2 [g2,g3]@3, c2@5 ~@6 g1@5", X: "f2@3 e2@5 d2@8",
  Y: "[f2,g2]@3 [a1,a2]@2 [b1,b2]@3 [c2,c3]@3 b2@2 [a1,a2]@3, ~@3 e2@5 d2@8", // Fsus2 A B C A
  Z: "[b1,b2]@3 c3@2 [b1,d2,d3]@3 [a1,e2,e3]@3 [f2,f3]@2 [g2,g3]@3, g1@11 g1@5", AA: "g2/2",
  AB: "[d2@34 g#1@41 d2@52 ~]/8",
})).s("gm_fretless_bass").gain(0.41)

// chords · vibraphone · "Track 11"
const vibraphone = note("<~@92 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 ~@86 A@2 B@2 C@2 D@2 ~@18>".pickRestart({
  A: "[~@3 d6@29, f6]/2", B: "[~@11 e5@21, e6 ~, ~@3 d6@16 ~@13, ~@5 b5@16 ~@11, ~@8 g5@19 ~@5]/2",
  C: "[~@11 f5@10 d#5@5 ~ d5@5, d#6 ~, ~@3 c6@19 ~@10, ~@5 a5@19 ~@8, ~@8 g5@13 ~@11]/2", D: "[c5@5 b4@27, [g4,d5]]/2",
})).s("gm_vibraphone").gain(0.24).pan(0.1)

// chords · distortion guitar · "Track 12"
const distortion_guitar = note("<~@131 A B C D E F G H I B C D E ~@4 J K ~@70>".pickRestart({
  A: "~@5 d4@5 ~ e4@5", B: "f4", C: "~@11 f4@5, c5 ~, ~@3 d5@8 ~@5, ~@5 b4@11", D: "e4",
  E: "~@5 b4@11, c5@11 ~@5, ~@3 d5@8 ~@5", F: "d#4", G: "~@5 b4@11, c5@5 ~@11, ~@3 d5@5 ~@8", H: "d#5@5 d5@5 ~ c5@5",
  I: "g4@5 ~@6 e4@5, ~@5 d4@11", J: "[g3,c4]@5 ~@3 c4@3 c4@2 [g3,c4]@3, ~@8 g3@5 ~@3", K: "~@11 [g3,c4]@2 [g3,c4]@3",
})).s("gm_distortion_guitar").gain(0.41)

// chords · distortion guitar · "Track 12" · soft notes · C5
const distortion_guitar_soft = note(`<
  ~@147
  [~@13 [g3,c4]@3]
  [~@5 [g3,c4]@3 ~@8]
  [[g3,c4]@5 [g3,c4]@3 [g3,c4]@3 ~@5]
  ~@70
>`).s("gm_distortion_guitar").gain(0.2)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 B ~@3 A ~@3 B ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 C ~@17 A
  ~@7 A ~@7 A ~@3 B ~@3 A ~@3 B ~@3 A ~@3 B ~@7 A ~@7 A ~@10
>`.pickRestart({
  A: "~@11 x ~ x ~@2", B: "~@5 x ~@2 x ~@2 x ~ x ~@2", C: "x ~@7 x ~@2 x ~ x ~@2",
})).gain(0.67)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@64 ~@20 A@45 B C A@5 ~@6 A@16 ~@28 A@16 ~@10>".pickRestart({
  A: "x ~@4 x ~@5 x ~@4", B: "x ~@4 x ~@10", C: "~@11 x ~@4",
})).gain(0.67)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@11 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 B ~@17 A ~@7 A ~@7 A
  ~@7 A ~@7 A ~@11 A ~@7 A ~@10
>`.pickRestart({
  A: "~ x", B: "~@3 x ~@4 x ~@2 x ~@4",
})).gain(0.67)

// drums · open hat
// … 25 more lines

More by Radiohead