Strudelify
Bedtime Story cover art

1994 · Bedtime Stories

Bedtime Story

Madonna

KeyG minorTempo112 bpm
0:00/0:00
// Bedtime Story — Madonna
// 112 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "SYN BASS 2" synth bass 2 (copy of ch 2 "ACOU BASS" acoustic bass)
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · rock organ · "ORGAN 3"
const rock_organ = note("<~@7 A@8 B@32 C@4 B@24 C@4 D@8 C@4 E@9 B@15 ~ F@8 C@4 E@4 ~@3>".pickRestart({
  A: "[~@7 g2@12 ~@4 g2@12 ~@4 g2@12 ~@4 g2@5 ~@4]/8",
  B: "~ [f3,a3,d4] ~@2 [f3,bb3]@2 ~@3 [f3,a3,d4] ~@2 [f3,bb3] ~ [f3,bb3] ~", // Dm Bb5 Dm Bb5
  C: "~ [g3,d4,g4] ~@2 [g3,d4,g4]@2 ~@3 [g3,d4,g4] ~@2 [g3,d4,g4] ~ [g3,d4,g4] ~", // G5
  D: "~ [f3,a3,d4,g4] ~@2 [f3,bb3,g4]@2 ~@3 [f3,a3,d4,g4] ~@2 [f3,bb3,g4] ~ [f3,bb3,g4] ~", // Dm Gm7 Dm Gm7
  E: "~ [f3,a3,d4] ~ g3 [f3,bb3]@2 ~@2 g3 [f3,a3,d4] ~ g3 [f3,bb3] ~ [f3,bb3] ~", // Dm Bb5 Dm Bb5
  F: "~ [f3,a3,d4] ~@2 [f3,bb3]!2 ~@3 [f3,a3,d4] ~@2 [f3,bb3] ~ [f3,bb3] ~", // Dm Bb5 Dm Bb5
})).s("gm_rock_organ").gain(0.14)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<~@19 A@11 ~ A@60 B@8 A@16 C D@8 A@8 E ~@2>".pickRestart({
  A: "g2@2 ~ g2 d2@2 f2@2 g2@2 d2@2 c2@2 bb1@2", B: "g2@2 ~ g2 d2@2 f2@2 g2@2 ~ g2 d2@2 f2@2",
  C: "g2@2 ~ g2 d2@2 f2@2 g2@2 ~@6", D: "g2!4 d2!2 f2!2 g2!2 d2!2 c2!2 bb1!2", E: "g2@3 ~@13",
})).s("gm_acoustic_bass").gain(0.42)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@7 A B A B A B C ~@17 D ~ D ~ D ~ D ~ D ~ C ~ D ~ C ~@13 D ~ D ~ D ~ D ~ D ~ C ~ D ~ C ~@17 D ~ D ~ D ~ D ~@16 E@2
  F@8 ~@4 D ~ D ~ D ~@2
>`.pickRestart({
  A: "~@7 g3", B: "[d3,f3,a3]@13 ~@3", C: "~@4 [d3,f3,a3]@3 ~", D: "[d3,f3,a3]@5 ~@3", E: "g3/2", F: "g3!16",
})).s("gm_synth_strings_1").gain(0.2)

// chords · clavinet
const clavinet = note(`<
  ~@8 A ~ A ~ A ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B C D C D C D C D ~@12 C D C E C D C E ~@20 C D C E C D C E ~@4 C D C D
  C D C D C B D B E B D B E F G H G I G H G I G H G I G H G ~@4 B D B E ~@3
>`.pickRestart({
  A: "~@7 [d3,f3,g3]", B: "~@14 [d3,f3,a3] ~", C: "~@14 [d5,f5,a5] ~", D: "~@14 [d5,f5,a5]!2",
  E: "~@12 [d5,f5,a5] ~ [d5,f5,a5] ~", F: "~ [d3,f3,a3] ~@12 [d3,f3,a3]@2", G: "~ [d3,f3,a3] ~@12 [d5,f5,a5]!2",
  H: "~@7 [d3,f3,a3]", I: "~ [d3,f3,bb3] ~@12 [d3,f3,a3]@2",
})).s("gm_clavinet").gain(0.35)

// bass · lead 8 bass lead · "BASS&LEAD"
const bass_2 = note("<A@47 B@4 A@24 B@4 A@8 B@4 ~@8 A@16 ~ C@8 B@4 A@4 ~@3>".pickRestart({
  A: "g1 g2@2 g1 g2@2 g2@2 g1 g2@2 g1 g2 g1 g2@2",
  B: "[g1,g2] [g2,g3]@2 [g1,g2] [g2,g3]@2 [g2,g3]@2 [g1,g2] [g2,g3]@2 [g1,g2] [g2,g3] [g1,g2] [g2,g3]@2", // G
  C: "g1 g2!2 g1 g2!4 g1 g2!2 g1 g2 g1 g2!2",
})).s("gm_lead_8_bass_lead").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@19 A@11 B A@59 B ~@9 A@32 B ~@2>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct(`<
  ~@31 A@8 B C B C B C B C A@20 B C B C B C B C A@16 ~@9 A@8 B C B C B C B ~ B C B C B C B C B C B C A@4 D ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2 x ~@2 x!2 ~ x ~ x ~@2 x", C: "x ~@3 x ~@2 x!2 ~ x ~ x!2 ~@2", D: "x",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<~@15 A@15 ~ A@59 ~ A@24 ~ B@8 A@8 ~@3>".pickRestart({
  A: "x!2 ~@2 x ~@3 x ~@3 x!2 ~@2", B: "x!16",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@15 A@15 ~ A@59 ~ A@24 ~@9 A@8 ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct("<~@30 [x!16] ~@59 [x!16] ~@24 [~@6 x!10] ~@19>").gain(0.35)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@115 [x!6 ~@10] ~@19>").gain(0.14)

// drums · china
const china = s("cr").struct("<~@132 x ~@2>").gain(0.42)

// drums · congas
const congas = s("conga:13").struct("<~@19 A@12 ~@8 A@12 ~@16 A@12 ~@8 A@13 ~@8 A@8 ~@8 A@8 ~@3>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2",
})).gain(1.12)

// drums · congas
const congas_2 = s("conga:18").struct("<~@19 A@12 ~@8 A@12 ~@16 A@12 ~@8 A@13 ~@8 A@8 ~@8 A@8 ~@3>".pickRestart({
  A: "~@3 x ~@3 x",
})).gain(1.12)

// drums · congas
const congas_3 = s("conga:33").struct("<~@19 A@12 ~@8 A@12 ~@16 A@12 ~@8 A@13 ~@8 A@8 ~@8 A@8 ~@3>".pickRestart({
  A: "~@4 x!2 ~@6 x!2 ~@2",
})).gain(1.12)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@23
  [~@2 x ~@3 x ~@3 x ~@3 x!2]!7
  ~
  [~@2 x ~@3 x ~@3 x ~@3 x!2]!59
  ~@10
  [~@2 x ~@3 x ~@3 x ~@3 x!2]!32
  ~@3
>`).gain(2.14)

stack(
  rock_organ, bass, synth_strings_1, clavinet, bass_2, kick, clap, hihat, open_hat, ride, ride_soft, china, congas,
  congas_2, congas_3, cabasa
)

More by Madonna