Strudelify

I'm Kissing You

Des'ree

KeyC majorTempo60 bpm
0:00/0:00
// I'm Kissing You — Des'ree
// 60 bpm, 12/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 9/8 at bar 12, 6/8 at bar 13, 12/8 at bar 14, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: Full arrangement: all 41 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/6)

// 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 · piano · "Right Hand"
const piano = note("<A@2 B@2 C D E F G@2 H@2 I J K L M N O P Q R K S M T U T V W X@3 Y@2 Z@2 AA@4>".pickRestart({
  A: "[~@19 d4@2 e4@3 [a3,c4,f4]@12 ~ g4@3 [g3,c4,e4]@12 ~ [g3,d4]@3 [g3,c4,e4]@7 ~]/2", // F C G5 C
  B: "[[g3,d4]@7 ~ [e3,g3,c4]@11 d4@2 e4@3 [a3,c4,f4]@12 ~ g4@3 [g3,c4,e4]@12 ~ [g3,d4]@3 [g3,c4,e4]@7 ~]/2", // G5 C F C G5 C
  C: "[g3,d4]@7 ~ [e3,g3,c4]@7 ~ [e4,c5]@3 [d4,b4]@2 [b3,g4]@3 [a3,c4,f4]@7 f4", // G5 C G Em F
  D: "f4@7 ~ d4@3 e4 e4@3 f4 f4@3 e4@4 e4 [c4,e4,a4]@7 ~, ~@8 [g3,c4]@9 ~@15", // Am C5
  E: "[g3,b3,d4]@3 c4 c4@3 e4 [g3,c4,e4]@7 ~ [g3,c4]@3 d4@2 e4 ~ c4 [a3,c4,f4]@7 f4", // G C C5 F
  F: "g4@7 e4 [g3,c4,f4] e4 ~ e4@8 [g3,d4]@2 c4@3 [e3,g3,c4]@3 c4 e3 g3 c4 e4", // Csus4 G5 C
  G: "[[g3,d4]@4 ~ g3@3 [e3,g3,c4]@7 ~ [e3,g3,c4]@3 d4@2 e4@3 [a3,c4]@9 ~@6 d4 [g3,d4,e4]@9 e4 ~ a4@4 g4 [c4,e4,a4]@7 ~, ~@24 f4@15 ~@25]/2", // G5 C Am Em7 Am
  H: "[[g3,b3,d4]@7 ~ [e3,g3,c4]@7 ~ [e4,c5]@3 [d4,b4]@2 [b3,g4]@3 [a3,c4,f4]@11 a3@2 c4@3 [g3,c4,e4]@4 d4 e4@5 ~ [g3,d4]@4 b3 [e3,g3,b3] c4 ~ c4 e3 g3 c4 e4]/2", // G C G Em F C G5 Em
  I: "[g3,d4]@7 ~ [f3,g#3,b3,d4]@3 [f3,g#3,c4]@2 [f3,g#3,b3]@3 [e3,g3,c4]@12 ~@3 a3", // G5 Fdim Fm Fdim C
  J: "[a3,c4,f4]@7 ~ c4@4 ~ g4@3 [g3,c4,e4] d4 ~ e4@4 ~@4 [g3,d4,f4]@4 e4", // F C G7
  K: "[g3,c4,e4]@4 e3 g3 c4 e4 [g3,d4]@3 f4@2 e4@3 [e3,g3,c4]@7 ~ [e3,g3,c4]@3 d4@2 e4@3", // C G5 C
  L: "[a3,c4,f4]@7 ~ [a3,c4]@3 g4@4 ~ [c4,e4] g4 a4 c4@4 ~@4 [g3,b3]@2 b3@3", // F Am C G
  M: "[e3,g3,d4]@3 c4 e3 g3 c4 e4 [g3,d4]@7 ~ [e3,g3,c4]@7 ~ [e4,c5]@3 [d4,b4]@2 [b3,g4]@3", // Em7 G5 C G Em
  N: "[a3,c4,f4]@7 ~ [a3,c4]@4 ~ g4@3 [d4,e4,g4]@11 a4@2 b4@3", // F Am Em7
  O: "[c4,e4,g4]@7 ~ [g3,b3,d4]@4 ~ g3@3 [e3,g3,c4]@4 d5 b4 g4 e4 c4 g4@2 ~ [c4,d4] b3 c4 d4", // C G C Csus2
  P: "[a3,c4,f4]@7 ~ [a3,c4]@3 g4@4 ~ [e3,g3,c4]@7 g3 c4 d4 e4 [g3,d4]@4 b3", // F Am C G5
  Q: "[e3,g3,b3] c4 ~ c4 e3 g3 c4 e4 [g3,d4]@4 ~ g3@3 [e3,g3,c4]@7 ~ [e4,c5]@3 [d4,b4]@2 [b3,g4] ~ c4", // Em G5 C G Em
  R: "[a3,c4,f4]@12 ~ g4@3 [g3,c4,e4] d4 ~ e4@4 ~@4 [g3,b3,f4]@4 e4", // F C G7
  S: "[a3,c4,f4]@7 ~ [a3,c4]@3 g4@4 ~ [c4,e4] g4 a4 c4@4 ~@4 [g3,b3]@4 b3", // F Am C G
  T: "~ e5 g5 a5 [e5,g5] a5 e5 g5 c6 e5 a5 e5 [g5,a5] a5 g5 a5 ~ e5 g5 a5 [e5,g5] a5 e5 g5 c6 e5 a5 e5 [g5,a5] a5 g5 a5", // Em Gsus2 Em Gsus2
  U: "~ e5 g5 a5 [e5,g5] a5 e5 g5 c6 e5 a5 e5 [g5,a5] a5 g5 a5 ~ e5 g5 a5 [e5,g5] a5 e5 g5 c6 e5 d6 e5 [g5,a5] a5 g5 a5", // Em Gsus2 Em Gsus2
  V: "~ e5 g5 a5 [e5,g5] a5 e5 g5 c6 e5 a5 e5 [g5,a5] a5 g5 a5 ~ e5 g5 a5 [e5,g5] a5 e5 g5 c6 e5 d6 e5 [e5,a5] d5 c5 e5", // Em Gsus2 Em A5
  W: "[e5,a5,c6]@7 ~ [d5,b5]@3 [c5,a5]@2 [b4,g5]@3 [c5,a5]@3 [d5,b5]@2 [e5,c6]@3 [d5,b5]@3 [c5,a5]@2 [b4,g5]@3", // Am G F Em F G C G …
  X: "[[f4,a4,c5,e5]@7 ~ [e4,f4,a4,c5]@7 ~ [g3,c4,e4]@3 [g3,c4,e4]@2 [g3,d4]@3 [g3,c4,e4]@31 ~ [c5,f5,a5]@11 g5@2 a5@3 [g4,c5,e5]@12 ~ [g4,d5]@3 [g4,c5,e5]@7 ~]/3", // Fmaj7 C G5 C F C G5 C
  Y: "[[g4,b4,d5]@7 ~ [e4,g4,c5]@11 d5@2 e5@3 [a4,c5,f5]@12 ~ g5@3 [g4,c5,e5]@12 ~ [g4,d5]@3 [g4,c5,e5]@4 ~ g5@3]/2", // G C F C G5 C
  Z: "[[g4,b4,d5]@4 ~ g5@3 [e4,g4,c5]@7 ~ [e5,c6]@3 [d5,b5]@2 [b4,g5]@3 [a3,c4,f4]@11 g4@4 ~ [g3,c4,e4]@7 ~@4 [d4,g4,a4]@2 b4@3 [c4,e4,g4]@4 ~ c4@3]/2", // G C G Em F C Dsus4 C
  AA: "[[g3,d4]@4 ~ b3@3 [g3,c4,e4]@7 ~ c4@3 d4@2 e4@3 f4@4 ~ g4@3 a4@4 ~ b4@3 [g3,c4,e4]@11 [g3,d4]@4 ~ [e3,g3,d4]@15 ~ [g3,d4]@15 ~ [e3,a3,b3,c4]@31 ~@9, ~@24 [a3,c4]@15 ~@89]/4", // G5 C G5 Em7 G5 Am
})).s("gm_piano").gain(0.48)

// other · piano · "Left Hand"
const piano_2 = note("<A@2 B C D@2 E@2 F@2 E@2 G H I J K L M H K H I H K N O P Q R S@3 T@2 U@2 V@4>".pickRestart({
  A: "[~@24 d3@15 ~ a2@12 ~ b2@3 c3@7 ~]/2", B: "b2@7 ~ a2@7 ~ g2@7 ~ d3@7 ~", C: "d2@7 ~ a2@12 ~ b2@3 c3@7 ~",
  D: "[b2@7 ~ a2@7 ~ [g2,e3]@7 ~ d2@15 ~ c3@15 ~ [a2,g3]@7 ~]/2", // C A7
  E: "[e2@7 ~ a2@7 ~ g2@7 ~ d3@15 ~ a2@11 b2@4 ~ c3@7 ~]/2", F: "[b2@7 ~ a2@7 ~ g2@7 ~ d2@15 ~ c3@15 ~ [a2,g3]@7 ~]/2",
  G: "b2@7 ~ g#2@7 ~ a2@15 ~", H: "d2@15 ~ a2@11 b2@4 ~", I: "c3@7 ~ b2@7 ~ a2@7 ~ g2@7 ~",
  J: "d2@15 ~ a2@7 ~ a2@3 b2@4 ~", K: "c3@7 ~ b2@7 ~ a2@7 ~ [g2,e3]@7 ~", L: "d2@15 ~ c3@15 ~",
  M: "a2@7 ~ e2@7 ~ a2@7 ~ [g2,c3]@7 ~", N: "d3@15 ~ c3@15 ~", O: "a2@15 ~ g2@15 ~", P: "d2@15 ~ c2@15 ~",
  Q: "a2@7 ~ b2@3 c3@2 d3@3 g2@15 ~", R: "f2@7 ~ g2@7 ~ a2@7 ~ b2@7 ~",
  S: "[d3@7 ~ d3@7 ~ c3@3 c3@2 b2@3 a2@31 ~ d4@15 ~ a3@12 ~ b3@3 c4@7 ~]/3",
  T: "[b3@7 ~ a3@7 ~ g3@7 ~ d4@15 ~ a3@12 ~ b3@3 c4@7 ~]/2", U: "[b3@7 ~ a3@7 ~ g3@7 ~ d3@15 ~ a2@11 b2@4 ~ c3@7 ~]/2",
  V: "[b2@7 ~ a2@7 ~ g2@7 ~ d2@15 ~ a2@8 a2@3 b2@4 ~ c3@15 ~ b2@15 ~ a2@31 ~@9]/4",
})).s("gm_piano").gain(0.72)

stack(piano, piano_2)

More by Des'ree