Strudelify

Hot Hot Hot!!!

The Cure

KeyA minorTempo112 bpm
0:00/0:00
// Hot Hot Hot!!! — The Cure
// 112 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 121 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(112/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet · "Trumpet -1"
const trumpet = note("<~@96 A B A B A B A B A B A B A B A B ~@9>".pickRestart({
  A: "a4 ~ c5 ~ e5 ~ c5 d5 ~ d5 ~ c5 d5 ~ e5 ~", B: "a4 ~ c5 ~ e5 ~ c5 d5 ~@8",
})).s("gm_trumpet").gain(0.51)

// other · electric guitar clean · "Rhythm Guitar"
const electric_guitar_clean = note(`<
  ~@11 A B C B C B C B D B C B E ~@11 A B D B F ~@3 A B D B C B D B E ~@20 B D B C B D B E ~@23 A B D B C B D B D B D B
  C B D B F ~
>`.pickRestart({
  A: "~@28 g3!2 g3@2", B: "g3@4 a3@2 ~@2 a3@2 g3@2 ~@2 g3@6 a3@2 ~@2 a3@2 ~@2 g3!2 g3@2",
  C: "g3@4 a3@2 ~@2 a3@2 g3@2 ~@2 g3@6 a3@2 ~@2 d3@2 ~@2 g3!2 g3@2",
  D: "g3@4 a3@2 ~@2 a3@2 g3@2 ~@2 c4@6 d4@2 ~@2 c4@2 ~@2 g3!2 g3@2", E: "g3@2 a3 ~ a3 g3 ~ c4@3 d4 ~ c4 ~@3",
  F: "g3@2 a3 ~ a3 g3 ~ g3@3 a3 ~ d3 ~@3",
})).s("gm_electric_guitar_clean").gain(0.46)

// bass · slap bass 1 · "Bass"
const bass = note(`<
  ~@15 A B C B C B C B C ~@8 B C B C B C B C B C B C B C B C B C B C D E D E D E D E B C B C B C B C B C B C B C B C B C
  B C D E D E D E D E B C B C ~@4 B C B C B C B C B C B C B C B C B C B C B C B C F
>`.pickRestart({
  A: "~@22 a2 c3 e3@4 c3@4", B: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@4 a2 g2", C: "f2 ~ f2 ~ a2 ~ a2 ~ c3 ~ c3 ~ d3 e3@3",
  D: "d3@2 ~@2 d3@2 ~@2 d3@2 ~@4 c3 d3", E: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ g3 a3@3", F: "e2",
})).s("gm_slap_bass_1").gain(0.64)

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

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@11 A ~@7 A ~@11 A ~@15 A ~@7 A ~@7 A ~@11 A ~@7 A ~@7 A ~@11 A ~@11 A ~@4 B
>`.pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.8)

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

// drums · cowbell
const cowbell = s("cb").struct("<~@40 A@3 B ~@24 A@3 B ~@40 A@7 B ~>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~@6",
})).gain(0.64)

stack(trumpet, electric_guitar_clean, bass, kick, snare, hihat, open_hat, crash, cowbell)

More by The Cure