Strudelify

Dress You Up

Madonna

KeyE♭ majorTempo141 bpm
0:00/0:00
// Dress You Up — Madonna
// 141 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 139 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(141/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 · synth bass 2
const bass = note(`<
  ~ A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C A D@2 E F E F E F E F A@2 B@2 A@2 B@2 A@2 B@2 C A D@2 E F E F E F
  E F E F E F E F E F A@2 B@2 A@2 B@2 A@2 B@2 C A D@2 E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E
  F E F E F E F A@2 B@2 A@2 B@2 C A D@2 G@2
>`.pickRestart({
  A: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~", B: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  C: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~", D: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  E: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", F: "g1 ~ g1 ~ g1 ~ g1 ~ c2 ~ d2 ~ eb2 ~ c2 ~",
  G: "[g1 ~ bb1 ~ bb1 ~ g1 ~ bb1 ~@3 c2@7 ~@13]/2",
})).s("gm_synth_bass_2").gain(0.48)

// chords · fretless bass
const fretless_bass = note(`<
  ~@5 A B C D A B C@2 E@2 C@2 E@2 C F E@2 C D G H I J K L M L M L M L E@2 C F E@2 C@2 E@2 N F G H O J K L M L M L M L M
  L P L M Q M R E@2 C@2 E@2 C@2 E@2 C F G S O T M U M L M L M U M L M L M L M U ~@8 M V M W M L M X P L M L Y L M Z AA@2
  C@2 E@2 C F G H I T AB ~
>`.pickRestart({
  A: "[c4,eb4]@5 ~ [bb3,d4]@9 ~", B: "[c4,eb4]@5 ~ [bb3,d4]@8 ~@2", C: "[bb3,eb4,f4]@5 ~ [bb3,d4,f4]@9 ~",
  D: "[bb3,eb4,f4]@5 ~ [bb3,d4,f4]@9 ~, ~@6 eb4 ~@9", E: "[[ab3,c4,eb4]@31 ~]/2",
  F: "[bb3,eb4,f4]@5 ~ [bb3,d4,f4]@8 ~@2", G: "[ab3,c4]@15 ~", H: "[c4,eb4]@15 ~", I: "[g3,c4,d4]",
  J: "[g3,b3,d4]@15 ~", K: "[ab3,c4,eb4]@7 ~ [bb3,d4,f4]@8", L: "[bb3,d4,f4]@5 ~ [c4,eb4,g4]@9 ~",
  M: "[ab3,c4,eb4]@7 ~ [bb3,d4,f4]@7 ~", N: "bb3@2 bb3@3 ~ [bb3,d4,f4]@9 ~, [eb4,f4]@5 ~@11", O: "[g3,c4,d4]@15 ~",
  P: "[ab3,c4,eb4]@7 ~ [bb3,d4,f4]@7 ~, ~@8 eb4 ~@7", Q: "[bb3,d4,f4]@5 ~ [c4,eb4,g4]@9 ~, eb4 ~@15",
  R: "[bb3,d4,f4]@4 ~@2 eb4@5 eb4@4 ~, ~@6 [c4,g4]@9 ~", S: "[c4,eb4]@7 ~", T: "[g3,b3,d4]@7 ~",
  U: "[bb3,d4,f4]@5 ~ [c4,eb4,g4]@10", V: "[bb3,d4,f4]@4 ~@2 [c4,eb4,g4]@9 ~",
  W: "[bb3,d4,f4]@4 ~@2 [c4,eb4,g4]@9 ~, ~@6 ab4 ~@9", X: "[bb3,d4,f4]@5 ~ [c4,eb4,g4]@9 ~, ~@6 gb4 ~@9",
  Y: "[ab3,c4,eb4]@7 ~ [bb3,d4,f4]@6 ~@2", Z: "[bb3,d4,f4]@5 ~ [c4,eb4,g4]@9 ~, ~@6 ab4 ~@9",
  AA: "[[ab3,c4,eb4]@15 ~]/2", AB: "[g3,g4]@2 [bb3,bb4] ~ [bb3,bb4] ~ [g3,g4] ~ [bb3,bb4]@2 ~@2 [g3,c4,g4,c5,c6]@4",
})).s("gm_fretless_bass").gain(0.38)

// drums · kick
const kick = s("bd").struct(`<
  A B@11 C B@15 C D C D C D C D C B@15 C D C D C D C D C D C D C D C D C E C E C E C E C E C E C E C E C D C D C D C D C
  D C D C D C D C D C D C D C D F D C D C D C D C D C D C D C D C E C E C E C E C E C E C G ~
>`.pickRestart({
  A: "x!13 ~@3", B: "x!4", C: "x ~@3 x!2 ~@2", D: "x ~@2 x!2 ~@3", E: "x ~ x!2 ~@2 x ~ x ~@7", F: "x ~@3 x!3 ~",
  G: "x ~ x!3 ~ x ~",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@11 B A@15 B A@7 B A@15 B A@7 B A@7 B A@15 B A@7 B A@7 B ~@7 B A@7 B A@7 B A@12 C ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "x ~ x ~ x!3 ~ x ~@7",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@102 [~@3 x] ~ [~@3 x] ~ [~@3 x] ~@32>").gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A B A B A B A B A@3 B A B A B A B A B A B A@5 B A B A B A@3 B A B A B A B A B A B A@5 B A B A B A@3 B A B A B
  A@19 B A B A B A@3 B A B A B A@2 C D@7 A B A B A B A@3 B A B A B A@14 ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!2 ~ x", D: "~ x ~ x",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~@3 A ~ A ~ A
  ~@19 A ~ A ~ A ~@3 A ~ A ~ A ~@11 A ~ A ~ A ~@3 A ~ A ~ A ~@16
>`.pickRestart({
  A: "~@7 x",
})).gain(0.22)

// drums · crash
const crash = s("cr").struct("<~@137 [~@3 x] ~>").gain(0.31)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@102 [~@3 x] ~ [~@3 x] ~ [~@3 x] ~@32>").gain(1.13)

stack(bass, fretless_bass, kick, snare, clap, hihat, open_hat, crash, cabasa)

More by Madonna