Strudelify
Crazy for You cover art

1995 · Something to Remember

Crazy for You

Madonna

KeyE majorTempo96 bpm
0:00/0:00
// Crazy for You — Madonna
// 96 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 11, 4/4 at bar 11, 2/4 at bar 39, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · "Strings"
const string_ensemble_1 = note(`<
  ~ A@6 B@8 C@7 D@3 E@8 F@5 G@8 A@4 H I J K L@6 M@2 N@2 O P Q@2 M@2 A@2 R@3 S@2 T U T V@6 U T A@2 W ~
>`.pickRestart({
  A: "[f#3@7 g#3 a2@3 b2@5, [b3,e4], [e2,b2] [e3,a3]]/2", // E5 A5
  B: "[e3@7 g#3 a2@3 b2@9 f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2, [b3,e4]@5 [b3,e4]@4 [b3,e4]@4 [b3,e4]@3, [e2,b2]@2 [e3,a3]@3 [e2,b2]@2 [e3,a3]@2 [e2,b2]@2 [e3,a3]@2 [e2,b2]@2 [e3,a3]]/8", // E5 A5 E5 A5 E5 A5 E5 A5
  C: "[~@4 f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2@5 [e2,b2,f#3,b3,e4]@4, ~ [b3,e4]@4 [b3,e4]@4 [b3,e4]@4 ~, ~ [e2,b2]@2 [e3,a3]@2 [e2,b2]@2 [e3,a3]@2 [e2,b2]@2 [e3,a3]@2 ~]/7", // Esus2 E5 A5 E5 A5 E5 A5
  D: "[~@3 g#3 [a2,e3,a3,b3,e4]@3 [c3,f#3,g#3,c4,d#4]@5 [g#3,c#4,e4]@3 [f#3,b3,d#4]@2 [g#3,c#4,e4]@3 [a2,g3,b3,d4]@3 [b2,a3,c#4,e4], ~@3 c#3@2 ~]/3", // Asus2 G#7 C#m B C#m G A
  E: "[~@2 [b2,a3,c#4,e4]@2 [b2,a3,c#4,e4]@4 ~@10 c#5@2 d#5@2 e5@2 [g#2,d#3,b3,f#5]@16 e5@12 g#5@4 e3@8 e2@8 [a2,g#5]@16 [g#2,e5]@16 f#2@13 g#2 a2 a#2 b2@8, ~ b4@12 ~@3, ~ [e2,b2,f#3]@2 ~@2 [c#3,g#3,e4]@2 [a3,d4,a5]@2 [e3,b3]@4 [a3,e4,a4,e5]@3]/8", // A G#m7 Amaj7 C#m Esus2 C#m D5 E5 …
  F: "[~@4 f#3@7 g#3 a2@3 b2@5 e3@7 g#3 a2@3 b2@9, ~ [b3,e4]@4 [b3,e4]@5, ~ [e2,b2]@2 [e3,a3]@2 [e2,b2]@2 [e3,a3]@3]/5", // E5 A5 E5 A5
  G: "[f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2@5 f#3@7 g#3 a2@3 b2@5, b4, [b3,e4] [b3,e4] [b3,e4] [b3,e4], [e2,b2] [e3,a3] [e2,b2] [e3,a3] [e2,b2] [e3,a3] [e2,b2] [e3,a3]]/8", // E5 A5 E5 A5 E5 A5 E5 A5
  H: "f#3@7 g#3, [e2,b2,b3,e4]", I: "[a2,e3,a3,b3,e4]@3 [c3,f#3,g#3,c4,d#4]@5",
  J: "[g#3,c#4,e4]@3 [f#3,b3,d#4]@2 [g#3,c#4,e4]@3, c#3", // C#m B C#m
  K: "[a2,g3,b3,d4]@3 [b2,a3,c#4,e4] ~ [b2,a3,c#4,e4] [b2,a3,c#4,e4]@2", // G A
  L: "[~@5 c#5 d#5 e5 [g#2,d#3,b3,f#5]@8 e5@6 g#5@2 e3@4 e2@4 [a2,g#5]@8 [g#2,e5]@8, b4, [e2,b2,f#3] ~ [c#3,g#3,e4] [a3,d4,a5] [e3,b3]@2]/6", // G#m7 Amaj7 C#m Esus2 C#m D5 E5
  M: "[f#2@13 g#2 a2 a#2 b2@16, [a3,e4,a4,e5]]/2", // A5
  N: "[~@5 c#5 d#5 e5 [g#2,d#3,b3,f#5]@8, e4, [e2,b2,b3] ~, f#3@7 ~@9]/2", O: "e5@3 g#5, [c#3,g#3,e4]",
  P: "e3 e2, [a3,d4,a5]", Q: "[[a2,g#5] [g#2,e5], [e3,b3]]/2",
  R: "[e3@7 g#3 a2@3 b2@9 ~@3 g#3, [b3,e4]@5 ~, [e2,b2]@2 [e3,a3]@3 ~]/3", S: "[a2@3 b2@9 ~@3 g#3, [e3,a3]@3 ~]/2",
  T: "a2@3 b2@5, [e3,a3]", U: "~@7 g#3", V: "[e3@7 g#3 a2@3 ~ b2@4, [b3,e4], [e2,b2] [e3,a3]]/2",
  W: "[e2,b2,b3,e4], f#3@7 ~", // E5
})).s("gm_string_ensemble_1").gain(0.8)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B A B A B A C@2 D@12 E@2 F@2 G H I J K L M@2 D@2 N@2 A B A B A B A B A B A B A O P Q R S T U V W X Y R S T U V W X
  Y A B A Z@6 B A Z@6 B A B AA ~
>`.pickRestart({
  A: "e1@2 e1!2 e1@2 e1!2 e1@2 e1!2 e1@2 e1 g#1", B: "a1@2 a1!2 a1@2 b1@4 b1!2 c#2 b1@3",
  C: "[a1@2 a1!2 a1@2 b1@18 e1@2 e1!2 e1@2 e1!2]/2",
  D: "[e1@2 e1!2 e1@2 e1 g#1 a1@2 a1!2 a1@2 b1@4 b1!2 c#2 b1@3 e1@2 e1!2 e1@2 e1!2]/2",
  E: "[e1@2 e1!2 e1@2 e1 g#1 a1@2 a1!2 a1@2 c2@4 c2!2 c2@2 c2!2 c#2@2 c#2!2 c#2@2 c#2!2]/2",
  F: "[c#2@2 c#2!2 c#2@2 c#2 b1 a1@2 a2@2 a2@2 a2@4 b1@2 b2!2 b2@2 e1@2 e1!2 e1@2 e1!2]/2",
  G: "e1@2 e1!2 e1@2 e1 f#1 g#1@2 g#1!2 g#1@2 g#1!2", H: "g#1@2 g#1!2 g#1@2 g#1 b1 c#2@2 c#2!2 c#2@2 c#2!2",
  I: "c#2@2 c#2!2 c#2@2 d#2!2 e2@2 e2!2 e2@2 e2!2", J: "e2@2 e2!2 e2@2 e2!2 a1@2 a1!2 a1@2 a1!2",
  K: "a1@2 a1!2 a1@2 a1!2 g#1@2 g#1!2 g#1@2 g#1!2", L: "g#1@2 g#1!2 g#1@2 g#1!2 f#1@2 f#1!2 f#1@2 f#1!2",
  M: "[f#1@2 f#1!2 f#1@2 g#1 a1 b1@16 e1@2 e1!2 e1@2 e1!2]/2", N: "[e1@2 e1!2 e1@2 e1 g#1 a1@2 a1!2 a1@2 b1@18]/2",
  O: "a1@2 a1!2 a1@2 c2@4 c2!2 c2@2 c2!2", P: "c#2@2 c#2!2 c#2@2 c#2!2 c#2@2 c#2!2 c#2@2 c#2 b1",
  Q: "a1@2 a2@2 a2@2 a2@4 b1@2 b2!2 b2@2", R: "e1@2 e1!2 e1@2 e1!2 e1@2 e1!2 e1@2 e1 f#1",
  S: "g#1@2 g#1!2 g#1@2 g#1!2 g#1@2 g#1!2 g#1@2 g#1 b1", T: "c#2@2 c#2!2 c#2@2 c#2!2 c#2@2 c#2!2 c#2@2 d#2!2",
  U: "e2@2 e2!2 e2@2 e2!2 e2@2 e2!2 e2@2 e2!2", V: "a1@2 a1!2 a1@2 a1!2 a1@2 a1!2 a1@2 a1!2",
  W: "g#1@2 g#1!2 g#1@2 g#1!2 g#1@2 g#1!2 g#1@2 g#1!2", X: "f#1@2 f#1!2 f#1@2 f#1!2 f#1@2 f#1!2 f#1@2 g#1 a1", Y: "b1",
  Z: "[a1@2 a1!2 a1@2 ~@10 e1@2 e1!2 e1@2 e1!2 e1@2 e1!2 e1@2 e1 g#1, ~@3 b1@9 ~@4]/2", AA: "e1",
})).s("gm_electric_bass_finger").gain(0.8)

// other · english horn
const english_horn = note(`<
  ~@5 A@2 B@3 ~@7 C@8 ~@2 D@8 E@3 ~@8 F G F G F H@2 ~@3 I J@2 K L M ~@2 I J@2 K L M N@2 O@4 B@3 ~@13
>`.pickRestart({
  A: "[~@4 g#4@2 ~ b4@19 a4@4 g#4@2, ~@3 a4 ~@12]/2", B: "[f#4@2 e4@17 ~@5]/3",
  C: "[~@4 f#4@7 g#4 a4@7 g#4 f#4@7 g#4 a4@7 g#4 f#4@7 g#4 a4@3 g#4@13 ~@4]/8",
  D: "[~@14 g#4@4 f#4@4 g#4@2 a4@12 g#4@2 a4 b4@17 ~@6 g#5@4 a5@4 g#5@2 e5@16 b4@16 ~@5 a4@2 b4@17, ~@54 g#4 ~@9]/8",
  E: "[~ a4@2 g#4 f#4@2 e4@17 ~]/3", F: "f#4@7 g#4", G: "a4@7 g#4", H: "[a4@3 g#4@13]/2", I: "~@3 g#4@2 f#4@2 g#4",
  J: "[a4@12 g#4@2 a4 b4@17]/2", K: "~@3 g#5@2 a5@2 g#5", L: "e5", M: "b4",
  N: "[~@5 a4@2 b4@19 a4@4 g#4@2, ~@2 g#4 ~@13]/2",
  O: "[f#4@4 ~@33 a4@2 b4@19 a4@4 g#4@2, ~@2 e4@17 ~@13, ~@18 g#4 ~@13]/4",
})).s("gm_english_horn").gain(0.8).pan(0)

// chords · pad new age · "New Age"
const pad_new_age = note("<~@4 A@3 ~@85>".pickRestart({
  A: "[~@8 b5@9 ~@7, ~@7 g#4@8 ~@9, ~@15 [c#5,f#5]@19 ~@14]/3", // F#5
})).s("gm_pad_new_age").gain(0.8)

// chords · orchestral harp · "Harp"
const orchestral_harp = note(`<
  ~ A B A B A B A C ~@8 D ~ D ~ D ~ E F G ~@7 H I J A ~ K ~ K ~ K ~ L M K ~ K ~ K ~ L M ~@16 A B A C A C A C A B A C A C
  A C A B A B ~@2
>`.pickRestart({
  A: "~@2 [b4,e5] ~ [f#4,b4] ~ [c#4,f#4] ~@3 [b4,e5] ~ [f#4,b4] ~ [c#4,f#4] ~", // E5 B5 F#5 E5 B5 F#5
  B: "~@2 [b4,e5] ~ [f#4,b4] ~ [b3,e4] ~ [e4,a4] ~ [b4,e5] ~ [f#4,b4] ~ [e4,a4] ~", // E5 B5 E5 A5 E5 B5 A5
  C: "~@2 [b4,e5] ~ [f#4,b4] ~ [c#4,f#4] ~@9", D: "~@8 e4 ~ b4 ~ e5 ~ b5 ~", E: "~@10 c#5 ~ [e5,g#5] ~ [d#5,f#5] ~",
  F: "~@2 [c#5,e5] ~@5 [b4,d5,a5] ~@5 [c#5,e5,a5] ~", G: "~@2 [b4,b5] ~ [b4,b5] ~@11",
  H: "~@10 [b4,e5] ~ [f#4,b4] ~ [c#4,f#4] ~", // E5 B5 F#5
  I: "~@2 [b4,e5] ~ [f#4,b4] ~ [c#4,f#4] ~@3 [b4,e5] ~ [f#4,b4] ~ [b3,e4] ~", // E5 B5 F#5 E5 B5 E5
  J: "[e4,a4] ~ [b4,e5] ~ [f#4,b4] ~ [e4,a4] ~@3 [b4,e5] ~ [f#4,b4] ~ [c#4,f#4] ~", K: "e4 ~ b4 ~ e5 ~ b5 ~@9",
  L: "~@2 c#5 ~ [e5,g#5] ~ [d#5,f#5] ~@3 [c#5,e5] ~@5", M: "[b4,d5,a5] ~@5 [c#5,e5,a5] ~@3 [b4,b5] ~ [b4,b5] ~@3",
})).s("gm_orchestral_harp").gain(0.8).pan(0)

// chords · overdriven guitar
const overdriven_guitar = note("<~@8 A@2 ~@6 B@8 ~@12 B@8 ~ C ~@31 C ~@14>".pickRestart({
  A: "[~@2 [a2,g#3,b3] [b2,a3,c#4]@9 ~@4]/2", B: "[~@6 [a2,g#3,b3] [b2,a3,c#4]@57]/8", C: "~@2 [a2,g#3,b3] ~@5",
})).s("gm_overdriven_guitar").gain(0.8).pan(0.6)

// chords · electric guitar clean · "Overdriven Guitar"
const electric_guitar_clean = note("<~@17 A@8 B@8 ~@13 C@4 D@2 E F G H I J K G L M N H I J K G L M ~@22>".pickRestart({
  A: "[~@8 b3@32 b3@32 b3@22 c4@10 ~@2 c#3@2 g#3@2 f#3@4 g#3@6 ~ b3@5 ~ c#4, ~@60 [a2,g3]@3 [b2,a3]]/8", // A7 B7
  B: "[~ [b2,a3,c#4]!3 [g#3,b3,e4]@8 [b3,d#4,f#4]@8 [c#4,e4,g#4]@8 [a3,d4,f#4]@8 [b3,e4,g#4]@8 [g#3,b3,e4]@8 [c#4,e4,a4]@8 [c#4,e4,b4]@4]/8", // F#m E B C#m D E A C#m7
  C: "b3/2", D: "[b3@11 c4@5]/2", E: "~ c#3 g#3 f#3@2 g#3@3",
  F: "~ b3@5 ~ c#4@2 ~ [b2,a3,c#4]@2 [b2,a3,c#4]@2 [b2,a3,c#4]@2, [a2,g3]@3 [b2,a3] ~@4", G: "[g#3,b3,e4]",
  H: "[b3,d#4,f#4]", I: "[c#4,e4,g#4]", J: "[a3,d4,f#4]", K: "[b3,e4,g#4]", L: "[c#4,e4,a4]", M: "[c#4,e4,b4]",
  N: "[b3,e4]", // E5
})).s("gm_electric_guitar_clean").gain(0.8).pan(0.6)

// other · electric guitar muted · "Muted Electric Guitar"
const electric_guitar_muted = note("<~@9 A B@13 C@2 D ~@12 B@13 E F G ~@38>".pickRestart({
  A: "~@8 b3 ~ e4!2 f#4!2 e4!2", B: "b3 ~ e4!2 f#4!2 e4!2 b3 ~ e4!2 f#4!2 e4!2",
  C: "[c4 ~ d#4!2 f#4!2 d#4!2 ~@2 c#4@2 [e4,g#4]@2 [d#4,f#4]@4 [c#4,e4]@6 d4@6 e4@2]/2", D: "~ e4!3 ~@4",
  E: "b3 ~ e4!2 f#4!2 e4!2 c4 ~ d#4!2 f#4!2 d#4!2", F: "~ c#4 [e4,g#4] [d#4,f#4]@2 [c#4,e4]@3", G: "d4@3 e4 ~ e4!3",
})).s("gm_electric_guitar_muted").gain(0.17)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A@2 C@2 D C D C D C D C D C D C D C E F@3 G F@3 C@2 D C ~ A B A B A B A B A B A B A B A H F@3 I F@3 A
  F@3 I F@3 A@2 B A@5 H F@3 I F@3 I A B A B ~@2
>`.pickRestart({
  A: "x", B: "x ~@12 x ~@2", C: "~ x", D: "~@5 x ~@2 x ~@7", E: "~ x ~ x!2 ~@3", F: "x!2", G: "x ~@2 x!2 ~@3",
  H: "x ~@4 x ~ x", I: "x ~@3 x ~@2 x",
})).gain(0.8)

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@8 B ~@7 C ~@15 B ~@3 A ~@7 A ~@15 D ~@7 D ~@22>".pickRestart({
  A: "~@7 x", B: "~ x ~@2", C: "~@3 x ~@4", D: "~@3 x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@7 B C A@15 D E@6 F C A@2 G ~ A@15 H E@7 ~ E@7 ~ A@3 I A I A H E@8 A@4 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~ x ~@2 x!4", E: "x!8", F: "x!4 ~@4", G: "~@2 x ~@3 x!2",
  H: "~@2 x ~@2 x ~@2", I: "~@2 x!2 ~@4",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@8 B ~@7 C ~@6 D E ~@7 B ~@3 A ~@7 A ~@7 F ~@7 G ~@7 G ~@7 F ~@14>".pickRestart({
  A: "~@3 x", B: "~ x ~@6", C: "~ x ~@2", D: "~@5 x!3", E: "~ x!3 ~@4", F: "~ x!3 ~ x!3", G: "~@5 x ~@2",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<[~@5 x ~@2] ~@16 [~ x ~@6] ~@19 [~@5 x ~@2] ~@7 [~@5 x ~@2] ~@46>").gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 A ~@3 B ~@15 B ~@6 B@2 ~@3 B A ~@15 A ~@6 A@2 ~@6 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@37 [~ x ~@2] ~@35 [~@3 x] ~ [~@3 x] ~@16>").gain(0.8)

stack(
  string_ensemble_1, bass, english_horn, pad_new_age, orchestral_harp, overdriven_guitar, electric_guitar_clean,
  electric_guitar_muted, kick, snare, low_tom, hihat, mid_tom, high_tom, crash, ride
)

More by Madonna