Strudelify

I've Had Enough (Into the Fire)

Kiss

KeyE minorTempo144 bpm
0:00/0:00
// I've Had Enough (Into the Fire) — Kiss
// 144 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "KISS - Animalize 1984" distortion guitar (copy of ch 2 distortion guitar)
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(144/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
const distortion_guitar = note(`<
  A B A C A B A C A B A C A B A D E@2 F G E@2 H@2 E@2 I J K@2 L ~ A B A C A B A D E@2 F G E@2 H@2 E@2 I J K@2 L ~ A B A
  C A B A M A B A C A B A N O@4 P@4 O@2 Q@2 R S T U A B A M A B A V A B A V A B A N W@2 X@4 P@2 W@2 Y@3 S Z AA AB A B A
  M A B A M A B A AC A B AD
>`.pickRestart({
  A: "e2!4 [e3,b3,e4]@2 e2!4 [d3,a3,d4]@2 e2!4", B: "[g3,d4,g4]@2 e2!4 [d3,a3,d4]@6 [e3,b3,e4]@4",
  C: "[g3,d4,g4]@2 e2!4 [d3,a3,d4]@6 [d3,a3,d4]@4", D: "[g3,d4,g4]@2 e2!4 [e3,b3,e4]@6 [g3,d4]@4", E: "[d3,a3,d4]/2",
  F: "e2!4 [e3,b3,e4]@2 e2!4 [e3,b3,e4]@2 e2!4", G: "[d3,a3,d4]@2 e2!4 [e3,b3,e4]@2 e2!4 [c3,g3,c4]@4",
  H: "[~@3 c4@3 ~@22 c4@4, e4@6 e4@6 c4@6 ~ c4@5 f#4@6 ~@2, ~@4 f#4@3 ~ g4@3 g4@3 ~@2]/2", I: "[c3,g3,c4] [b2,g3,b3]",
  J: "[a2,e3,a3]@14 [d3,a3,d4]!2", K: "[[d3,a3,d4]@15 ~]/2", L: "[b2,f#3,b3]",
  M: "[g3,d4,g4]@2 e2!6 [d3,a3,d4] [d3,a3,d4]@3 [d3,a3,d4] [d3,a3,d4]@3", // G5 D5
  N: "[g3,d4,g4]@2 e2!4 [e3,b3,e4]@6 [e3,b3,e4]@4", // G5 E5
  O: "[[c3,g3,c4,f#4]@3 [g3,c4,e4]@9 [g3,c4,f#4]@2 [g3,c4,g4]@2, ~@3 c3@13]/2", // C C5
  P: "[[d3,a3,d4,f#4]@3 [a3,d4,e4,a4]@9 [a3,d4,f#4]@2 [a3,d4,g4]@2, ~@3 d3@13]/2", // D Asus4 D Dsus4
  Q: "[[c3,g3,c4]@3 [g3,c4,e4]@9 [g3,c4,f#4]@2 [g3,c4,e4]@2, f#4@5 ~@11, ~@3 c3@13]/2", R: "[b2,f#3,b3,d#4]",
  S: "[b2,f#3,b3]!8", T: "[c3,g3,c4]@3 [b2,g3]@3 [a2,e3,a3]@2", U: "[d3,a3,d4]@3 [b2,f#3,b3]@3 [d3,a3,d4]@2",
  V: "[g3,d4,g4]@2 e2!6 ~ [d3,a3,d4]@3 ~ [d3,a3,d4]@3", // G5 D5
  W: "[c3@2 c3 c3@2 ~@7 [g3,c4,f#4]@2 [g3,c4,g4]@2, [g3,c4,f#4]@3 [g3,c4,e4]@9 ~@4, ~@5 c3@11]/2", // C C5 C
  X: "[c3@2 c3 c3@2 ~@7 [g3,c4,f#4]@2 [g3,c4,g4]@2 [d3,a3,d4,f#4]@3 [a3,d4,e4,a4]@9 [a3,d4,f#4]@2 [a3,d4,g4]@2, [g3,c4,f#4]@3 [g3,c4,e4]@9 ~@20, ~@5 c3@13 ~ d3@13]/4", // C C5 D Asus4 D Dsus4 C
  Y: "[c3@2 c3 c3@2 ~@7 [g3,c4,f#4]@2 [g3,c4,e4]@2 b2@2 b2@6, f#4@5 c3@13 ~@6, [g3,c4]@3 [g3,c4,e4]@9 ~@4 [f#3,b3,d#4]@8]/3", // C C5 C B
  Z: "[c3,g3,c4]@3 [b2,g3]@3 [e3,a3]@2", AA: "[d3,a3,d4]@3 [c3,g3,c4]@3 [b2,g3,b3]@2",
  AB: "[g3,d4,g4]@3 [f#3,d4,f#4]@3 [d3,a3,d4]@2", // G5 D D5
  AC: "[g3,d4,g4]@2 ~@6 [d3,a3,d4] [d3,a3,d4]@3 [d3,a3,d4] [d3,a3,d4]@3", AD: "[e2,e3,b3,e4]!4 [e2,e3,b3,e4]@4 ~@8",
})).s("gm_distortion_guitar").gain(0.4).pan(1)

// bass · electric bass pick
const bass = note(`<
  A ~ A ~ B ~ B ~ C D E F C G C D H@2 C I J H K@2 H@2 L M N@2 O ~ C D E F C G C D H@2 C I P Q K@2 J H L M N@2 O ~ C D E
  F C G C R C D E F C G C S T@4 U@4 T@4 O V W X Y@3 Z Y AA Y Z Y@3 Z Y AA Y AB T@4 U@4 T@4 O V W AC AD C D E Z C G C R C
  D E AE C G A
>`.pickRestart({
  A: "e1!4 e1@2 ~@10", B: "e1 e1@2 ~@5", C: "e1!4 e1@2 e1!4 e1@2 e1!4", D: "e1@2 e1!4 e1@2 e1!4 e1@2 e1!2",
  E: "e1!2 e1@2 e1!4 e1@2 e1!4 e1@2", F: "e1!6 d2@6 d2@4", G: "e1@2 e1!4 e1@2 e1!4 e1@4", H: "d2",
  I: "d2@2 e1!4 e1@2 e1!4 c2@4", J: "d2@14 a1 c2", K: "c2 ~@2 c2 ~@2 c2 ~ c2@8", L: "c2 b1", M: "a1@14 d2!2",
  N: "[d2@15 ~]/2", O: "b1", P: "d2@14 a2 c3", Q: "d3", R: "e1@2 e1!6 d2 d2@3 d2 d2@3", S: "e1@2 e1!4 e2@6 e2@4",
  T: "c2!8", U: "d2!8", V: "b1!8", W: "c2@3 b1@3 a1@2", X: "d2@3 b1@3 d2@2", Y: "e1!16", Z: "e1!8 d2 d2@3 d2 d2@3",
  AA: "e1!13 e1@3", AB: "e1!6 [e1,e2] e2@5 e2 e2@3", AC: "d2@3 c2@3 b1@2", AD: "g1@3 f#1@3 d2@2",
  AE: "e1 ~@7 d2 d2@3 d2 d2@3",
})).s("gm_electric_bass_pick").gain(0.59)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@8 A B C@2 D E F G H ~@14 I ~@23 I ~@32 J K J L M N O@2 P Q R S T U V W X ~@30 Y
>`.pickRestart({
  A: "e4 e4@3", B: "g4 f#4 e4 d4 f#4 e4 d4 c4 e4 d4 c4 b3 d4 c4 b3 a3", C: "[a3@2 ~ a3@2 g3@2 b3@4 g3@5, ~ d4 ~@6]/2",
  D: "d4 c4 b3 a3 c4 b3 a3 g3 b3 a3 g3 f#3 a3 g3 f#3 e3", E: "g3 f#3 e3 d3 f#3 e3 d3 c3 e3 d3 c3 b2 g2@2 ~@2",
  F: "e2 f#2 g2 a2 b2 c3 d3 g2 a2 b2 c3 d3 e3 f#3 g3 a2", G: "b2 c3 d3 e3 f#3 g3 a3 b3 c4 d4 c4 d4 e4@4", H: "d4",
  I: "[d4,g4]", J: "g4 f#4 e4 d4 e4 d4 c4 b3 c4 b3 a3 b3 a3 g3 e3@2",
  K: "g4 f#4 e4 d4 e4 d4 c4 b3 c4 b3 a3 g3 e3@2 ~@2", L: "e3 f#3 g3 a3 b3 f#3 g3 a3 b3 c4 b3 c4 d4 c4 d4 e4",
  M: "e4@4 e4@6 e4 f#4 g4 f#4 e4 f#4", N: "e4 d4 c4 b3 a3 b3@11",
  O: "[d3@4 g2@2 d3@6 g2@2 b2@8 a2 g2 e2@4 ~@2 e4 g4]/2", P: "b4@6 d4 b4 a4@6 c4 a4", Q: "g4@6 b3 g4 f#4@4 e4@4",
  R: "f#4 g4 f#4 e4 d4 c4 b3 a3 b3 a3 g3 f#3 g3 f#3 e3 f#3", S: "g3 a3 g3 f#3 a3 g3 f#3 g3 f#3 e3 e3@6",
  T: "e3 a3 b3 c4 e3 a3 b3 c4 e3 b3 c4 d4 e3 b3 c4 d4", U: "e3 c4 d4 e4 e3 c4 d4 e4 e3 d4 e4 f#4 e3 d4 e4 f#4",
  V: "e3 e4 f#4 g4 e3 e4 f#4 g4 e3 f#4 g4 a4 e3 g4 a4 b4", W: "e3 a4 b4 c5 e3 b4 c5 d5 e5@4 e5@4", X: "d5@3 c5@5",
  Y: "[e3,e4]!4 [e3,e4]@4 ~@8", // E
})).s("gm_overdriven_guitar").gain(0.47)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@3 C B@3 D B@7 C B@3 C B@2 E F B@3 G B@3 C B@3 D B@3 C B@3 C B@2 E F B@7 H B@3 D B@4 I J K ~ K ~ K ~ K ~ K ~ I
  L M@2 B@3 H B@3 H B@3 H B@4 I N K ~ K ~ K ~ K ~ K ~ I L M@3 B@3 H B@3 H B@3 O B@2 E
>`.pickRestart({
  A: "~@12 x ~ x!2", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@7 x!4", E: "~ x ~@2", F: "x ~@2 x",
  G: "~@4 x ~@3 x ~@3 x!4", H: "~ x!3", I: "x", J: "~ x", K: "x ~@2 x ~@4", L: "x!8", M: "x ~@2 x ~@2 x ~",
  N: "~@2 x!2", O: "x ~ x!2",
})).gain(0.65)

// drums · low tom
const low_tom = s("lt").struct("<~@7 [~ x] ~@47 x ~@80>").gain(0.65)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~ B C D ~@22 E F ~@22 E F ~@19 G ~ H ~ G B I ~ J ~@23 G ~ H ~ G B I ~ J ~@20
>`.pickRestart({
  A: "~@6 x!2", B: "~@14 x!2", C: "x ~@6 x", D: "~ x!2 ~", E: "~@13 x!3", F: "x", G: "~@10 x!6", H: "~@7 x",
  I: "~@2 x!2 ~@2 x!2 ~@4 x!4", J: "~@8 x!8",
})).gain(0.65)

// drums · open hat
const open_hat = s("oh").struct("<~@11 [~@3 x ~@2 x ~] ~@3 [~@3 x] ~@35 [~@3 x] ~@84>").gain(0.65)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~ B C ~@23 D ~@23 D ~@20 E ~ F ~ G ~ H ~ I ~@23 E ~ F ~ G ~ H ~ I ~@20
>`.pickRestart({
  A: "~@6 x!3 ~ x ~@5", B: "~@3 x!4 ~", C: "~@4 x ~@2 x", D: "~@6 x!7 ~@3", E: "~@2 x!8 ~@6",
  F: "~@7 x!2 ~ x!2 ~@2 x ~", G: "~@2 x ~ x ~ x!4 ~@6", H: "x ~@3 x ~@3 x!4 ~@4", I: "x!8 ~@8",
})).gain(0.65)

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

stack(distortion_guitar, bass, overdriven_guitar, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash)

More by Kiss