Strudelify
Eighteen cover art

Alice Does Alice

Eighteen

Alice Cooper

KeyG majorTempo103 bpm
0:00/0:00
// Eighteen — Alice Cooper
// 103 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(103/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~ A B C D E F G H I J K L K L M N K L A B A B A B E F G H I J K L K L M N K L A B A B A B E F G H O P Q R S T U V W X
  W X W X W X W X ~
>`.pickRestart({
  A: "[e3,b3,e4]@3 ~@3 e4!2 e3 ~ f#3 ~@5", B: "c4 ~ g4 ~ c5@3 ~@5 [d4,a4,d5,f#5]!2 ~ d4",
  C: "[e3,b3,e4,g4]@3 ~@5 e3 ~ f#3 ~@5", D: "c4 ~ g4 ~ c5@3 ~@5 d5!2 ~@2",
  E: "[a3,e4,a4,c5]@3 ~@4 [a3,e4,a4,c5]!2 ~@4 b4 ~@2", F: "[b3,f#4,b4]@3 ~@5 [b4,e5] ~ [b4,e5] ~@5",
  G: "[b3,f#4,b4] [c4,g4,c5]@2 ~@5 [c4,g4,c5,e5] ~@4 [c4,g4,c5,e5]!3", // B5 C5 C
  H: "~@4 [d4,a4,d5,f#5] ~@2 [d4,a4] ~ [d4,a4,d5,f#5] ~ [d4,a4,d5,f#5] ~ b4!2 ~", // D D5 D
  I: "[e3,b3,e4]@3 ~@3 b4!2 ~@2 [g4,b4] ~@3 g4 ~", J: "[c4,e4,g4,d5,g5]@3 ~@5 [a3,d4] ~@4 [d4,a4,d5] ~@2",
  K: "e5 ~@3 b4 ~@11", L: "c4 ~@3 g4 ~@3 d4 ~@3 d5 ~@3", M: "c4 ~@3 g4 ~@3 e5 ~@3 g4 ~@3",
  N: "d4 ~@3 d5 ~@3 g5 ~@3 e5 ~@3", O: "e3@3 ~ g4 ~ d5@2 ~ g4 [d5,e5] ~ g4 [g4,d5,e5] ~ [g4,d5,e5]",
  P: "[c4,e4,g4] ~ [c4,e4,g4] ~ d5 ~ b4 ~@3 [d4,a4,d5] ~@2 d5 b4 ~", // C D5
  Q: "[b3,e4]@3 ~ b4 ~ g4 ~ d5 ~ [g4,d5] ~ [g4,d5] ~ a3 b3", // E5 G5
  R: "[c4,e4]@3 ~ [g4,c5,e5] ~@4 a4 [a3,d4,a4,d5] ~ [a3,d4,a4,d5] ~ a4 g4", // C D5
  S: "[c4,e4,g4]@3 ~ [g4,c5,e5] ~@3 [c4,e4,g4,c5,e5] ~ [c4,e4,g4,c5,e5] ~ g4 ~ [g4,c5] ~", // C C5
  T: "[a3,d4]@3 ~ [d4,a4,d5] ~@5 [d4,a4,d5] ~ [d4,a4,d5]@3 ~", // D5
  U: "[e3,b3,e4,g4,b4,e5]@3 ~ [b4,e5] ~@3 e5 ~ [g4,d5,e5] ~ [g4,d5,e5] ~ a3 b3, ~@7 b4@2 ~@7", // Em E5 Em7
  V: "[c4,e4,g4,c5]@3 ~ [c4,e4,g4,c5]@2 ~ a3 [a3,d4,a4,d5] ~ [a3,d4,a4,d5] ~ [a3,d4,a4,d5] ~ [a3,d4,a4,d5] ~", // C D5
  W: "[e3,b3,e4]@3 ~ [e3,b3,e4] ~ e3!3 ~ f#3 ~ g3 ~ a3 ~", X: "c4 ~ e4 ~ g4@3 ~ d4 ~ a4 ~ d5 ~@3",
})).s("gm_piano").gain(0.41).pan(0.2)

// chords · piano
const piano_2 = note("<~@5 A B C D E ~ F ~@13 A B C D E ~ F ~@13 A B C D G ~@7 H I H I H I H I H I ~>".pickRestart({
  A: "[a3,e4,a4]@11 ~@5", B: "[b3,f#4,b4]@11 ~@5", C: "[c4,g4,c5]@11 ~@5", D: "[c4,g4,c5] [d4,a4,d5]@12 ~@3",
  E: "[e4,b4,e5]@11 ~@5", F: "e5@11 ~@5", G: "[e3,e4,b4,e5]@11 ~@5", H: "[e3,b3,e4]@3 ~@3 e4!2 e3 ~ f#3 ~@5",
  I: "c4 ~ g4 ~ c5@3 ~@5 [d4,a4,d5,f#5]!2 ~ d4", // D
})).s("gm_piano").gain(0.41).pan(0.7)

// chords · piano
const piano_3 = note(`<
  ~ A B C D E F G H I J K L K L M N K O A B A B A B P F G H I J K O K L M N K O A B A B A B P F G H K L K L M N K O A B
  A B A B A B A B ~
>`.pickRestart({
  A: "~@4 [e3,b3,e4] ~@7 g3 ~ a3 ~", B: "~@8 [c4,g4] [d4,a4] [d4,a4,d5,f#5] ~@5",
  C: "~@4 [e3,b3,e4,g4,b4]@2 ~ g4 ~@4 g3 ~ a3 ~", D: "~@8 [c4,g4] [d4,a4] [d4,a4,d5] ~@3 g4!2",
  E: "~@4 [a3,e4,a4,c5]@2 ~@4 [a3,e4,a4,c5] ~ [a3,e4,a4,c5] ~@3", // Am
  F: "~@4 [b3,f#4,b4] ~ [b4,e5]!2 ~@4 [b4,e5] [b4,d#5] [b3,f#4,b4]!2", // B5 E5 B B5
  G: "~@4 [c4,g4,c5,e5] ~ [c4,g4,c5,e5]!2 ~@2 [c4,g4,c5,e5]@2 ~@4", // C
  H: "[c4,g4,c5,e5] [d4,a4,d5,f#5]@2 ~@3 [d4,a4] ~ [d4,a4,d5,f#5] ~ [d4,a4,d5,f#5] a4 [d4,a4,d5,f#5] ~@2 [g4,b4]", // C D D5 D G
  I: "~@4 [e3,b3,e4,g4,b4] ~@3 b4 ~@7", J: "~@4 [g4,d5,g5] ~@5 [d4,a4,d5]@2 ~@2 b4!2", K: "~@2 d5 ~@3 g4@9 ~",
  L: "~@2 e4 ~@3 c4 ~@3 a4 ~@3 b4 ~", M: "~@2 e4 ~@3 c5 ~@3 c5 ~@3 c5 ~", N: "~@2 a4 ~@3 f#5 ~@3 f#5 ~@3 d5 ~",
  O: "~@2 e4 ~@3 c4 ~@3 a4 ~@3 f#5 ~", P: "~@4 [e4,a4,c5]@2 ~@4 [e4,a4,c5] ~ [e4,a4,c5] ~@3",
})).s("gm_piano").gain(0.41).pan(0.8)

// bass · electric bass pick
const bass = note(`<
  ~ A B A B C D E F G H I J I K L M I N A B A B A B C D E F G O I J I K L M I N A B A B A B C D E F G O G P Q R G P S T
  U V W X W X W X Y
>`.pickRestart({
  A: "e3@3 ~ b3@2 ~ b3 e3 ~ d#3 ~ d3 ~ c#3 ~", B: "c3@3 ~ g3 ~ c3 ~ d3 ~ d3!6", C: "a3@4 ~@2 e4@3 ~ e4@4 ~@2",
  D: "b3 ~ e4 ~ f#4 ~ e4@4 ~@2 f#4 ~@3", E: "c4@4 ~@2 g4 ~ g4 ~ g4@4 ~@2", F: "d4@3 ~ e4 ~ f4 ~ f#4 a4!6 ~",
  G: "e3 ~ e3 ~ b3 ~ e3@3 ~ e3 ~ b3@3 ~", H: "c3 ~ c3 ~ g3 ~ c3 ~ c3 ~ c3 ~ b2 ~ b2 ~", I: "e3@8 ~@4 e3@3 ~",
  J: "c3@5 ~@3 d3 ~@3 b2@3 ~", K: "c3@8 ~@6 b2 ~", L: "c3@4 ~@2 c3 ~ c3 ~ c3@4 ~@2",
  M: "c3 d3@3 ~@2 d3 ~ d3 ~ d3 ~ b2@3 ~", N: "c3@5 ~@5 d3 ~ d3 ~ d3 ~", O: "c3 ~ c3 ~ g3 ~ c3@3 ~ d3 ~ d3 ~ d3 e3",
  P: "c3 ~ c3 ~ g3 ~ c3 ~ c3 ~ d3 ~ d3 ~ d3 ~", Q: "c3@4 ~@2 c3 ~ g3 ~ g3@3 ~ g3 ~",
  R: "d3 ~ d3 ~ a3 ~ d3 ~ d3 ~ d3 ~ b2@3 ~", S: "e3 ~ b3 ~ d4 ~ e4@3 ~ e4 ~ d4!2 b3 ~",
  T: "c3 ~ c3 ~ g3 ~ c3@3 ~ d3 ~ d3 ~ d3 ~", U: "c3 ~ b3 ~ d4 ~ e4 ~ e4 ~ e4 ~ d4!2 b3 ~",
  V: "c3 ~ c3 ~ g3 ~ a#3 ~ c4!6 g3 ~", W: "e3 ~ b3 ~ c4 ~ e4 ~ e4 ~ e4 ~ d4 ~ b3 ~",
  X: "c3 ~ g3 ~ a#3 ~ c4 ~ d3 ~ a3 ~ c4 ~ d4 ~", Y: "e3@11 ~@5",
})).s("gm_electric_bass_pick").gain(0.41)

// bass · electric bass finger
const bass_2 = note(`<
  ~ A B A B C D E F G H I J I K L M I N A B A B A B C D E F G O I J I K L M I N A B A B A B C D E F G O G P Q R G P S T
  U V W X W X W X Y
>`.pickRestart({
  A: "e2@3 ~ b2@2 ~ b2 e2 ~ d#2 ~ d2 ~ c#2 ~", B: "c2@3 ~ g2 ~ c2 ~ d2 ~ d2!6", C: "a2@4 ~@2 e3@3 ~ e3@4 ~@2",
  D: "b2 ~ e3 ~ f#3 ~ e3@4 ~@2 f#3 ~@3", E: "c3@4 ~@2 g3 ~ g3 ~ g3@4 ~@2", F: "d3@3 ~ e3 ~ f3 ~ f#3 a3!6 ~",
  G: "e2 ~ e2 ~ b2 ~ e2@3 ~ e2 ~ b2@3 ~", H: "c2 ~ c2 ~ g2 ~ c2 ~ c2 ~ c2 ~ b1 ~ b1 ~", I: "e2@8 ~@4 e2@3 ~",
  J: "c2@5 ~@3 d2 ~@3 b1@3 ~", K: "c2@8 ~@6 b1 ~", L: "c2@4 ~@2 c2 ~ c2 ~ c2@4 ~@2",
  M: "c2 d2@3 ~@2 d2 ~ d2 ~ d2 ~ b1@3 ~", N: "c2@5 ~@5 d2 ~ d2 ~ d2 ~", O: "c2 ~ c2 ~ g2 ~ c2@3 ~ d2 ~ d2 ~ d2 e2",
  P: "c2 ~ c2 ~ g2 ~ c2 ~ c2 ~ d2 ~ d2 ~ d2 ~", Q: "c2@4 ~@2 c2 ~ g2 ~ g2@3 ~ g2 ~",
  R: "d2 ~ d2 ~ a2 ~ d2 ~ d2 ~ d2 ~ b1@3 ~", S: "e2 ~ b2 ~ d3 ~ e3@3 ~ e3 ~ d3!2 b2 ~",
  T: "c2 ~ c2 ~ g2 ~ c2@3 ~ d2 ~ d2 ~ d2 ~", U: "c2 ~ b2 ~ d3 ~ e3 ~ e3 ~ e3 ~ d3!2 b2 ~",
  V: "c2 ~ c2 ~ g2 ~ a#2 ~ c3!6 g2 ~", W: "e2 ~ b2 ~ c3 ~ e3 ~ e3 ~ e3 ~ d3 ~ b2 ~",
  X: "c2 ~ g2 ~ a#2 ~ c3 ~ d2 ~ a2 ~ c3 ~ d3 ~", Y: "e2@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · piano · "_______Rob Horvath"
const piano_4 = note("<~@49 A B A B C D A B ~@4 E F G H I J K>".pickRestart({
  A: "e5 ~@3 b4 ~@11", B: "c4 ~@3 g4 ~@3 d4 ~@3 d5 ~@3", C: "c4 ~@3 g4 ~@3 e5 ~@3 g4 ~@3",
  D: "d4 ~@3 d5 ~@3 g5 ~@3 e5 ~@3", E: "[e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~",
  F: "[c4,g4,c5]@3 ~ [c4,g4,c5] ~ [c4,g4,c5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~", // C5 D5
  G: "[e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4]@3 ~ [e3,b3,e4] ~ [e3,b3,e4] ~", // E5
  H: "[c4,g4,c5]@3 ~ [c4,g4,c5]@3 ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~ [d4,a4,d5] ~", // C5 D5
  I: "[b3,e4,g4,b4,e5] ~ [e3,b3,e4,g4,b4,e5]@5 ~@9, e3 ~@7", J: "[c4,g4,c5]@5 ~@3 [e4,a4,d5]@3 ~@5",
  K: "[e3,b3,e4,g4,b4,e5]@11 ~@5", // Em
})).s("gm_piano").gain(0.41)

// other · piano
const piano_5 = note("<~@49 [e5@11 ~@5] ~@18>").s("gm_piano").gain(0.41)

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@19 A ~@15 B ~ C ~>".pickRestart({
  A: "~@14 x!2", B: "~@13 x!3", C: "~@15 x",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@18 A ~@5 B ~@3 C ~@9 A ~@5 B ~@3 C ~@9 A ~@5 D ~ E ~>".pickRestart({
  A: "~@6 x!2", B: "~@12 x ~ x!2", C: "~@3 x", D: "~@6 x!7 ~@3", E: "~@8 x!7 ~",
})).gain(0.36)

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

stack(piano, piano_2, piano_3, bass, bass_2, piano_4, piano_5, kick, snare, pedal_hat, mid_tom, high_tom, crash)

More by Alice Cooper