Strudelify

Open Your Heart

Madonna

KeyB♭ majorTempo115 bpm
0:00/0:00
// Open Your Heart — Madonna
// 115 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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 · piano · "Harmony"
const piano = note(`<
  A B C D A B C D E F@2 G H I J G K L M N H I O P Q R S T U V W X U V W Y A B E F@2 G H I J G K L M N Z I O P AA R AB T
  U V W X U V W Y AC AD AE AF AG@2 AH AI AJ AK C D AJ AL C D AA R AB T U V W X U V W AM AN B AO@2 AJ AK AJ AK AJ AK AJ
  AK AP@2
>`.pickRestart({
  A: "[g4,a4,c5,f5]@3 [g4,a4,c5,f5] f4@4 c5@4 f5@4", B: "[g4,bb4,c5,eb5,f5] d5 bb4 c5",
  C: "[g4,a4,c5,f5] bb5 a5 f5 eb5@2 ~ bb5", D: "[c5,f5,a5] f5 eb5 c5 [g4,bb4,eb5]@2 [f4,bb4,d5]@2",
  E: "[f4,g4,c5]@3 c5!5, ~@3 [f4,g4]@4 ~", // Fsus2
  F: "[[eb4,f4,d5]@2 d5 bb4!3 c5 c5@3 d5@2 ~@4, ~@4 [eb4,f4]@3 [f4,g4]@6 ~@3]/2", G: "[eb4,f4,bb4]@3 ~",
  H: "[f4,g4,c5]@3 c5!5, ~ [f4,g4]", I: "d5@4 c5@4 bb4@3 bb4@3 bb4@2, [eb4,f4]!2", J: "c5@2 c5@3 bb4 a4@8 ~@2, [f4,g4]",
  K: "[bb3,d4,f4]@4 ~ f4!3, ~ [bb3,d4]", L: "ab4 g4 eb4 f4, [c4,eb4] c4",
  M: "[bb3,d4]@3 d4 ~ f4!3, f4@4 d4@3 ~, ~@3 bb3@4 ~", N: "[eb4,ab4]@3 g4@3 eb4@2 [eb4,ab4]@3 g4@3 eb4@2, c4!2",
  O: "c5@2 c5@3 bb4 a4@4 ~@6, [f4,g4]", P: "[bb3,eb4,f4]@3 ~", Q: "d4@3 d4@3 d4@2 e4@4 e4@4, [f3,bb3] [f3,bb3,c4]",
  R: "f4@3 e4@3 c4@2 d4@4 [c4,e4]@2 c4@2, [a3,c4]@3 ~@5", S: "d4@3 d4@3 d4@2 e4@4 e4@4, [f3,bb3] [g3,c4]",
  T: "f4@3 f4@3 d4@2 [c4,f4]@4 [c4,e4,g4]@4, [bb3,d4]@3 ~@5", U: "a4@3 a4@3 a4@2 [d4,f4,bb4]@4 a4@2 g4@2, [c4,f4] ~",
  V: "[c4,e4,g4]@2 [bb3,d4,f4] [c4,e4,g4]", W: "a4@3 a4@3 a4@2 bb4@4 a4@4, [c4,f4] [d4,f4]",
  X: "[c4,e4,g4]@3 g4@3 a4@4 f4@2 [f4,bb4,c5]@4, ~@3 [bb3,d4]@3 ~@2", Y: "[c4,e4,g4]@8 a4@3 g4@3 f4@2, ~ c4",
  Z: "[f4,g4,c5]@3 ~ c5!4, ~ [f4,g4]", AA: "d4@3 d4@3 d4@2 e4@4 e4@2 e4@2, [f3,bb3] [f3,bb3,c4]",
  AB: "d4@3 d4@3 d4@2 e4@4 e4@2 e4@2, [f3,bb3] [g3,c4]", AC: "[bb3,eb4,f4]",
  AD: "g4 c5 g4 f4 c4 g4 f4@2, [c4,f4]@3 ~@5", AE: "bb4@3 bb4@3 bb4@2 [c4,f4,bb4]@4 a4@2 g4@2, [c4,f4] ~",
  AF: "eb4!2 f4 eb4 bb3 f4 eb4@2, [f3,bb3] ~", // Bb5
  AG: "[bb4!2 a4 bb4 a4 g4 f4 f4@2 g4@3 c4 bb4 a4 f4, [c4,f4]@4 ~@3 c4@4 ~@5]/2", AH: "~ [f3,bb3,d4] ~ [g3,c4,e4]",
  AI: "~ [bb3,d4,g4] ~ [a3,c4,f4]", AJ: "[g4,a4,c5,f5]@3 [g4,a4,c5,f5]@3 g5@2 a5@4 ~@4",
  AK: "[f4,g4,bb4,c5,eb5]@3 eb5@3 f5@2 g5@2 f5@2 f5@4", AL: "[f4,g4,bb4,c5,eb5]@3 eb5@3 f5@2 g5@3 f5@3 f5@2",
  AM: "[c4,e4,g4]@8 a4@3 f4@3 f4@2, ~ c4", AN: "[g4,a4,c5,f5] f4 c5 f5",
  AO: "[bb4@3 bb4@3 bb4@2 bb4@3 f4 eb4@2 eb4@4 eb4@6 [g4,bb4,eb5]@4 [f4,bb4,d5]@4]/2", // Eb Bb
  AP: "[[g4,a4,c5,f5] [g4,a4,c5,f5]@8 ~@7]/2", // F
})).s("gm_piano").gain(0.64)

// bass · acoustic bass · "Bassline"
const bass = note(`<
  A B A B A B A B A B A B A B A B C D C D A B A B C E C F G H I J G H I J A B A B A B A B A B C D C D A B A B C E C F G
  H I J G H I J K L M K N O C P A B A Q A B A B C E C F G H I J G H I R A B A B A B A B A B A B S ~
>`.pickRestart({
  A: "f2!16", B: "eb2!8 g2!8", C: "bb2!16", D: "ab2!8 c3!8", E: "d3!16", F: "g2!8 a2!4 c3!4", G: "d2!8 g2!8",
  H: "c3!8 g2!4 a2!2 c3!2", I: "d2!8 bb2!8", J: "c3!8 bb2!8", K: "eb2!8 eb2@8", L: "f2!8 f2@8", M: "g2!8 g2@8",
  N: "c2!8 c2@8", O: "d2!8 d2@8", P: "g2!12 c3!4", Q: "c2!8 g2!8", R: "c3!16", S: "f2 f2@15",
})).s("gm_acoustic_bass").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@8 [x!4]!85 x [x!4]!11 x ~@2>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [x!2]!85 x [x!2]!11 x ~@2>").gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@8 [x ~ x!6]!85 x [x ~ x!6]!11 x ~@2>").gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@8 [~ x ~ x]!85 ~ [~ x ~ x]!11 ~@3>").gain(0.32)

stack(piano, bass, low_tom, open_hat, high_tom, crash)

More by Madonna