Strudelify
No Surprises cover art

1997 · OK Computer

No Surprises

Radiohead

KeyF majorTempo73 bpm
0:00/0:00
// No Surprises — Radiohead
// 73 bpm, 4/4, key F 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: duplicate parts dropped: ch 15 clarinet (copy of ch 16 pan flute)
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(73/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 · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B A B A B A B A@4 C ~ A B A@4 C ~ A B A@4 D@6 E B A B A@4 D@6 A B ~@10 D@6 A B F@2 G@2
>`.pickRestart({
  A: "a5!2", B: "a5 ~", C: "bb5!2", D: "[bb5@4 ~@3 c6@4 ~@5]/2", E: "~ a5", F: "[~ a5@8 a5@9 a5@9 ~@5]/2",
  G: "[~@3 f5@10 ~@3]/2",
})).s("gm_electric_guitar_jazz").gain(0.25)

// chords · overdriven guitar
const overdriven_guitar = note("<~@49 A B C D E F G H@2 I J ~@12>".pickRestart({
  A: "~@15 c3", B: "c3@2 c3@2 c3@6 c3@2 c3!2 c3@2, [g3,c4]", C: "bb2@2 bb2@2 bb2@9 bb2 bb2@2, [f3,bb3]",
  D: "c3@2 c3@2 c3@2 c3@4 c3@2 c3!2 c3@2, [g3,c4], e3 ~", E: "bb2@2 bb2@2 bb2@2 bb2@9 g2, [f3,bb3], db3 ~",
  F: "g2 bb2@7 bb2@4 bb2@2 c3@2, [d3,g3]@3 ~, ~ g2@11 ~@4", G: "db3 c3 bb2 db3",
  H: "[f2,a2,c3,f3]@4 [f2,a2,c3,f3]@2 [f2,a2,c3,f3]!2 [f2,a2,c3,f3]@4 [f2,a2,c3,f3]@2 [f2,a2,c3,f3]!2", // F
  I: "[f2,bb2,d3,f3]@4 [f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2 [f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2 [f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2", // Bb
  J: "[f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2 [f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2 [f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2 [f2,bb2,d3,f3]@2 [f2,bb2,d3,f3]!2", // Bb
})).s("gm_overdriven_guitar").gain(0.19)

// other · electric guitar jazz
const electric_guitar_jazz_2 = note(`<
  A@8 B@8 C@8 D@4 E@4 F@4 A@2 G@4 E@4 F@4 H I H I ~@2 J@6 E@2 F@4 K L@3
>`.pickRestart({
  A: "[~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@5]/2",
  B: "[~@2 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 d5@4 d5@4 d5@4 d5@4 c5@2 c5@2 ~@2 a4 g4 f4 g4 a4 bb4 d5 c5@3 c5@4 c5@4 c5@4 c5@4 c5@4 c5@10]/8",
  C: "[~@2 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 c5@4 d5@4 d5@4 d5@4 d5@4 c5@2 c5@2 ~@2 a4 g4 f4 [g4,a4] [bb4,c5]@2 d5 c5@3 c5@4 c5@4 c5@4 c5@4 c5@4 c5@10]/8", // Gsus2 Bbsus2
  D: "[~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5]/4",
  E: "[d5@2 c5 bb4@3 a4 g4@4 g4 a4@2 bb4@2]/2",
  F: "[d5@2 c5 bb4@3 a4 g4@4 g4 a4@2 bb4 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@5]/4",
  G: "[~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 bb4]/4",
  H: "~ c3@8 ~@7, [e3,g3,c4] ~", I: "[bb3,db4,f4,bb4]",
  J: "[~ c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 ~ d5@2 c5 bb4@3 a4 g4@4 g4 a4@2 bb4@2, ~@31 c5@2 ~@15]/6",
  K: "~@3 c5@4 c5@4 ~ c5@4", L: "[c5@4 c5@4 ~ c5@13 [f3,a3,c4,f4]@20 ~@6]/3",
})).s("gm_electric_guitar_jazz").gain(0.19).pan(0)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@4 A B C D E@2 F G H I J K E@2 F G H I L M N E O P Q@6 ~@8 R@2 S@2 T@2 U V W X Y X Z AA ~@4 T@2 AB@2 AC@2 ~@6
>`.pickRestart({
  A: "[f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2 [f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,bb3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2", // F Fsus4 F
  B: "[f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2 g4 f4 e4 db4 c4 bb3 a3 g3", // F
  C: "[f2,c3,f3,a3,c4,f4] [f2,c3,f3,bb3,c4,f4] [f2,c3,f3,a3,c4,f4] [f2,c3,f3,bb3,c4,f4]", // F Fsus4 F Fsus4
  D: "[f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,bb3,c4,f4]@2 [f2,c3,f3,a3,c4,f4] [f2,c3,f3,bb3,c4,f4] [g4,bb4] [f4,a4] [e4,g4] [db4,f4] [c4,e4] [bb3,db4] [a3,c4] [g3,bb3]", // F Fsus4 F Fsus4 Gm F Em Db …
  E: "[f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2 [f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2", // F
  F: "[f2,d3,f3,bb3,d4,f4]@4 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2", // Bb
  G: "[f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2", // Bb
  H: "[g2,d3,g3,bb3,d4,g4]@2 [g2,d3,g3,bb3,d4,g4]!2 [g2,d3,g3,bb3,d4,g4]@2 [g2,d3,g3,bb3,d4,g4]!2 [g2,d3,g3,bb3,d4,g4]@2 [g2,d3,g3,bb3,d4,g4]!2 [g2,d3,g3,bb3,d4,g4]@2 [g2,d3,g3,bb3,d4,g4]!2", // Gm
  I: "[g2,c3,g3,c4,e4,g4]@4 [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4]!2 [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4]!2 [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4]!2", // C
  J: "[f2,c3,f3,c4,f4,a4]!2 [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,bb4]@3 [f2,c3,f3,c4,f4,bb4] [f2,c3,f3,c4,f4,a4]!2 [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,bb4]@3 [f2,c3,f3,c4,f4,bb4]", // F Fsus4 F Fsus4
  K: "[f2,c3,f3,c4,f4,a4]!2 [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,bb4]@3 [f2,c3,f3,c4,f4,bb4] [f2,db3,f3,bb3,db4,f4,bb4]!2 [f2,db3,f3,bb3,db4,f4,bb4]@2 [f2,db3,f3,bb3,db4,f4,bb4]!2 [f2,db3,f3,bb3,db4,f4,bb4]@2", // F Fsus4 Bbm
  L: "[f2,c3,f3,c4,f4,a4]!2 [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,bb4]@3 [f2,c3,f3,c4,f4,bb4] [f2,c3,f3,c4,f4,a4]!2 [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,bb4]@2 [f2,c3,f3,c4,f4,bb4]!2", // F Fsus4 F Fsus4
  M: "[f2,c3,f3,c4,f4,a4]!2 [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,bb4]@2 [f2,c3,f3,c4,f4,bb4]!2 [f2,db3,f3,bb3,db4,f4,bb4]!2 [f2,db3,f3,bb3,db4,f4,bb4]@2 [f2,db3,f3,bb3,db4,f4,bb4]!2 [f2,db3,f3,bb3,db4,f4,bb4]@2", // F Fsus4 Bbm
  N: "[f2,c3,f3]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2 [f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!2", // F5 F
  O: "[f2,d3,f3]@4 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2", // Dm Bb
  P: "[f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4,f4]!2 [f2,d3,f3,bb3,d4,f4]@2 [f2,d3,f3,bb3,d4]!2", // Bb
  Q: "[[g2,d3,g3,bb3]@2 [g2,d3,g3,bb3]!2 [g2,d3,g3,bb3]@2 [g2,d3,g3,bb3]@2 [g2,d3,g3,bb3]@2 [g2,d3,g3,bb3]!2 [g2,d3,g3,bb3]@2 [g2,c3,g3]@4 [g2,c3,g3,c4]!4 g2 [g2,c3,g3,c4] [g2,c3,g3,c4]@2 [g2,c3,g3,c4]!2 [g2,c3,g3,c4]@2 [g2,c3,g3,c4]!2]/2", // Gm C5
  R: "[[g3,d4,g4]@2 [g3,d4,g4]!2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,c4,g4]@4 [g3,c4,g4,c5]!4 g3 [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4,c5]!2 [g3,c4,g4,c5]@2 [g3,c4,g4,c5]!2]/2", // G5 Gm C5
  S: "[[g3,g4]@2 [g3,d4,g4] [g3,d4,g4,bb4] [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,c4,g4]@4 [g3,c4,g4,c5]!4 g3 [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4]!2 [g3,c4,g4]@2 [g3,c4,g4,c5]!2]/2", // G G5 Gm C5
  T: "[[g3,g4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,c4,g4]@4 [g3,c4,g4,c5]!4 g3 [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4,c5]!2 [g3,c4,g4,c5]@2 [g3,c4,g4,c5]!2]/2", // G Gm C5
  U: "~ [f3,c4,f4,a4,c5,f5] [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5]@3 [f3,c4,f4,a4,c5,f5]!3 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5]@3 [f3,c4,f4,a4,c5,f5]", // F
  V: "[f3,c4,f4,a4,c5,f5]!2 [f3,c4,f4,a4,c5,f5]@2 [f3,c4,f4,a4,c5,f5]@3 [f3,c4,f4,a4,c5,f5] [bb3,f4,bb4,db5]@2 [bb3,f4,bb4,db5]@2 [bb3,f4,bb4,db5]@3 [bb3,f4,bb4,db5]", // F Bbm
  W: "[g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5]@6 [g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5]!2 [g3,c4,e4,g4,c5]@2", // C
  X: "[bb3,db4,f4,bb4]@2 [bb3,db4,f4,bb4]@2 [bb3,db4,f4,bb4]@6 [bb3,db4,f4,bb4]@2 [bb3,db4,f4,bb4]!2 [bb3,db4,f4,bb4]@2", // Bbm
  Y: "[g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5]@6 [g3,c4,e4,g4,c5]@2 [g3,c4,e4,g4,c5]!2 [g3,c4,e4,g4,c5,e5]@2", // C
  Z: "[g3,d4,g4,bb4,d5,g5]@2 [g3,d4,g4,bb4,d5,g5]@2 [g3,d4,g4,bb4,d5,g5]@3 [g3,d4,g4,bb4,d5,g5] [g3,d4,g4,bb4,d5,g5]@2 [g3,d4,g4,bb4,d5,g5]!2 [g3,d4,g4,bb4,d5,g5]@3 [bb3,db4,f4,bb4,db5,f5]", // Gm Bbm
  AA: "[bb3,db4,f4,bb4,db5,f5] [f4,bb4,f5]@3 [bb3,db4,f4,bb4,db5,f5]@4 [bb3,db4,f4,bb4,db5,f5]@4 [bb3,db4,f4,bb4,db5,f5]@4", // Bbm Bb5 Bbm
  AB: "[[g3,g4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,c4,g4]@4 [g3,c4,g4,c5]!4 g3 [g3,c4,g4,c5] [g3,c4,g4]@2 [g3,c4,g4]!2 [g3,c4,g4]@2 [g3,c4,g4,c5]!2]/2", // G Gm C5
  AC: "[[g3,g4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]@2 [g3,d4,g4,bb4]!2 [g3,d4,g4,bb4]@2 [g3,g4]@4 [g3,c4,g4,c5]!4 g3 [g3,c4,g4,c5] [g3,g4]@2 [g3,c4,g4,c5]!2 [g3,c4,g4,c5]@2 [g3,c4,g4,c5]!2]/2", // G Gm G C5 G C5
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(1)

// bass · acoustic bass
const bass = note(`<
  A B A C D E D E D@2 F G H I A J D@2 K L H I A J D@2 K L M N M O M P Q@2 ~ R S@2 T U M N M O M P V W X Y X Z AA AB D@2
  K L M N M O M P Q@2 ~ AC@3
>`.pickRestart({
  A: "f2@4 f2 f2@3", B: "f2@8 bb2@3 bb2@3 g2@2", C: "f2@8 bb2@3 bb2 bb2@2 a2 g2", D: "f2@8 f2 ~ f2@3 ~ f2!2",
  E: "f2@6 f2!2 bb2@3 bb2@2 bb2 a2 g2", F: "bb1@8 bb1 ~ bb1@6", G: "bb1@4 bb1 bb1@2 a2", H: "g2@3 g2 g2@2 bb2@2",
  I: "c3@3 c3 c3@2 bb2@2", J: "f2@8 bb2 bb2@2 bb2@3 g2@2", K: "bb2@8 bb2 ~ bb2@6", L: "bb2@4 bb2 bb2@2 a2",
  M: "g2@2 g2!3 a2 bb2 c3", N: "c3@2 c3@3 c3 c2 e2 g2 bb2 c3 bb2 g2 f2 gb2@2",
  O: "c3@2 c3 ~@3 c3@2 c3@4 a2@4, ~@3 c3@3 ~@10, ~ d3 ~@2", P: "c3@2 c3 ~@3 c3@2 c3@4 g2@4, ~@3 c3@3 ~@10, ~ d3 ~@2",
  Q: "[f2@3 bb2]/2", R: "~ bb2", S: "[f3@3 e3]/2", T: "d3!2", U: "d3@2 d3 c3", V: "f2@2 ~@2 f2 f2@2 f2",
  W: "f2@8 bb2@4 bb2@3 bb2", X: "c3!8", Y: "bb2!2 bb2@2 bb2@2 bb2 db3", Z: "bb2!2 bb2@2 bb2 f2 bb2 a2",
  AA: "g2@2 g2@2 g2!3 a2", AB: "bb2 a2 bb2 e3", AC: "[~@11 bb2@11 f2@23 ~@3]/3",
})).s("gm_acoustic_bass").gain(0.36).pan(0.3)

// bass · electric guitar muted
const bass_2 = note(`<
  A B A C D E D E D@2 F G H I A J D@2 K L H I A J D@2 K L M N M O M P Q@2 ~ R S@2 T U M N M O M P V W X Y X Z AA AB D@2
  K L M N M O M P Q@2 ~ AC@3
>`.pickRestart({
  A: "f1@4 f1 f1@3", B: "f1@8 bb1@3 bb1@3 g1@2", C: "f1@8 bb1@3 bb1 bb1@2 a1 g1", D: "f1@8 f1 ~ f1@3 ~ f1!2",
  E: "f1@6 f1!2 bb1@3 bb1@2 bb1 a1 g1", F: "bb0@8 bb0 ~ bb0@6", G: "bb0@4 bb0 bb0@2 a1", H: "g1@3 g1 g1@2 bb1@2",
  I: "c2@3 c2 c2@2 bb1@2", J: "f1@8 bb1 bb1@2 bb1@3 g1@2", K: "bb1@8 bb1 ~ bb1@6", L: "bb1@4 bb1 bb1@2 a1",
  M: "g1@2 g1!3 a1 bb1 c2", N: "c2@2 c2@3 c2 c1 e1 g1 bb1 c2 bb1 g1 f1 gb1@2",
  O: "c2@2 c2 ~@3 c2@2 c2@4 a1@4, ~@3 c2@3 ~@10, ~ d2 ~@2", P: "c2@2 c2 ~@3 c2@2 c2@4 g1@4, ~@3 c2@3 ~@10, ~ d2 ~@2",
  Q: "[f1@3 bb1]/2", R: "~ bb1", S: "[f2@3 e2]/2", T: "d2!2", U: "d2@2 d2 c2", V: "f1@2 ~@2 f1 f1@2 f1",
  W: "f1@8 bb1@4 bb1@3 bb1", X: "c2!8", Y: "bb1!2 bb1@2 bb1@2 bb1 db2", Z: "bb1!2 bb1@2 bb1 f1 bb1 a1",
  AA: "g1@2 g1@2 g1!3 a1", AB: "bb1 a1 bb1 e2", AC: "[~@11 bb1@11 f1@23 ~@3]/3",
})).s("gm_electric_guitar_muted").gain(0.29).pan(0.2)

// other · vibraphone
const vibraphone = note(`<
  ~@4 A B A B A@4 C D A E A@4 C D A E A@4 F G F G H G A B A B A@4 I J I J I J K@2 L M N M O ~ A@4 F G F G F G A B P@2
  Q@2
>`.pickRestart({
  A: "a5 f5 a5 f5", B: "a5 f5 ~@2", C: "bb5 g5 bb5 g5", D: "[c5,e5,g5]!2", E: "a5@2 f5@2 db5 bb4 a4 g4",
  F: "~@3 [bb4,d5,g5]@4 ~", G: "~@3 [c5,e5,g5]@4 ~", H: "[bb4,d5,g5]@3 [bb4,d5,g5]@4 ~", I: "~@3 [bb4,g5]@4 ~",
  J: "~@3 [c5,g5]@4 ~", K: "[[f4,a4,c5,f5]@23 ~ db5@2 c5@2 bb4@2 db5@2]/2", L: "[c4,g4,c5,g5] ~",
  M: "~ [bb4,bb5] [db5,db6] [f5,f6] [ab5,ab6] [g5,g6] [f5,f6] [db5,db6]", N: "[c4,g4], c5 ~", O: "bb4",
  P: "[~ a5@4 f5@4 a5@4 ~ f5@4 a5@4 f5@4 ~@6]/2", Q: "[~@6 [c5,f5]@23 ~@3]/2",
})).s("gm_vibraphone").gain(0.22).pan(1)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@24 A@2 B@2 C@2 D@2 E@4 F@2 G@4 C@2 H@2 I@4 ~@10 C@2 D@2 J@8>".pickRestart({
  A: "[~@5 a4@2 g4, [c5,f5]]/2", B: "[~@5 d5@2 c5, [f4,bb4]]/2", C: "[[g4,bb4]@7 c5@7 c5 [a4,d5], ~@7 g4@8 ~]/2",
  D: "[bb5@2 a5 g5@3 f5 e5@4 e5 f5@2 g5@2, g4@7 c5@8 ~]/2",
  E: "[bb5@2 a5 g5@2 ~ f5 bb5@3 ~ bb5 e5@2 e5 ~@12 c6 db6 c6 bb5 db6, bb4@14 [g4,c5]@16 f5@17 ~@17, ~@4 c5@3 ~]/4", // C5
  F: "[~ a5 f5 ~@8 c6 [bb3,db6] [c4,c6] [db4,bb5] [e4,db6], f4@3 ~, c5@3 c5@13, c6 ~@3 c4@2 ~@2]/2", // Bbm C Gb Dbm
  G: "[f4@3 e4 bb3@3 ~, c6]/4", H: "[bb5@2 a5 g5@3 f5 e5@4 e5 f5@2 g5@2, [g4,bb4]@7 [g4,c5]@8 ~]/2",
  I: "[bb5@4 a5@2 g5@4 ~@2 f5@2 bb5@6 ~@2 bb5@2 e5@4 e5@2 f5@25 ~@9, [g4,bb4]@7 [g4,c5]@8 ~@17]/4", // Gm C5
  J: "[bb5@4 a5@2 g5@4 ~@2 f5@2 bb5@6 ~@2 bb5@2 e5@4 e5@2 ~@24 c6@2 db6@2 ~ c6@2 bb5@2 db6@2 ~@2 a5@2 f5@2 ~@18 c6@2 [bb3,db6]@2 [c4,c6]@3 [db4,bb5]@3 [e4,db6]@3 [f4,c6]@23 ~@3, bb4@14 [g4,c5]@16 f5@17 ~@18 c5@6 c5@31 ~@26, ~@32 c5@24 ~@9 f4@26 ~@37, ~@65 c6@4 ~@13 c4@9 ~@37]/8", // Bbm C Gb Dbm F5 C5
})).s("gm_string_ensemble_1").gain(0.12)

// other · glockenspiel
const glockenspiel = note("<~@35 A B C D ~@10 E F G F G ~@13 H@2 I J@2>".pickRestart({
  A: "~@3 c6 db6 c6 bb5 db6", B: "c6 a5 f5 c5 ~@4", C: "~@3 c5 db5 c5 bb4 db5", D: "f5 ~@7", E: "~@4 db6 c6 bb5 db6",
  F: "c6 ~", G: "~ bb5 db6 f6 ab6 g6 f6 db6", H: "[~@6 c6@2 db6@2 ~ c6@2 bb5@2 db6@2 c6@2 a5@2 f5@2 c5@2 ~@7]/2",
  I: "~@9 c5@2 db5@2 c5@3", J: "[bb4@3 db5@3 c5@23 ~@3]/2",
})).s("gm_glockenspiel").gain(0.24).pan(0)

// chords · piccolo
const piccolo = note("<~@60 A B C D E F G ~@5>".pickRestart({
  A: "f5@2 ~ a5, ~ bb5", B: "e5 d5 c5 bb4, g5 e5", C: "[bb4,f5]@2 ~ a5, ~ [d5,bb5]",
  D: "[e5,g5] [d5,f5] [c5,e5] [bb4,d5]", E: "e5 f5 ~ a5, bb4 [d5,bb5]", F: "[c5,g5]", G: "[c5,f5]",
})).s("gm_piccolo").gain(0.22)

// other · pan flute
const pan_flute = note(`<
  ~@7 A B C@2 D E F G ~ H I@2 J K L G ~ H I@2 M N@6 O P O Q R S@2 T N@4 U@2 V ~@7 W X@2 Y Z@2 N@2 U@2 V ~@5
>`.pickRestart({
  A: "~@7 g4", B: "a4 c4", C: "[a4@2 a4@4 g4@5 f4@4 a4@9 bb3@7 g4]/2", D: "a4@2 a4@4 g4@5 f4@5", E: "bb4@2 d4 ~",
  F: "e4@2 e4@2 e4@6 f4@3 g4@3", G: "a4@11 ~@5", H: "a4@4 c4@3 c4", I: "[a4@2 a4@4 g4@5 f4@4 a4@9 bb3@6 bb3@2]/2",
  J: "a4 a4@2 g4@3 ~@2", K: "bb4@2 f4 ~", L: "e4@2 e4@3 f4@3", M: "a4!3 g4@2 f4 ~ a4",
  N: "[bb4 a4@2 g4@3 f4 e4@4 e4 f4@2 g4@2]/2", O: "a4", P: "f4@3 ~", Q: "f4 ~", R: "a4@4 a4@3 a4",
  S: "[a4@2 a4@4 bb4@5 [c5,f5]@3 [a4,e5]@10 [a4,d5]@6 ~@2]/2", T: "a4 a4@2 bb4@2 a4@2 a4",
  U: "[bb4 a4@2 g4@3 f4 bb4@4 bb4 e4@2 e4@2]/2", V: "f4", W: "[a4,c5]@4 [a4,c5]@3 ~",
  X: "[[a4,c5]@2 [a4,c5]@4 [bb4,c5]@5 a4@4 [a4,d5]@9 bb4@6 g4@2]/2", Y: "a4 a4@2 g4@3 f4@2",
  Z: "[bb4 a4@2 g4@3 f4 bb4@4 bb4 e4@2 f4@2]/2",
})).s("gm_pan_flute").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B@7 C B@7 C B@3 C D E D E D F E ~@7 D E D E D F G H I H I H I D B@4 D E D E D F E ~@5
>`.pickRestart({
  A: "~@15 x", B: "x ~@6 x!2 ~ x ~@4 x", C: "x ~@6 x!2 ~@7", D: "x ~ x ~@4 x!2 ~ x ~@3 x ~", E: "x", F: "x!2 ~ x!3 ~@2",
  G: "x ~@6 x!2 ~ x ~@3 x ~", H: "x ~@6 x ~@8", I: "x!2 ~@2 x!2 ~@2",
})).gain(0.19)

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 A ~ A ~@11 A ~ A ~@5 B ~ B ~@7 A ~ A ~@8>".pickRestart({
  A: "~@6 x!2 ~@8", B: "~@10 x!2 ~@4",
})).gain(0.19)

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~ A ~@5 A ~ A ~@5 A ~@31 A ~ A ~@12>".pickRestart({
  A: "~@15 x",
})).gain(0.19)
// … 13 more lines

More by Radiohead