Strudelify

My Love Is Your Love (Wyclef remix)

Whitney Houston

KeyC majorTempo137 bpm
0:00/0:00
// My Love Is Your Love (Wyclef remix) — Whitney Houston
// 137 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 1 piano (copy of ch 6 synth brass 1)
// note: Full arrangement: all 179 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · synth brass 1
const synth_brass_1 = note(`<
  A B C@2 D A B@2 A B E@2 A B F@2 A B C@2 D A B@2 A B E@2 A B F@2 A B C@2 D A B@2 A B E@2 A B F@4 A B C@2 D A B@2 A B
  E@2 A B F@4 A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G ~@16 A B C G A B C@2 D A B@2 A B E@2 A B
  F@4 A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G ~
>`.pickRestart({
  A: "[g3,c4,e4]!16", B: "[g3,b3,d4]!16", C: "[a3,c4,e4]!16", D: "[a3,c4,f4]!16", E: "[c4,e4,a4]!16",
  F: "[e3,g3,c4]!16", G: "[f3,a3,c4]!16",
})).s("gm_synth_brass_1").gain(0.45)

// bass · electric bass finger
const bass = note(`<
  A B C@2 D E F B A B C@2 A B A@3 B C@2 D E F B A B C@2 A B A@3 B C@2 D E F B A B C@2 A B A@5 B C@2 D E F B A B C@2 A B
  A@5 B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C@2 D E
  F B A B C@2 A B A@5 B C G A B C G A B C G A B C G A B C G A B C G A B C G ~@13
>`.pickRestart({
  A: "c2 ~ c2 ~ c2!2 ~ c2!2 ~ c2 ~ c2!2 ~ c2", B: "g1 ~ g1 ~ g1!2 ~ g1!2 ~ g1 ~ g1!2 ~ g1",
  C: "a1 ~ a1 ~ a1!2 ~ a1!2 ~ a1 ~ a1!2 ~ a1", D: "f2 ~ f2 ~ f2!2 ~ f2!2 ~ f2 ~ f2!2 ~ f2",
  E: "e2 ~ e2 ~ e2!2 ~ e2!2 ~ e2 ~ e2!2 ~ e2", F: "d2 ~ d2 ~ d2!2 ~ d2!2 ~ d2 ~ d2!2 ~ d2",
  G: "f1 ~ f1 ~ f1!2 ~ f1!2 ~ f1 ~ f1!2 ~ f1",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · synth brass 1
const synth_brass_1_2 = note(`<
  ~@50 A B C@2 D A B@2 A B E@2 A B F@4 A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G ~@12 A B C G A B
  C G A B C@2 D A B@2 A B E@2 A B F@4 A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G A B C G ~
>`.pickRestart({
  A: "[g3,c4,e4]!2 ~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~ [g3,c4,e4]!2 ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  B: "[g3,b3,d4]!2 ~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~ [g3,b3,d4]!2 ~ [g3,b3,d4] ~ [g3,b3,d4] ~", // G
  C: "[a3,c4,e4]!2 ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~ [a3,c4,e4]!2 ~ [a3,c4,e4] ~ [a3,c4,e4] ~", // Am
  D: "[a3,c4,f4]!2 ~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4]!2 ~ [a3,c4,f4] ~ [a3,c4,f4] ~", // F
  E: "[c4,e4,a4]!2 ~@2 [c4,e4,a4] ~@2 [c4,e4,a4] ~ [c4,e4,a4]!2 ~ [c4,e4,a4] ~ [c4,e4,a4] ~", // Am
  F: "[e4,g4,c5]!2 ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~ [e4,g4,c5]!2 ~ [e4,g4,c5] ~ [e4,g4,c5] ~", // C
  G: "[f3,a3,c4]!2 ~@2 [f3,a3,c4] ~@2 [f3,a3,c4] ~ [f3,a3,c4]!2 ~ [f3,a3,c4] ~ [f3,a3,c4] ~", // F
})).s("gm_synth_brass_1").gain(0.66).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@16 A B C@2 D A E@2 A B F@2 A B G@2 A B H@2 D A E@2 A B F@2 A B I@4 A B C@2 D A E@2 A B F@2 A B G@4 ~@8 J K L M ~@8 J
  K L M ~@4 J K L M ~@20 A B C@2 D A E@2 A B F@2 A B G@4 ~@8 J K L M ~@8 J K L M ~@17
>`.pickRestart({
  A: "[g4,c5,e5]", B: "[g4,b4,d5]", C: "[[c5,e5], a4@15 ~]/2", D: "[a4,c5,f5]", E: "[g4,b4,d5]/2", F: "[c4,e4,a4]/2",
  G: "[e4,g4,c5]/2", H: "[a4,c5,e5]/2", I: "[e4,g4,c5]/4", J: "[g3,c4,e4]", K: "[g3,b3,d4]", L: "[a3,c4,e4]",
  M: "[f3,a3,c4]", // F
})).s("gm_synth_strings_1").gain(0.43).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A@64 B@4 A@24 B@8 ~@7 C A@11 B A@14 B@4 A@31 B ~@8 D>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@2 x ~@2 x ~ x ~ x ~", C: "~@7 x", D: "x!16",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@46 [~ x ~ x]!54 ~@4 [~ x ~ x]!66 ~@9>").gain(0.8)

// drums · clap
const clap = s("cp").struct("<~@46 [~ x ~ x]!54 ~@4 [~ x ~ x]!66 ~@9>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!170 ~@9>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x ~ x ~ x]!170 ~@9>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@16 A ~@15 A ~@17 A ~@13 B@4 ~@8 A ~@15 B@8 ~@19 B A ~@13 B@4 ~@8 A ~@22 B ~@9
>`.pickRestart({
  A: "x", B: "x ~@3 x ~@2 x ~@2 x ~ x ~ x ~",
})).gain(0.8)

// drums · shaker
const shaker = s("sh").struct("<~@32 A@18 B A@13 C A C A@53 B A@13 C A C@2 A@36 ~@5>".pickRestart({
  A: "~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~", B: "~@6 x ~@3 x!2 ~@2 x ~", C: "~@3 x ~@6 x!2 ~@2 x ~",
})).gain(0.8)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
  ~@32
  [~ x ~ x]!18
  [~ x ~@2 x ~@7 x ~@3]
  [~ x ~ x]!69
  [~ x ~@2 x ~@7 x ~@3]
  [~ x ~ x]!53
  ~@5
>`).gain(0.48)

stack(
  synth_brass_1, bass, synth_brass_1_2, synth_strings_1, kick, snare, clap, hihat, open_hat, crash, shaker, shaker_soft
)

More by Whitney Houston