Strudelify

Eyes Without A Face

Billy Idol

KeyE majorTempo85 bpm
0:00/0:00
// Eyes Without A Face — Billy Idol
// 85.2 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 choir aahs (copy of ch 7 voice oohs)
// note: Full arrangement: all 108 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.2/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 · string ensemble 2
const string_ensemble_2 = note("<~ A@4 ~@92 A@4 B@4 ~@3>".pickRestart({
  A: "[[b4,e5,g#5]@15 ~]/2", B: "[[e5,g#5,b5]@13 ~@3]/4",
})).s("gm_string_ensemble_2").gain(0.2)

// bass · fretless bass
const bass = note(`<
  ~ A ~ A ~ B C D E B C D E B C D E B C D E F G H I J K L M B C D E B C D E B C D E F G H I J K L M A ~ A ~ N O N O N O
  N O N O N O N O N O N O N O N O N O B C D E B C D E D E F G H I J K L M L M A ~ A ~ A ~@6
>`.pickRestart({
  A: "e1!16", B: "e2!3 e2@2 ~@8 e2@3", C: "c#2!5 ~@8 c#2@3", D: "g#1!3 g#1@2 ~@8 g#1@3", E: "b1!3 b1@2 ~@8 b1@2 ~",
  F: "a1!5 ~ a1 ~@4 c#2@2 e2 a1 ~", G: "b1!4 ~@7 d#3@2 b2 f#2 ~", H: "a1!4 a1@2 a1 ~@4 b1@3 e2@2",
  I: "b1!5 ~@6 b2@2 f#2 b1 ~", J: "a1!4 a1@2 ~@7 e2 a1 ~", K: "b1!5 ~@6 d#3 ~ b2 f#2 ~", L: "f#1!5 ~@6 e2@2 c#2 f#1@2",
  M: "g#1!5 ~@6 f#2@2 d#2 g#1@2", N: "e1!2 ~@4 e1!2 ~@3 b1 c#2 ~@2 e2", O: "d2!2 ~@4 d2!2 ~ f#1@3 g1@2 a1@2",
})).s("gm_fretless_bass").gain(0.51)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~ A@4 B C D E B C D E B C D E B C D E F G F G F G H I B C D E B C D E B C D E F G F G F G H I ~@28 B C D E B C D E D E
  F G F G F G H I H I J@4 K@7
>`.pickRestart({
  A: "[[e5,g#5,b5]@15 ~]/4", B: "[e4,g#4,b4]", C: "[c#4,e4,g#4]", D: "[g#3,b3,d#4,g#4]", E: "[b3,d#4,f#4,b4]",
  F: "[a3,c#4,e4]", G: "[b3,d#4,f#4]", H: "[f#3,a3,c#4]", I: "[g#3,b3,d#4]", J: "[e5,g#5,b5]/2",
  K: "[~@18 [e4,g#4,b4]@35 ~@3, [e5,g#5,b5]@5 ~@3]/7", // E
})).s("gm_string_ensemble_2").gain(0.51)

// chords · music box
const music_box = note("<~@4 A@4 B@4 C@7 D@2 ~@7 A@4 E@2 F G@5 H ~@67>".pickRestart({
  A: "[~@16 b5 ~ [g#5,b5] ~ [e5,g#5,b5] ~@11 e5@2 [c#5,e5,g#5] ~ [c#5,e5,g#5] ~@11 d#5 ~ [b4,d#5] ~ [g#4,b4,d#5] ~@10 b4, ~@15 e5@2 ~@14 c#5@2 ~@14 g#4@2 ~@15, ~@32 g#5 ~@31]/4", // G#m E C#m B G#m
  B: "[[d#5,f#5] ~ [d#5,f#5] ~ [b4,d#5,f#5] ~@11 b5 ~ [g#5,b5] ~ [e5,g#5,b5] ~@11 e5@2 [c#5,e5,g#5] ~ [c#5,e5,g#5] ~@11 d#5 ~ [b4,d#5] ~ [g#4,b4,d#5] ~@10 b4, ~@15 e5@2 ~@14 c#5@2 ~@14 g#4@2 ~@15, ~@32 g#5 ~@31]/4", // D#m B G#m E C#m B G#m
  C: "[[d#5,f#5] ~ [d#5,f#5] ~ [b4,d#5,f#5] ~@11 [g#5,b5] ~ [g#5,b5] ~ [e5,g#5,b5] ~@11 [e5,g#5] ~ [e5,g#5] ~ [c#5,e5,g#5] ~@11 [b4,d#5] ~ [b4,d#5] ~ [g#4,b4,d#5] ~@11 [d#5,f#5] ~@3 [b4,d#5,f#5] ~@11 g#5 ~ [g#5,b5] ~ [e5,g#5,b5] ~@11 [e5,g#5] ~ [e5,g#5] ~ [c#5,e5,g#5] ~@10 g#4, ~@15 e5@2 ~@14 c#5@2 ~@14 g#4@2 ~@14 b4@2 ~@14 e5@2 ~@14 c#5@2 ~@15]/7", // D#m B G#m E C#m B G#m D#m …
  D: "[[b4,d#5] ~ b4 ~ [g#4,b4,d#5] ~@11 [d#5,f#5]!3 ~ [d#5,f#5] ~@11, ~@15 b4@3 ~@14]/2", // B G#m D#m
  E: "[[d#5,f#5] ~ [d#5,f#5] ~ [b4,d#5,f#5] ~@11 b5 ~ [g#5,b5] ~ [e5,g#5,b5] ~@9 b5 ~, ~@15 e5@2 ~@15]/2", // D#m B G#m E
  F: "f#5@2 ~ e5 ~@2 b4 ~@7 b5 ~", G: "f#5 ~@2 e5 ~@2 b4 ~@7 b5 ~", H: "f#5 ~@2 e5 ~@2 b4 ~@9",
})).s("gm_music_box").gain(0.31)

// chords · music box · soft notes
const music_box_soft = note("<~@5 A ~ B C A ~ B C D E F G H E I J ~@8 A ~ B C A ~@74>".pickRestart({
  A: "g#5@2 e5 ~@13", B: "b4 ~ g#4 ~@13", C: "~@2 b4 ~@13", D: "~@2 e5 ~@13", E: "~@2 c#5 ~@13", F: "~@2 g#4 ~@13",
  G: "~@2 [b4,d#5,f#5] ~@13", H: "b5 ~ e5 ~@13", I: "~@2 [g#4,d#5] ~@13", J: "~@4 b4 ~@11",
})).s("gm_music_box").gain(0.15)

// bass · slap bass 1
const bass_2 = note("<~@53 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B ~@31>".pickRestart({
  A: "~@13 e3 ~@2", B: "~@3 c#3@2 g#2@2 d2@3 ~@6",
})).s("gm_slap_bass_1").gain(0.46)

// other · orchestral harp
const orchestral_harp = note(`<
  ~@33
  [~@14 b5 ~]
  [f#5@2 ~ e5 ~@2 b4 ~@7 b5 ~]
  [f#5 ~@2 e5 ~@2 b4 ~@7 b5 ~]!5
  [f#5 ~@2 e5 ~@2 b4 ~@9]
  ~@67
>`).s("gm_orchestral_harp").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  ~
  [x ~@5 x!2 ~@8]!48
  [x!3 ~@3 x ~@2 x!2 ~@3 x ~]
  [x!3 ~@3 x ~@2 x!2 ~@5]
  [x!4 ~@2 x ~@2 x!2 ~@3 x ~]
  [x ~ x!2 ~@2 x ~@2 x!2 ~@3 x ~]
  [x ~@5 x!2 ~@8]!49
  ~@6
>`).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!48 [~@4 x ~@2 x ~@4 x ~@2 x]!4 [~ x ~ x]!48 [~@4 x ~@7 x ~ x!2] ~@6>")
  .gain(0.35)

// drums · clap
const clap = s("cp").struct("<~@4 A@45 ~@5 B ~ B ~ B ~ B ~ B ~ C ~ B ~ B ~ B ~ B ~ B ~ B A@20 ~@4 D ~@6>".pickRestart({
  A: "~@11 x ~ x ~@2", B: "~@12 x!4", C: "~@12 x!2 ~ x", D: "~@9 x ~@2 x ~ x!2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!16]!101 ~@6>").gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A ~ A ~@93 A ~ A ~@7>".pickRestart({
  A: "~@12 x!4",
})).gain(0.5)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@5 A@4 ~@19 A@4 ~@9 A@4 ~@8 B@4 ~@30 A@4 ~@17>".pickRestart({
  A: "~@3 x ~@4", B: "~ x ~@2",
})).gain(4.08)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2]!101 ~@6>").gain(2.01)

stack(
  string_ensemble_2, bass, string_ensemble_2_2, music_box, music_box_soft, bass_2, orchestral_harp, kick, snare, clap,
  hihat, mid_tom, vibraslap, cabasa
)

More by Billy Idol