Strudelify

I Would Die 4 U

Prince

KeyD majorTempo135 bpm
0:00/0:00
// I Would Die 4 U — Prince
// 135 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "Strings" string ensemble 1 (copy of ch 1 "Piano" piano)
// note: Full arrangement: all 106 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 · piano
const piano = note(`<
  ~ A B C D A B C D ~@8 A B C D A B C D ~@8 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D A B C D A B C ~ A B C D
  A B C D A B C D A B C D A B C D A B C ~@2
>`.pickRestart({
  A: "[a4,b4,d5,f#5]@11 ~@5", B: "[a4,c#5,e5]@2 ~ [a4,d5,f#5] ~@4 [a4,c#5,e5]@2 ~ [a4,d5,f#5] ~@4",
  C: "[a4,d5,e5]@11 ~@5", D: "[a4,c#5,e5]@11 ~@5",
})).s("gm_piano").gain(0.51).pan(0.1)

// bass · slap bass 2 · "Bass"
const bass = note(`<
  A B C D E B C D@3 B C E D B C D B C D F B C D@3 B C D@2 B C D B C D F B C D@2 B C D E B C D E D B C E D B C E B C D F
  B C D@2 B C D F B C D@2 B C D F B C D G B C D F B C D@2 B C D F B C D@2 B C D F B C D ~@2
>`.pickRestart({
  A: "~@12 a2 a1 ~@2", B: "g1@3 ~ g2@3 ~ g1@3 ~@5", C: "f#1@3 ~ f#2@3 ~ f#1@3 ~@5", D: "a1@3 ~ a2@3 ~ a1@3 ~@5",
  E: "a1@3 ~ a2@3 ~ a1@3 b1@3 d2@2", F: "a1@3 ~ a2@3 ~ a1@2 b1@4 d2@2", G: "a1 ~@15",
})).s("gm_slap_bass_2").gain(0.51)

// other · pad poly · "Synth"
const pad_poly = note(`<
  A B C D@2 B C D@2 B C D@2 B C D@2 E@3 D F@3 D B C D@2 B C D@2 G@3 D H@3 D B C D@2 B C D@2 B C D@2 I@3 D F@3 D E@3 D
  E@3 D E@3 D E@3 D H@3 ~ F@3 D E@3 D F@3 D E@3 D F@3 D E@3 ~@2
>`.pickRestart({
  A: "~@12 a3 a2 ~@2", B: "g2!16", C: "f#2!16", D: "a2!16", E: "[g2!16 f#2!16 a2!16, ~@2 a3@9 ~]/3",
  F: "[g2!16 f#2!16 a2!16, ~@4 a3@19 ~]/3", G: "[g2!16 f#2!16 a2!16, ~@9 a3@34 ~@5]/3",
  H: "[g2!16 f#2!16 a2!16, ~@8 a3@37 ~@3]/3", I: "[g2!16 f#2!16 a2!16, a3@13 ~@3]/3",
})).s("gm_pad_poly").gain(0.51).pan(0.9)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~ A B C D A B C D E F G@2 H I J@2 A B C D A B C D K I G@2 K L J@2 A B C D A B C D M N M N M N M N O P Q@2 O P J@2 A B
  C D A B C D A B C D A B C D A B C D A B C R A B C D A B C D A B C D A B C D A B C D A B C S@2
>`.pickRestart({
  A: "[a4,b4,d5,f#5]@11 ~@5", B: "[a4,c#5,e5]@2 ~ [a4,d5,f#5] ~@4 [a4,c#5,e5]@2 ~ [a4,d5,f#5] ~@4",
  C: "[a4,d5,e5]@11 ~@5", D: "[a4,c#5,e5]@11 ~@5", E: "[g3,g4]", F: "[f#3,f#4]", G: "[a3,a4]/2", H: "g4, g3@7 ~",
  I: "f#3, f#4@11 ~@5", J: "[[a3,a4]@29 ~@3]/2", K: "g3, g4@11 ~@5", L: "[f#3,f#4]@11 ~@5",
  M: "f#4 ~@2 f#4 ~@2 g4 ~ e4 ~ d4 ~@5", N: "f#4 ~@2 f#4 ~@2 g4 ~ e4 ~@7", O: "[g3,g4]@7 ~", P: "[f#3,f#4]@7 ~",
  Q: "[[a3,a4]@15 ~]/2", R: "~@6 a4@7 ~@3, a2@13 ~@3, a1@3 [a3,c#4] e4 f#4@7 ~@4, ~ c#3@12 ~@3, ~@2 e3@11 ~@3",
  S: "[~@6 a5@7 ~@3, a1@7 ~, a3@13 ~@3, ~@2 c#4@3 g4 a#4 c#5 e5@2 g5@16 ~@6, ~@2 e4@11 ~@3]/2",
})).s("gm_drawbar_organ").gain(0.51)

// other · pizzicato strings · "Plucked Strings"
const pizzicato_strings = note(`<
  ~@41 A B A B A B A B ~@24 C D C D C D C ~@3 C D C E C D ~@2 C D C E C D ~@2 C D C E C ~@2
>`.pickRestart({
  A: "f#5 ~@2 f#5 ~@2 g5 ~ e5 ~ d5 ~@5", B: "f#5 ~@2 f#5 ~@2 g5 ~ e5 ~@7",
  C: "[c#5,c#6] ~@2 [d5,d6] ~@2 [e5,e6] ~ [c#5,c#6] ~ [d5,d6] ~@5", // C# D E C# D
  D: "[c#5,c#6] ~@2 [d5,d6] ~@2 [e5,e6] ~ [c#5,c#6] ~@7", E: "[c#5,c#6] ~ [d5,d6] ~@3 [e5,e6] ~ [c#5,c#6] ~@7",
})).s("gm_pizzicato_strings").gain(0.51).pan(0.9)

// chords · synth brass 2 · "Brass"
const synth_brass_2 = note(`<
  ~@17 A@3 ~ B@3 ~@9 A@3 ~ A@3 ~ C D C D C D C D ~@4 E@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~ A@3 ~
  A@3 ~ A@3 ~@2
>`.pickRestart({
  A: "[~@8 a3@37 ~@3]/3", B: "[~@8 a3@39 ~]/3",
  C: "[b4,d5,f#5] ~@2 [b4,d5,f#5] ~@2 [c#5,e5,g5] ~ [a4,c#5,e5] ~ [b4,d5] ~@5", // Bm C#dim A Bm
  D: "[b4,d5,f#5] ~@2 [b4,d5,f#5] ~@2 [c#5,e5,g5] ~ [a4,c#5,e5] ~@7", E: "[a3@17 ~@7]/3",
})).s("gm_synth_brass_2").gain(0.51).pan(0.1)

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

// drums · snare
const snare = s("sd").struct("<~ [~ x ~@2]!79 [~@3 x] [~ x ~@2]!23 ~@2>").gain(0.51)

// drums · clap
const clap = s("cp").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A@2 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@3 x",
})).gain(0.51)

// drums · splash
const splash = s("cr").struct("<~ [x!16]!43 [x!9 ~ x ~ x ~@2 x] [x!16]!35 ~ [x!16]!23 ~@2>").gain(0.51)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@44 [~@10 x!6] ~@61>").gain(2.6)

// drums · shaker
const shaker = s("sh").struct("<~@44 [~@10 x!6] ~@61>").gain(0.51)

stack(piano, bass, pad_poly, drawbar_organ, pizzicato_strings, synth_brass_2, kick, snare, clap, splash, cabasa, shaker)

More by Prince