Strudelify

All You Zombies

The Hooters

KeyA minorTempo85 bpm
0:00/0:00
// All You Zombies — The Hooters
// 85 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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.

// bass · electric bass finger
const bass = note(`<
  ~@15 A@6 B A C D E F E G E H I J E F E G E H I J K L K M K N I O E F E G E H I J E F E G E H I J K L K M K N I O ~@3 P
  ~ A@8 B A C D Q R S T S U I V E F E G E H I J K L K M K N I K L K M K N I D@6
>`.pickRestart({
  A: "~@2 a1 ~@3 a1 ~", B: "~@4 a1@2 ~@6 a1@3 ~", C: "f2@5 ~ f2@2 e2@4 c2@3 ~", D: "a1@2 a1!2 c2 a1!2 g1 a1@2 ~@6",
  E: "~@2 c2 d2!3 d2@2 ~@2 e2 ~ a1@4", F: "~@2 c2!4 c2@2 ~@2 d2 ~ g1@4", G: "~@2 g1!4 g1@2 ~@2 g1 a1 b1 a1 g1@2",
  H: "~@2 c2!4 c2@2 ~@2 d2 ~ g1 ~ d2 e2", I: "f2@5 ~ f2@2 e2@4 c2@4", J: "a1@4 c2 a1!2 g1 a1@8",
  K: "~@2 d2 e2 f2 e2 d2 ~ c2 ~ e2 ~ a1@4", L: "~@2 c2!4 c2@2 ~@2 g1 a1 b1 a1 g1 ~",
  M: "~@2 g1!5 ~@2 g1 b1 g1 b1 c2 b1 ~", N: "~@2 c2!4 c2@2 ~@2 g1 a1 b1 a1 c2 e2", O: "a1@4 c2 a1!2 g1 a1@2 ~@6",
  P: "~@8 e3!2 e3@2 e3 [c3,d3] [g2,a2,b2] [e2,f2]", Q: "~@2 c2 d2@2 d2!4 ~ c2 ~ d2@2 ~@2",
  R: "~@2 g1 a1@2 a1!4 ~ a1@2 c2@2 ~@2", S: "c2 ~ c2 d2@2 d2!4 ~ c2 ~ d2@2 ~@2", T: "~@2 g1 a1@2 a1!4 ~ a1 ~ c2@2 ~@2",
  U: "g1 ~ g1 a1@2 a1!4 ~ a1 ~ c2 ~ c2 e2", V: "a1@4 c2 a1!2 g1 a1 ~@7",
})).s("gm_electric_bass_finger").gain(0.6)

// chords · percussive organ
const percussive_organ = note(`<
  A B C D@2 B C D@2 B C E@2 B C D@2 B C D@2 B C F G H I H J H I K L H I H J H I K L H I H J H I K L H I H J H I K L H I
  H J H I K L H I H J H I K L M B C E@2 B C D@2 B C D@2 B C F G N O N O N O P Q H I H J H I K L H I H J H I K H I H J H
  I K ~@6
>`.pickRestart({
  A: "~@12 a4 ~ [g4,b4] ~", B: "[a3,a4,c5]", C: "[a3,g4,b4]",
  D: "[a3@4 c4 a3!2 g3 a3@4 ~@4 a3@4 c4 a3!2 g3 a3@4 [e4,a4] ~ [g4,b4] ~, [e4,a4]@27 ~@5]/2", // A5 G A5
  E: "[a3@4 c4 a3!2 g3 a3@4 ~@4 a3@4 c4 a3!2 g3 a3@4 a4 ~ [g4,b4] ~, [e4,a4]@27 ~@5]/2", // G A5
  F: "[f3,f4,a4,c5]@8 e3@3 ~ c3@4, ~ [e4,g4,c5], ~@12 d3 ~@3", G: "a3@4 c4 a3!2 g3 a3@2 ~@6, [e4,a4,c5] ~",
  H: "[a4,d5,f5] [a4,c5,e5]", I: "[g4,c5,e5] [g4,b4,d5]", J: "[g4,c5,d5] [g4,b4,d5]",
  K: "[a4,c5,f5]@3 [a4,c5,f5] [g4,c5,e5]@4", // F C
  L: "[c5,e5]@10 [a4,b4] [b3,c4,d4,e4,f4,g4] [c3,d3,e3,f3,g3,a3] ~@3, a4@9 ~@7", // C Asus2 Cmaj7 Dm7
  M: "a3@4 c4 a3!2 g3 a3@4 [e4,a4] ~ [g4,b4] ~", N: "[a4,d5,f5]", O: "[a4,c5,e5]", P: "[c5,f5,a5] [c5,e5,g5]",
  Q: "[a4,c5,e5]@11 [e4,f4,g4,a4,b4,c5] [f3,g3,a3,b3,c4,d4] ~@3", // Am Cmaj7 Dm7
})).s("gm_percussive_organ").gain(0.14)

// chords · pad sweep
const pad_sweep = note(`<
  A B C D@2 B C D@2 B C E@2 B C D@2 B C D@2 B C F G ~@48 H B C E@2 B C D@2 B C D@2 B C F G I J K L M N O P ~@28
>`.pickRestart({
  A: "~@12 a4 ~ [g4,b4] ~", B: "[a3,a4,c5]", C: "[a3,g4,b4]",
  D: "[a3@4 c4 a3!2 g3 a3@4 ~@4 a3@4 c4 a3!2 g3 a3@4 [e4,a4] ~ [g4,b4] ~, [e4,a4]@27 ~@5]/2", // A5 G A5
  E: "[a3@4 c4 a3!2 g3 a3@4 ~@4 a3@4 c4 a3!2 g3 a3@4 a4 ~ [g4,b4] ~, [e4,a4]@27 ~@5]/2", // G A5
  F: "[f3,f4,a4,c5]@8 e3@3 ~ c3@4, ~ [e4,g4,c5], ~@12 d3 ~@3", G: "a3@4 c4 a3!2 g3 a3@2 ~@6, [e4,a4,c5] ~",
  H: "a3@4 c4 a3!2 g3 a3@4 [e4,a4] ~ [g4,b4] ~", I: "[d4,f4,a4]", J: "[e4,a4,c5]", K: "[f4,a4,d5]", L: "[a4,c5,e5]",
  M: "[a4,d5,f5]", N: "[c5,e5,a5]", O: "[a4,c5,f5] [g4,c5,e5]", P: "[a4,c5,e5] ~",
})).s("gm_pad_sweep").gain(0.22)

// chords · whistle
const whistle = note(`<
  ~@33 A B A C A B D E ~@8 A B A C A B D E A B A C A B D E ~@33 A B A C A B D E ~@20
>`.pickRestart({
  A: "[a4,d5,f5] [a4,c5,e5]", B: "[g4,c5,e5] [g4,b4,d5]", C: "[g4,c5,d5] [g4,b4,d5]", D: "[c5,f5] [g4,c5,e5]",
  E: "[e4,a4,c5] ~", // Am
})).s("gm_whistle").gain(0.1)

// other · sitar · Cmaj7 F C G7 C G7 Dsus2 Am
const sitar = note(`<
  ~@6
  [~@11 [b6,c7] [f6,g6,a6] [c6,d6,e6] [f5,g5,a5,b5] [c5,d5,e5]]
  [[f4,g4,a4,b4] [d4,e4] [a3,b3,c4] ~@13]
  ~@80
  [~@12 e5 d5 c5 b4]
  [a4@3 ~@5]
  ~@36
>`).s("gm_sitar").gain(0.25)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@9 A@3 ~ B@3 C D@2 ~ E F G H I ~@32 J@2 ~ K@2 ~@11 L M@3 L N@3 C O@2 ~ P Q R S T ~@36
>`.pickRestart({
  A: "[~@4 c5 ~ d5 ~ d5@26 ~@14]/3", B: "[~@4 c6 ~ d6 ~ d6@26 ~@14]/3", C: "~@12 e5 ~ g5 ~", D: "[g5@27 ~@5]/2",
  E: "~@12 e5@2 g5 ~", F: "g5", G: "a5 g5", H: "a#5@6 a#5 ~ a#5@4 g5@4", I: "e5@9 ~@7", J: "[g5@25 ~@7]/2",
  K: "[~@4 d5@2 ~@2 c5@23 ~]/2", L: "~@12 a4 ~ b4 ~", M: "b4/3", N: "[b4@11 ~]/3", O: "g5/2", P: "~@12 e4 ~ g4 ~",
  Q: "g4", R: "a4@13 ~@3", S: "c5@6 c5 ~ c5@6 b4 [f4,g4,a4]", T: "[c4,d4,e4] ~@15",
})).s("gm_overdriven_guitar").gain(0.5)

// chords · overdriven guitar
const overdriven_guitar_2 = note(`<
  ~@12 A ~@2 A@4 B@4 C A ~@5 D E F ~@5 D E B ~@5 D E B ~@5 D E F ~@5 D E B ~@6 E B A@5 ~@2 A@4 B@4 C A ~@13 D E B ~@6 E
  G H G I G H E F@6
>`.pickRestart({
  A: "[a2,e3]@2 [a2,e3]!2 [c3,e3] [a2,e3]!2 [g2,e3] [a2,e3] ~@7", // A5 C A5 C A5
  B: "[a2,e3]@2 [a2,e3]!2 [c3,e3] [a2,e3]!2 [g2,e3] [a2,e3]!2 [g2,e3] [a2,e3] ~@4", // A5 C A5 C A5 C A5
  C: "[f3,c4]@5 ~ [f3,c4] ~ e3@4 c3@4, ~ g3", D: "~@14 c3 e3", E: "[f3,c4]@6 [f3,c4] ~ [e3,c4]@3 ~ [c3,g3]@3 ~",
  F: "[a2,e3]@4 [c3,e3] [a2,e3]!2 [g2,e3] [g2,a2,e3] ~@7", G: "[d3,a3] [a2,e3]", H: "[c3,g3] [g2,d3]", I: "[g2,d3]",
})).s("gm_overdriven_guitar").gain(0.36)

// chords · synth strings 1
const synth_strings_1 = note("<~@17 A@5 B C D ~@57 A@5 B C D ~@36>".pickRestart({
  A: "[~@3 [e5,a5,c6]@17]/5", B: "[g5,b5,d6]", C: "[f5,a5,c6] [e5,g5,c6]", D: "[e5,c6]@3 ~, a5",
})).s("gm_synth_strings_1").gain(0.4)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@25 A B C D E F G H A B C D E F G H I J I K I L M N A B C D E F G H A B C D E F G H I J I K I L M N ~@25 A B C D E F
  G H I J I K I L M I J I K I L M ~@6
>`.pickRestart({
  A: "~@2 [c3,a3] [d3,a3] d3!2 ~ a3 ~@2 [e3,a3] ~@3 a3!2, ~@3 [d3,a3] ~@2 a2@2", // F D5 A5 D5
  B: "~@2 [c3,g3]!2 c3!2 ~ g3 ~@2 [d3,g3] ~@3 g3!2, ~@3 [c3,g3] ~@2 g2@2", // C5 G5 C5
  C: "~@2 [c3,a3] [d3,a3] d3!2 [d3,a3]@2 ~@2 [e3,a3] a3 ~@2 a3 ~, ~@3 a2", // F D5 A5
  D: "~@2 [g2,g3]!2 g2!2 [g2,g3]@2 ~@2 [g2,g3] [a2,g3] b2 a2 [g2,g3]@2", // G A7 G
  E: "~@2 [c3,a3] [d3,a3] d3!2 ~ a3 ~@2 [e3,a3] ~ a3 ~ a3 ~, ~@3 [d3,a3] ~@2 a2@2", // F D5 A5 D5
  F: "~@2 [c3,g3]!2 c3!2 ~ g3 ~@2 [d3,g3] ~ g2 ~ [d3,g3] e3, ~@3 [c3,g3] ~@4", // C5 G5 C5
  G: "[f3,a3]@5 ~ [f3,a3]@2 [e3,g3]@4 [c3,e3]@4", H: "a2@4 c3 a2!2 g2 a2@8",
  I: "~@2 [d3,a3] [e3,a3] f3 e3 [d3,a3] ~ c3 ~ [e3,a3] a3 ~@2 a3 ~, ~@3 a2", // D5 A5 D5 A5
  J: "~@2 [c3,g3]!2 c3!2 [c3,g3]@2 ~@2 [g2,g3] [a2,g3] b2 a2 [g2,g3] ~", // C5 G A7 G
  K: "~@2 [g2,g3]!2 g2!2 [g2,g3] ~@2 g2 [b2,g3] [g2,g3] b2 c3 [b2,g3] ~", // G Em G Em
  L: "~@2 [c3,g3]!2 c3!2 [c3,g3]@2 ~@2 [g2,g3] [a2,g3] b2 a2 [c3,g3] e3", M: "[f3,c4]@5 ~ [f3,c4]@2 [e3,b3]@4 c3@4",
  N: "a2@4 c3 a2!2 g2 a2@2 ~@6",
})).s("gm_electric_guitar_muted").gain(0.4)

// other · lead 1 square
const lead_1_square = note("<~@78 A@3 ~@3 B C D E F G ~@32 H@2 ~@2>".pickRestart({
  A: "[~@12 d5 e5 [g#5,a5] g5@7 [d#5,e5] d5@2 c5 a4 g4 e4 c5 a4@14 ~@4]/3", // Amaj7 Emaj7
  B: "~@2 [e5,g5]@4 a5 b5 c5@2 [c5,a5]@2 [a4,c5]@2 ~@2, ~@3 e5 e5@2 ~@2", // Em F Am
  C: "~@2 c5 d5 [c5,e5]@2 [e4,a4] g4 e4 [e4,c5] [e4,a4]@3 ~@3, ~ a4 ~@6", D: "~@11 c6@2 b5 a5@2",
  E: "~@11 c6@2 b5 a5 g5", F: "c6@10 ~@2 e5 d5 c5 b4", G: "a4@5 ~@3 a4 ~@7", H: "[~@12 d5 e5 a5 g5@17]/2",
})).s("gm_lead_1_square").gain(0.4)

// drums · rim
const rim = s("rim").struct(`<
  ~@7
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!17
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4]
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!64
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4]
  ~@8
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!27
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4]
>`).gain(0.57)

// drums · kick
const kick = s("bd").struct("<~@7 [~ x ~ x]!83 [x ~@3 x!2 ~@2]!7 [x ~ x!2] [~ x ~ x]!28>").gain(0.71)

// drums · snare
const snare = s("sd").struct("<~@89 [~ x] [~ x ~ x]!3 [~@2 x ~@2 x ~@2] [~ x ~ x]!3 [~@2 x!7 ~@7] ~@28>").gain(0.71)

// drums · clap
const clap = s("cp").struct(`<
  ~@7
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!82
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4]
  ~@8
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!27
  [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@4]
>`).gain(0.36)

// drums · low tom
const low_tom = s("lt").struct("<~@89 [~@15 x] ~@3 [~@14 x!2] ~@3 [~ x] ~@28>").gain(0.71)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A ~@5 B ~@19 C ~@3 B ~@18 D ~@3 E ~@15 F ~@2 G ~@5 B ~@7>".pickRestart({
  A: "~@2 x!4 ~@2 x ~@7", B: "~@8 x ~@3 x!3 ~", C: "~@3 x ~@2 x ~", D: "~@10 x ~ x!3 ~", E: "~@3 x",
  F: "~@2 x ~@2 x ~@2 x ~ x ~@4 x", G: "~@12 x!4",
})).gain(0.5)

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

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

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@64 [~ x ~@6] ~@8 [x ~ x!2 ~ x!2 ~ x!4 ~@4] ~@31 [~ x ~@6] ~@20>").gain(0.21)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@73 [~ x ~ x ~@2 x ~@2 x ~ x ~@4] ~@52>").gain(0.07)

// drums · ride bell
const ride_bell = s("rd").struct("<~@24 [~@3 x] ~@95 [~@3 x] ~@5>").gain(0.43)
// … 16 more lines

More by The Hooters