Strudelify
Fever cover art

1992 · Erotica

Fever

Madonna

KeyA minorTempo120 bpm
0:00/0:00
// Fever — Madonna
// 120 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · "Elec Piano"
const piano = note(`<
  ~@9 A@2 B@2 C@2 B@2 ~@16 D@2 E@2 F@2 E@2 ~@40 G@2 H I G@2 H I ~@4 A@2 B@2 J@2 B@2 ~@16 G@2 H I G@2 H I ~@8 G@2 H I G@2
  H I ~@5
>`.pickRestart({
  A: "[[g3,c4,e4]@29 ~@3]/2", B: "[[a3,d4,f#4]@29 ~@3]/2", C: "[[g3,c4]@28 a4@3 ~, e4@13 ~@3]/2",
  D: "[[g3,a3,c4,e4]@29 ~@3]/2", E: "[[a3,b3,d4,f#4]@29 ~@3]/2", F: "[[g3,a3,c4]@28 a4@3 ~, e4@13 ~@3]/2",
  G: "[[e4,g4,b4]@26 ~@2 [c4,e4,a4]@3 ~]/2", H: "[e4,g4,b4]@13 ~@3", I: "[c4,e4,a4]@13 ~@3",
  J: "[[g3,c4,e4]@26 ~@2 a4@3 ~]/2", // C
})).s("gm_piano").gain(0.48)

// chords · clavinet
const clavinet = note(`<
  A B C B C B C B D ~@7 A E D ~ D ~ D ~@2 E D E D E D E D ~@3 F ~@3 G E D ~ H ~ D ~@2 E D E D E D E D ~@11 I ~@12 E D E
  D E D E A B C B C B C B J B C B K ~@3 L ~@3 G M N M N M N M O ~@29
>`.pickRestart({
  A: "~@15 [d3,f3,a3]", B: "~@7 [f#4,a4,c5] ~@7 [d3,f3,a3]", C: "~@7 [f#4,a4,c5] ~ [f#4,a4,c5] ~@5 [d3,f3,a3]",
  D: "~@7 [f#4,a4,c5] ~ [f#4,a4,c5] ~@3 [f#4,a4,c5] ~@2", E: "~@7 [f#4,a4,c5] ~@8", F: "~@9 a4 c5 a4 d5 ~ e5 ~",
  G: "~ a4 c5 a4 d5 ~ e5 ~ g5 ~ e5 ~ d5 ~ c5 ~",
  H: "~@7 [f#4,a4,c5] ~ [a3,f#4,a4,c5] c4 a3 d4 [f#4,a4,c5] e4 ~, ~@7 c4@2 ~@7", // F#dim
  I: "~@4 a4@2 a4 c5@2 c5 a4@2 g4@2 a4@2", J: "~@7 [c4,f#4,a4,c5] c4 [a3,f#4,a4,c5] c4 a3 ~ [f#4,a4,c5] e4@2, ~@6 d4 ~",
  K: "~ a4 c5 a4 d5 ~ e5 [f#4,a4,c5] g5 [f#4,a4,c5] e5 ~ d5 [f#4,a4,c5] c5 ~", L: "~@9 a4 c5 a4 d5@2 e5@2",
  M: "g4 [a4,d5] ~@5 [f#4,a4,c5] ~@8", N: "g4 [a4,d5] g4 [a4,d5] ~@3 [f#4,a4,c5] ~ [f#4,a4,c5] ~@3 [f#4,a4,c5] ~@2",
  O: "g4 [a4,d5] g4 [a4,d5] ~@12", // D5
})).s("gm_clavinet").gain(0.48)

// other · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
  ~@25 A@3 B A@3 B ~@16 A@3 B A@3 B ~@8 C ~@7 D E F E D E F G ~@44 H@3 I J@3 K L M L N L@2 O@7
>`.pickRestart({
  A: "[b5@15 ~]/3", B: "a5@13 ~@3", C: "[a4,a5] ~ [a4,a5] ~@5", D: "[e3,g3,b3]@15 ~", E: "[f3,a3,c4]@15 ~",
  F: "[f#3,a3,d4]@15 ~", G: "g3 g#3, [b3,d4]@13 ~@3",
  H: "[[e3,g3,b3]@15 ~ [f3,a3,c4]@15 ~ [f#3,a3,d4]@15 ~, b5@15 ~]/3", I: "[f3,a3,c4]@15 ~, a5@13 ~@3",
  J: "[[e3,g3,b3]@15 ~ [f3,a3,c4]@13 ~@3 [f#3,a3,d4]@13 ~@3, b5@15 ~]/3", K: "[f3,a3,c4,a5]@13 ~@3",
  L: "a5 g5@2 g5 e5@2 e5 d5@2 d5 c5@2 d5@2 e5@2", M: "a5 g5@2 g5 e5!2 d5@2 c5@2 d5@2 e5@2 g5@2",
  N: "a5 g5@2 g5 e5!2 d5@2 c5@3 ~ e5@2 g5@2",
  O: "[d5!2 c5@2 d5@2 c5@2 d5@2 e5@2 a4@2 ~@2 [c4,e4]@95 ~, ~@14 a4@97 ~]/7", // C
})).s("gm_synth_strings_1").gain(0.4)

// other · vibraphone · "Vibes"
const vibraphone = note(`<
  ~@25 A@6 B C ~@16 A@6 B C ~@16 A@3 D A@2 B C ~@20 A@3 B A@2 B C ~@8 A@3 B A B@2 ~@8 C ~@13
>`.pickRestart({
  A: "a3@3 ~ f4@2 ~ e4@2 ~ c4@2 ~ d4@2 ~", B: "a3@3 ~ f4@2 ~ e4@3 c4@2 d4@2 e4@2", C: "f4 e4 d4 c4 e4 d4 c4 b3",
  D: "a3@3 ~ f4@2 ~ e4@2 c4 a3@2 a3@3 ~",
})).s("gm_vibraphone").gain(0.48)

// bass · synth bass 2 · "Bass"
const bass = note("<~ A@8 B@15 C A@8 B@15 C A@8 D@14 E ~ F G H G F G H I B@35 J B@7 J@5 B@3 C A@8 ~@5>".pickRestart({
  A: "d2@3 ~ f2@2 ~ f2 g2@2 g2@2 g2@2 a2@2", B: "d2@3 ~ f2@2 ~ f2 g2@2 g2@3 ~ a2@2", C: "d2 ~@7",
  D: "d2@2 d2@2 d2@2 ~ d2 d2@2 d2@2 d2@2 ~ d2", E: "d2@2 d2@2 d2@2 ~ d2 ~@8",
  F: "e2@2 e2@2 e2@2 ~ e2 e2@2 e2@2 e2@2 ~ e2", G: "f2@2 f2@2 f2@2 ~ f2 f2@2 f2@2 f2@2 ~ f2",
  H: "f#2@2 f#2@2 f#2@2 ~ f#2 f#2@2 f#2@2 f#2@2 ~ f#2", I: "g2@2 g2@2 g2@2 ~ g2 g#2@2 g#2@2 g#2@2 ~ g#2",
  J: "d2@3 ~ f2@2 ~ g2@3 g2@3 ~ a2@2",
})).s("gm_synth_bass_2").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ A@23 B A@23 B A@22 C ~ A@43 B A@7 B ~@4 A@3 B A@8 ~@5>".pickRestart({
  A: "x!4", B: "x", C: "x!2 ~@2",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct("<A ~@40 B C@6 ~ C@7 ~ D@14 ~@2 D@8 C@35 ~ C@8 ~@4 C@3 ~ C@7 E ~@5>".pickRestart({
  A: "x!4", B: "~@15 x", C: "x ~@14 x", D: "x ~@6 x!2 ~@6 x", E: "x",
})).gain(0.48)

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

// drums · clap
const clap = s("cp").struct("<~@33 A@7 B ~@30 C B A@8 ~@8 A@11 B A@15 ~@9 A@7 ~ A@8 ~@5>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@7 A ~@39 B ~@83 A ~@5>".pickRestart({
  A: "~@12 x!4", B: "~@9 x ~@2 x!4",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A@7 B A@7 B A@7 ~ A@23 ~ A@7 C A@14 D ~ A@43 ~ A@8 ~@4 A@3 ~ A@7 E ~@5
>`.pickRestart({
  A: "x!2 ~@2 x!2 ~@2 x!2 ~ x!2 ~@3", B: "x!2 ~@2 x!2 ~@6 x ~@3", C: "x!2 ~@2 x!2 ~@2 x ~@3 x ~@3",
  D: "x!2 ~@2 x!2 ~@10", E: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~@3",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@7 A ~@39 B ~@83 A ~@5>".pickRestart({
  A: "~@8 x!4 ~@4", B: "~@9 x!3 ~@4",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~ A@15 B A@7 ~ A@23 ~ A@7 C A@14 D ~ A@43 ~ A@8 ~@4 A@3 ~ A@8 ~@5>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~@5 x", C: "~ x ~ x!3 ~ x", D: "~ x ~ x ~@4",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@8 A ~@7 A ~@39 A ~@83 A ~@5>".pickRestart({
  A: "x!8 ~@8",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@7 A ~@23 A ~@15 A ~@7 A ~@7 A ~@35 A ~@28>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · bongos
const bongos = s("bongo:18").struct("<~@57 A@14 ~@9 B ~@8 A@11 C A@15 ~@13 A@3 ~ A@7 D ~@5>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@4 x ~@4 x ~", D: "~@4 x ~@4 x ~@6",
})).gain(1.05)

// drums · congas
const congas = s("conga:13").struct("<~@57 A@8 B@6 C ~@8 D ~@8 A@11 E A@15 F ~@12 A@3 F A@7 G ~@5>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~ x ~ x ~ x", C: "~ x ~@6", D: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~",
  E: "~@2 x ~@5 x ~@2 x!2 ~@3", F: "x", G: "~@2 x ~@5 x ~@2 x!2 ~ x ~",
})).gain(1.28)

stack(
  piano, clavinet, synth_strings_1, vibraphone, bass, kick, rim, snare, clap, low_tom, pedal_hat, mid_tom, open_hat,
  high_tom, crash, bongos, congas
)

More by Madonna