Strudelify
Material Girl cover art

1984 · Like a Virgin

Material Girl

Madonna

KeyD majorTempo80 bpm
0:00/0:00
// Material Girl — Madonna
// 80 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 156 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.
// 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(`<
  ~@4 A B C D A B E D F B G B H B@2 A B A E I A B J A B F K L M B N O P Q R S T Q U A B A@2 F A V W X A N Y A@2 K W A F
  N Z AA Q U AB AC Q AC A@3 B Y A K L F A AD B A AE K L B A N AF AG Q AH AI R Q AC B@2 A@3 F V L F A N F B A K I B A N B
  F@2 D L Y F J F B F V L A@2 N B AA Q AC AJ AC AK AL P Q AC AM U AN AC AO ~@8
>`.pickRestart({
  A: "d2@2 ~@2 d2@2 ~@2 a1 ~ d2@2 ~@2 a1 ~", B: "d2@2 ~@2 d2@2 ~@2 a1@2 d2@2 ~@2 a1 ~",
  C: "c2@3 ~ c2@2 ~@2 g1 ~ c2@2 ~@2 f#1 ~", D: "c2@2 ~@2 c2@2 ~@2 g1 ~ c2@2 ~@2 f#1@2",
  E: "c2@2 ~@2 c2@2 ~@2 g1@2 c2@2 ~@2 f#1 ~", F: "d2@2 ~@2 d2@2 ~@2 a1 ~ d2@2 ~@2 a1@2",
  G: "d2@2 ~@2 d2@2 ~@2 a1 ~ d2@2 ~@3 a1", H: "d2@2 ~@3 d2@2 ~ a1 ~ d2@2 ~@3 a1",
  I: "b1@2 ~@2 b1@2 ~@2 f#1 ~ b1@2 ~@2 a1@2", J: "e2@2 ~@2 e2@2 ~@2 a1@2 a2@2 ~@2 a1 ~",
  K: "c2@2 ~@2 c2@2 ~@2 g1 ~ c2@2 ~@2 f#1 ~", L: "b1@2 ~@2 b1@2 ~@2 f#1 ~ b1@2 ~@2 a1 ~",
  M: "d2@2 ~@3 d2@2 ~ a1 ~ d2@2 ~@2 a1@2", N: "e2@2 ~@2 e2@2 ~@2 a1 ~ a2@2 ~@2 a1 ~",
  O: "d2@2 ~@2 d2@2 ~@2 a1 ~ d2 ~ e2@2 f#2 ~", P: "g2@2 ~@2 g1 ~ f#1@2 a1@2 ~@4 a1 ~",
  Q: "a1@2 ~@2 a1 ~ f#1 ~ b1@2 ~@2 a1@2 ~@2", R: "g1@2 ~@2 g1 ~ f#1 ~ a1@2 ~@4 a1@2",
  S: "b1@2 ~@2 b1 ~@2 f#1 a1@2 ~@4 a1 ~", T: "g1@2 ~@2 g1 ~ f#1 ~@2 a1@2 ~@3 a1 ~",
  U: "g1@2 ~@2 g1@2 f#1@2 a1@2 ~@4 a1 ~", V: "c2 ~ c2 ~ g1 c2 ~ f#1", W: "b1@2 ~@2 b1@2 ~@2 f#1@2 b1@2 ~@2 a1 ~",
  X: "d2@2 ~@2 d2@2 ~@2 a1 ~@2 d2@2 ~ a1@2", Y: "d2 ~ d2 ~ a1 d2 ~ a1", Z: "d2@2 ~@2 d2@2 ~@2 a1 ~ d2 ~@2 e2 f#2 ~",
  AA: "g2@2 ~@2 g1 ~ f#1 ~ a1@2 ~@4 a1 ~", AB: "b1@2 ~@2 b1 ~ f#1@2 a1@2 ~@5 a1",
  AC: "g1@2 ~@2 g1 ~ f#1 ~ a1@2 ~@4 a1 ~", AD: "e2@2 ~@2 e2@2 ~@2 a1 ~ a2@2 ~@2 a1@2",
  AE: "d2@2 ~@2 d2@2 ~@2 a1 ~@2 d2@2 ~ a1 ~", AF: "d2@2 ~@2 d2@2 ~@2 a1 ~ d2@2 e2 ~ f#2 ~", AG: "g2 ~ g1 f#1 a1 ~@2 a1",
  AH: "g1@2 ~@2 g1@2 f#1 ~ a1@2 ~@4 a1 ~", AI: "b1@2 ~@2 b1@2 f#1@2 a1@2 ~@4 a1 ~",
  AJ: "b1@2 ~@2 b1 ~ f#1@2 a1@2 ~@4 a1 ~", AK: "a1@2 ~@2 a1@2 f#1 ~ b1@2 ~@2 a1@2 ~@2",
  AL: "g1@2 ~@2 g1 ~ f#1@2 a1@2 ~@4 a1 ~", AM: "b1@2 ~@2 b1@2 f#1 ~ a1@2 ~@4 a1@2",
  AN: "a1@2 ~@2 a1 ~ f#1@2 b1@2 ~@2 a1@2 ~@2", AO: "d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.3)

// other · piano · "A.PIANO"
const piano = note(`<
  ~@8 A@12 B@2 C D B@6 C D B@3 E F G F H I J F B@6 C D B K B@4 C D B@3 L F J F H F J F B@6 C D B@6 C D B@4 F G M N F J F
  B@6 C D B@6 C D B@6 C D B@6 C D B@4 F J F H M O F@2 J M N F J F P ~@8
>`.pickRestart({
  A: "a4", B: "~@4 a4 ~ a4 ~@5 a4 ~ a4 ~", C: "~@4 c5 ~ c5 ~@5 c5 ~ c5 ~", D: "~@4 b4 ~ b4 ~@5 b4 ~ b4 ~",
  E: "~@4 a4 ~ a4 ~@5 a4@2 a4 ~", F: "b4 a4", G: "a4@7 ~ b4@8", H: "a4@8 ~@2 a4@5 ~", I: "b4@8 ~ a4@7", J: "a4 b4",
  K: "~@4 a4 ~@2 a4 ~@4 a4 ~ a4 ~", L: "~@4 a4 ~ a4 ~@6 a4!2 ~", M: "b4@7 ~ a4@8", N: "a4@7 ~@3 a4@5 ~",
  O: "a4@8 b4@7 ~", P: "d5 ~@7",
})).s("gm_piano").gain(0.35)

// other · piano · "A.PIANO"
const piano_2 = note(`<
  ~@8 A B A B A B A B A B A B C@2 D C@7 D C@4 E F G H I J K F C@6 D C@2 L C@4 D C@4 M F K F I F K F C@6 D C@7 D C@5 F K
  N O F K F C@6 D C@7 D C@7 D C@7 D C@5 F K F I N P H F K N O F K N Q ~@8
>`.pickRestart({
  A: "c5", B: "d5", C: "~@4 d5 ~ d5 ~@5 d5 ~ d5 ~", D: "~@4 e5 ~ e5 ~@5 e5 ~ e5 ~", E: "~@4 d5 ~ d5 ~@5 d5@2 d5 ~",
  F: "d5 c#5", G: "c#5@7 ~ d5@8", H: "d5@8 c#5@7 ~", I: "c#5@8 ~@2 c#5@5 ~", J: "d5@8 ~ c#5@7", K: "c#5 d5",
  L: "~@4 d5 ~@2 d5 ~@4 d5 ~ d5 ~", M: "~@4 d5 ~ d5 ~@6 d5!2 ~", N: "d5@7 ~ c#5@8", O: "c#5@7 ~@3 c#5@5 ~",
  P: "c#5@8 d5@7 ~", Q: "f#5 ~@7",
})).s("gm_piano").gain(0.35)

// other · piano · "A.PIANO"
const piano_3 = note(`<
  ~@8 A B A B A B A B A B A B C D C D C D C D C D C D C D C E F G F H I J F C D C D C D C D C K C D C D C D C D C L M N
  F H M J F C D C D C D C D C D C D C D C D C D C D F G M O F J M C D C D C D C D C D C D 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 N F H M J F@2 G M O F P M Q ~@8
>`.pickRestart({
  A: "g5", B: "f#5", C: "~@4 g5 ~ g5 ~@5 g5 ~ g5 ~", D: "~@4 f#5 ~ f#5 ~@5 f#5 ~ f#5 ~",
  E: "~@4 f#5 ~ f#5 ~@5 f#5@2 f#5 ~", F: "g5 a5", G: "a5@7 ~ f#5@8", H: "a5@8 ~@2 a5@5 ~", I: "g5@8 ~ a5@7", J: "a5 b5",
  K: "~@4 f#5 ~@2 f#5 ~@4 f#5 ~ f#5 ~", L: "~@4 f#5 ~ f#5 ~@6 f#5!2 ~", M: "g5@7 ~ a5@8", N: "a5 f#5",
  O: "a5@7 ~@3 a5@5 ~", P: "a5@7 ~ b5@8", Q: "a5 ~@7",
})).s("gm_piano").gain(0.35)

// drums · kick
const kick = s("bd").struct(`<
  A@2 B@17 C B@15 C B@10 C B@15 C B@10 C B@7 C B@7 C B@10 C B@15 C B@7 C B@14 C B@6 C A ~@8
>`.pickRestart({
  A: "x", B: "x!4", C: "x ~ x!3 ~ x!2",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  A@8 B@8 C@3 D C@15 D C@10 D C@15 D C@10 D C@7 D C@7 D C@10 D A@8 B@7 D B@7 D B@7 E C@6 D C@6 D F ~@8
>`.pickRestart({
  A: "x ~@3 x ~@3 x!3 ~ x ~@3", B: "~@2 x!2 ~@2 x ~", C: "~@2 x!2 ~@2 x!2", D: "x ~@3 x ~ x ~ x!3 ~ x!3 ~",
  E: "x ~@2 x!2 ~ x ~ x!3 ~ x ~@3", F: "x",
})).gain(0.35)

// drums · clap
const clap = s("cp").struct(`<
  ~@8 A@11 B A@15 B A@10 B A@15 B A@10 B A@7 B A@7 B A@10 B C@8 A@7 B A@7 B A@7 C A@6 B A@6 B ~@9
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@2 x!2 ~@2 x!2", C: "~ x ~ x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<x!2 ~@154>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!8]!145 ~@9>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A@6 ~@11 A ~@15 A ~@10 A ~@15 A ~@10 A ~@7 A ~@7 A ~@10 A@9 ~@7 A ~@7 A ~@7 A ~@6 A ~@6 A ~@9
>`.pickRestart({
  A: "~@7 x",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<A ~ A ~ A ~@96 A ~ A ~ A ~ A ~@24 A@2 ~@3 A ~@2 A ~@3 A ~@2 A ~@8>".pickRestart({
  A: "x",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct("<~@147 x ~@8>").gain(0.2)

stack(bass, piano, piano_2, piano_3, kick, snare, clap, low_tom, hihat, open_hat, crash, ride)

More by Madonna