Strudelify

I Was Made for Loving You Baby

Kiss

KeyE minorTempo130 bpm
0:00/0:00
// I Was Made for Loving You Baby — Kiss
// 130 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "Clean Guit" electric guitar clean (copy of ch 2 "OverdrGuit" overdriven guitar)
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · overdriven guitar · "OverdrGuit"
const overdriven_guitar = note(`<
  ~@3 A B C D A B C D A B E F A B C D G@2 H@2 I@2 J@2 G@2 H@2 K@2 L@2 A B E F A B C D G@2 H@2 I@2 J@2 G@2 H@2 K@2 L@2 A
  B E F A B C D A B E F A B C D M@2 N O P@2 N Q R@2 S@2 T@2 U@2 V ~@12 A B C D A B E F A B C D A B E F A B C D A B E F A
  B C D W@2 ~
>`.pickRestart({
  A: "~@4 [e2,e4,a4] ~@3 [e2,e4]@5 ~ [e2,e4,a4] ~, ~@8 g4@3 ~@5", B: "~@2 [e2,e4,a4] ~ [e2,e4,g4]@5 ~@7",
  C: "~@4 [a2,a3,d4] ~@3 [a2,a3,c4]@4 ~@2 [e2,b3,e4,g4] ~", D: "~@2 [e2,b3,e4,g4] ~ [a3,d4]@10 ~@2, ~ [d2,f#4]@2 ~",
  E: "~@4 [a2,a3,d4] ~@3 [a2,a3,c4]@4 ~@2 [a2,a3,d4] ~", F: "~@2 [a2,a3,d4] ~ [a3,c4]@10 ~@2, ~ a2@2 ~",
  G: "[[e2,b2,e3,e4,g4]@31 ~]/2", H: "[[g2,d3,g3,g4,b4]@31 ~]/2", I: "[[b2,d#4], [f#3,b3]@15 ~]/2",
  J: "[[e2,b2,e3,b3,e4]@31 ~]/2", K: "[[b2,f#3,d#4,f#4], b3@15 ~]/2",
  L: "[~@11 a3 [a2,e3,a3,c#4] ~@3, [a2,e3]@3 ~, a3@5 a3@6 ~@5, ~ c#4@3 c#4@2 ~@2]/2", // A A5
  M: "[[c3,g3,c4]@7 [c4,g4,b4]@9, c2@31 ~, a4@6 ~ [c3,g3]@8 ~]/2", N: "[d2,d3,a3,d4,a4]@13 ~ [d2,d3,a3,d4,a4]@2",
  O: "~@2 [d2,a3,d4,a4] ~ [e2,e3,b3,e4,b4]@7 ~ [d2,d3,a3,d4]@3 ~, ~@12 a4 ~@3", // D5 E5 D5
  P: "[[c3,g3,c4,a4]@13 ~ [c3,g3,c4,g4,b4]@17 ~, c2@15 ~]/2", // Am7 Cmaj7
  Q: "~@2 [d2,a3,d4,a4] ~ [e2,e3,b3,e4,b4]@7 ~ [d2,d3,a3,d4,a4]@2 ~@2", // D5 E5 D5
  R: "[[c2,c3,g3,c4,a4]@13 ~ [c2,c3,g3,c4,g4,b4]@17 ~]/2", // Am7 Cmaj7
  S: "[[d2,d3,a3,d4,a4]@13 ~ [d2,d4]@4 [d3,a3,a4]@2 [e2,e3,b3]@7 ~ [d2,d3,a3,d4,a4] ~@3, ~@7 [d3,a3] ~@8, ~@14 a4 ~@5 [e4,b4]@8 ~@4]/2", // D5 D D5 E5 D5 E5
  T: "[[c2,c3,g3,c4]@14 [c2,c3,g3,c4,g4,b4]@17 ~, a4@3 ~@5]/2", // C5 Cmaj7
  U: "[[d3,a3,d4] [d3,a3,d4,a4]!3 [d2,d3,a3,d4,a4] ~ [a1,a2,e3,a3] [b2,f#3]@3 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2, d2@4 ~@3 [b1,b3]@9, a4 ~@31]/2", // D5 A5 B5 B
  V: "[b1,b2,f#3,b3] ~@7", W: "[[e2,e3,e4]@29 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.21)

// other · electric guitar muted · "Muted Guit"
const electric_guitar_muted = note(`<
  ~ A@4 B C A@2 B C A@2 B@2 A@2 B C A@2 D@2 E@2 A@4 D@2 E@2 B F A@2 B@2 A@2 B C A@2 D@2 E@2 A@4 D@2 E@2 B F A@2 B@2 A@2
  B C A@2 B@2 A@2 B C G@2 H I G@2 H I G@2 H I G@2 J E ~ A@2 B K L M N O A@2 B C A@2 B C A@2 B@2 A@2 B C A@2 B@2 A@2 B C
  A@2 B@2 A@2 B C P@2 ~
>`.pickRestart({
  A: "e2!16", B: "a2!16", C: "e2!4 d2!12", D: "g2!16", E: "b2!16", F: "a2!9 ~@3 a2@2 ~@2", G: "c3!16", H: "d3!16",
  I: "d3!4 e3!8 d3!4", J: "d3!12 a2!2 b2!2", K: "e2!4 [d2,f#3,a3]!4 [d2,g3,a3]!4 [d2,f#3,a3]!4",
  L: "[e2,b3]!2 e2!2 [e2,b3]!12", M: "[e2,b3]!4 e2 [e2,b3]!11", N: "[a2,b3]!7 a2 [a2,b3]!8",
  O: "[e2,b3]!3 e2 [d2,f#3,a3]!4 [d2,g3,a3]!4 [d2,f#3,a3]!4", P: "[e2@29 ~@3]/2",
})).s("gm_electric_guitar_muted").gain(0.27)

// other · overdriven guitar · "OverdrGuit"
const overdriven_guitar_2 = note("<~@8 A B C D ~@22 E ~@23 E ~@41 F G H I D ~@30>".pickRestart({
  A: "~@8 e4 d4 b3@2 a3 g3 e3 ~", B: "g3@9 ~@7", C: "d5@2 b4 a4 a4@2 g4@2 e4 ~ [f4,g4] ~ a4 ~ d4 ~", D: "e4",
  E: "~@12 a2@3 ~", F: "[a#3,b3] ~ d4 ~@2 e4 ~ g4 g4@2 ~@4 g4 ~", G: "a4 ~ a4@3 ~ g4 [e4,f4] ~@2 g4 ~ a4@2 g4 ~",
  H: "~@2 [c5,d5] ~ d5@3 ~ d5@3 b4 a4 ~ g4 ~", I: "a4@4 e4 ~ g4 ~ a4@8",
})).s("gm_overdriven_guitar").gain(0.28).pan(0.6)

// other · synth strings 1 · "SynString1"
const synth_strings_1 = note(`<
  ~@34 A B@4 C@2 D@2 ~@15 E B@4 C@2 D@2 B@4 C@2 F@2 G@2 H I G@2 H I G@2 H I G@2 J@2 ~@13 K@2 L@2 B@4 C@2 F@2 B@4 C@2 D@2
  B@4 C@2 D@2 M@2 ~
>`.pickRestart({
  A: "~ e5", B: "[e4@6 g4 f#4]/2", C: "[e5@24 g5@4 f#5@2 g5 f#5]/2", D: "[e5@2 f#5@2 g5@2 a5 b5@2 b5 a5@6]/2",
  E: "~ e4", F: "[e5@2 f#5@2 g5@2 a5 b5@2 b5 b6@6]/2", G: "[a6@5 ~@2 b6@5 ~@4]/2", H: "d6@5 ~@2 d6",
  I: "~@2 d6 ~ e6@10 ~@2", J: "[d6@8 ~@4 a5@2 b5@17 ~]/2", K: "[e4@2 f#4@2 g4@2 a4 b4@2 b4 a4@2 g4@2 f#4@2]/2",
  L: "[e4@2 f#4@2 g4@2 a4 b4@2 b4 a4@6]/2", M: "[e4@15 ~]/2",
})).s("gm_synth_strings_1").gain(0.12)

// bass · electric bass finger · "FingrdBass"
const bass = note(`<
  ~ A@4 B C A@2 B C A@2 B D A@2 B E A@2 F@2 G@2 A@4 F@2 G@2 B H A@2 B D A@2 B E A@2 F@2 G@2 A@4 F@2 G@2 B H A@2 B D A@2
  B E A@2 B D A@2 B E I@2 J K I@2 J K I@2 J K I@2 L@2 M ~@4 A@2 B C A@2 B C A@2 B C A@2 B D A@2 B E A@2 B D A@2 B E A@2
  B D A@2 B E N@2 ~
>`.pickRestart({
  A: "e1@2 e2@2 e1@2 ~@2 e1 ~ e1@2 e2@2 e1@2, ~@6 e2@5 ~@5", B: "a1@2 a2@2 a1@2 ~@2 a1 ~ a1@2 a2@2 a1@2, ~@6 a2@5 ~@5",
  C: "e1@2 e2@2 d1@2 ~@2 d1 ~ d1@2 d2@2 d1@2, ~@6 d2@5 ~@5", D: "a1@2 a2@2 a1@2 ~@2 a1 ~ a1@2 d2@4, ~@6 a2@5 ~@5",
  E: "e1@2 e2@2 d2@2 ~@2 d2 ~ d2@2 d3@2 d2@2, ~@6 d3@5 ~@5", F: "g1@2 g2@2 g1@2 ~@2 g1 ~ g1@2 g2@2 g1@2, ~@6 g2@5 ~@5",
  G: "b1@2 b2@2 b1@2 ~@2 b1 ~ b1@2 b2@2 b1@2, ~@6 b2@5 ~@5", H: "a1@2 a2@2 a1@2 a2@2 a1 ~@3 e2@2 ~@2",
  I: "c1@2 c2@2 c1@2 ~@2 c1 ~ c1@2 c2@2 c1@2, ~@6 c2@5 ~@5", J: "d1@2 d2@2 d1@2 ~@2 d1 ~ d1@2 d2@2 d1@2, ~@6 d2@5 ~@5",
  K: "d1@2 d2@2 e1@2 ~@2 e1 ~@3 e2@2 d2@2, ~@3 e2@2 e1@2 ~",
  L: "[d1@2 d2@2 d1@2 d2@2 d1@2 ~@2 a1@2 b1@4 b2@2 b1@2 ~@2 b1 ~ b1@2 b2@2 b1@2, ~@22 b2@5 ~@5]/2", M: "~@6 e2 ~",
  N: "[e1@15 ~]/2",
})).s("gm_electric_bass_finger").gain(0.39).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!88 [x ~ x ~ x ~ x!2] [~ x!3] [x!4]!41 x [~@3 x] ~>").gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@92 [x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2]!4 ~@39>").gain(0.22)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@92 [~@3 x ~@7 x ~@4]!4 ~@39>").gain(0.09)

// drums · clap
const clap = s("cp").struct("<~@10 [~@3 x] ~@124>").gain(0.39)

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

// drums · low tom
const low_tom = s("lt").struct("<~@18 A ~@23 A ~@31 B C@14 ~@14 D ~@19 B ~@7 B ~ E ~>".pickRestart({
  A: "~@7 x", B: "~@13 x ~@2", C: "~@3 x", D: "~@13 x!3", E: "~@11 x!2 ~@3",
})).gain(0.35)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@2 B A@6 C B A@6 C B A@14 D B A@6 C B A@14 D B A@7 B A@6 E B A@13 E A ~@5 B A@3 B A@3 B A@3 B A@6 E B A@6 E B A@6 E
  ~@3
>`.pickRestart({
  A: "x!4", B: "~ x!3", C: "x!3 ~", D: "x!2", E: "x!2 ~@2",
})).gain(0.35)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@3 A@7 B A@3 B A@3 B A@7 B A@7 C A@3 B A@3 B A@7 B A@7 C A@3 B A@3 D A B A E A B A C A D A D A D A D A D A D A D ~ A
  ~@5 A@3 B A@3 B A B A E A B A E A B A C A B A E A B A C A B A E A B A C ~@3
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~ x ~@6", D: "~ x ~ x ~@4", E: "~@3 x ~@4",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A ~@23 A ~@31 B ~@16 C ~@11 A ~@19 B ~@7 B ~ D ~>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@8 x ~ x ~ x!3 ~", C: "~@9 x!7", D: "~@11 x ~@4",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~@7 B ~@3 A ~@11 A ~@7 C ~@3 A ~@11 A ~@7 C ~@3 A ~@3 D ~ A ~ E ~ A ~ F ~ D ~ D ~ D ~ D ~ D ~ D ~ D G ~ A ~@3 A
  ~@3 A ~@3 A ~ A ~ E ~ A ~ E ~ A ~ F ~ A ~ E ~ A ~ F ~ A ~ E ~ A ~ F ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~ x ~@2", D: "~@5 x ~ x", E: "~ x ~@3 x ~ x", F: "~@3 x ~@4", G: "~ x ~ x ~@4",
})).gain(0.22)

// drums · high tom
const high_tom = s("ht").struct("<~@74 A ~@16 B ~@11 C ~@19 A ~@7 A ~@3>".pickRestart({
  A: "~@3 x ~@4", B: "x!9 ~@7", C: "~@5 x ~@2",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@7 A ~@7 A ~@14 B A ~@7 A ~@14 B A ~@7 A ~@7 A ~@13 C ~@2 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
  A ~@2
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@6 x!2",
})).gain(0.26)

// drums · congas
const congas = s("conga:13").struct("<~ A@33 B A@23 B A@33 ~@4 A@36 C ~@2>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~@7", C: "x",
})).gain(0.7)

// drums · shaker
const shaker = s("sh").struct(`<
  ~
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!33
  [x ~ x!3 ~ x!3 ~@7]
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!23
  [x ~ x!3 ~ x!3 ~@7]
  [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!73
  x
  ~@2
>`).gain(0.13)

stack(
  overdriven_guitar, electric_guitar_muted, overdriven_guitar_2, synth_strings_1, bass, kick, rim, rim_soft, clap,
  snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash, congas, shaker
)

More by Kiss