Strudelify
Caught in a Dream cover art

Love It to Death

Caught in a Dream

Alice Cooper

KeyD majorTempo133 bpm
0:00/0:00
// Caught in a Dream — Alice Cooper
// 133 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "Guitar 2" electric guitar jazz (copy of ch 1 "Guitar 1" distortion guitar); ch 16 "Lead Gtr 2nd layer" overdriven guitar (copy of ch 7 "Lead Gtr" distortion guitar)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(133/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 · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  A B C D E F@3 G@16 H I J K L I J K M N O@8 P@3 Q F@3 G@4 R@4 S@4 T I J K L I J K M N O@8 P@3 Q P@3 Q P@3 Q P@3 Q P@3 Q
  P@3 Q ~
>`.pickRestart({
  A: "~@4 e2 f#2 a2 b2", B: "[a2,e3,a3]@4 [e2,a2] ~ [a2,e3,a3]@2 [f#2,b2] ~ [f#2,b2] ~ [a2,e3,a3]@3 ~",
  C: "[f#2,c#3,f#3]@3 [f#2,c#3,f#3] e2 f#2 a2 b2", // F#5
  D: "g2@4 [g2,d3] ~ [g2,d3,g3,d4,g4]@2 [g2,d3] ~ [g2,d3] ~ [g2,d3,g3,d4,g4]@2 [g2,d3] ~", // G5
  E: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]@5", // D
  F: "[[a2,e3,a3,c#4]@4 [a2,e3,a3,c#4]@2 ~@2 [a2,e3] ~ [a2,e3,a3,c#4]@4 [a2,e3,a3,d4]@6 [a2,e3,a3,d4]@2 ~@4 [a2,e3,a3,d4]@2 ~@2 [f#2,c#3,f#3,a3]@6 [f#3,a3,c#4,f#4]@2 ~@4 [f#3,a3,c#4,f#4]@2 ~@4]/3", // A A5 A Asus4 F#m
  G: "[[g2,d3]@2 [d3,g3,d4]@2 ~@2 [d3,a3,d4,f#4]@4 [d3,a3,d4,f#4]@2 ~@2 [a2,e3,a3,c#4]@6 [a2,e3,a3,c#4]@2 ~@2 [a2,e3] ~ [a2,e3,a3,c#4]@4 [a2,e3,a3,d4]@6 [a2,e3,a3,d4]@2 ~@4 [a2,e3,a3,d4]@2 ~@2 [f#2,c#3,f#3,a3]@6 [f#3,a3,c#4,f#4]@2 ~@4 [f#3,a3,c#4,f#4]@2 ~@4]/4", // G5 D A A5 A Asus4 F#m
  H: "[g2,d3] [d3,g3,d4] ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]@3", I: "[a#2,f3,a#3,d4]", J: "[f2,c3,f3,a3]",
  K: "[c3,g3,c4,e4]", L: "[d#3,a#3,d#4,g4]", M: "[e2,e3,b3,e4]", N: "[e2,e3]!8",
  O: "[[e3,b3,e4,g#4]@2 [e3,b3,e4,g#4] ~@2 [e3,b3,e4,g#4] ~ [e3,b3,e4,a4]@3 [e3,b3,e4,a4] ~@2 [e3,b3,e4,a4] ~ [e3,b3,e4,g#4]@3 [e3,b3,e4,g#4] ~@2 [e3,b3,e4,g#4] ~ [e3,b3,e4,a4]@3 [e3,b3,e4,a4] ~@2 [e3,b3,e4,a4] ~ [e3,b3,e4,g#4]@3 [e3,b3,e4,g#4] ~@2 [e3,b3,e4,g#4] ~ [e3,b3,e4,a4]@3 [e3,b3,e4,a4] ~@2 [e3,b3,e4,a4] ~ [e3,b3,e4,g#4]@3 [e3,b3,e4,g#4] ~@2 [e3,b3,e4,g#4] ~ [e3,b3,e4,a4]@3 [e3,b3,e4,a4] ~@2 [e3,b3,e4,a4]@3]/8", // E Esus4 E Esus4 E Esus4 E Esus4
  P: "[[a2,e3,a3,c#4]@2 [a2,e3,a3,c#4] ~@2 [a2,e3,a3,c#4] ~ [a2,e3,a3,d4]@3 [a2,e3,a3,d4] ~@2 [a2,e3,a3,d4] ~ [f#2,c#3,f#3]@3 [f#2,c#3,f#3] ~ [f#2,c#3] [f#2,c#3,f#3] ~@2]/3", // A Asus4 F#5
  Q: "[g2,d3,g3,d4]!3 [d3,a3,d4]@2 [d3,a3,d4]!3", // G5 D5
  R: "[[g2,d3] [d3,g3,d4] ~ [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] ~ [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] ~@2 [a2,e3,a3,c#4] ~ [g2,d3,g3,d4]@3 [g2,d3,g3,d4] ~@2 [g2,d3,g3,d4] ~ [f#2,c#3,f#3,a3]@3 [f#2,c#3,f#3,a3] ~@2 [f#2,c#3,f#3,a3] ~@2]/4", // G5 D A G5 F#m
  S: "[[g2,d3]@2 [g2,d3]!2 [g2,d3,g3,d4]!3 [a2,e3,a3,c#4]@3 [a2,e3,a3,c#4] ~@2 [a2,e3,a3,c#4] ~ [g2,d3,g3,d4]@3 [g2,d3,g3,d4] ~@2 [g2,d3,g3,d4] ~ [f#2,c#3,f#3,a3]@3 [f#2,c#3,f#3,a3] ~@2 [f#2,c#3,f#3,a3] ~@2]/4", // G5 A G5 F#m
  T: "[g2,d3]@4 [g2,d3]@2 [g2,d3]@2 [g2,d3,g3,d4]@2 [g2,d3,g3,d4]@2 [g2,d3,g3,d4]@2 [c3,g3,c4]!2", // G5 C5
})).s("gm_distortion_guitar").gain(0.21).pan(0.4)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B@3 C@16 D E F G H E F G I J K@7 L M@3 N B@3 C@4 O@8 P E F G H E F G I J K@7 L M@3 N B@3 C@4 Q M@3 R B@3 S M@3 R
  ~
>`.pickRestart({
  A: "~ a3", B: "[a2@2 a2 ~ e2 f#2 g#2 a2@3 a2 ~ e2 f#2 g#2 f#2@3 f#2 ~ d2 e2 f#2 g2]/3",
  C: "[g2@2 g2@2 ~@2 d2@4 d2@2 e2@2 f#2 a2@5 a2@2 ~@2 e2@2 f#2@2 g#2@2 a2@6 a2@2 ~@2 e2@2 f#2@2 g#2@2 f#2@6 f#2@2 ~@2 d2@2 e2@2 f#2@2 g2@2]/4",
  D: "g2!2 ~ d2@2 d2!3", E: "a#1@2 a#1 a1 a#1 c2 d2 d#2", F: "f2@2 f2@2 c2 d2 d#2 f2", G: "c2@2 c2@2 a1 a#1 c2 d2",
  H: "d#2@2 d#2@2 d#2!2 d2 c2", I: "e2!4", J: "e2!8", K: "e2@2 e2@2 b1!2 d2 d#2", L: "e2@2 e2@2 e2!2 g2 g#2",
  M: "[a2@2 a2@2 e2 f#2 g#2 a2@3 a2@2 e2 f#2 g#2 f#2@3 f#2@2 d2 e2 f2 f#2]/3", N: "g2 g2@2 d2!2 d2@3",
  O: "[g2!2 ~ d2@2 d2 e2 a2@3 a2 ~ d2 e2 f#2 g2@3 g2 ~ d2 e2 g2 f#2@3 f#2 ~ d2 e2 f#2 g2@3 g2 ~ d2 e2 g2 a2@3 a2 ~ d2 e2 f#2 g2@3 g2 ~ d2 e2 g2 f#2@3 f#2 ~ d2 e2 f#2 g2]/8",
  P: "~@2 g2 ~ d2 e2 g2@2", Q: "g2!3 d2@2 d2 e2 g2", R: "g2!3 d2@2 e2 f#2 g2", S: "g2!2 ~ d2@2 e2 f#2 g2",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · percussive organ · "Keys"
const percussive_organ = note("<~@25 A B C D A B C ~@72>".pickRestart({
  A: "[a#3,d4,f4,a#4]", B: "[f3,c4,f4,a4]", C: "[c4,e4,g4,c5]", D: "[d#3,d#4,g4,a#4]",
})).s("gm_percussive_organ").gain(0.38)

// chords · piano · "Keys"
const piano = note(`<
  ~@33 A B@8 C@3 D ~@8 E@7 F G H I J K H L M N B@8 C@3 D O@3 D O@3 D O@3 D C@3 D C@3 D ~
>`.pickRestart({
  A: "~@9 c7 b6 [f6,g6,a6] [d6,e6] [b5,c6] [g5,a5] ~", // F Dsus2 Cmaj7 Gsus2
  B: "[[e2,e3,e4,g#4,b4]@4 [e2,e3,e4,g#4,b4] ~@5 [e2,e3,e4,g#4,b4]@2 ~@2 [e2,e3,e4,a4,b4]@5 ~ [e2,e3,e4,a4,b4]@2 ~@4 [e2,e3,e4,a4,b4]@2 ~@2 [e2,e3,e4,g#4,b4]@6 [e2,e3,e4,g#4,b4] ~@5 [e2,e3,e4,g#4,b4]@2 ~@2 [e2,e3,e4,a4,b4]@5 ~ [e2,e3,e4,a4] ~@5 [e2,e3,e4,a4,b4]@2 ~@2 [e2,e3,e4,g#4,b4]@5 ~ [e2,e3,e4,g#4,b4]@2 ~@4 [e2,e3,e4,g#4,b4]@2 ~@2 [e2,e3,e4,a4,b4]@5 ~ [e2,e3,e4,a4,b4]@2 ~@4 [e2,e3,e4,a4,b4]@2 ~@2 [e2,e3,e4,g#4,b4]@5 ~ [e2,e3,b4]@2 ~@4 [e2,e3,e4,g#4,b4]@2 ~@2 [e2,e3,e4,a4,b4]@5 ~ [e2,e3,e4,a4,b4]@3 ~@3 [e4,a4,b4]@2 ~@4, ~@52 b4@2 ~@46 [e4,g#4] ~@21 [e2,e3] ~@5]/8", // E Esus4 E Esus4 A5 Esus4 E Esus4 …
  C: "[[a2,a3,a4,c#5,e5]@3 ~ [a4,c#5,e5] ~@5 [a4,c#5,e5] ~@3 [a4,d5,e5]@5 ~ [a4,d5,e5]@3 ~@3 [a4,d5,e5] ~@3 [f#4,a4,c#5]@5 ~ [a4,c#5] ~@5 [a4,c#5] ~@5, ~@4 [a2,a3]@9 ~ [a2,a3]@13 ~@3 [f#2,f#3]@15 ~@3, ~@18 f#4 ~@2 f#4 ~@2]/3", // A Asus4 F#m A F#
  D: "[g2,g3,g4,b4,d5] ~ [g2,g3,g4,b4,d5]@2 ~@2 [d2,d3,d4,f#4,a4]@9 ~", // G D
  E: "[~@2 [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [e4,a4] ~ [d4,g4]@4 [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [c#4,f#4]@4 [c#4,f#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [c#4,f#4] ~ [d4,g4]@4 [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [d4,g4] ~ [e4,a4]@4 ~@2 [a4,c#5] ~@3 [a4,c#5] ~ [g4,b4] ~ [f#4,a4] ~ [e4,g4]@4 ~@2 [g4,b4] ~@3 [g4,b4] ~ [f#4,a4] ~ [e4,g4] ~ [c#4,f#4]@4 ~@2 [c#4,f#4] ~@5 [c#4,f#4] ~@5]/7", // A5 G5 F#5 G5 A5 A G F#m …
  F: "[d4,g4]@4 ~@4 [d4,g4] ~ [d4,g4] ~@5", G: "[d4,f4]@4 [d4,f4] ~@5 [d4,f4] ~@5",
  H: "[c4,f4]@4 [c4,f4] ~@5 [c4,f4] ~@5", I: "[c4,g4]@4 [c4,g4] ~@5 [c4,g4] ~@5",
  J: "[d#4,g4]@4 [d#4,g4] ~@5 [d#4,g4] ~@5", K: "[a#3,f4]@4 [a#3,f4] ~@5 [a#3,f4] ~@5",
  L: "[c4,e4]@4 [c4,e4] ~@5 [c4,e4] ~@5", // C
  M: "[e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~", // E
  N: "[e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] ~ [e4,g#4] c6 b5 [f5,g5,a5] [d5,e5] [b4,c5] [g4,a4] ~", // E F Dsus2 Cmaj7 Gsus2
  O: "[[a2,a3,a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 ~@4 [a4,c#5,e5] ~@3 [a4,d5,e5]@5 ~ [a4,d5,e5]@3 ~@3 [a4,d5,e5] ~@3 [f#4,a4,c#5]@5 ~ [a4,c#5] ~@5 [a4,c#5] ~@5, ~@4 [a2,a3]@9 ~ [a2,a3]@13 ~@3 [f#2,f#3]@15 ~@3, ~@18 f#4 ~@2 f#4 ~@2]/3", // A Asus4 F#m A F#
})).s("gm_piano").gain(0.49)

// other · distortion guitar · "Lead Gtr"
const distortion_guitar_2 = note(`<
  ~@13 A B C D@3 ~@15 E F G H I J K L A B C D@3 ~@12 M N ~@9 O P Q R S T@2 U A B V W@2 B X@3 Y Z@4 AA AB AC AD@3 AE@2 AF
  AG ~
>`.pickRestart({
  A: "~@2 b4@2 b4@2 a4 f#4", B: "b4@2 a4 f#4 a4@2 f#4@2", C: "b3 c#4 e4 f#4 c#5@2 a4 f#4",
  D: "[a4 f#4 e4 c#4 e4 c#4 b3 a3@13 ~@4]/3", E: "~ e5 d5 b4@3 b4@2", F: "b4@2 b4@2 b4@2 g4 e4",
  G: "d4 e4 [g4,b4]@2 a4@2 b4 e4", H: "d4 e4 d4 b3@3 a3 b3", I: "a3 b3 [d4,g4] b3 d4 e4 g4 e4",
  J: "[g4,b4]@2 e4@2 [g4,b4]@2 e4@2 a4@3 g4 e4@2 [g4,b4]@2", K: "e4 d5@3 d5@2 d5 e5", L: "g5@2 f#5 d5 d5@4",
  M: "~@2 a3 g#3 a3 g#3 f#3 g3", N: "g3@2 g3 f3 g3 f3@3", O: "~ a5@3 b5@2 g5 e5", P: "d5@2 d5 e5 d5 b4 a4 b4",
  Q: "a4 b4 d5 b4 e5@2 e5 b4", R: "d5 b4 d5 d#5 e5 g5 e5 g5", S: "a5!4", T: "[a5@2 a5@2 g5 e5 g5 d6@3 e6 a5@3 a5@2]/2",
  U: "b5 g5 a5 e5@3 ~@2", V: "b3 c#4 e4 f#4 b4@2 a4 f#4", W: "[a4 f#4 e4 c#4 e4 c#4 b3 a3@3 b4@2 b4@2 a4 f#4]/2",
  X: "[b3 c#4 e4 f#4 c#5@2 a4 f#5@2 e5 d5 b4 a4 b4 f#4 a4@3 e5@2 f#5 e5@2 f#5]/3", Y: "e5@2 f#5 e5@2 f#5 e5@2",
  Z: "[a5@4 b5@4 f#5@2 e5@2 d5@2 b4@4 a4@2 f#4@2 a4@2 f#4@2 a4@2 e4@8 a4@2 f#4@2 a4@2 b4@2 a4@2 b4@5 a4 b4@5 a4 b4@5 a4]/4",
  AA: "b4@5 a4 b4@8 e5@2", AB: "c#5 b4 a4 f#4 a4 e4 c#4 b3", AC: "c#4@2 c#4 e4 c#4 e4 f#4 e4",
  AD: "[f#4@2 a4 f#4 a4 b4 a4 b4@3 b4@2 b4@2 a4 b4@3 a4 b4@5]/3", AE: "[a4 b4@5 a4 b4@5 a4 b4@3]/2",
  AF: "b4@3 b4@3 e5 f#5", AG: "e5 f#5 e5 f#5 e5 f#5 e5 f#5",
})).s("gm_distortion_guitar").gain(0.5)

// other · distortion guitar · "Lead Gtr add notes"
const distortion_guitar_3 = note("<~@40 A ~@34 B C D ~@18 E@2 ~@2 F G ~@2>".pickRestart({
  A: "~@6 e5@2 ~@2 e5!2 ~@4", B: "~@2 b5!2", C: "b5 ~@3", D: "~@3 b5", E: "[~@7 c#5@3 ~@6]/2", F: "~@7 e5",
  G: "~@2 e5 ~@2 e5 ~@2",
})).s("gm_distortion_guitar").gain(0.5)

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

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@78 [~@3 x] ~@25>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 A ~ A ~ B ~ A ~@10 C ~@19 C ~@16 D ~@25>".pickRestart({
  A: "~@10 x!6", B: "~@10 x!3 ~ x ~", C: "~@12 x!2 ~@2", D: "~@4 x!2 ~@2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A ~ A ~ A ~@3 A B C ~ A ~ A ~ A ~@12 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~@3 D ~ D@3 ~@12 A ~ A ~ A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "~@7 x", B: "~ x!7", C: "x ~@2 x ~@4", D: "~@5 x ~@2",
})).gain(0.4)

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

stack(
  distortion_guitar, bass, percussive_organ, piano, distortion_guitar_2, distortion_guitar_3, kick, snare, hihat,
  low_tom, mid_tom, open_hat, crash
)

More by Alice Cooper