Strudelify

No More Mr Nice Guy

Alice Cooper

KeyA majorTempo128 bpm
0:00/0:00
// No More Mr Nice Guy — Alice Cooper
// 128 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 99 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): Gtr 2.
setcpm(128/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 · "Gtr 1"
const distortion_guitar = note(`<
  A@8 B C B C B D E F G H E F G I J@4 K@4 L@2 M@2 L@2 M@2 A@8 J@4 K@4 L@2 M@2 L@2 M@2 ~@7 N O P Q R O P Q S L@2 M@2 L@2
  M@2 L@2 M@2 L@2 M@2 T U V@3
>`.pickRestart({
  A: "[[a3,e4,a4] ~ [a3,e4,a4] ~ [a3,e4,g4]@2 ~ [a3,d4,g4] ~ [a3,d4,g4]@2 g3 b3 d4 b3 d3, a2@3 ~]/2", // A5 A7 Dsus4
  B: "[b2,f#3,b3,d4,f#4,b4]@2 [f#3,b3] [e3,a3] [f#3,b3] [a3,d4]!3", // Bm B5 A5 B5 D5
  C: "[e3,b3,e4,g#4]@4 [e3,b3,e4,a4]@2 ~@2 [e3,b3,e4,a4]@2 [e3,b3,e4,g#4]@4 [b2,f#3,b3,d4,f#4,b4]!2", // E Esus4 E Bm
  D: "[e3,b3,e4,g#4]@2 [e3,b3,e4,a4] ~ [e3,b3,e4,a4] [e3,b3,e4,g#4]!3", E: "[a2,e3,a3,c#4,e4,a4]",
  F: "[c#3,g#3,c#4,e4,g#4]", G: "[g2,d3,g3,b3,d4,g4]",
  H: "[b2,f#3,b3,d4,f#4]@2 ~ [d3,a3,d4,f#4] ~ [e3,b3,e4,g#4]@2 [a2,e3,a3,c#4,e4,a4]", // Bm D E A
  I: "[b2,f#3,b3,d4,f#4]@2 ~ [d3,a3,d4,f#4] ~ [e3,b3,e4,g#4]@3", // Bm D E
  J: "[[f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4] ~@2 [f#2,c#3,f#3,a3,c#4,f#4] ~ [b2,f#3,b3,d4,f#4]@3 [b2,f#3,b3,d4,f#4] ~@2 [b2,f#3,b3,d4,f#4] ~ [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~ [e3,b3,e4,g#4]@3 [e3,b3,e4,g#4] ~ [e3,b3,e4,a4] [e3,b3,e4,g#4]@3]/4", // F#m Bm D E Esus4 E
  K: "[[f#2,c#3,f#3,a3,c#4,f#4]@2 [f#2,c#3,f#3,a3,c#4,f#4] ~@2 [f#2,c#3,f#3,a3,c#4,f#4] ~ [b2,f#3,b3,d4,f#4]@3 [b2,f#3,b3,d4,f#4] ~@2 [b2,f#3,b3,d4,f#4] ~ [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4] ~@2 [d3,a3,d4,f#4] ~ [e3,b3,e4,g#4]@3 ~ [d3,a3,d4,f#4]@5]/4", // F#m Bm D E D
  L: "[[f#4,a4]@2 [c#4,f#4]@2 [a4,c#5] [g#4,c#5] [c#4,f#4] [b3,e4]@5 [a3,d4]@4]/2", // F#m F#5 A C#5 F#5 E5 D5
  M: "[[f#4,a4]@2 [c#4,f#4]@2 [a4,c#5] [g#4,c#5] [c#4,f#4] [b3,e4]@2 [c#4,f#4]@2 [e4,a4]@2 [a4,c#5]@3]/2", // F#m F#5 A C#5 F#5 E5 F#5 A5 …
  N: "~@14 [a2,e3,a3,c#4,e4,a4]!2", O: "[a2,e3]!8", P: "[c#3,g#3]!8", Q: "[g2,d3]!8",
  R: "[b2,f#3]@2 [b2,f#3]@2 ~@2 [d3,a3]@2 ~@2 [e3,b3]@4 [a2,e3]!2", S: "[b2,f#3]!3 [d3,a3] ~ [e3,b3]@3",
  T: "[b3,e4]@2 [c#4,f#4]@4 [e4,a4]@4 [a4,c#5]@4 [a4,c#5]!2", U: "[b3,e4] [c#4,f#4]@2 [e4,a4]@2 [a4,c#5]@3",
  V: "[[a2,e3,a3,c#4]@5 ~]/3", // A
})).s("gm_distortion_guitar").gain(0.3).pan(0.2)

// chords · electric guitar clean · "Gtr 1"
const electric_guitar_clean = note("<~@62 A B C D A B C E ~@29>".pickRestart({
  A: "~ a4@7, [a2,e3], ~ [a3,c#4,e4]@15", B: "~ [c#4,e4,g#4]@15, [c#3,g#3]", C: "~ g4@7, [g2,d3], ~ [g3,b3,d4]@15",
  D: "~ [b3,d4,f#4]@7 ~@2 e4@6, [b2,f#3] [e2,b2], ~@9 [e3,g#3,b3]@7", // Bm B5 E5 E
  E: "~ [b3,d4,f#4]@7 ~@2 e4@4 ~@2, [b2,f#3]@4 [e2,b2]@3 ~, ~@9 [e3,g#3,b3]@5 ~@2", // Bm B5 E5 E
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.2)

// chords · electric guitar clean · "Gtr 2"
const electric_guitar_clean_2 = note(`<
  ~@8 A B A B A B ~@11 C ~@3 D ~@19 C ~@3 D ~@8 E F G H E F G H ~@29
>`.pickRestart({
  A: "~ [f#4,b4]@15", B: "~ [e4,g#4]@15", C: "~ b3 ~ f#4 ~@4", D: "~@2 [b3,e4,g#4] ~@2 [a3,d4,f#4] ~@2",
  E: "~@3 c#5@5, c#4, ~ e4@7, ~ a4@3", F: "~@3 c#5@5, c#4, ~ e4@7, ~ g#4@3", G: "~@3 b4@5, b3, ~ d4@7, ~ g4@3",
  H: "[b3,d4,f#4,b4] [e3,b3,e4,g#4]", // Bm E
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.8)

// other · distortion guitar · "Gtr 3"
const distortion_guitar_2 = note(`<
  ~@8 A@2 B@2 C@2 D E F G H I F G ~@3 J ~@3 K@2 L@2 ~ M ~ N@2 ~@3 O P@2 ~ Q R ~@6 S@2 ~ M ~ M ~ M ~@8 T H I F G H I F G
  M ~ M ~ M ~ M ~ M ~ M ~ M ~ M ~@6
>`.pickRestart({
  A: "[e4@4 e4@2 d4 a4@9]/2", B: "[e4@2 e4@2 e4@2 d4 a4@9]/2", C: "[e4@4 e4@2 d4 a4@3 e4@2 d4 e4@3]/2", D: "a3",
  E: "g#3", F: "g3", G: "b3@3 d4@2 e4@3", H: "a3@5 e4@3", I: "g#3@5 e4@3", J: "~ b3 e4 f#4 e4@4",
  K: "[~ b3 e4 f#4 b4@12]/2", L: "[~@7 b4@9]/2", M: "b4", N: "b4/2", O: "~ e4 g4 a4 c#5@2 c#5@2", P: "c#5/2",
  Q: "~ e5@3 e5@2 b4@2", R: "f#4", S: "[~ b3 e4 a4 b3@12]/2", T: "~@5 e4@3",
})).s("gm_distortion_guitar").gain(0.57)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@6 A@2 B C D E F G H I J K H L J K M N O@2 M N P@2 Q R Q S Q R Q S T@2 U@2 V@2 W X M N O@2 M N P@2 Q R Q S Q R Q S
  ~@8 Y Z AA AB Y AC AA AD Q R Q S Q R Q S Q R Q S Q R Q S@3 AE@3
>`.pickRestart({
  A: "[e2@6 ~ e2@7 ~@2]/2", B: "b1@2 b1!3 f#1 a1 b1", C: "e2@4 e2@3 a1 b1@2 b1@2 d2@2 e2@2",
  D: "b1@4 b1@2 b1!2 f#1@2 f#1@2 a1@2 b1@2", E: "e2@3 e2 e2@4 f#2@2 e2@2 c#2@2 e2@2",
  F: "b1@4 b1@3 b1 f#1@2 f#1@2 a1@2 b1@2", G: "e2@2 e2!2 f#2 e2 f#2 g2", H: "a2", I: "g#2", J: "g2",
  K: "b1@2 ~ d2 ~ e2@2 ~", L: "c#2", M: "f#2@4 f#2@3 f#2 f#2@2 f#2@2 d#2@2 c#2@2",
  N: "b1@4 b1@3 a1 f#1@2 a1@2 b1@2 c#2@2", O: "[d2@4 d2@2 d2@2 a1@2 b1@2 d2@2 e2@6 e2@3 e2!9]/2",
  P: "[d2@2 d2@2 d2@2 d2@2 a1@2 b1@2 d2@2 e2@6 e2@2 e2@2 e2!2 b1@2 d2@2 e2@2]/2", Q: "f#2@2 f#2@2 d2 d2@2 e2",
  R: "e2@4 d2 b1 d2 e2", S: "e2 f#2@2 a2@2 b2@2 ~", T: "[a2@2 d3@2 d3@3 a3@2 e3@2 d3@2 e3 d3 a2]/2",
  U: "[e3@2 a3@2 b3@2 ~ a3@2 b3@2 a3 ~ b3!2 a3, a2@3 a1@3 a1 ~]/2",
  V: "[~@2 a3@2 a3@2 ~@3 b3@2 a3 ~ b3!2 a1, a1@2 ~ a3 ~@4, ~@7 a1@5 a1@2 ~@2]/2", W: "~@2 a3@2 c4@2 c#4 b3, a1 ~",
  X: "~ a3@3 a3!2 f#3 ~", Y: "a2!8", Z: "g#2!8", AA: "g2!8", AB: "b1@2 b1@2 b1@2 d2@4 e2@4 g2 g#2", AC: "c#2!8",
  AD: "b1!3 d2@2 e2@2 e2", AE: "[e2@5 ~]/3",
})).s("gm_electric_bass_finger").gain(0.37)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A ~ B C ~ D E D F D E D@3 ~ D@3 ~ D@3 G D@3 H D I D J D I D K D@3 L M D M N D@2 M G D M@2 G D I D J D I D J ~@8
  D@3 O D@3 P Q I M R D I D S D I D T D I D U P@2 ~@3
>`.pickRestart({
  A: "~@3 x", B: "~@4 x!2 ~@2", C: "x", D: "~ x ~ x", E: "~@4 x ~@5 x!3 ~ x ~", F: "x!16", G: "~ x ~@2",
  H: "x ~ x!2 ~@4 x!5 ~ x ~", I: "~ x!3", J: "~@4 x ~@3 x!8", K: "~@4 x ~@5 x!6", L: "~@2 x ~@3 x!2",
  M: "~@4 x ~@2 x ~@4 x ~@3", N: "x ~@2 x!2 ~ x ~", O: "x ~ x!2 ~@2 x ~ x!3 ~ x!3 ~", P: "x ~ x!3 ~ x ~ x!8",
  Q: "x!2 ~ x", R: "~@4 x ~@3 x ~ x!6", S: "x ~@5 x ~ x!8", T: "x ~ x!2 ~@2 x ~ x!4 ~@4",
  U: "x ~ x!3 ~ x ~ x!3 ~ x ~ x ~",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@49 A ~@3 A ~@16 B@3 ~ B@3 ~@12 A ~@9>".pickRestart({
  A: "~@14 x!2", B: "~ x ~ x",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A B ~ C ~@9 D ~@3 D ~@3 E ~@3 F ~@15 G ~@3 H ~@3 I ~@31 J ~@3 K ~@9>".pickRestart({
  A: "x", B: "~@13 x ~@2", C: "~ x ~@3 x ~@7 x ~@2", D: "~@8 x!3 ~ x!3 ~", E: "~@6 x!10", F: "~@2 x!2 ~@4",
  G: "~@5 x ~ x", H: "~@6 x!8 ~@2", I: "~@8 x!6 ~@2", J: "~@2 x!3 ~@11", K: "~@4 x ~@7 x!2 ~@2",
})).gain(0.4)

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

// drums · high tom
const high_tom = s("ht").struct("<~@5 A ~ B ~@9 C ~@3 C ~@77>".pickRestart({
  A: "~@12 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2 x ~ x ~ x!2 ~@2", C: "~@2 x!3 ~ x ~@9",
})).gain(0.4)

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

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@46 [~ x!3] [x!4]!2 [x!2 ~@2] ~@49>").gain(0.25)

stack(
  distortion_guitar, electric_guitar_clean, electric_guitar_clean_2, distortion_guitar_2, bass, kick, snare, low_tom,
  hihat, mid_tom, open_hat, high_tom, ride, crash, crash_soft
)

More by Alice Cooper