Strudelify

Mr. Speed

Kiss

KeyE majorTempo135 bpm
0:00/0:00
// Mr. Speed — Kiss
// 135 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 distortion guitar (copy of ch 1 distortion guitar)
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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 C D A B C D E F G F G H G F G H I J A H K I A H L M A B C D A B C D E F G F G H G F G H I J A H K I A H L M A B C
  D A B C D N O P Q R O S T@2 A B C D A B C D U V W X U V W X A B C D A B C D A B C D A B C D G Y
>`.pickRestart({
  A: "[b3,e4]@4 [b3,e4]@2 f#4 g#4 b4@2 [f#4,a4]@2 [e4,g#4]@2 ~@2", // E5 F#m E
  B: "[a3,d4]@4 [a3,d4]@2 e4 f#4 a4@2 [e4,g4]@2 [d4,f#4]@2 ~@2", // D5 Em D
  C: "[e3,a3]@2 [e3,a3] [f#3,b3] [e3,a3] [g3,c4] [f#3,b3] [e3,a3]", // A5 B5 A5 C5 B5 A5
  D: "[f#3,b3]@2 [f#3,b3] [g#3,c#4] [f#3,b3] [a3,d4] [g#3,c#4] [f#3,b3]", // B5 C#5 B5 D5 C#5 B5
  E: "e2@2 [e3,b3,e4] [e3,c#4] ~ [e3,b3,e4]@2 [e3,c#4]", F: "~ [e3,b3,e4]!2 [e3,c#4] [e3,b3,e4] ~ [d4,g4] [c#4,f#4]",
  G: "[b3,e4]@2 [e3,b3,e4] [e3,c#4] ~ [e3,b3,e4]@2 [e3,c#4]", // E5 C#m E5 C#m
  H: "[f#3,b3]@4 [f#3,b3]@2 c#4 d#4 f#4@2 [c#4,e4]@2 [b3,d#4]@2 ~@2", // B5 C#m B
  I: "[a2,e3,a3]@2 [e3,a3] [f#3,a3] [e3,a3]!3 [f#3,a3], ~ a2!3", J: "[e3,a3]!3 [f#3,a3] [e3,a3]!3 [f#3,a3], a2!4",
  K: "[f#3,b3,d#4] [c#3,g#3,c#4,e4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4,e4] [f#3,b3,d#4] ~", // B C#m C#5 C#m B
  L: "[e3,a3]@2 [e3,a3] [f#3,a3] [e3,a3]!3 [f#3,a3]", M: "[e3,a3]!3 [f#3,a3] [e3,a3]!3 [f#3,a3]",
  N: "[c#3,g#3,c#4,e4]@6 [c#3,g#3,c#4]@2 ~@2 [c#3,f#3] [d#3,g#3] [f#3,b3]@2 [d#3,g#3]@2", // C#m C#5 F#5 G#5 B5 G#5
  O: "[a2,e3,a3]@6 [a2,e3,a3]@2 ~@2 [b2,e3] [c#3,f#3] [e3,a3]@2 [c#3,f#3]@2", // A5 E5 F#5 A5 F#5
  P: "[e3,a3] [c#3,g#3,c#4,e4]@2 [c#3,g#3,c#4] ~@2 [b2,f#3,b3]!2", Q: "[c#3,g#3,c#4]@3 ~",
  R: "[b2,f#3,b3]@2 [c#3,g#3,c#4,e4]@4 [c#3,g#3,c#4]@2 ~@2 [c#3,f#3] [d#3,g#3] [f#3,b3]@2 [d#3,g#3]@2", // B5 C#m C#5 F#5 G#5 B5 G#5
  S: "[e3,a3] [c#3,g#3,c#4,e4]@2 [c#3,g#3,c#4] ~@2 [a2,e3,a3]!2", T: "[b2,f#3,b3]/2",
  U: "[b3,e4]@2 [b3,e4] [c#4,e4] ~ [b3,e4]@2 ~", V: "[a3,d4]@2 [a3,d4] [b3,d4] ~ [a3,d4]@2 ~",
  W: "[e3,a3]@2 [e3,a3] [f#3,a3] ~ [e3,a3]@2 ~", X: "[f#3,b3]@2 [f#3,b3] [g#3,b3] ~ [f#3,b3]@2 ~",
  Y: "~ [e3,b3,e4]!2 [e3,c#4] [e3,b3,e4] ~@3", // E5 C#m E5
})).s("gm_distortion_guitar").gain(0.41).pan(1)

// bass · electric bass pick
const bass = note(`<
  ~@3 A B C D E F@5 G F@3 G H I F G J K F G H I F L H E F L H E F@5 G F@3 G H I F G J K F G H I F L H E F L H E M N O P
  Q N R S@2 ~@3 A B C D E F T U E F T U E F L H E F L H E F L H E F L H E F V
>`.pickRestart({
  A: "~@6 e3 b2", B: "[e1,e2]", C: "d2", D: "a1", E: "b1@2 b1!6", F: "e2 ~ e2 c#2 ~ b1 c#2 e2",
  G: "b1@3 b2@2 b2 a2 f#2, ~@6 a2 ~@3 a2 ~@5", H: "a1@2 a1 a2 ~ a2 g2 e2", I: "a1@2 a1@2 a1@2 a2 ~ a2@4 b1@2 d2@2",
  J: "b1 c#2@2 e2 ~ c#3 b2 g#2, ~@10 b2 ~@5", K: "a1@2 a1 a2 a1@2 a1 a2", L: "d2@2 d2!2 d2@2 d2!2", M: "c#2@3 c#2 ~@4",
  N: "a1@3 a1 ~@4", O: "~ c#2@2 c#2 ~@2 b1!2", P: "c#2", Q: "b1 c#2@2 c#2 ~@4", R: "~ c#2@2 c#2 ~@2 a1!2", S: "b1/2",
  T: "d2 ~ d2 b1 a1 d2@2 a1", U: "a1@4 a1@2 a1@2 a2 ~ a2@4 a1@2", V: "c#2 e2!2 c#2 e2 ~@3",
})).s("gm_electric_bass_pick").gain(0.46)

// other · distortion guitar
const distortion_guitar_2 = note("<~@64 A@2 B C D E F G@2 ~@34>".pickRestart({
  A: "[~ g#4@3 g#4@3 g#4@3 g#4@3 g#4 f#4 e4]/2", B: "c#4 b3 c#4@4 e4@2 ~@2 c#5@2 b4@2 g#4@2", C: "c#5",
  D: "~ g#4!2 [g#4,c#5] g#4 ~ [g#4,c#5] g#4", E: "g#4 [g#4,c#5] g#4 ~ [g#4,c#5] g#4!2 [g#4,c#5]",
  F: "f#4 [g4,a#4] f#4 [e4,g#4] c#4 b3 c#4 g#4", G: "[f#4 e4 f#4@30]/2",
})).s("gm_distortion_guitar").gain(0.51)

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

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@68 [~@6 x!2] ~@2 [~@3 x ~@3 x]!9 [~@3 x ~@4] ~@26>").gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 [~@3 x ~@3 x]!3 [~@3 x ~ x!3] ~@99>").gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@22 A ~@27 A ~@37 B ~@3 B ~@3 B ~@3 B ~@3 B ~@2>".pickRestart({
  A: "~@3 x ~@4", B: "~ x ~ x ~ x ~ x",
})).gain(0.46)

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

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

More by Kiss