Strudelify
Take A Bow (1995) cover art

1995 · Something to Remember

Take A Bow (1995)

Madonna

KeyA♭ majorTempo80 bpm
0:00/0:00
// Take A Bow (1995) — Madonna
// 80 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// chords · string ensemble 1 · "Hi Strings"
const string_ensemble_1 = note(`<
  ~ A B C D E B F G H I ~@4 J D K@2 ~@4 L M N O ~ A B C D E B P G H Q R S T U J D K@2 V W X Y L M N O ~ A B C D E B Z ~
  A B C D E B P G H AA AB AC AD AC AD AE ~@2 AF AG@2 C D E B ~@2 A B C D E B P G H AH ~ AI AJ@4
>`.pickRestart({
  A: "eb5 f5 eb5 f5 eb5 f5 eb5 f5", B: "eb5", C: "bb4 c5 bb4 c5 bb4 c5 bb4 c5", D: "bb4",
  E: "bb4 c5 bb4 c5@2 bb4 c5 f5", F: "eb5 f5 eb5@4 ~ ab4", G: "[e4,ab4,eb5]@5 ~ [eb4,ab4,db5]@8 ~@2",
  H: "[eb4,ab4,c5]@7 ab4", I: "[eb4,ab4,b4]@5 ~ [db4,ab4,bb4]@2 ~@8", J: "ab4",
  K: "[b4@3 bb4@3 ~@2 eb4@8, ~@3 ab4@5]/2", L: "[ab4,eb5]", M: "[bb4,f5]@5 ~ ab5 bb5",
  N: "[e5,b5]@3 [eb5,bb5]@3 [db5,ab5]@2", O: "[bb4,eb5]@5 ~@3", P: "[c4,eb4,ab4]@10 ~@2 [c4,eb4,ab4]@3 ~",
  Q: "[eb4,ab4,b4]@5 ~ [db4,ab4,bb4]@6 ~@4", R: "c5 bb4 ab4 bb4 eb5@4", S: "bb4@2 c5@4 ab5@6 c6@3 bb5",
  T: "ab5, a5 ~@15", U: "e5", V: "bb4 c5 bb4 eb5@4 ab4", W: "bb4 c5@2 ab5@3 [eb5,c6]@2", X: "[db5,ab5]", Y: "[ab4,e5]",
  Z: "eb5@2 f5@2 eb5@2 eb4@2 c4@4 [c4,eb4]@3 ~", // Cm
  AA: "[eb4,ab4,b4]@5 ~ [db4,ab4,bb4]@2 ~@4 bb4 [c5,db5] [eb5,f5] [g5,ab5]", AB: "b5@3 bb5@3 ab5@2, bb5 ~@15",
  AC: "ab5@15 ~", AD: "b5@3 bb5@3 ab5@2", AE: "eb5@13 ~@3", AF: "~ [ab4,f5]!2 [f4,eb5]!2 [eb4,c5]!2 [c4,bb4]",
  AG: "[[eb4,c5]@29 ~@3]/2", AH: "[eb4,ab4,b4]@5 ~ [db4,ab4,bb4]@8 ~@2",
  AI: "~ [c5,f5,f6]!2 [bb4,eb5,eb6]!2 [ab4,c5,c6]!2 [f4,bb4,bb5]", // F5 Eb5 Ab Bb5
  AJ: "[~@2 [c5,f5,f6]@2 [c5,f5,f6]@2 [bb4,eb5,eb6]@2 [bb4,eb5,eb6]@2 ~ [ab4,c5,c6]@2 [ab4,c5,c6]@2 [f4,bb4,bb5]@5 ~ [c4,f4,g4,g5]@40 ~@3]/4", // F5 Eb5 Ab Bb5 Csus4
})).s("gm_string_ensemble_1").gain(0.24)

// chords · string ensemble 1 · "Lo Strings"
const string_ensemble_1_2 = note(`<
  ~ A@2 B@3 C D E F G H I J K ~@4 H I J K L M N O ~ A@2 P@2 B C D E F Q H I J K L M R S H I J K L M N O ~ A@2 P@2 B C D
  ~ A@2 P@2 B C D E F G T U T U T V W X ~ A@2 P@2 B C D Y@3 P@2 B C D E F Z@2 ~@2 AA@3
>`.pickRestart({
  A: "[[ab2,eb3,c4]@29 ~@3]/2", B: "[bb2,f3,db4]@13 ~@3", C: "[eb2,bb2,ab3]@13 ~@3", D: "[ab2,eb3,c4]@13 ~@3",
  E: "[e2,ab3]@5 ~ [eb2,ab3]@8 ~@2", F: "[ab2,eb3]@7 ab3", G: "[e2,e3,b3]@5 ~ [eb2,eb3,bb3]@2 ~@8", H: "ab2", I: "gb2",
  J: "f2", K: "e2", L: "eb2@13 ~@3", M: "d2@13 ~@3", N: "db2@5 ~ c2@5 ~ c2@3 ~", O: "bb1@5 ~ eb2@5 ~ eb2@2 ~@2",
  P: "[[bb2,f3,db4]@29 ~@3]/2", Q: "[e2,e3,b3]@5 ~ [eb2,eb3,bb3]@6 ~@4", R: "db2@13 ~@3", S: "gb2@13 ~@3",
  T: "[db2,e3,ab3]@15 ~", U: "[ab2,eb3,c4]@15 ~", V: "[c2,c3,eb3,g3]@4 [f2,db3,eb3,a3]@3 ~", W: "[gb2,db3,bb3]@15 ~",
  X: "[eb2,ab3,bb3]@3 ~@5", Y: "[~@16 [eb3,c4]@29 ~@3, ab2@15 ~]/3",
  Z: "[[e2,e3,b3]@5 ~ [eb3,bb3]@2 ~@24, ~@3 eb2@13]/2", AA: "[~@5 [ab2,eb3]@40 ~@3]/3",
})).s("gm_string_ensemble_1").gain(0.29)

// chords · celesta
const celesta = note(`<
  A B A C D E D F G B H ~@16 A B I C J E J K L B M ~@16 A B I C J E D N A B I C D E D O L B H ~@8 P B I C J E D Q A B I
  C D E D O L B H ~ R S@4
>`.pickRestart({
  A: "~ [ab5,f6]!2 [f5,eb6]!2 [eb5,c6]!2 [c5,ab5]", B: "[eb5,c6]@13 ~@3", C: "[db5,bb5]@13 ~@3",
  D: "~ [ab5,c6]!2 [f5,bb5]!2 [db5,ab5]!2 [db5,f5]", E: "[f5,bb5]@13 ~@3", F: "[eb5,ab5]@13 ~@3",
  G: "eb6@5 ~ db6@5 ~ [ab5,eb6]@3 ~", H: "[eb5,b5]@5 ~ [db5,bb5]@2 ~@8",
  I: "~ [ab5,f6]!2 [f5,eb6]!2 [eb5,c6]!2 [eb5,bb5]", J: "~ [f5,c6]!2 [db5,bb5]!2 [db5,ab5]!2 [db5,f5]",
  K: "[eb5,ab5]@5 ~ eb5@2 c5@2 eb5@2 ab5@3 ~", L: "[ab5,eb6]@5 ~ [ab5,db6]@5 ~ [ab5,eb6]@3 ~",
  M: "[eb5,b5]@5 ~ [db5,bb5]@6 ~@4", N: "[eb5,ab5]@8 c5@3 ~ eb5@3 ~", O: "[eb5,ab5]@5 ~ eb5@2 c5@2 eb5@2 ab5@2 bb5@2",
  P: "~ [ab5,f6]!2 [f5,eb6]!2 [eb5,c6]!2 [c5,bb5]", Q: "[c5,ab5]@13 ~@3",
  R: "~ [c6,f6]!2 [bb5,eb6]!2 [ab5,c6]!2 [f5,bb5]", // F5 Eb5 Ab Bb5
  S: "[~@2 [c6,f6]@2 [c6,f6]@2 [bb5,eb6]@2 [bb5,eb6]@2 ~ [ab5,c6]@2 [ab5,c6]@2 [f5,bb5]@5 ~ [eb5,ab5]@40 ~@3]/4", // F5 Eb5 Ab Bb5 Ab5
})).s("gm_celesta").gain(0.35)

// chords · celesta · soft notes
const celesta_soft = note(`<
  ~@11 A B C D E F G A@2 B C D E F H I ~@11 A B C D E F G A@2 B C D E F H I ~@52
>`.pickRestart({
  A: "[eb5,ab5,bb5]@13 ~@3", B: "[ab5,c6,eb6]@13 ~@3", C: "[f5,ab5,db6]@13 ~@3",
  D: "[ab5,b5,eb6]@5 ~ [e5,ab5,db6]@5 ~ [db5,e5,ab5]@3 ~", E: "[eb5,ab5,c6]@13 ~@3", F: "[d5,f5,bb5]@13 ~@3",
  G: "[e5,b5]@5 ~ [e5,bb5]@5 ~ [eb5,ab5]@3 ~", H: "[e5,ab5,b5]@5 ~ [eb5,ab5,bb5]@5 ~ [eb5,ab5]@3 ~",
  I: "[eb5,ab5,bb5]@5 ~@3", // Ebsus4
})).s("gm_celesta").gain(0.24)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~ A@2 B C B D A E F G H I J K L M N O P Q R S T U V W ~ A@2 B C B D A E F X P Q R K Y Z AA O P Q R S T U V W ~ A@2 B C
  B D AB AC A@2 B C AD AE AF E F G AG AH AG AH AG AI AJ AK ~ A@2 B C B D AB H A@2 B C AD AE AF E F AL AM AC AN@4
>`.pickRestart({
  A: "ab1@5 ~ eb2@5 ~ eb1@3 ~", B: "bb1@5 ~ f2@5 ~ f1@3 ~", C: "bb1@5 ~ f2@5 ~ f1@2 ab1@2",
  D: "eb1@5 ~ ab1@5 ~ eb1@3 ~", E: "e1@5 ~ eb2@5 ~ eb1@3 ~", F: "ab1@5 ~ eb1@6 ab1@3 ~", G: "e1@5 ~ eb1@2 ~@8",
  H: "ab1@5 ~ ab1@8 ~@2", I: "gb1@5 ~ gb1@8 ~@2", J: "f1@5 ~ f1@8 ~@2", K: "e1@5 ~ e1@6 e1@3 ~", L: "eb1@5 ~ eb1@8 ~@2",
  M: "d1@5 ~ d1@8 ~@2", N: "db1@5 ~ db1@8 ~@2", O: "gb1@13 ~@3", P: "ab1@5 ~ ab1@6 ab1@3 ~", Q: "gb1@5 ~ gb1@6 gb1@3 ~",
  R: "f1@5 ~ f1@6 f1@3 ~", S: "e1@5 ~ e1@2 ~@4 e1@3 ~", T: "eb1@5 ~ eb2@6 eb1@3 ~", U: "d1@5 ~ d2@6 d1@3 ~",
  V: "db1@5 ~ c2@6 c1@3 ~", W: "bb1@5 ~ eb2@5 ~ eb1@2 ~@2", X: "e1@5 ~ eb1@6 ~@4", Y: "eb1@5 ~ eb1@6 eb1@3 ~",
  Z: "d1@5 ~ d1@6 d1@3 ~", AA: "db1@5 ~ db1@6 db1@3 ~", AB: "ab1@5 ~ eb2@5 ~ ab1@3 ~", AC: "ab1@13 ~@3",
  AD: "bb1@5 ~ f2@5 ~ bb1@3 ~", AE: "eb1@5 ~ bb1@5 ~ eb1@3 ~", AF: "ab1@5 ~ eb2@4 eb1@2 ab1@3 ~",
  AG: "db1@5 ~ db2@5 ~ db1@3 ~", AH: "ab1@5 ~ ab1@5 ~ ab1@3 ~", AI: "c1@5 ~ f1@5 ~ f1@3 ~",
  AJ: "gb1@5 ~ gb2@5 ~ gb1@3 ~", AK: "eb1@3 ~@5", AL: "e1@5 ~ eb1@8 ~@2", AM: "eb1", AN: "[ab1@20 ~ ab1@40 ~@3]/4",
})).s("gm_acoustic_bass").gain(0.49)

// drums · kick
const kick = s("bd").struct("<~ A@18 B@8 ~ B@26 ~ B@7 ~ B@17 A ~ B@7 ~ B@9 A ~@6>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x ~@2 x ~",
})).gain(0.29)

// drums · rim
const rim = s("rim").struct("<~ [~ x ~ x]!9 [~ x ~@2] [~ x ~ x]!16 ~@79>").gain(0.29)

// drums · snare
const snare = s("sd").struct("<~@28 A@26 ~ A@7 ~ A@17 B ~ A@7 ~ A@9 B ~@6>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<A B@9 C B@15 D B@10 D B@34 D B@7 D B@18 C ~@6>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4", D: "x!7 ~",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A ~ 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 ~@2 A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~@8
>`.pickRestart({
  A: "~@3 x",
})).gain(0.29)

// drums · bongos
const bongos = s("bongo:18").struct("<~ A@9 B A@16 ~ A@26 ~ A@7 ~ A@18 ~ A@7 ~ A@9 B ~@6>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.51)

// drums · congas
const congas = s("conga:18").struct(`<
  ~ A B A B A B A B A C A B A B A B A B A B A B A B A D ~ A B A B A B A B A D A B A B A B A B A B A B A B A B ~ A B A B
  A B A ~ A B A B A B A B A D A B A B A B A D ~ A B A B A B A ~ A B A B A B A B A E ~@6
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", B: "x ~ x!2 ~@2 x ~@3 x ~@3 x ~", C: "x ~ x!2 ~@2 x ~@4 x!2 ~@3",
  D: "x ~ x!2 ~@2 x ~@3 x ~@5", E: "x ~@2 x ~@2 x ~@9",
})).gain(0.62)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A@9 B A@16 ~ A@26 ~ A@7 ~ A@17 B ~ A@7 ~ A@9 C ~@6>".pickRestart({
  A: "~ x!2 ~ x ~@5 x!3 ~@3", B: "~ x!2 ~ x ~@11", C: "~ x!2 ~ x ~ x ~@9",
})).gain(1.23)

stack(
  string_ensemble_1, string_ensemble_1_2, celesta, celesta_soft, bass, kick, rim, snare, hihat, tambourine, bongos,
  congas, cabasa
)

More by Madonna