Strudelify
Especially for You cover art

Especially for You

Especially for You

Kylie Minogue

KeyF majorTempo80 bpm
0:00/0:00
// Especially for You — Kylie Minogue
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 6 "SYN STRING" synth strings 1 (copy of ch 4 "E.PIANO" epiano1)
// note: Full arrangement: all 71 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q P R S T U V U W X Y Z J K L M N O P Q P R S T U V AA W X Y Z J K L M N O P Q P R S T
  U V AA W X T U V AA W X AB
>`.pickRestart({
  A: "c2 ~@5 c2@5 ~@5", B: "f1@2 ~@11 f1 a1 c2", C: "d2@3 d1@4 ~", D: "g1 ~@2 g1@4 ~", E: "c2 ~@2 c1@4 ~",
  F: "f1@3 e1@4 ~", G: "f1@3 bb1@4 ~", H: "db2@3 f1@4 ~", I: "c2@5 ~ c2@7 ~ c2 ~",
  J: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1!2 a1 ~ c2 ~", K: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ a1 ~ a1 ~",
  L: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1!2 bb1 ~ b1 ~", M: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2!2 d2 ~ e2 ~",
  N: "f1 ~ f1 ~ f1!2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", O: "eb1 ~ eb1 ~ eb1!2 d1 ~ d1 ~ d1 ~ d1 ~ d1 ~",
  P: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~", Q: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  R: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", S: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  T: "c2 ~ c2 ~ c2 ~ d2 ~ d2 ~ d2 ~ f1 ~ gb1 ~", U: "g1 ~ g1 ~ g1!2 c2 ~ c2 ~ c2 ~ bb1 ~ bb1 ~",
  V: "a1 ~ a1 ~ a1!2 d2 ~ d2 ~ d2 ~ f1 ~ gb1 ~", W: "a1 ~ a1 ~ a1 ~ d2 ~ d2 ~ d2 ~ f1 ~ gb1 ~",
  X: "g1 ~ g1 ~ g1 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", Y: "f1 ~ f1 ~ f1!3 ~ f1!3 ~ f1 ~ f1 ~", Z: "c1 ~@2 c1@4 ~",
  AA: "g1 ~ g1 ~ g1!2 db2 ~ db2 ~ c2 ~ c2 ~ bb1 ~", AB: "f1 ~",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~ A B C D E F G H A B C D E F I J K L M N O P Q N R A R A B C D E F I J K L M N O P Q N R A R A B C D E F I J K L M N
  O P Q N R N O P Q N R ~
>`.pickRestart({
  A: "[a3,c4,f4] ~ [a3,c4,f4]!2 ~@2 [a3,c4,f4]@2 ~ [a3,c4,f4] ~@6", // F
  B: "[a3,d4,g4] ~ [a3,d4,g4]!2 ~@2 [a3,d4,gb4]@2 ~ [a3,d4,gb4] ~@6", // Dsus4 D
  C: "[bb3,d4,f4,g4] ~ [bb3,d4,f4,g4]!2 ~@2 [bb3,d4,f4,g4]@2 ~ [bb3,d4,f4,g4] ~@6", // Gm7
  D: "[g3,c4,f4] ~ [g3,c4,f4]!2 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4] ~@6", // Csus4 C
  E: "[a3,c4,f4] ~ [a3,c4,f4]!2 ~@2 [a3,c4,e4]@2 ~ [a3,c4,e4] ~@6", // F Am
  F: "[c4,eb4,f4,a4] ~ [c4,eb4,f4,a4]!2 ~@2 [bb3,d4,f4]@2 ~ [bb3,d4,f4] ~@6", // F7 Bb
  G: "[bb3,db4,f4] ~ [bb3,db4,f4]!2 ~@2 [a3,c4,f4]@2 ~ [a3,c4,f4] ~@6", // Bbm F
  H: "~@2 [bb3,d4,f4,g4]!2 ~@2 [g3,bb3,d4,f4]@2 ~ [g3,bb3,d4,f4] ~@6", // Gm7
  I: "[bb3,db4,f4] ~ [bb3,db4,f4]!2 ~@2 [bb3,db4,f4] ~@2 [bb3,db4,f4] ~@6", // Bbm
  J: "[a3,c4,f4] ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~@2 [a3,c4,e4,f4] ~@2 [a3,c4,e4,f4] ~@2 [a3,c4,e4,f4] ~", // F Fmaj7
  K: "[a3,db4,e4,g4] ~ [a3,db4,e4,g4] ~@2 [a3,db4,e4,g4] ~@2 [a3,db4,e4,g4] ~@2 [a3,db4,e4,g4] ~@2 [a3,db4,e4,g4] ~", // A7
  L: "[a3,d4,f4] ~ [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~@2 [a3,d4,f4] ~", // Dm
  M: "[d4,f4,a4,c5] ~ [d4,f4,a4,c5] ~@3 [d4,f4,a4,c5] ~ [c4,d4,f4,a4] ~@3 [g3,bb3,d4,f4] ~@3", // Dm7 Gm7
  N: "[a3,c4,e4,g4] ~ [a3,c4,e4,g4]!2 ~@2 [a3,d4,f4]@2 ~ [a3,d4,f4] ~@6", // Am7 Dm
  O: "[g3,bb3,d4,f4] ~ [g3,bb3,d4,f4]!2 ~@2 [c4,e4,g4]@2 ~ [bb3,e4,g4] ~@6", // Gm7 C Edim
  P: "[bb3,e4,g4] ~ [bb3,e4,g4]!2 ~@2 [a3,d4,f4]@2 ~ [a3,d4,f4] ~@6", // Edim Dm
  Q: "[g3,bb3,d4,f4] ~ [g3,bb3,d4,f4]!2 ~@2 [g3,bb3,db4,f4]@2 ~ [g3,bb3,db4,f4] ~@6", // Gm7 Gm7b5
  R: "[g3,bb3,d4,f4] ~ [g3,bb3,d4,f4]!2 ~@2 [bb3,d4,g4]@2 ~ [bb3,d4,g4] ~@6", // Gm7 Gm
})).s("gm_piano").gain(0.5).pan(0.9)

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  A B C D E F G H@2 B C D E F G I J K L M N O P Q N R B R B C D E F G I J K L M N O P Q N R B S@2 T@2 U@2 G I J K L M N
  O P Q N R N O P Q N R V
>`.pickRestart({
  A: "~@3 [g3,bb3,d4,f4]@5", B: "[a3,c4,f4]", C: "[a3,d4,g4]@3 [a3,d4,gb4]@5", D: "[bb3,d4,a4]",
  E: "[g3,c4,f4]@3 [g3,c4,e4]@5", F: "[a3,c4,f4]@3 [a3,c4,e4]@5", G: "[c4,eb4,f4,a4]@3 [bb3,d4,f4]@5",
  H: "[[bb3,db4,f4]@3 ~@4 [bb4,c5,f5]@3 ~ [g3,bb3,d4,f4]@5, ~@3 [a3,c4,f4]@5 ~@8]/2", I: "[bb3,db4,f4]",
  J: "[a3,c4,f4] [a3,c4,e4,f4]", K: "[db4,e4,g4,a4]", L: "[a3,c4,d4,f4]",
  M: "[d4,f4,a4,c5]@2 [c4,d4,f4,a4] [g3,bb3,d4,f4]", N: "[a3,c4,e4,g4]@3 [a3,d4,f4]@5",
  O: "[g3,bb3,d4,f4]@3 [c4,e4,g4]@3 [bb3,e4,g4]@2", P: "[bb3,e4,g4]@3 [a3,d4,f4]@5",
  Q: "[g3,bb3,d4,f4]@3 [g3,bb3,db4,f4,g4]@3 [bb3,d4,f4,a4]@2", R: "[g3,bb3,d4,f4]@3 [bb3,d4,f4,g4]@5",
  S: "[~@5 g4 bb4 d5 f5@2 e5 d5@2 c5@2 c5@8 ~@7 a4 c5]/2", T: "[d5 g4 c5 d5@3 ~@2 d5@2 eb5 d5 ~ c5 ~ bb4@6 ~@9 c5!2]/2",
  U: "[c5@2 c5 c5@4 ~ c5@2 [bb4,d5] [a4,c5]@2 [g4,bb4]@2 [f4,a4]@3 [c5,f5]@2 [f5,a5]@2 [a5,c6] [c6,f6]@4 ~@5]/2", // Bb Am Gm F F5 F Am F5
  V: "[a3,c4,f4] ~", // F
})).s("gm_epiano1").gain(0.6).pan(0.2)

// other · music box
const music_box = note(`<
  A ~@7 B ~@4 C D E ~@3 F ~@3 G H I J K ~@4 C D E ~@3 F ~@3 G H I J ~@5 C D E ~@3 F ~@3 G H I ~@3 G H I L
>`.pickRestart({
  A: "~@8 f6@2 e6 d6@2 c6 ~@2", B: "~@9 c4 [e4,g4] c5 ~ c5 [e5,f5] ~", C: "a6 ~ c7 ~ c7 ~ g7 ~@3 c7 ~ a6 ~ g7 ~",
  D: "a6 ~ c7 ~ c7 ~ d7 ~@9", E: "~@2 db7 ~@8 a6 ~ g6 f6 ~", F: "~@8 c7 ~ f7 ~ g7 ~ f7 ~", G: "~@10 g7 ~ f7 ~ g7 ~",
  H: "bb7 ~@3 a7 ~@3 g7 ~ f7 ~@5", I: "bb7 ~@3 a7 ~@3 f7 ~@3 d7 ~@3", J: "c7 ~@15",
  K: "~ g3 [bb3,d4] f4 g4 [bb4,d5] f5 ~ bb5 ~@7", L: "f6@3 ~@5",
})).s("gm_music_box").gain(0.32)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x ~@4] [~ x ~ x]!8 [x!2]!18 [x!4] [x!2]!18 [x!4] [x!2]!23 x>").gain(0.6)

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

// drums · low tom
const low_tom = s("lt").struct("<~@19 [~@10 x!2 ~@2 x!2] ~@18 [~@10 x!2 ~@2 x!2] ~@18 [~@10 x!2 ~@2 x!2] ~@13>")
  .gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~ A@19 B@6 C ~ A@11 B@6 C ~ A@11 B@12 ~>".pickRestart({
  A: "x!16", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~", C: "x!8",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@16 A ~@2 B ~@6 C ~@8 A ~@2 B ~@6 C ~@8 A ~@2 B ~@13>".pickRestart({
  A: "~@9 x ~ x ~ x!2 ~", B: "~@9 x ~@2 x!2 ~@2", C: "~@9 x ~ x ~@4",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  A ~@8 B ~@3 B ~@3 B ~@2 B ~ B ~ B ~@2 C B ~@3 B ~@3 B ~@2 B ~ B ~ B ~@2 C B ~@3 B ~@3 B ~@2 B ~ B ~ B ~ B ~ B ~ B ~ B
>`.pickRestart({
  A: "~@3 x ~@4", B: "x", C: "x ~@2 x ~@4",
})).gain(0.48)

stack(bass, piano, epiano1, music_box, kick, snare, low_tom, hihat, high_tom, crash)

More by Kylie Minogue