Strudelify

Cover My Eyes (Pain & Heaven)

Marillion

KeyA majorTempo115 bpm
0:00/0:00
// Cover My Eyes (Pain & Heaven) — Marillion
// 115 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 38, 4/4 at bar 39, 2/4 at bar 69, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): OVERDRIVE.
setcpm(115/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 · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D C D C D C D E F G F G F G F H I J I J I J I J I J I J I K
  F G F G F G F L C D C D C D C D M N O P M N O P M N C D C D C D C D ~ C D C D C D C D C D C D C D C Q R S ~@6
>`.pickRestart({
  A: "[a3,e4] a3!2 [a3,e4] [a3,d4] a3!2 [a3,d4] [a3,c#4] a3!2 [a3,c#4] [a3,d4] a3 [a3,e4] [a3,d4]", // A5 D5 A D5 A5 D5
  B: "[a3,e4]!4 [a3,d4] a3 [a3,d4]!2 [a3,c#4] a3 [a3,d4] [a3,c#4] a3!4, ~@3 a4", // A5 D5 A D5 A
  C: "e4!4 [d4,e4] e4 [d4,f#4]!2 [c#4,f#4] f#4 [d4,f#4] [c#4,f#4] f#4!4, ~@3 a4", // Dsus2 D F#5 D F#5
  D: "[c#4,e4]!4 [c#4,d4] c#4 d4!2 [c#4,d4] d4!2 [c#4,d4] d4!4, ~@3 a4", E: "~@8 e4!4 [d4,e4] e4 [d4,f#4]!2",
  F: "[c#4,f#4] f#4 [d4,f#4] [c#4,f#4] f#4!4 [c#4,e4]!4 [c#4,d4] c#4 d4!2, ~ a4 ~@2", // F#5 D F#5 C#m Dmaj7
  G: "[c#4,d4] d4!2 [c#4,d4] d4!4 e4!4 [d4,e4] e4 [d4,f#4]!2, ~ a4 ~@2", // Dmaj7 Dsus2 D
  H: "[c#4,d4] d4!2 [c#4,d4] d4!4 [a3,e4] a3!2 [a3,e4] [a3,d4] a3!2 [a3,d4], ~ a4 ~@2", // Dmaj7 A5 D5
  I: "[a3,c#4] a3!2 [a3,c#4] [a3,d4] a3 [a3,e4] [a3,d4] [a3,e4]!4 [a3,d4] a3 [a3,d4]!2", // A D5 A5 D5 A5 D5
  J: "[a3,c#4] a3 [a3,d4] [a3,c#4] a3!4 [a3,e4] a3!2 [a3,e4] [a3,d4] a3!2 [a3,d4], ~ a4 ~@2", // A D5 A A5 D5
  K: "[a3,c#4] a3 [a3,d4] [a3,c#4] a3!4 e4!4 [d4,e4] e4 [d4,f#4]!2, ~ a4 ~@2", // A D5 A Dsus2 D
  L: "[c#4,d4] d4!2 [c#4,d4] d4!4 ~@8, ~ a4 ~@2", // Dmaj7
  M: "~ c3 [c3,e4]!3 c3 [c3,e4]!3 c3 [c3,e4]!3 c3 [c3,e4]!2, [c3,e4] ~@7", // C
  N: "[d3,e4] d3 [d3,e4]!3 d3 [d3,e4]!3 d3 [d3,e4]!3 d3 [d3,e4]!2", // Dsus2
  O: "[e3,e4] e3 [e3,e4]!2 ~ e3 [e3,e4]!2 ~ e3 [e3,f#4] [e3,g4] [e3,e4] [e3,f#4] [e3,g4] [e3,e4], ~@2 [e3,e4] ~ [e3,g4] ~@3", // E Esus2 Em E Esus2 Em E Em
  P: "[e3,f#4] [e3,g4] [e3,e4] [e3,f#4] [e3,g4] [e3,e4] [e3,f#4] [e3,g4] [e3,e4] [e3,f#4] [e3,g4] [e3,e4] [e3,f#4] [e3,g4] [e3,e4] [e3,f#4]", // Esus2 Em E Esus2 Em E Esus2 Em …
  Q: "[c#4,e4]!4 [c#4,d4] c#4 d4!2 [c#4,d4] d4!2 [c#4,d4] d4 ~ d4 ~, ~@3 a4", // C#m Dmaj7
  R: "e4 ~ e4!2 [d4,e4] ~ f#4 d4 [c#4,f#4] ~ [d4,f#4] c#4 f#4 ~ f#4 ~, ~@3 a4", // Dsus2 F#5 D
  S: "[c#4,e4] ~ c#4 e4 [c#4,d4] ~ d4!2 ~@8", // C#m Dmaj7
})).s("gm_electric_guitar_muted").gain(0.51)

// chords · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note("<~@109 A B C D E D E D E>".pickRestart({
  A: "~@13 d4 ~ d4", B: "~ e4 ~@3 e4 d4 f#4 ~ f#4 ~ f#4 ~ f#4 ~ f#4",
  C: "~ [c#4,e4] e4 c#4 ~ c#4 ~@2 [c#4,d4] d4!2 [c#4,d4] d4!4, ~@3 a4", // C#m Dmaj7
  D: "e4!4 [d4,e4] e4 [d4,f#4]!2 [c#4,f#4] f#4 [d4,f#4] [c#4,f#4] f#4!4, ~@3 a4", // Dsus2 D F#5 D F#5
  E: "[c#4,e4]!4 [c#4,d4] c#4 d4!2 [c#4,d4] d4!2 [c#4,d4] d4!4, ~@3 a4", // C#m Dmaj7
})).s("gm_electric_guitar_muted").gain(0.15)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@39 A B@5 ~@2 C@6 ~@17 D@5 E@2 F@2 G@4 H@2 I J@4 K@2 L@2 ~@24>".pickRestart({
  A: "~@5 b5 g#5 e5", B: "[b5@2 g#5@2 e5 ~ e5@66 ~@8]/5", C: "[~@2 d5 ~ d5@4 a4@80 ~@8]/6",
  D: "[~@2 b5@2 g#5@2 e5@2 b5@2 g#5@2 e5@2 e5@63 ~@3]/5", E: "[b4@23 ~ a4@2 ~ g4@2 ~ f#4@2]/2", F: "e4/2",
  G: "[b4@13 d5@17 ~@2]/4", H: "[b4@13 d5@3]/2", I: "e5@6 d5 c#5",
  J: "[d5 c#5 a4 b4@2 b4 c#5 e4@4 e4 a4 c#5 f#5@3 a5 g#5 e5@2 c#5 f#5@5 a5!2 b5 c#6 a5]/4",
  K: "[c#6@4 a5@2 e6@15 ~ f#3@2 a3@2 b3@2 c#4@2 f#4 ~]/2", L: "[f#4@4 c#4@2 f#4@25 ~]/2",
})).s("gm_overdriven_guitar").gain(0.51)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@8 A@8 ~@4 B@8 C@2 D C@4 E@2 ~@7 F@8 G@8 H@7 ~@8 I J K@2 I J K@2 I J C@2 D C@3 D L@2 ~@24
>`.pickRestart({
  A: "[a1,a2]/8", B: "[a1,a2]/2", C: "g#4@3 a4@5", D: "g#4@6 a4@9 ~", E: "[g#4@6 a4@17 ~@9]/2", F: "[~ [a1,a2]@15]/8",
  G: "[~@4 [d2,d3]@32 [a1,a2]@16 g#4@3 a4@5 g#4@3 a4]/8", // D A
  H: "[~@8 g#4@6 a4@9 ~ g#4@6 a4@10 g#4@6 a4@10 g#4@6 a4@10 g#4@6 a4@9 ~ g#4@6 a4@17 ~]/7", I: "[c4,b4]", J: "[d4,b4]",
  K: "[e4,b4]/2", L: "[g#4@6 a4@25 ~]/2",
})).s("gm_synth_strings_1").gain(0.36)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@36 A@7 B@2 ~@22 C D C D C D C D ~@19 C D C D C D C D C D C D C D C D C D ~@6
>`.pickRestart({
  A: "[~@4 [g#4,b4,e5]@3 [a4,c#5,f#5]@5 [e4,g#4,c#5]@3 [e4,f#4,a4,c#5]@5 [g#4,b4,e5]@3 [a4,c#5,f#5]@5 [e4,g#4,c#5]@3 [e4,f#4,a4,c#5]@5 [g#4,b4,e5]@3 [a4,c#5,f#5]@5 [e4,g#4,c#5]@3 [e4,f#4,a4,c#5]@5 [g#4,b4,e5]@3 [a4,c#5,f#5]]/7", // E F#m C#m F#m7 E F#m C#m F#m7 …
  B: "[~@4 [e4,g#4,c#5]@3 [e4,f#4,a4,c#5]@5 ~@4]/2", C: "[g#4,b4,e5]@3 [a4,c#5,f#5]@5",
  D: "[e4,g#4,c#5]@3 [e4,f#4,a4,c#5]@5", // C#m F#m7
})).s("gm_synth_brass_1").gain(0.51)

// chords · synth brass 1 · "SYNBRASS 1" · soft notes · E F#m C#m F#m7 E F#m C#m F#m7 …
const synth_brass_1_soft = note(`<
  ~@112
  [[g#4,b4,e5]@3 [a4,c#5,f#5]@5]
  [[e4,g#4,c#5]@3 [e4,f#4,a4,c#5]@5]
  [[g#4,b4,e5]@2 ~ [a4,c#5,f#5]@4 ~]
  [[e4,g#4,c#5]@2 ~ [e4,f#4,a4,c#5]@4 ~]
  [[g#4,b4,e5]@2 ~ [a4,c#5,f#5]@4 ~]
  [[e4,g#4,c#5] ~@3]
>`).s("gm_synth_brass_1").gain(0.05)

// chords · pad bowed · "BOWEDGLASS"
const pad_bowed = note("<~@44 A@8 B@7 ~@59>".pickRestart({
  A: "[~@4 c#5@3 d5@4 e5@9 c#5@3 d5@4 e5@9 c#5@3 d5@4 e5@9 c#5@3 d5@4 e5@5, ~ [e4,a4]@4 [e4,a4]@4 [e4,a4]@4 [e4,a4]@3]/8", // A5
  B: "[~@4 d5@3 e5@4 f#5@9 d5@3 e5@4 f#5@9 c#5@3 d5@4 e5@9 ~@4, ~ [f#4,a4]@4 [f#4,a4]@4 [e4,a4]@4 ~]/7", // F#m A5
})).s("gm_pad_bowed").gain(0.51)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@8 A@10 B@2 C@3 D C@4 E F E G E F E H@2 I J I K I J I L M@7 N O@3 P M Q@4 R@5 S T S U S T S U V W X Y V W X Z V W E F
  E G E F E AA@2 S T S U S T S U S T S U S T S U S AB ~@6
>`.pickRestart({
  A: "a1/2", B: "[a1@7 e2]/2", C: "a1 ~ a1!3 ~ a1!3 ~ a1!3 ~ a1!2", D: "a1 ~ a1!3 ~ a1!3 ~ a1!3 ~ d2 e2",
  E: "e1@3 f#1@3 a1 b1", F: "c#2@3 d2@3 c#2 a1", G: "c#2@3 d2@2 f#2 a2 f#2",
  H: "[c#2@6 d2@17 ~ e1@2 e1@2 e1@2 f#1@2]/2", I: "f#1!2 a1 b1 c#2!3 d2", J: "d2!2 c#2 a1 e1!3 f#1",
  K: "d2 f#2 a2 f#2 e1!3 f#1", L: "d2@2 f#2@2 a2@2 f#2@2 a1@2 a1!2 a1@2 a1!2",
  M: "a1@2 a1!2 a1@2 a1!2 a1@2 a1!2 a1@2 a1!2", N: "a1@2 a1!2 a1@2 a1!2 d1@2 d1!2 d1@2 d1!2",
  O: "d1@2 d1!2 d1@2 d1!2 d1@2 d1!2 d1@2 d1!2", P: "d1@2 d1!2 d1@2 d1!2 a1@2 a1!2 a1@2 a1!2",
  Q: "[a1@2 a1!2 a1@2 a1!2 e1@6 f#1@6 a1@2 b1@2 c#2@6 d2@6 c#2@2 a1@2 e1@6 f#1@6 a1@2 b1@2 c#2@6 d2@2]/4",
  R: "[~@2 f#2@2 a2@2 f#2@2 e1@6 f#1@6 a1@2 b1@2 c#2@6 d2@6 c#2@2 a1@2 e1@6 f#1@6 a1@2 b1@2 c#2@6 d2@17 ~]/5",
  S: "e1!3 f#1!3 a1 b1", T: "c#2!3 d2!3 c#2 a1", U: "c#2!3 d2!2 f#2 a2 f#2",
  V: "c2@2 c2!2 c2@2 c2!2 c2@2 c2!2 c2@2 c2!2", W: "d2@2 d2!2 d2@2 d2!2 d2@2 d2!2 d2@2 d2!2",
  X: "e2@2 e2!2 e2@2 e2!2 e2@2 e2!2 e2@2 e2!2", Y: "e2@2 e2!2 e2@2 e2!2 e2@2 e2!2 e2@2 g1!2",
  Z: "e2@2 e2!2 e2@2 e1!2 e1@2 e1!2 e1@2 g1!2", AA: "[c#2@6 d2@25 ~]/2", AB: "c#2!3 d2 ~@4",
})).s("gm_electric_bass_finger").gain(0.51)

// bass · electric bass finger · "FINGERDBAS" · soft notes
const bass_soft = note(`<
  ~@111
  [~@4 d2!2 c#2 a1]
  [e1!3 f#1!3 a1 b1]
  [c#2!3 d2!2 f#2 a2 f#2]
  [e1!3 f#1!3 a1 b1]
  [c#2!3 d2!3 c#2 a1]
  [e1!3 f#1!3 a1 b1]
  [c#2!3 d2!2 f#2 a2 f#2]
>`).s("gm_electric_bass_finger").gain(0.15)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@111 [~ x] [x!2]!6>").gain(0.15)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@111 [~@3 x] [~ x ~ x] [~@4 x ~@7 x ~ x!2] [~ x ~ x]!3 [~@4 x ~@7 x!3 ~]>")
  .gain(0.15)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@3 B A@3 B A@3 B A@3 B C@4 D@16 E C@13 F D@16 G@10 D@33>".pickRestart({
  A: "x!4 ~ x!7 ~ x!3", B: "x!4 ~ x!11", C: "x!16", D: "x!8", E: "x ~ x ~ x ~ x ~ x!8", F: "x!9 ~ x ~ x ~ x ~",
  G: "~ x!3 ~ x!3",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~ x ~ x]!16 ~@94>").gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@75 [x!2]!10 ~@33>").gain(0.51)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@8 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D@8 ~ A ~ A ~ A ~ A ~ A
  ~@3 A ~@3 A ~ B@8 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4", C: "~ x", D: "~@4 x ~@2 x",
})).gain(0.51)

stack(
  electric_guitar_muted, electric_guitar_muted_2, overdriven_guitar, synth_strings_1, synth_brass_1, synth_brass_1_soft,
  pad_bowed, bass, bass_soft, kick, kick_soft, snare, snare_soft, hihat, open_hat, ride, crash
)

More by Marillion