Strudelify

I Want You

Kiss

KeyE minorTempo100 bpm
0:00/0:00
// I Want You — Kiss
// 100 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 83 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): Paul rythm.
setcpm(100/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 · electric guitar clean · "Paul accoustic"
const electric_guitar_clean = note("<A B C D C E F G F G H ~@46 I C G C G J ~@20>".pickRestart({
  A: "~@6 e2 f#2", B: "b3 [d4,g4] [g4,b4] [d4,g4] a3 [a3,d4] [d4,f#4] [b3,d4], g2 d3",
  C: "~ [g3,b3] [b3,e4] [e4,g4] [g3,b3] [d4,f#4] [g3,b3] [b3,e4], e2, e3 ~", // G E5 Em G D G E5
  D: "g3 [g3,c4] [c4,e4] [g3,c4] ~ [a3,d4] [d4,f#4] [b3,d4], c3 d3", // C5 C C5 D5 D Bm
  E: "d3 [d4,g4] [g4,b4] [d4,g4] a3 [a3,d4] [d4,f#4] [b3,d4], g2 d3", // G5 G G5 D5 D Bm
  F: "e3 [g3,b3] [b3,e4] [e4,g4] [g3,b3] [d4,f#4] [g3,b3] [b3,e4], e2", // G E5 Em G D G E5
  G: "g3 [g3,c4] [c4,e4] [g3,c4] a3 [a3,d4] [d4,f#4] [b3,d4], c3 d3", // C5 C C5 D5 D Bm
  H: "~ [b2,g3] ~ [g3,e4] [b3,e4]@8 ~@4, e2, e3 [e3,b3] g4@6", // Em C E5
  I: "g3 [d4,g4] [g4,b4] [d4,g4] a3 [a3,d4] [d4,f#4] [b3,d4], g2 d3", // G5 G G5 D5 D Bm
  J: "b2 [b2,e3] ~ [g3,b3] [b3,e4]@8 ~@4, e2, ~ [e3,g3] g4@6", // E5 G E5 Em
})).s("gm_electric_guitar_clean").gain(0.39)

// chords · distortion guitar · "Ace rythm"
const distortion_guitar = note(`<
  ~@11 A B C D C E F G F G F H I J C D C E F G F G F H I J C D C K L M L N L M L M L M L O F H I P ~@6 A B C D C K C D C
  E L M L M L M L Q R@2
>`.pickRestart({
  A: "[c3,g3]!16", B: "[d3,a3]!8 [d3,a3]@2 ~@6", C: "e2!2 ~ e2 [e3,b3]@4 e2!2 a2 a#2 b2 g3@3",
  D: "e2!2 ~ e2 [e3,b3]@4 g3 a3 g3 a3 g3 a3 g3 a3", E: "e2!2 ~ e2 [e3,b3]@4 e3 d3 b2 a2 g2 f#2@3",
  F: "[g2,d3,g3] [a2,e3,a3]", G: "e2!4 [e3,b3]@4 e2!4 [e3,b3]@4", H: "[c3,g3,c4] [b2,g3,b3]",
  I: "[a2,e3,a3] [g2,d3,g3]", J: "[b2,f#3]!9 ~@7", K: "e2!2 ~ e2 [e3,b3]@4 e2!4 [g3,c4]@2 [a3,d4]@2",
  L: "e2!4 [g3,d4,g4]@4 e2!4 [e3,b3] [d3,a3,d4]@3", M: "e2!4 [g3,d4,g4]@4 [a2,e3,a3]@4 [d3,a3,d4]@4",
  N: "[e2,b2,e3]@8 [a2,e3,a3]@4 [c3,g3,c4] [d3,a3,d4]@3", O: "e2!4 [g3,d4,g4]@4 e3 d3 b2 a2 g2 f#2@3", P: "[b2,f#3,b3]",
  Q: "e2!4 [g3,d4,g4]@4 e3 d3 b2!2 a2 g2@3", R: "[[e2,b2]@3 ~]/2",
})).s("gm_distortion_guitar").gain(0.37).pan(0)

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

// chords · distortion guitar · "Paul rythm"
const distortion_guitar_2 = note("<~@13 A@4 ~ B ~ B ~@4 A@4 ~ B ~ B ~@4 A@4 ~@4 C@8 ~@12 D@8 C@8 ~@2>".pickRestart({
  A: "~ g4 ~@2", B: "~ [g3,d4] ~ [g3,d4]", C: "~ [e3,b3,e4] ~@2", D: "~ [g3,d4] ~@2",
})).s("gm_distortion_guitar").gain(0.39).pan(1)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@12 A B@3 C B@7 D B@3 C B@7 D B@3 E ~@3 F B@7 C B@3 ~@7 G D B@3 E B@3 C B@7 C ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@3 x!2 ~@3 x ~@2", D: "x!10 ~@6", E: "~@2 x ~ x ~ x!2", F: "~@8 x!5 ~@3",
  G: "x!16",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@16 A ~@7 B ~@3 A ~@7 B ~@3 C ~@11 A ~@11 B ~@3 C ~@3 A ~@7 A ~@2>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@12 x!4", C: "~@10 x!2 ~@4",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@16 A ~@7 B ~@3 A ~@7 B ~@3 C ~@11 A ~@11 B ~@3 C ~@3 A ~@7 A ~@2>".pickRestart({
  A: "~@5 x ~@2", B: "~@10 x!2 ~@4", C: "~@9 x ~@6",
})).gain(0.56)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@13 A B A C D A D A D@3 ~ A B A C D A D A D@3 ~ A B A C ~@4 A B A B A B A C D@3 ~@9 A B A C A B A C A B A B A B A C
  ~@2
>`.pickRestart({
  A: "~ x!7", B: "x!4 ~ x ~ x", C: "x!4 ~@4", D: "~ x!3 ~ x!3",
})).gain(0.56)

stack(electric_guitar_clean, distortion_guitar, bass, distortion_guitar_2, kick, snare, low_tom, mid_tom, crash, ride)

More by Kiss