Strudelify
Music cover art

Music

Music

Madonna

KeyG majorTempo123 bpm
0:00/0:00
// Music — Madonna
// 123 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · fretless bass
const bass = note("<A B@15 C D@51 E ~ A B C D@27 F G@5 H ~@5>".pickRestart({
  A: "~@4 g2!2 ~@2", B: "g2 ~@3 g2!2 ~@2", C: "g2 ~@3 [g1,g2]!2 ~@2", D: "[g1,g2] ~@3 [g1,g2]!2 ~@2", E: "[g1,g2] ~@7",
  F: "[g1,g2] ~@5 [g1,g2]!2", G: "~@2 [g1,g2] ~@3 [g1,g2]!2", H: "~@2 [g1,g2] ~@5",
})).s("gm_fretless_bass").gain(0.8)

// bass · fretless bass · soft notes · G
const bass_soft = note(`<
  ~@68
  [~@4 g2!2 ~@2]
  [g2 ~@3 g2!2 ~@2]
  [g2 ~@7]
  ~@35
  [~@6 [g1,g2]!2]
  [~@2 [g1,g2] ~@3 [g1,g2]!2]!4
  [~@2 [g1,g2] ~@5]
>`).s("gm_fretless_bass").gain(0.4)

// other · pan flute
const pan_flute = note(`<
  ~@24
  [~@8 f5@2 e5@3 ~@3]
  ~
  [~@8 f5@2 e5@3 ~@3]
  [f5@2 e5@3 ~@3 f5@2 e5@3 ~@3]
  [f5@2 e5@3 ~@11]
  ~@83
>`).s("gm_pan_flute").gain(0.56)

// other · pan flute · soft notes
const pan_flute_soft = note("<~@25 [f5@2 e5@3 ~@3 f5@2 e5@3 ~@3] [f5@2 e5@3 ~@11] ~@85>").s("gm_pan_flute").gain(0.16)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@12 A@5 ~@95>".pickRestart({
  A: "[~@56 d6@15 ~@9, ~@8 g4@63 ~@9, ~@24 d5@47 ~@9, ~@40 a5@31 ~@9]/5",
})).s("gm_string_ensemble_1").gain(0.8)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@24 A@5 ~@83>".pickRestart({
  A: "[~@56 d6@15 ~@9, ~@8 g4@63 ~@9, ~@24 d5@47 ~@9, ~@40 a5@31 ~@9]/5",
})).s("gm_string_ensemble_1").gain(0.48)

// bass · fretless bass
const bass_2 = note("<~@16 A B@51 C ~@3 A B@27 D E@5 F ~@5>".pickRestart({
  A: "~@4 g1!2 ~@2", B: "g1 ~@3 g1!2 ~@2", C: "g1 ~@7", D: "g1 ~@5 g1!2", E: "~@2 g1 ~@3 g1!2", F: "~@2 g1 ~@5",
})).s("gm_fretless_bass").gain(0.8)

// bass · fretless bass · soft notes
const bass_soft_2 = note("<~@106 [~@6 g1!2] [~@2 g1 ~@3 g1!2]!4 [~@2 g1 ~@5]>").s("gm_fretless_bass").gain(0.32)

// other · lead 2 sawtooth · "Tout droite réservées"
const lead_2_sawtooth = note("<~@84 A@16 B C D C D C D E ~@4>".pickRestart({
  A: "[~@8 g5@2 ~@2 f6@2 e6@10 c6@3 ~ d6@2 b5@10 g5@2 ~@2 f6@2 e6@10 c6@3 ~ d6@2 b5@10 g5@2 ~@2 f6@2 e6@10 c6@3 ~ d6@2 b5@10 g5@2 ~@2 f6@2 e6@10 c6@3 ~ d6@2 b5@2]/8",
  B: "~@6 g5 ~", C: "f6@2 e6@10 c6@3 ~", D: "d6 b5@5 g5 ~", E: "f6 e6@5 ~@2",
})).s("gm_lead_2_sawtooth").gain(0.72)

// other · lead 2 sawtooth · "Tout droite réservées" · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@107
  [~@12 c6@3 ~]
  [d6 b5@5 g5 ~]
  [f6@2 e6@10 c6@3 ~]
  [d6 b5@5 g5 ~]
  [f6 e6@5 ~@2]
>`).s("gm_lead_2_sawtooth").gain(0.32)

// other · pad halo · "Staff-3"
const pad_halo = note("<~@44 A B@23 C ~@3 A B@27 D E@10 F>".pickRestart({
  A: "~@4 g4!2 ~@2", B: "g4 ~@3 g4!2 ~@2", C: "g4 ~@7", D: "g4 ~@5 g4!2", E: "~@2 g4 ~@3 g4!2", F: "~@2 g4 ~@5",
})).s("gm_pad_halo").gain(0.48)

// drums · kick
const kick = s("bd").struct("<A B@23 C ~@3 A B@71 D E@10 F>".pickRestart({
  A: "~@4 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2", C: "x!2 ~@6", D: "x!2 ~@4 x!2", E: "~@2 x!2 ~@2 x!2", F: "~@2 x!2 ~@4",
})).gain(0.36)

// drums · snare
const snare = s("sd").struct("<~ A@24 ~@4 A@3 B C@2 D E F@6 G B C@6 D A@48 ~ H@11>".pickRestart({
  A: "~ x ~@2", B: "~@4 x ~@3 x ~ x!3 ~ x!2", C: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!2 ~@8",
  E: "~@4 x ~@3 x!8", F: "x!16", G: "x!8 ~@8", H: "~ x",
})).gain(0.26)

stack(
  bass, bass_soft, pan_flute, pan_flute_soft, string_ensemble_1, string_ensemble_1_soft, bass_2, bass_soft_2,
  lead_2_sawtooth, lead_2_sawtooth_soft, pad_halo, kick, snare
)

More by Madonna