Strudelify

Fake Plastic Trees

Radiohead

KeyA majorTempo73 bpm
0:00/0:00
// Fake Plastic Trees — Radiohead
// 73 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 87 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.

// chords · acoustic guitar steel · "Acoustic"
const acoustic_guitar_steel = note(`<
  A B C D E F G H A B C D E F G I J K L M J K L M A B C D E F G I A B C D E F G I J K L M J K L M A B C D E F G I A B C
  D E F G I J K L M J K L M J K L M J K L N J K L M J K O
>`.pickRestart({
  A: "[a2,e3]@4 a3@2 ~ c#4 [a2,e3]@4 [a3,c#4]@2 [a3,c#4]@2, ~ [a2,e3,c#4,e4] ~ [a2,e3,e4], ~@3 a3 ~@4", // A5 A A5
  B: "[a2,e3]@4 [a3,c#4,e4]@2 ~ c#4!2 d4 [a3,d4]@2 d4!2 c#4@2, ~ [a2,e3]!2 [a2,e3,a3], ~@3 [a3,c#4] a3 ~@3", // A5 A D5 A5 A
  C: "[f#2,f#3]@4 [f#2,a3,c#4]@3 ~ [f#2,a3]@4 [a3,c#4]@2 ~ c#4, ~@7 c#4@5 f#2@4, ~@7 [a3,c#4]", // F# F#m A
  D: "[f#2,f#3]@4 c#4@2 c#4!2 c#4@2 g#3@2 g#3@2 g#3@2, ~@2 a3@3 ~@3, ~ f#2!2 [e2,b2,e3]", // F# E5
  E: "[d3,a3,d4]@4 [a3,d4]@2 ~ d4 [d3,a3,d4]@4 d4@2 b3@2, f#2!2, ~ d3 ~ [d3,a3], ~@3 [a3,d4] ~@4", // D5
  F: "[a2,e3,a3,c#4]@4 [a3,c#4,e4]@2 ~ c#4!2 d4 [a3,d4]@2 d4!2 c#4@2, ~ [a2,e3]!2 [a2,e3,a3], ~@3 [a3,c#4] a3 ~@3", // A D5 A5 A
  G: "[d3,a3,d4]@4 [a3,d4]@2 ~ d4 [d3,a3,d4]@4 [d3,a3,d4]@4, f#2!2, ~ d3 ~@2, ~@3 [a3,d4] ~@4", // D5
  H: "[d3,a3,d4]@4 [a3,d4]@2 ~ d4 [d3,a3,d4]@4 d4@2 c#4@2, f#2!2, ~ d3 ~ [d3,a3], ~@3 [a3,d4] ~@4", // D5
  I: "[d3,a3,d4]@4 [a3,d4]@2 ~ d4 d4@2 d4@2 d4!2 c#4@2, f#2!2, ~ d3 [d3,a3]!2, ~@3 [a3,d4] ~@4", // D5
  J: "[b2,a3,d4]@4 d4@2 d4!2 [b2,a3,d4]@4 d4@2 d4@2, ~ [b2,a3] ~ [b2,a3]", // Bm7 B7
  K: "[b2,a3,d4]@4 d4@2 d4!2 d4@2 d4@2 d4!2 c#4@2, ~ [b2,a3]!3", // Bm7 B7
  L: "[a2,e3,a3,c#4]@4 [e3,c#4]@2 ~ c#4 [a2,e3,a3,c#4]@4 c#4@2 c#4@2, ~ [a2,a3] ~ [a2,e3,a3], ~@3 [e3,c#4] ~@4", // A C#m A A5 C#m
  M: "[a2,e3,a3,c#4]@4 c#4@2 c#4!3 d4 d4@2 d4!2 c#4@2, ~ [a2,e3,a3]!3", // A A5
  N: "[a2,e3,g#3,c#4]@4 c#4@2 c#4!3 d4 d4@2 d4!2 c#4@2, ~ [a2,e3,g#3]!3", O: "[a2,e3,a3,c#4]",
})).s("gm_acoustic_guitar_steel").gain(0.37).pan(0.2)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@8 A@2 B C D E D@2 F@2 A@2 F@2 A@2 E@2 G H D E D@2 E@2 G H D E D@2 F@2 A@2 F@2 A@2 E@2 G H D E D@2 E@2 G H D E D@2
  F@2 A@2 F@2 A@2 F@2 A@2 F@2 A@2 F@2 A@2 F@2 A
>`.pickRestart({
  A: "a1", B: "f#1", C: "f#1@3 e1", D: "d2!2", E: "a1!2", F: "b1", G: "f#1!2", H: "f#1@2 f#1 e1",
})).s("gm_fretless_bass").gain(0.64).pan(0.9)

// chords · electric guitar clean · "Elec 1"
const electric_guitar_clean = note(`<
  ~@16 A@8 B C D E F G H I B C D E F G H I A@8 B C D E F G H I B C D E F G J ~ A@12 K@3 L A@4 M@3
>`.pickRestart({
  A: "[~@31 e4, b2 a3 e4 a3 b2 a3 e4 a3 a2 a3 e4 a3 a2 a3 e4 f#4, ~ d3@2 d4@2 d4@2 f#3@2 d3@2 d4@2 d4@2 f#3@2 e3@2 c#4@2 c#4@2 e3@2 e3@2 c#4@2 c#4@2 ~]/4",
  B: "[a2,e3,a3,c#4,e4]@4 [a2,e3]@3 ~@3 a3@2 e3@2 c#3@2, ~@7 e3@5 ~@4, ~@7 b3@3 ~@6, ~@2 a2!2", // A A5
  C: "[a2,e3,a3]@4 [a2,e3]@3 ~@3 a3@2 c#4@2 b3@2, ~@7 b3@3 ~@6, ~@2 a2!2", D: "[f#2,a3,c#4]@4 f#3@3 c#4@3 a3@2 f#3@4",
  E: "[f#2,a3,c#4]@4 [f#2,f#3]@3 ~@3 a3@2 g#3@2 g#3@2, ~@7 c#4@3 ~@6, ~@2 f#2 [e2,b2,e3]", // F#m F# E5
  F: "[f#2,d3,a3,d4]@4 [f#2,d3,d4]@3 ~@3 d4@2 a3@2 e3@2, ~@7 e4@3 ~@6, ~@2 f#2!2", // D
  G: "[a2,e3,a3,c#4]@4 [a2,e3]@3 ~@3 a3@2 e3@2 e3@2, ~@7 c#4@3 ~@6, ~@2 a2!2", // A A5
  H: "[f#2,d3,a3,d4]@4 [f#2,d3,a3]@3 ~@3 d4@2 [d3,a3]@4, ~@7 e4@3 ~@6, ~@2 d3 ~", // D D5
  I: "[f#2,d3,a3,d4]@4 [f#2,d3,a3]@3 ~@3 d4@2 a3@2 d4@2, ~@7 e4@3 ~@6, ~@2 d3!2", J: "[f#2,d3,a3,d4]",
  K: "[~@23 e4, b2 a3 e4 a3 b2 a3 e4 a3 a2 a3 e4 f#4, ~ d3@2 d4@2 d4@2 f#3@2 d3@2 d4@2 d4@2 f#3@2 e3@2 c#4@2 c#4@2 ~]/3",
  L: "~@7 e4, a2 g#3 e4 f#4, ~ e3@2 c#4@2 c#4@2 ~",
  M: "[~@2 a2, b2 a3 e4 a3 b2 a3 e4 a3 ~@4, ~ d3@2 d4@2 d4@2 f#3@2 d3@2 d4@2 d4@2 f#3@2 ~@7]/3",
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.9)

// chords · overdriven guitar · "Elec 2"
const overdriven_guitar = note("<~@47 A B C D E@2 F G H B C D E@2 F I ~@24>".pickRestart({
  A: "~@6 [a1,a2]!10", B: "[a2,e3,a3]@4 [a2,e3,a3]@3 ~@3 a3@2 a2@2 a2@2, ~@7 b3@3 ~@2 [e3,a3]@4, ~@2 [a2,e3] ~",
  C: "[a2,e3,a3]@4 [a2,e3,a3]@3 ~@3 a3@2 [a2,e3,a3]@4, ~@7 b3@3 ~@6, ~@2 [a2,e3] ~", D: "[f#2,a3]!4",
  E: "[[f#2,a3]@4 [f#2,a3]@4 c#4 d4 e4 d4 e4 d4 ~@2 [f#2,d3,a3]@4 [f#2,d3,a3]@4 [f#2,d3,a3]@4 e4 d4 c#4!2, ~@8 [f#2,a3]@4 [e2,e3]@3 f#4@5 ~@12, ~@6 [b2,g#3] [b2,g#3,c#4] ~@6 [f#2,d3,a3]@2]/2", // F#m D F#m E C#7 D
  F: "[a2,e3,a3,c#4]@4 [a2,e3,a3]@4 [a2,e3,a3]@4 d4 e4 d4 c#4, ~@3 [a2,e3,a3]", G: "[f#2,d3,a3,f#4] [f#2,d3,a3]!3",
  H: "[f#2,d3,a3]@4 [f#2,d3,a3]@4 [f#2,d3,a3]@4 d4!2 c#4@2, ~@3 [f#2,d3]", I: "[f#2,d3,a3,f#4]",
})).s("gm_overdriven_guitar").gain(0.5).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@62 [~ x ~ x]!17 [~ x ~@2] ~@7>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@23 A B@3 C B@3 C B@4 C B@2 C ~@7 D B@4 C B@3 E B@3 C@2 ~@17 A B@5 C ~>".pickRestart({
  A: "~@7 x!2 ~@3 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@2 x!2 ~@3 x!2 ~@2", D: "~@8 x!8", E: "~@4 x ~@2 x ~@4 x ~@3",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@24 [x!4]!38 [x ~@3 x ~@2 x!2 ~ x ~ x ~@3] [x!4]!23 ~>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@22 A@2 ~@16 B ~@5 A@2 ~@14 B ~@15 A@2 ~@6 B>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@3 A ~@3 A ~@4 A ~@2 A ~@7 A ~@4 A ~@8 A ~@17 A ~@5 A>".pickRestart({
  A: "x",
})).gain(0.64)

stack(acoustic_guitar_steel, bass, electric_guitar_clean, overdriven_guitar, kick, rim, snare, hihat, open_hat, crash)

More by Radiohead