Strudelify
Lucifer cover art

1987 · Eve

Lucifer

The Alan Parsons Project

KeyD minorTempo120 bpm
0:00/0:00
// Lucifer — The Alan Parsons Project
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "FINGERDBAS"
const bass = note("<~@2 A@10 B@2 A@6 B@2 A@22 B@2 A@6 B@2 A@6 B@2 A@22 B@2 A@6 B@2 A@6 B@4 A@6 B C>".pickRestart({
  A: "d2!2 d3!2 d2!2 d3!2 d2!2 d3!2 d2!2 d3!2", B: "a1!2 a2!2 a1!2 a2!2 a1!2 a2!2 a1!2 a2!2",
  C: "a1!2 a2!2 a1!2 a2!2 a1!2 a2!2 a1 ~@3",
})).s("gm_electric_bass_finger").gain(0.24)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@7 A ~ A ~ B ~ C ~ A ~ A ~ B ~ C ~@25 A ~ A ~ B ~ C D A D A D B E@2 ~@24 D A D A D B E@2 D A D A D B E@4 D A D A D B
  E@2
>`.pickRestart({
  A: "~ [g4,b4] ~@2 [e4,c5] ~ [g4,b4] ~", B: "~ b4 ~@2 [e4,c5] ~ [g4,b4] ~, ~@2 g4 ~@13", C: "~@4 d5 ~ db5 ~",
  D: "~@5 [d2,d3]@3", E: "[~@5 [a1,a2]@7 d5 ~ db5 ~]/2",
})).s("gm_synth_brass_1").gain(0.2)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@6 A B A B A B C D A B A B A B C D E@2 F@2 G@2 F@2 E@2 F@2 G@2 F@2 H@2 I@2 J@2 K@2 A B A B A B C D A B A B A B C D
  E@2 F@2 G@2 F@2 E@2 F@2 G@2 F@2 H@2 I@2 J@2 K@2 A B A B A B C D A B A B A B C D C D A B A B A B C L
>`.pickRestart({
  A: "~@2 [d3,a3,d4,f4,a4] [d4,f4,a4] [d3,a3,d4,f4,a4] [d4,f4,a4] [d3,a3,d4,f4,a4] [d4,f4,a4] [d3,a3,d4,f4,a4]@6 ~@2", // Dm
  B: "~ [g3,d4,g4,b4] ~@2 [a3,e4,g4,c5] ~ [g3,d4,g4,b4] ~", // G Am7 G
  C: "~@3 [d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] ~@3 [bb3,d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4], ~ [a2,g3,bb3,d4,g4] ~@2 [a2,g3,bb3,d4,g4] [a2,g3,bb3,d4] ~@2, ~@9 g4@2 ~@5", // G5 Gm
  D: "[a2,g3,bb3,d4,g4]@2 ~ [d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] [a2,g3,bb3,d4,g4]@2 ~@2 [a2,g3,a3,db4,a4]@2 ~@2, ~ [a2,g3,bb3,d4,g4] ~@6", // Gm G5 Gm A7 Gm
  E: "[[a3,d4,f4,a4]@2 a4 ~ f4 ~@2 a4 [f4,a4]@2 ~@3 [f4,a4] a4 ~ [d4,f4]@2 a4 ~@4 a4 [a3,d4,f4,a4]@2 a4 ~@4 a4, d3@7 d3@9, ~ a3@3 a3@3 a3@2 a3@3 ~ a3@3, ~@2 [d4,f4]@2 d4@4 d4@3 a4@2 ~@2 a4@3 ~ a4@2 [f4,a4]@2 ~@4 a4@2 [f4,a4]@2 ~, ~@3 a4@2 [f4,a4] f4@2 ~@2 [f4,a4]@2 [d4,f4]@2 [d4,f4]@2 ~@2 [d4,f4]@2 [d4,f4]@2 [d4,f4]@2 ~@2 [d4,f4]@2 [d4,f4]@2 [d4,f4]@2]/2", // Dm F Dm F Dm
  F: "[[a3,d4,f4,a4]@2 a4 ~@4 a4 [d4,f4,a4]@2 ~@3 [f4,a4] a4 ~ [d4,f4]@2 a4 ~@4 a4 [a3,d4,f4,a4]@2 a4 ~@4 a4, d3@7 d3@9, ~ a3@3 a3@3 a3@2 a3@3 ~ a3@3, ~ [d4,f4]!3 ~ [d4,f4,a4] [d4,f4]!2 ~ [d4,f4]!3 ~ [d4,f4]!3, ~@3 a4@2 [f4,a4]@2 ~@4 a4@2 ~@2 a4@3 ~ a4@2 [f4,a4]@2 ~@4 a4@2 [f4,a4]@2 ~]/2", // Dm F Dm F
  G: "[[g3,c4,e4,g4]@2 g4 ~@4 g4 [c4,e4,g4]@2 ~@3 [e4,g4] g4 ~ [c4,e4]@2 g4 ~@4 g4 [g3,c4,e4,g4]@2 g4 ~@4 g4, c3@7 c3@9, ~ g3@3 g3@3 g3@2 g3@3 ~ g3@3, ~ [c4,e4]!3 ~ [c4,e4,g4] [c4,e4]!2 ~ [c4,e4]!3 ~ [c4,e4]!3, ~@3 g4@2 [e4,g4]@2 ~@4 g4@2 ~@2 g4@3 ~ g4@2 [e4,g4]@2 ~@4 g4@2 [e4,g4]@2 ~]/2", // C Em C Em
  H: "[[d4,g4,b4]@2 ~@3 [g4,b4] b4!2 [g4,b4]@2 ~ b4 [g4,b4]!2 b4 ~ [d4,g4]@2 b4 ~@4 b4 [d4,g4,b4]@2 ~ b4 [g4,b4] ~@2 b4, g2@3 g2@5, g3@3 g3@3 [g3,d4] g3@2 g3@3 g3@2 g3@2, ~ [d4,g4,b4] [d4,g4]!2 d4@2 ~ [d4,g4] ~ [d4,g4]!3 ~ [d4,g4,b4] d4 [d4,g4], ~@3 b4@2 ~@5 [g4,b4]@2 ~@3 b4@3 ~ b4@2 [g4,b4]@2 ~@6 [g4,b4]@2 ~]/2", // G G5 G G5 G G5 G G5 …
  I: "[[bb3,d4,f4]@2 ~@3 [d4,f4] f4!2 [d4,f4]@2 ~ f4 [d4,f4]!2 f4 ~ [bb3,d4]@2 f4 ~@4 f4 [bb3,d4,f4]@2 ~ f4 [d4,f4] ~@2 f4, bb2@3 bb2@5, f3@3 f3@3 [f3,bb3] f3@2 f3@3 f3@2 f3@2, ~ [bb3,d4,f4] [bb3,d4]!2 bb3@2 ~ [bb3,d4] ~ [bb3,d4]!3 ~ [bb3,d4,f4] bb3 [bb3,d4], ~@3 f4@2 ~@5 [d4,f4]@2 ~@3 f4@3 ~ f4@2 [d4,f4]@2 ~@6 [d4,f4]@2 ~]/2", // Bb Dm Bb Dm Bb5 Bb Dm
  J: "[[bb3,d4,g4]@2 ~@3 [d4,g4] g4!2 [d4,g4]@2 ~ g4 [d4,g4]!2 g4 ~ [bb3,d4]@2 g4 ~@4 g4 [bb3,d4,g4]@2 ~ g4 [d4,g4] ~@2 g4, d3@3 d3@5, g3@3 g3@3 [g3,bb3] g3@2 g3@3 g3@2 g3@2, ~ [bb3,d4,g4] [bb3,d4]!2 bb3@2 ~ [bb3,d4] ~ [bb3,d4]!3 ~ [bb3,d4,g4] bb3 [bb3,d4], ~@3 g4@2 ~@5 [d4,g4]@2 ~@3 g4@3 ~ g4@2 [d4,g4]@2 ~@6 [d4,g4]@2 ~]/2", // Gm G5 Bb Gm G5 Gm Bb Gm …
  K: "[[d4,e4,g4]@2 ~@3 [e4,g4] g4!2 [e4,g4]@2 ~ g4 [e4,g4]!2 g4 ~ [d4,e4]@2 g4 ~@4 g4 [d4,e4,g4]@2 ~ g4 [e4,g4] ~@2 g4, e3@3 e3@5, a3@3 a3@3 [a3,d4] a3@2 a3@3 a3@2 a3@2, ~ [d4,e4,g4] [d4,e4]!2 d4@2 ~ [d4,e4] ~ [d4,e4]!3 ~ [d4,e4,g4] d4 [d4,e4], ~@3 g4@2 ~@5 [e4,g4]@2 ~@3 g4@3 ~ g4@2 [e4,g4]@2 ~@6 [e4,g4]@2 ~]/2", // Em7 Em Dsus2 Em7 Em D5 Em7 Dsus2 …
  L: "[a2,g3,bb3,d4,g4]@2 ~ [d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] [a2,g3,bb3,d4,g4] [bb3,d4,g4] [a2,g3,bb3,d4,g4]@2 ~@6, ~ [a2,g3,bb3,d4,g4] ~@6", // Gm G5 Gm
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.3)

// other · melodic tom · "MELO TOM 1"
const melodic_tom = note(`<
  ~@14 A B A B A B ~@26 A B A B A B ~@2 A B A B A B ~@26 A B A B A B ~@2 A B A B A B ~@4 A B A B A B ~@2
>`.pickRestart({
  A: "~@9 c3!3 a2 ~ f2!2", B: "c2 ~@15",
})).s("gm_melodic_tom").gain(0.43).pan(0.3)

// other · melodic tom · "MELO TOM 1" · soft notes
const melodic_tom_soft = note(`<
  ~@14 A ~ A ~ A ~@27 A ~ A ~ A ~@3 A ~ A ~ A ~@27 A ~ A ~ A ~@3 A ~ A ~ A ~@5 A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@13 f2 ~@2",
})).s("gm_melodic_tom").gain(0.24).pan(0.3)

// other · french horn · "FR.HORN"
const french_horn = note("<~@94 A B A B A B ~@4 A B A B A B ~@2>".pickRestart({
  A: "~@12 d4@3 [e4,f4,g4,a4]", B: "d5!2 ~@6, c5 ~@15",
})).s("gm_french_horn").gain(0.61)

// other · orchestral harp · "HARP"
const orchestral_harp = note(`<
  ~@62 A B A B C D A B A B A B C D A B E F G H I J K L ~@8 A M A M A M I N I N A M A M A M I O
>`.pickRestart({
  A: "a5 f5 d5 a5 f5 d5 a5 f5 d5 a5 f5 d5 a5 f5 d5 a5", B: "f5 d5 a5 f5 d5 a5 f5 d5 a5 f5 d5 a5 f5 d5 a5 f5",
  C: "g5 e5 c5 g5 e5 c5 g5 e5 c5 g5 e5 c5 g5 e5 c5 g5", D: "e5 c5 g5 e5 c5 g5 e5 c5 g5 e5 c5 g5 e5 c5 g5 e5",
  E: "b5 g5 d5 b5 g5 d5 b5 g5 d5 b5 g5 d5 b5 g5 d5 b5", F: "g5 d5 b5 g5 d5 b5 g5 d5 b5 g5 d5 b5 g5 d5 b5 g5",
  G: "d6 bb5 f5 d6 bb5 f5 d6 bb5 f5 d6 bb5 f5 d6 bb5 f5 d6", H: "bb5 f5 d6 bb5 f5 d6 bb5 f5 d6 bb5 f5 d6 bb5 f5 d6 bb5",
  I: "d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6", J: "bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 bb5",
  K: "d6 bb5 a5 d6 bb5 a5 d6 bb5 a5 d6 bb5 a5 d6 bb5 a5 d6", L: "bb5 a5 d6 bb5 a5 d6 bb5 a5 d6 bb5 a5 d6 bb5 a5 d6 bb5",
  M: "f5 d5 b5 g5 d5 b5 g5 d5 c6 g5 e5 c6 b5 g5 d5 b5", N: "bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 a5 g5 d6 db6 a5 g5 db6",
  O: "bb5 g5 d6 bb5 g5 d6 bb5 g5 d6 a5 g5 d6 ~@4",
})).s("gm_orchestral_harp").gain(0.31)

// other · lead 8 bass lead · "BASS&LEAD"
const lead_8_bass_lead = note("<[d5 ~ d5!3 ~ d5@5 ~ d5 ~@3]!111 [d5 ~ d5!3 ~ d5@5 ~@5]>")
  .s("gm_lead_8_bass_lead").gain(0.18).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@2 [x!4]!110>").gain(0.57)

// drums · snare
const snare = s("sd").struct("<[x ~ x ~ x!5 ~ x ~ x!4]!2 [x!7 ~ x!5 ~ x ~]!109 [x!7 ~ x!5 ~@3]>").gain(0.34)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@14 [x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2]!97 [x ~ x!2 ~@2 x!3 ~ x!2 ~@4]>").gain(0.34)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~ A ~ A ~ A ~ A ~@7 A ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x",
})).gain(0.23)

stack(
  bass, synth_brass_1, electric_guitar_clean, melodic_tom, melodic_tom_soft, french_horn, orchestral_harp,
  lead_8_bass_lead, kick, snare, snare_soft, tambourine, crash
)

More by The Alan Parsons Project