Strudelify

Candy Perfume Girl

Madonna

KeyA majorTempo100 bpm
0:00/0:00
// Candy Perfume Girl — Madonna
// 100 bpm, 8/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · lead 1 square
const lead_1_square = note(`<
  A@3 B A@12 ~@2 A@10 ~@2 C@2 ~ A@3 ~ A@13 ~ D A E F@2 G@2 F@2 ~@2 H I J K L D J K M@2 L N L O L O ~@2 A@4 G@2 P@2 Q@2
  P@2 ~ P ~ P ~ P ~@7
>`.pickRestart({
  A: "f#3 f#3@2 [e3,a3,c#4]@5", B: "f#3 f#3@2 f#3 [f#3,a3]@4", C: "[[e3,f#3]@4 ~@3 f#3@8 ~]/2",
  D: "~@3 [e3,a3,c#4]@4 ~", E: "~@6 [e3,a3,c#4]@3 [e3,a3,c#4] [e3,a3,c#4]@2 [e3,a3,c#4]@4",
  F: "f#3@2 f#3@4 [e3,a3,c#4]@3 [e3,a3,c#4] [e3,a3,c#4]@2 [e3,a3,c#4]@4", // A
  G: "[~@6 [a3,c#4,e4]@8 c#4@4 ~@4 [a3,c#4,e4]@3 [a3,c#4] [a3,c#4]@2 [a3,c#4]@4]/2", H: "b5 a#5 b5@2 a#5 b5 a#5@2",
  I: "g#5 b5 g#5@2 f#5 b5 f#5@2", J: "~@3 [a3,c#4,e4]@2 ~@3", K: "~ [a3,c#4]", L: "~@3 [e3,b3]@2 ~@3",
  M: "~@3 [e3,a3,c#4]@3 ~@2", N: "~@3 [e3,a3,b3]@2 [e3,a3,b3]!2 f#3", O: "~@3 [e3,a3,b3]@2 [e3,a3,b3] ~@2",
  P: "f#3@2 f#3@4 [e3,a3,b3]@3 [e3,a3,b3] [e3,a3,b3]@2 [e3,a3,b3]@4", // Esus4
  Q: "[~@3 [a3,c#4,e4]@2 ~@2 c#4@2 ~@2 [c#4,e4]@4 ~]/2", // A C#m
})).s("gm_lead_1_square").gain(0.52)

// chords · lead 8 bass lead
const lead_8_bass_lead = note("<A@3 B A@12 ~@2 A@10 ~@2 C@2 A@18 ~ A@9 D E D E A@35 F@4 G ~>".pickRestart({
  A: "[f#2,c#3] [f#2,c#3]@2 a2@4 e2", B: "[f#2,c#3] [f#2,c#3]@2 f#2@5", C: "f#2/2", D: "b3 a#3", E: "g#3 f#3",
  F: "f#2!2", G: "f#2",
})).s("gm_lead_8_bass_lead").gain(0.32)

// chords · lead 4 chiff · F#7
const lead_4_chiff = note("<~@3 [~@8 e5@3 d#5@4 ~] ~@13 [~ [f#4,c#5,e5]!7] ~@11 [~ [f#4,c#5,e5]!5 ~@2] ~@75>")
  .s("gm_lead_4_chiff").gain(0.44)

// other · pad warm
const pad_warm = note("<~@32 [a#3@3 e3@4 ~] ~@72>").s("gm_pad_warm").gain(0.48)

// other · overdriven guitar
const overdriven_guitar = note("<~@60 [f#4 d#4 f#4 d#4 f#4 d#4 f#4 d#4]!4 ~@41>").s("gm_overdriven_guitar").gain(0.47)

// drums · kick
const kick = s("bd").struct("<~@4 A@12 ~ A@11 ~@4 A@18 ~ A@9 ~@45>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@64 [x!2 ~@2 x!2 ~@2]!35 ~@6>").gain(0.32)

// drums · china
const china = s("cr").struct("<~@64 [~@3 x ~@2 x ~]!35 ~@6>").gain(0.32)

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 A@12 ~ A@11 ~@4 A@18 ~ A@9 ~@45>".pickRestart({
  A: "~ x ~ x",
})).gain(0.32)

// drums · tambourine
const tambourine = s("tb").struct("<~@64 [x!4]!35 ~@6>").gain(0.32)

// drums · cowbell
const cowbell = s("cb").struct("<~@64 [~ x ~ x ~ x ~ x]!35 ~@6>").gain(0.32)

stack(
  lead_1_square, lead_8_bass_lead, lead_4_chiff, pad_warm, overdriven_guitar, kick, snare, china, ride_bell, tambourine,
  cowbell
)

More by Madonna