Strudelify
Rescue Me cover art

1991 · Rescue Me

Rescue Me

Madonna

KeyE♭ minorTempo116 bpm
0:00/0:00
// Rescue Me — Madonna
// 116 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/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 · electric bass finger · "tk2"
const bass = note(`<
  ~ A B C B D B C B D B C B D B C B A B C B D B C B D B C B D B C B A B C B D B C B D B C B A B C B A B C B D B C B D B
  C B A B C B E F E F E F G@2 ~ D B C B A B C B D B C B D B C B A B C B A B C B D B C B D B C B A B C B D B C B ~@8
>`.pickRestart({
  A: "eb1@2 db1 ~ db1@2 eb1@2 bb0 ~@2 bb0 db1@2 bb0 ~", B: "eb1@2 db1 ~ db1@2 eb1@2 bb0 ~ bb0 db1 ~ bb0 db1@2",
  C: "eb1@2 db1 ~ db1@2 eb1@2 bb0@2 ~ bb0 db1@2 bb0@2", D: "eb1@2 db1 ~ db1@2 eb1@2 bb0 ~@2 bb0 db1@2 bb0@2",
  E: "b0 ~ b0 ~ b0 ~ b0@2 bb0 ~@2 bb0 ab0@2 bb0@2", F: "eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 db1 eb1 db1 eb1@2",
  G: "ab1 ~ ab1 ~ ab1 ~ ab1 gb1 ab1 ~ ab1 ~ ab1 ~ ab1 gb1",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · piano · "tk3"
const piano = note(`<
  ~@5 A B C D E B C D ~@4 F@2 G@2 F@2 H@2 I@2 G@2 F@2 H@2 ~ J K L M N C D F@2 G@2 F@2 H@2 O@2 G@2 F@2 H@2 P Q@3 R@4 S T
  S U V@5 W Q@3 R@4 W Q@3 X@8 ~@4 W J K L M N C D Y J K Z AA AB C D ~@8
>`.pickRestart({
  A: "[bb3,eb4], gb4@7 ~, eb2 ~@3", B: "[ab3,db4,f4]@15 ~", C: "[ab3,db4,eb4]", D: "[ab3,c4,eb4]@7 ~",
  E: "[bb3,eb4,gb4]", F: "[[ab3,c4,eb4]@13 ~ [ab3,c4,eb4]@2]/2", G: "[[gb3,bb3,eb4]@25 ~@3 [gb3,bb3,eb4]@4]/2",
  H: "[[gb3,bb3,eb4]@27 ~ [gb3,bb3,eb4]@4]/2", I: "[[ab3,c4]@13 ~ [ab3,c4,eb4]@2]/2", J: "[gb3,bb3,db4]@15 ~",
  K: "[ab3,db4,eb4]@15 ~", L: "[ab3,eb4]@7 ~, c4", M: "[gb3,bb3,eb4]@7 ~", N: "[bb3,db4,eb4]@7 ~",
  O: "[[ab3,c4]@13 ~ [ab3,c4,eb4]@2, eb4 ~@31]/2", P: "[bb3,eb4] ~@15, gb3",
  Q: "[[bb3,db4]@15 ~ [ab3,db4,eb4]@15 ~ [ab3,eb4]@14 ~@2, gb3, ~@2 c4]/3", // Bbm Absus4 Ab5
  R: "[[bb3,eb4]@7 ~ [bb3,db4,eb4]@7 ~ [ab3,db4,eb4]@8 [ab3,c4,eb4]@7 ~, gb3]/4", // Eb5 Eb7 Absus4 Ab
  S: "[bb3,eb4]@7 ~ [f3,ab3,db4]@7 ~, gb3", // Eb5 Db
  T: "[bb3,db4,eb4]@8 ~@2 [bb3,db4,eb4,gb4]@3 ~ eb3@2, gb3, eb2@10 ~@3 [ab3,db4,f4]@3", // Eb7 Ebm7 Db
  U: "[bb3,eb4]@9 ~ [f3,ab3,db4]@3 [gb3,bb3,eb4]@3, gb3@13 ~@3, ~@9 eb2@5 ~@2", // Eb5 Db Ebm
  V: "[[bb3,eb4]@8 [ab3,db4]@8 [bb3,db4,eb4]@9 ~ [bb3,db4,eb4]@3 [bb3,db4,eb4]@3 [ab3,b3,eb4]@26 ~@22, gb3, ~@4 f3@3 ~@33]/5", // Eb5 Db5 Eb7 Abm
  W: "[gb3,eb4], bb3@7 ~", X: "[[bb3,eb4]@7 ~ [bb3,db4,eb4]@7 ~ [ab3,db4,eb4]@8 [ab3,c4,eb4]@7 ~@33, gb3]/8",
  Y: "[gb3,bb3]@7 ~, eb4", Z: "[ab3,c4,eb4]@15 ~", AA: "[bb3,eb4]@7 ~", AB: "[gb3,bb3,db4,eb4]@15 ~",
})).s("gm_piano").gain(0.12)

// chords · pad metallic · "tk5"
const pad_metallic = note(`<
  ~@13 A@2 B@2 C@2 D@2 C@2 E@2 F@2 D@2 C@2 E@2 G@2 B@2 G@2 B@2 C@2 D@2 C@2 E@2 C@2 D@2 C@2 H@2 G@2 B@2 G@2 B@2 I@2 J@4
  K@2 ~ G@2 B@2 G@2 B@2 L@2 B@2 L@2 B@2 ~@8 G@2 B@2 L@2 B@2 L@2 B@2 L@2 B@2 ~@8
>`.pickRestart({
  A: "[[gb4,eb5] [gb4,db5], bb4]/2", B: "[db5@16 c5@13 ~@3, ab4@7 ~]/2", C: "[[ab3,bb3,eb4]@15 ~, c4]/2",
  D: "[[bb3,db4,eb4]@31 ~]/2", E: "[[gb3,bb3,db4,eb4]@29 ~@3]/2", F: "[[ab3,bb3,eb4]@15 ~]/2", G: "[eb5 db5, bb4]/2",
  H: "[[gb3,db4,eb4]@29 ~@3]/2", I: "[eb4@4 f4@3 gb4@9]/2", J: "[eb4@7 f4@8 gb4@11 [ab4,db5]@35 ~@3]/4",
  K: "[[eb4,gb4]@15 ~]/2", L: "[eb5 [gb4,db5], bb4]/2",
})).s("gm_pad_metallic").gain(0.15)

// chords · pad metallic · "tk5" · soft notes
const pad_metallic_soft = note(`<
  ~@15 A@2 ~@2 B@2 ~@6 B@2 ~@6 A@2 ~@2 A@2 ~@2 B@2 ~@6 B@2 ~@6 A@2 ~@2 A@2 ~@9 C ~ A@2 ~@6 A@2 C ~ A@2 ~@10 A@2 ~@2 A@2
  ~@2 A@2 ~@2 A@2 ~@8
>`.pickRestart({
  A: "[eb4@7 ~]/2", B: "[gb3@15 ~]/2", C: "gb4@15 ~",
})).s("gm_pad_metallic").gain(0.05)

// chords · pad bowed · "tk6"
const pad_bowed = note("<~@20 A B@2 ~@45 C@3 ~@51>".pickRestart({
  A: "~ [gb4,db5], ~@4 ab4@3 ~", B: "[[eb4,ab4,c5]@27 ~@5]/2", C: "[~@5 [ab4,db5]@15 ~@4]/3",
})).s("gm_pad_bowed").gain(0.25)

// other · whistle · "tk7"
const whistle = note(`<
  ~@2 A B C D ~ E ~ F G@2 H I J K L M ~@14 N I J K L O P Q@2 M ~@2 R@3 ~@10 S T U V W X Y Z AA ~@7 AB I J K L O P Q@2 AC
  AD AE AF AG AH AI@2 AJ AK AJ AL AJ AM AJ AN I J K L O P Q@2 AC AD AE AF AG AH AO AP@8 ~
>`.pickRestart({
  A: "~@14 db5!2", B: "db5 eb5 ~@14", C: "~@14 db4!2", D: "db4 eb4 ~@14",
  E: "eb4 gb4 ab4 ~ bb4 db5 eb5 ~ gb5 ab5 bb5 ~ db6 eb6 gb6 ~", F: "~@6 db5 eb5 gb5@2 eb5 db5 ~@4",
  G: "[~@12 ab4 gb4 eb4@4 ~@8 bb4 ~ a4 ab4 ~@2]/2", H: "ab4@2 gb4 eb4 ~@12",
  I: "eb5@3 ~ db5 eb5 gb5 ~ eb5 gb5 ab5 ~ gb5 ab5 bb5 ~", J: "ab5 bb5 db6 ~ bb5 db6 eb6@5 ~@5",
  K: "~@12 gb6 eb6 db6 gb6", L: "eb6 db6 ~@8 ab6@2 ~ gb6@3", M: "eb6@15 ~",
  N: "~@4 eb4 gb4 ab4 ~ ab4 ~ db5 ~ eb5 [gb5,ab5] ~@2", O: "eb6@7 ~@5 db5 eb5 gb5 ~",
  P: "eb5 gb5 ab5 ~ gb5 ab5 bb5 ~ ab5 bb5 db6 ~@2 db6 gb6 ~", Q: "[eb6@23 ~@6 gb6@3, ~@13 ab6@3]/2", R: "[~ c5@2 ~]/3",
  S: "eb5@8 ~@4 ab5 bb5 db6 ~", T: "bb5 db6 eb6 ~ db6 ~ gb6 ~@9", U: "~@10 eb6 ~@2 db6 ~@2",
  V: "~@13 gb6@2 ~, ~@10 ab6@5 ~", W: "eb6@13 ~@3", X: "db5 ~ gb5 ~ eb5 gb5 ab5 ~ gb5 ab5 ~@2 ab5 bb5 db6 ~",
  Y: "eb6@7 ~@9", Z: "gb6@3 eb6 db6 eb6 db6 ~ ab5 db6 bb5 ab5 ~@2 ab5 eb5", AA: "eb6 ~@3",
  AB: "db5 eb5 gb5 ~ eb5 gb5 ab5 ~ gb5 ab5 bb5 ~ ab5 bb5 db6 eb6", AC: "eb6@6 ~@3 ab5 bb5 ~ ab5 bb5 db6 ~",
  AD: "bb5 db6 eb6 ~ db6 ~ gb6 ~ eb6 gb6 ab6@4 ~@2", AE: "~@14 eb6!2", AF: "db6 eb6 ~@8 ab6@2 ~ gb6@3",
  AG: "eb6@9 ~@3 db5 eb5 gb5 ~", AH: "eb5 gb5 ab5 ~ gb5 ab5 bb5 ~ ab5 bb5 db6 ~@2 db6 eb6 ~",
  AI: "[~ eb6@21 ~@4 ab6@2 ~ gb6@3]/2",
  AJ: "~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [c5,eb5,gb5]@3 ~@2", // Ebm7 Cdim
  AK: "~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [c5,eb5,gb5]@3 [eb5,ab5]@2", // Ebm7 Cdim Ab5
  AL: "~@2 [eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [c5,eb5,gb5] ~@2 [ab5,db6]@2", // Ebm Ebm7 Cdim Db5
  AM: "~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [db5,eb5,gb5] ~@2 [c5,eb5,gb5]@3 [eb5,ab5] ~", // Ebm7 Cdim Ab5
  AN: "eb6 db6 bb5 ab5 db6 bb5 ab5 gb5 bb5 ab5 gb5 eb5 ab5 gb5 eb5 db5", AO: "~ eb6@15", AP: "[~@10 ab6@2 ~ gb6@115]/8",
})).s("gm_whistle").gain(0.1)

// other · whistle · "tk7" · soft notes
const whistle_soft = note(`<
  ~@11 A ~@20 B ~@5 C ~@19 D ~@3 E F G ~@14 C ~@2 H I ~ J ~ C K ~@4 L ~@9 C ~@2 H I ~ J ~ C K ~@9
>`.pickRestart({
  A: "~@14 gb4 eb4", B: "~@9 bb4 ~@6", C: "~@12 bb5 ~@3", D: "~@5 eb6 ~@2 eb6@4 ~@4", E: "~ eb5 ~@8 bb5 ~@5",
  F: "~@15 eb6", G: "~@5 bb5 ~@2 bb5 ~@3 gb5 bb5 ~ gb5", H: "~@8 gb5 ~@7", I: "~@5 eb6 ~@10", J: "~@3 eb6 ~@12",
  K: "db6 ~@15", L: "~@2 db5 ~@13",
})).s("gm_whistle").gain(0.06)

// chords · orchestra hit · "tk8"
const orchestra_hit = note(`<
  ~@13 A ~@19 A ~@3 A ~@3 A ~@15 A ~@3 A ~@3 A ~@7 B A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 C ~@11
>`.pickRestart({
  A: "[bb5,eb6] ~@7", B: "[eb5,bb5,db6,eb6] ~@7", C: "eb6 ~@7",
})).s("gm_orchestra_hit").gain(0.28)

// other · string ensemble 1 · "tk9"
const string_ensemble_1 = note(`<
  ~@5 A@2 B@2 A@2 B@2 A@2 B@2 ~@8 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 ~@8 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@9 A@2 B@2 A@2
  B@2 A@2 B@2 A@2 B@2 ~@8 A@2 B@2 A@2 B@2 A@2 B@2 A@2 C D@8 ~
>`.pickRestart({
  A: "[eb6@7 db6]/2", B: "[eb6@7 gb6]/2", C: "eb6", D: "[~@3 gb6@29]/8",
})).s("gm_string_ensemble_1").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@7 [x!4]!66 ~ [x!4]!16 x!8 [x!4]!16 ~@8>").gain(0.3)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!4 [~@3 x]!85 [~ x ~ x]!7 ~ [~@3 x]!16 ~@8>").gain(0.25)

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

// drums · clap
const clap = s("cp").struct("<~@5 [~ x ~@2]!85 ~@8 [~ x ~@2]!16 ~@8>").gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!3 ~ x!3 ~]!113 ~@8>").gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ [~ x ~ x ~@7 x ~@4]!113 ~@8>").gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@3 x ~@3 x]!113 ~@8>").gain(0.2)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A B A C A B A C A B A C A B A C ~@8 A B A C A B A C A B A C A B A C ~@8 A B A C A B A C A B A C A B A C A B A C A B
  A C@2 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A D ~@8
>`.pickRestart({
  A: "x ~@4 x!4 ~@4 x!3", B: "x ~@5 x!3 ~@4 x!3", C: "x ~@5 x!3 ~@4 x ~ x", D: "x ~@5 x!3 ~@4 x ~@2",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@8 A ~@3 A ~@3 A ~@3 A ~@3 A ~@7
  A ~@3 A ~@3 A ~@3 A ~@11
>`.pickRestart({
  A: "x",
})).gain(0.25)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A@2 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@8
>`.pickRestart({
  A: "~@9 x ~ x ~@4",
})).gain(1.73)

// drums · triangle
const triangle_2 = s("triangles:35").struct(`<
  ~ A@2 B A@3 B A@3 B A@3 B A ~@8 A@2 B A@3 B A@3 B A@3 B A ~@8 A@2 B A@3 B A@3 B A@3 B A@3 B A@3 B A@4 B A@3 B A@3 B
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A ~@8
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@2 x ~@4",
})).gain(1.73)

// drums · triangle · soft notes
const triangle_soft = s("triangles:35").struct(`<
  ~@3 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@9
>`.pickRestart({
  A: "~@3 x",
})).gain(0.86)

stack(
  bass, piano, pad_metallic, pad_metallic_soft, pad_bowed, whistle, whistle_soft, orchestra_hit, string_ensemble_1,
  kick, rim, snare, clap, hihat, hihat_soft, open_hat, tambourine, crash, triangle, triangle_2, triangle_soft
)

More by Madonna