Strudelify

Feel the Heat of the Night

Masterboy

KeyA minorTempo139 bpm
0:00/0:00
// Feel the Heat of the Night — Masterboy
// 139 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139/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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@17 A B C D A B C D E@7 F G H G H G H G H ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D E@7 F G H
  G H G H G H ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@3
>`.pickRestart({
  A: "a1@2 a2!2 a1@2 a2!2 a1@2 a2!2 a1@2 g2@2", B: "e1@2 e2!2 e1@2 e2!2 e1@2 e2!2 e1@2 e2@2",
  C: "g1@2 g2!2 g1@2 g2!2 g1@2 g2!2 g1@2 g2@2", D: "d1@2 d2!2 d1@2 d2!2 d1@2 d2!2 d1@2 d2@2",
  E: "a1@2 a2!2 a1@2 a2!2 a1 ~ a2!2 a1@2 a2!2", F: "a1@2 a2 a1@3 a2!2 a1 ~ a2!2 a1@2 a2!2",
  G: "a1@2 a2!2 a1@2 a2!2 a1@2 a2!2 g1@2 g2!2", H: "e1@2 e2!2 e1@2 e2!2 e1@2 e2!2 g1@2 g2!2",
})).s("gm_fretless_bass").gain(0.52)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  A B C D C B C E@2 F@2 G@2 F@2 H I ~@24 A B C D C B C E@2 F@2 G@2 F@2 H I ~@32 J B C D C B C E@2 F@2 G@2 F@2 H I ~@15 A
  K L M
>`.pickRestart({
  A: "~@12 d4 ~ d4 ~", B: "d4@2 e4@2 d4@2 e4@3 ~@5 g4@2", C: "~@2 g4@2 f#4@2 e4@2 d4@2 ~@2 d4 ~ d4 ~",
  D: "d4@2 e4 ~ e4@2 d4@2 e4@3 ~@3 g4@2", E: "[d4@2 e4 ~ e4@2 d4@2 e4@3 ~@3 g4@4 e4 ~ g4@2 e4 ~ g4@2 a4@5 ~]/2",
  F: "[e4@4 g4 ~ g4@4 e4@3 ~ g4@4 e4@3 ~ g4@4 a4@3 ~@3]/2", G: "[e4@4 g4 ~ g4@4 e4@3 ~ g4@4 e4@4 d4@4 c4@3 ~@3]/2",
  H: "e4@4 g4 ~ g4@4 e4@3 ~ c5@2", I: "~ b4@2 a4@5", J: "~@14 d4 ~", K: "d4 e4 d4 e4 ~ e4 ~ e4",
  L: "~ e4@2 ~@2 e4@2 ~@2 e4@2 ~@2 e4@2 ~", M: "e4 ~ e4 ~@5",
})).s("gm_synth_brass_1").gain(0.37)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note("<A@6 B@16 C@3 ~@16 D@6 E@8 F@8 B@8 C@3 ~@16 D@6 E@8 F@8 B@8 G@6>".pickRestart({
  A: "[~@15 [a3,c4,e4]@16 [g3,b3]@16 [g3,b3,d4]@16 [f3,a3,d4]@16 [a3,c4,e4]@16 [g3,b3,e4], ~@31 e4 ~@64]/6", // Am G Dm Am Em
  B: "[~@15 [g3,b3,d4]@16 [f3,a3,d4]@16 [a3,c4,e4]@16 [g3,b3]@16 [g3,b3,d4]@16 [f3,a3,d4]@16 [a3,c4,e4]@16 [g3,b3,e4], ~@63 e4 ~@64]/8", // G Dm Am G Dm Am Em
  C: "[~@15 [g3,b3,d4]@16 [f3,a3,d4]@16 ~]/3", // G Dm
  D: "[~@15 [a4,c5,e5]@16 [g4,b4]@16 [g4,b4,d5]@16 [f4,a4,d5]@16 [a4,c5,e5]@16 [g4,b4,e5], ~@31 e5 ~@64]/6", // Am G Dm Am Em
  E: "[~@15 [g4,b4,d5]@16 [f4,a4,d5]@16 [a4,c5,e5]@16 [g4,b4]@16 [g4,b4,d5]@16 [f4,a4,d5]@16 [a4,c5,e5]@16 [g4,b4,e5], ~@63 e5 ~@64]/8", // G Dm Am G Dm Am Em
  F: "[~@15 [g4,b4,d5]@16 [f4,a4,d5]@16 [a3,c4,e4]@16 [g3,b3]@16 [g3,b3,d4]@16 [f3,a3,d4]@16 [a3,c4,e4]@16 [g3,b3,e4], ~@63 e4 ~@64]/8", // G Dm Am G Dm Am Em
  G: "[~@15 [g3,b3,d4]@16 [f3,a3,d4]@16 [a2,a3,c4,e4]@48 ~]/6", // G Dm Am
})).s("gm_synth_strings_2").gain(0.2)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1_2 = note(`<
  ~@17 A B C D A B C D ~@33 E F G H E F G H A B C D A B C D ~@33 E F G H E F G H A B C D A B C D ~@3
>`.pickRestart({
  A: "[a3,a4,a7] [b3,b4,a7] ~ [a3,a4,a7] [b3,b4,a7] ~ [a3,a4,a7] [b3,b4,a7] ~ [a3,a4,a7] [b3,b4,a7] ~ [b3,b4,a7] ~ [c4,c5,a7] ~", // A B7 A B7 A B7 A B7 …
  B: "[a3,a4,a7] [b3,b4,a7] ~ [a3,a4,a7] [b3,b4,a7] ~ [a3,a4,a7] [b3,b4,a7] ~ [a3,a4,a7] [b3,b4,a7] ~ [c4,c5,a7] ~@3", // A B7 A B7 A B7 A B7 …
  C: "[g3,g4,a7] [a3,a4,a7] ~ [g3,g4,a7] [a3,a4,a7] ~ [g3,g4,a7] [a3,a4,a7] ~ [g3,g4,a7] [a3,a4,a7] ~ [d4,d5,a7] ~ [e4,e5,a7] ~", // Gsus2 A Gsus2 A Gsus2 A Gsus2 A …
  D: "[d4,d5,a7] [e4,e5,a7] ~ [d4,d5,a7] [e4,e5,a7] ~ [d4,d5,a7] [e4,e5,a7] ~ [d4,d5,a7] [e4,e5,a7] ~ [f4,f5,a7] ~@3", // D5 A5 D5 A5 D5 A5 D5 A5 …
  E: "a3 b3 ~ a3 b3 ~ a3 b3 ~ a3 b3 ~ b3 ~ c4 ~", F: "a3 b3 ~ a3 b3 ~ a3 b3 ~ a3 b3 ~ c4 ~@3",
  G: "g3 a3 ~ g3 a3 ~ g3 a3 ~ g3 a3 ~ d4 ~ e4 ~", H: "d4 e4 ~ d4 e4 ~ d4 e4 ~ d4 e4 ~ f4 ~@3",
})).s("gm_synth_brass_1").gain(0.3)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note("<~@25 A B A B A B A B C D C D C D C D ~@33 A B A B A B A B C D C D C D C D ~@36>".pickRestart({
  A: "[a3,c4,e4]", B: "[e3,g3,b3,e4]@7 ~ [g3,b3,d4]@7 ~",
  C: "[a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [c4,e4]@2 a3 [a3,c4,e4] ~ [a3,c4,e4] ~, ~@9 a3 ~@6", // Am C Am
  D: "[g3,b3,e4]@2 ~ [g3,b3] ~ g3 [g3,b3,d4]@2 ~ [b3,d4]@2 g3 [g3,b3,d4] ~ [g3,b3,d4] ~, ~@3 e4@2 ~@4 g3 ~@6", // Em G Bm G
})).s("gm_epiano1").gain(0.36)

// chords · piano · "A.PIANO 1"
const piano = note("<~@42 A B C D A B C D A B C D A B C D ~@33 A B C D A B C D A B C D A B C D ~@19>".pickRestart({
  A: "~@2 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~@3 [a4,c5,e5] ~", // Am
  B: "~@2 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~@3 [g4,b4,e5] ~", // Em
  C: "~@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // G
  D: "~@2 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [d4,f4,a4] ~@3 [d4,f4,a4] ~", // Dm
})).s("gm_piano").gain(0.36).pan(0.4)

// other · synth drum
const synth_drum = note(`<
  ~ A ~@4 B ~@2 B ~ B ~ B ~ B C D@7 ~ D@4 E@3 F D@8 ~ D@15 ~ D@15 ~ D@4 E@3 F D@8 ~ D@15 ~ D@16 ~@3
>`.pickRestart({
  A: "f1 ~@7", B: "f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~@3", C: "f1@2 ~@8 f1 ~ f1 ~@3", D: "f1 ~@3 f1 ~@3 f1 ~@3 f1 ~@3",
  E: "c2 ~@3 c2 ~@3 c2 ~@3 c2 ~@3", F: "c2 ~@2 c2 ~@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
})).s("gm_synth_drum").gain(0.48)

// other · melodic tom · "MELO TOM 1"
const melodic_tom = note("<~@41 A ~@15 A ~@32 A ~@15 A ~@19>".pickRestart({
  A: "d3!2 ~ b2 a2 ~ b2 ~ d3 ~ a2 ~ f2 ~@3",
})).s("gm_melodic_tom").gain(0.54)

// other · rock organ · "ORGAN 3"
const rock_organ = note("<~@42 [a6!5 ~ a6!7 ~ a6 ~]!16 ~@33 [a6!5 ~ a6!7 ~ a6 ~]!16 ~@19>")
  .s("gm_rock_organ").gain(0.16)

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

// drums · clap
const clap = s("cp").struct("<~@17 A@8 B@16 ~ A@32 B@16 ~ A@32 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@7 x",
})).gain(0.36)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@17 [~@3 x ~@12]!8 ~@17 [~@3 x ~@12]!32 ~@17 [~@3 x ~@12]!32 ~@3>").gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<A B ~@7 C@8 D@24 ~ D@48 ~ D@32 ~@3>".pickRestart({
  A: "x!14 ~@2", B: "x", C: "x!16", D: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
})).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  [~@7 x]
  ~@16
  [~ x ~ x ~ x ~ x]!24
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!48
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!32
  ~@3
>`).gain(0.36)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct(`<
  ~@17
  [~@3 x ~@3 x ~@3 x ~@3 x]!24
  ~
  [~@3 x ~@3 x ~@3 x ~@3 x]!48
  ~
  [~@3 x ~@3 x ~@3 x ~@3 x]!32
  ~@3
>`).gain(0.18)

// drums · tambourine
const tambourine = s("tb").struct("<~@25 A@16 ~@9 B@8 ~@16 A@16 ~@9 B@8 ~@19>".pickRestart({
  A: "~ x ~ x", B: "x!16",
})).gain(0.18)

stack(
  bass, synth_brass_1, synth_strings_2, synth_brass_1_2, epiano1, piano, synth_drum, melodic_tom, rock_organ, kick,
  clap, clap_soft, hihat, open_hat, open_hat_soft, tambourine
)

More by Masterboy