Strudelify

Love Gun

Kiss

KeyE minorTempo150 bpm
0:00/0:00
// Love Gun — Kiss
// 150 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 2, 4/4 at bar 3) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · overdriven guitar · "Gtr II"
const overdriven_guitar = note(`<
  A B C@2 D@2 C@2 D@2 E@4 ~@4 F@4 G H I@2 J K L@2 J K M N C@2 D@2 C@2 D@2 E@4 ~@4 F@4 G H I@2 J K L@2 J K M N C@2 D@2
  C@2 D@2 C@2 D@2 C@2 D@2 ~@3 O P Q R S T U ~ V W@6 X Y Z@2 ~ AA L@2 ~ AB AC@2 ~ AD Z@2 ~ AB AC@2 ~ AD M AE
>`.pickRestart({
  A: "~@4 e3!2 ~ e3 e3@3 ~ e3!2 ~ e3", B: "e3@3 ~ e3!2 ~ e3!3 ~ e3 e3@3 ~", C: "[e3@6 d3!2]/2", D: "[c3@6 e3 d3]/2",
  E: "e3/4", F: "[d4@6 g4 d4]/2", G: "c4", H: "d4", I: "d4/2", J: "e4", K: "a4", L: "g4/2",
  M: "e3!2 ~ e3 e3@3 ~ e3!2 ~ e3 e3@3 ~", N: "e3!2 ~ e3!3 ~ e3 e3@3 ~@5", O: "~@15 e3",
  P: "g3 e3 ~ g3 a3 g3 ~ a3 b3 a3 ~ b3 d4 b3 ~ d4", Q: "e4 d4 ~ e4 g4 e4 ~ g4 a4 g4 ~ a4 b4 a4 ~ b4",
  R: "d5 b4 ~ d5 e5 d5 ~ e5 g5 e5 ~ g5 a5 g5 ~ a5", S: "b5 a5 ~ g5 b5 a5 ~ g5 d6@3 b5@2 d6@3",
  T: "d6@3 d6@2 d6@3 d6@3 d6@2 d6@3", U: "d6!2 ~@2", V: "e6@3 e6@2 e6@3 a4@3 a4 g4@3 e4",
  W: "a4 b4 ~ e5 a4 b4 ~ e5 g5 e5 ~ f#5 e5 d5 ~ e5", X: "a4 b4 ~ e5 a4 b4 ~ e5 a4 b4 ~ e5 a4@4",
  Y: "e5 d5 ~ b4 d5 b4 ~ a4 b4 a4 ~ g4 a4 g4 ~ f#4", Z: "e4/2", AA: "g5 f#5 ~ d5 f#5 d5 ~ b4 e5 d5 ~ b4 d5 b4 ~ a4",
  AB: "b5 a5 ~ g5 a5 g5 ~ f#5 g5 f#5 ~ e5 f#5 e5 ~ d5", AC: "b4/2", AD: "g5 f#5 ~ e5 f#5 e5 ~ d5 e5 d5 ~ b4 d5 b4 ~ a4",
  AE: "e3!2 ~ e3!3 ~ e3!3 ~ e3 e3@3 ~",
})).s("gm_overdriven_guitar").gain(0.34).pan(0.4)

// other · distortion guitar · "Gtr I"
const distortion_guitar = note(`<
  A B C D E@2 C D E@2 F@4 G H I@2 F@4 G H I@2 J H I@2 J H K L C D E@2 C D E@2 F@4 G H I@2 F@4 G H I@2 J H I@2 J H K L C
  D E@2 C D E@2 C D E@2 C D E@2 K M K M K M K M C D E@2 C D E@2 C D E@2 C D E@2 C D E@2 C D E@2 C D E@2 C D E@2 K M
>`.pickRestart({
  A: "~@4 e2!2 ~ e2 e2@3 ~ e2!2 ~ e2", B: "e2@3 ~ e2!2 ~ e2!3 ~ e2 e2@3 ~", C: "e2", D: "g2 a2 g2 d2",
  E: "[c2@6 e2 d2]/2", F: "[e2@6 g2 d2]/2", G: "c2", H: "d2", I: "e2/2", J: "a1",
  K: "e2!2 ~ e2 e2@3 ~ e2!2 ~ e2 e2@3 ~", L: "e2!2 ~ e2!3 ~ e2 e2@3 ~@5", M: "e2!2 ~ e2!3 ~ e2!3 ~ e2 e2@3 ~",
})).s("gm_distortion_guitar").gain(0.34).pan(0.6)

// other · overdriven guitar · "Gtr Fill I"
const overdriven_guitar_2 = note("<~@109 A B@2 ~ A B@2 ~ A B@2 ~ A ~@2>".pickRestart({
  A: "e6 d6 ~ b5 d6 b5 ~ a5 b5 a5 ~ g5 a5 g5 ~ f#5", B: "e5/2",
})).s("gm_overdriven_guitar").gain(0.25).pan(0.7)

// other · overdriven guitar · "Gtr Fill II"
const overdriven_guitar_3 = note("<~@109 A B@2 ~@5 A B@2 ~@4>".pickRestart({
  A: "g6 f#6 ~ d6 f#6 d6 ~ b5 e6 d6 ~ b5 d6 b5 ~ a5", B: "g5/2",
})).s("gm_overdriven_guitar").gain(0.34).pan(0.3)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@2 A@3 B A@3 C ~ A@4 C A@7 C A C A@6 ~@2 A@7 C ~ A@4 C A@7 C A C A@6 ~@2 A@7 C A@7 B ~@8 A@7 C A@3 C A@3 B A@2 D ~
  A@3 B A@3 C A@2 D ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@2 x ~@8", D: "~@4 x ~@7 x ~@2 x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@7 A ~ B ~@21 A ~@7 A ~ B ~@39 A ~@3 B ~@7 C ~@7 A ~@3 C ~@2>".pickRestart({
  A: "~@12 x!2 ~ x", B: "~@8 x!2 ~ x!3 ~ x", C: "~@4 x!2 ~ x!3 ~ x ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@15 A ~@7 A ~@23 A ~@7 A ~@41 A ~@11 B ~@7 A ~@3 B ~@2>".pickRestart({
  A: "~@8 x!2 ~ x ~@4", B: "x!2 ~ x ~@8 x!2 ~ x",
})).gain(0.64)

// drums · china
const china = s("cr").struct(`<
  ~@2 A ~@2 B A ~@3 A ~@13 A ~@9 A ~@3 A ~@3 A ~@13 A ~@9 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@5
>`.pickRestart({
  A: "x", B: "~@2 x!2",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A B@2 C A B@2 C A B@4 C B@7 C A C B@6 ~@2 A B@3 A B@2 C A B@4 C B@7 C A C B@6 ~@2 A B@3 A B@2 C A B@3 A B@3 ~@8 A
  B@3 A B@2 C A B@2 C A B@3 A B@2 ~ A B@3 A B@2 C A B@2 ~@3
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x",
})).gain(0.64)

stack(
  overdriven_guitar, distortion_guitar, overdriven_guitar_2, overdriven_guitar_3, snare, clap, mid_tom, high_tom, china,
  tambourine
)

More by Kiss