Strudelify
Creep cover art

1993 · Pablo Honey

Creep

Radiohead

KeyG majorTempo93 bpm
0:00/0:00
// Creep — Radiohead
// 93 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 90 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/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 · cello
const cello = note("<~@56 A B@2 C A D@2 E F G@3 F H@3 ~@18>".pickRestart({
  A: "g5@15 ~", B: "[a5@7 ~ g5@2 ~@2 g5@7 ~ d5@5 ~@2 d#5@11 ~ f#5@3 ~@2 b5@16 a5@2 g5@2]/2", C: "f#5@15 ~",
  D: "[a5@8 g5 ~@3 g5@6 ~@2 d5@5 ~@3 d#5@20 f5@16]/2", E: "g5@16 a5@13 ~@3", F: "a5",
  G: "[g5@16 f#5@8 g5@3 f#5@67 ~@2]/3", H: "[g5@8 f#5@4 g5 ~ g5@22 ~@12]/3",
})).s("gm_cello").gain(0.51)

// other · piano
const piano = note(`<
  A B C D E F G H A B I D J F K H A B C D E F L H A B M D J F K H A B I D N F L H A B C D E F G H A B I D J F K H A B C
  D E F L H A B M D J F ~@2 A B I D N F L H O P Q R S T U V W@2
>`.pickRestart({
  A: "~ g3 d4@2 g3 d4@2 g3", B: "d4@4 g3@2 d4@4 b3@2 g3@3 ~", C: "~ f#3 d#4@2 b3 d#4@2 b3",
  D: "e4@7 ~ b3@4 d#4@8 b3@4 f#3@5 ~@3", E: "~@4 g3@4 e4@8 c4@4 e4@7 ~ c4@4", F: "f4@7 ~ c4@4 e4@8 c4@4 g3@5 ~@3",
  G: "~@4 g3@4 d#4@8 c4@4 d#4@8 c4@3 ~", H: "f4@7 ~ c4@4 d#4@8 c4@4 g3@5 ~@3", I: "~@4 f#3@4 d#4@8 b3@4 d#4@7 ~ b3@4",
  J: "~ g3 e4@2 c4 e4@2 c4", K: "~@4 g3@4 d#4@8 c4@4 d#4@7 ~ c4@4", L: "~ g3 d#4@2 c4 d#4@2 c4",
  M: "~@4 f#3@4 d#4@8 b3@4 d#4@8 b3@3 ~", N: "~@4 g3@4 e4@8 c4@4 e4@8 c4@3 ~",
  O: "g3!2 d4@2 g3 ~@2 g3, d3@7 ~, b3@5 d4@2 ~, ~@25 a3@7",
  P: "[g3,d4]@4 g3@2 d4@4 b3@2 [g3,b3]@3 ~, d3@25 ~@7, b3@3 a3@3 ~@2", // G5 G
  Q: "f#3!2 d#4@2 b3 ~@2 b3, d#3@29 ~@3, b3@4 ~ d#4@2 ~, ~@3 a3",
  R: "[b3,e4]@8 b3@4 d#4@8 b3@3 ~ f#3@5 ~@3, [d#3,f#3]@3 ~, ~@12 a3@11 b3@5 ~@4", // E5 D#m
  S: "g3!2 e4@2 c4 ~@2 c4, e3@27 ~@5, c4@16 ~@4 e4@7 ~@5, ~@3 b3",
  T: "[c4,f4]@8 c4@4 e4@8 c4@4 g3@5 ~@3, [e3,g3]@3 ~, ~@12 b3@11 ~ c4@3 ~@5", U: "c4@21 ~@3 a3@4 ~@4, [d#3,g3]@27 ~@5",
  V: "[d#3,c4]@10 ~@3 [d3,b3]@9 ~@2 [d#3,g3,c4]@8, g3@7 ~@25", // Cm G Cm
  W: "[~@10 a2@9 b2@22 ~@23, g2@5 ~@27, ~@2 [d3,g3,b3]@33 ~@29]/2", // G
})).s("gm_piano").gain(0.36)

// bass · electric bass finger
const bass = note(`<
  A B C D E F G H A B C D E F G I A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G I A B C
  D E F J H A B C D E F G K@2 L M@2 N O N@2 A B C D E F P@2 ~@2
>`.pickRestart({
  A: "g1@2 ~@12 g1 ~ g1@2 ~@2 g1@2 ~@4 g1@2 ~@4", B: "g1@2 ~@11 g1 ~@2 g1@2 ~@2 g1@2 ~@4 g1@3 ~@3",
  C: "b1@3 ~@10 b1 ~@2 b1 ~@3 b1@2 ~@4 f#1@3 ~@3", D: "b1@4 ~@10 b1 ~ b1@2 ~@2 b1@2 ~@4 f#1@3 ~@3",
  E: "c2@4 ~@9 c2 ~@2 c2@2 ~@2 c2@2 ~@4 g1@2 ~@4", F: "c2@3 ~@10 c2 ~@2 c2@2 ~@2 c2@2 ~@4 g1@3 ~@3",
  G: "c2@4 ~@9 c2 ~@2 c2@2 ~@2 c2@4 ~@2 g1@2 ~@4", H: "c2@4 ~@4 d2@3 ~@5 d#2@4 ~@4 f2@4 ~@4",
  I: "c2@4 ~@4 d2@3 ~@5 d#2@4 ~@4 f2@3 ~@5", J: "c2@4 ~@9 c2 ~@2 c2 ~@3 c2@4 ~@2 g1@2 ~@4",
  K: "[~@16 g1@4 ~@9 g1 ~@2, c2@5 ~@3]/2", L: "g1@8 ~@18 g1@3 ~@3", M: "b1@8 ~@18 b1@3 ~@3", N: "c2@4 ~@9 c2 ~@2",
  O: "c2@8 ~@18 c2@3 ~@3", P: "[c2@15 ~]/2",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@22 A B C@2 D@2 E@2 F@2 G ~@13 A B C@2 D@2 E@2 F@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 K@2 ~@18
>`.pickRestart({
  A: "~@16 [e2,g2,c3,g3] [c2,a#2,c3,e3,g3,a#3] [e2,g2] ~@13, ~@15 [c2,a#2,e3,a#3]@2 ~@15", // C C7 Em C7
  B: "~@3 [c2,a#2] [e2,g2,c3,e3,g3,a#3] ~ [c2,e2,g2,c3,e3,g3] ~@17 [e2,g2,c3,e3,g3,a#3] [c3,e3,g3,a#3] [c2,e2,g2,a#2] [a#2,c3,e3,g3,a#3] [e2,g2] ~@3, ~@5 [a#2,a#3]@2 ~@16 [c2,a#2]@2 ~@7", // C7 C C7 Em A# C7
  C: "[~@24 c4@4 b3@29 ~@7, [b2,d3,g3]@29 ~@3]/2", D: "[~@24 e4@4 d#4@25 ~@11, [b2,d#3,f#3,b3]@27 ~@5]/2",
  E: "[~@12 f4@2 ~@2 d4@15 ~, [c3,e3,g3]@27 ~@5, c4@28 e4@25 ~@11]/2", F: "[d#4@15 ~ f4@15 ~, [c3,d#3,g3]@27 ~@5]/2",
  G: "[b2,d3,g3]@3 ~", H: "[~@12 c4@2 ~@2 g4@15 ~, [b2,d3,g3]@29 ~@3, g4@28 b3@29 ~@7]/2",
  I: "[d#4@15 ~ f#4@15 ~, [b2,d#3,f#3,b3]@27 ~@5]/2", J: "[e4@15 ~ g4@15 ~, [c3,e3,g3]@27 ~@5]/2",
  K: "[d#4@15 ~ c4@15 ~, [c3,d#3,g3]@27 ~@5]/2", L: "[[b2,d3,g3]@29 ~@3, b4@31 ~]/2",
  M: "[f#4@15 ~ a4@15 ~, [b2,d#3,f#3,b3]@27 ~@5]/2", N: "[g4@15 ~ e4@15 ~, [c3,e3,g3]@27 ~@5]/2",
})).s("gm_overdriven_guitar").gain(0.51)

// other · synth brass 1
const synth_brass_1 = note("<~@23 A@2 ~@22 A@2 ~@30 B ~@10>".pickRestart({
  A: "[~@25 c#6@14 ~@25]/2", B: "~@5 c#6@3",
})).s("gm_synth_brass_1").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  [x ~@13 x ~ x ~@2 x ~@8 x ~@3]!55
  [x ~@5 x ~@4 x ~@5 x ~@6 x ~@7]
  [x ~@13 x ~ x ~@2 x ~@8 x ~@3]!6
  [x ~@10 x ~@4 x ~@11 x ~@3]
  [~ x ~@2 x ~@2 x ~@4 x!4]
  [x ~@13 x ~ x ~@2 x ~@8 x ~@3]!6
  ~@20
>`).gain(0.51)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@80 [x ~@13 x ~ x ~@2 x ~@8 x ~@3]!5 ~@5>").gain(0.26)

// drums · snare
const snare = s("sd").struct("<A@22 B C A@22 B D A@7 E A@6 F G A@6 ~@20>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@3 x!2 ~@2 x ~@3", C: "~@2 x!3 ~@7 x ~@3", D: "~@3 x ~ x ~@2 x ~@15 x ~@7",
  E: "~ x ~@2 x ~@2 x ~@2 x ~@3 x ~", F: "~ x!2 ~@2 x!2 ~", G: "x ~@5 x ~@5 x ~@3 x!3 ~ x!3 ~@9",
})).gain(0.51)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@80 [~ x ~ x]!5 ~@5>").gain(0.26)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!70 ~@2 [x!8]!8 ~@10>").gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@80 [x!8]!5 ~@5>").gain(0.2)

// drums · congas
const congas = s("conga:18").struct(`<
  ~@87
  [x ~ x!2 ~ x ~ x!2 ~ x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]
  [~ x ~ x ~@12]
  ~
>`).gain(0.82)

stack(
  cello, piano, bass, overdriven_guitar, synth_brass_1, kick, kick_soft, snare, snare_soft, hihat, hihat_soft, congas
)

More by Radiohead