Strudelify
Need You Tonight cover art

1988 · Kick

Need You Tonight

INXS

KeyC majorTempo120 bpm
0:00/0:00
// Need You Tonight — INXS
// 120 bpm, 4/4, key C major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@3 A ~ B C D C D C D C D C D ~ A ~ B ~ A ~ B C D C D C D C D C D C D C D C D ~ A ~ B ~ A ~ B C D C D C D C D C D C D
  C D C D C E C D C D C D C D A C D C F
>`.pickRestart({
  A: "d#3@4 d3@3 c3 ~@8", B: "d#3@4 d3@2 ~ c3 ~@8", C: "c3 ~@2 a#2 c3 ~@3",
  D: "f2 ~@2 f2 f2@2 d#2@2 f2@2 ~ f2 a#2@2 b2 ~", E: "f2@3 ~@13", F: "f2 ~@7",
})).s("gm_acoustic_bass").gain(0.5)

// chords · recorder
const recorder = note("<~@6 A@2 B@2 C@2 B@2 D@2 ~@8 C@2 B@8 C@2 B@4 ~@8 C@2 B@6 C@4 B@4 ~@2 C@2 B@2 ~@9>".pickRestart({
  A: "[~@3 [g4,c5,e5]@2 ~@3]/2", B: "[~@6 [g4,c5,e5]@3 ~@7]/2", C: "[~@12 [g4,c5,e5]@7 ~@13]/2",
  D: "[~@12 g4@5 g4@5 ~@10, ~@12 [c5,e5]@7 ~@13]/2", // C
})).s("gm_recorder").gain(0.2)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<~@2 A B C B ~@10 A B C B A B C B ~@16 A B C B A B C B ~@26 B ~@4>".pickRestart({
  A: "[c4,e4,g4,c5]@2 ~@2 [c4,e4,g4,c5]@2 ~@2 [c4,e4,g4,c5] ~@7", // C
  B: "[d#4,g4,a#4,d#5]!4 [d4,f4,a4,d5]!3 [c4,e4,g4,c5] ~@8", // D# Dm C
  C: "[c4,e4,g4,c5]@2 ~@2 [c4,e4,g4,c5] ~@3 [c4,e4,g4,c5]@2 ~@6", // C
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// drums · kick
const kick = s("bd").struct("<[x!4]!65 x [x!4]!12 x>").gain(0.54)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!65 ~ [~ x ~ x]!12 ~>").gain(0.54)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!65 ~ [~ x ~ x]!12 ~>").gain(0.54)

// drums · low tom
const low_tom = s("lt").struct("<~@16 A@8 ~@16 A@8 ~@10 A@7 ~ A@12 ~>".pickRestart({
  A: "~@3 x",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  A@5 B A B A B A B A B A B A@9 B A B A B A B A B A B A B A B A@9 B A B A B A B A B A@7 ~ A@12 ~
>`.pickRestart({
  A: "x!5 ~ x!2 ~ x!4 ~ x ~", B: "x!8 ~ x!4 ~ x ~",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~@47 [~@9 x ~@2 x ~@3] ~@26 [~@9 x ~@2 x ~@3] ~@2 [~@9 x ~@2 x ~@3] ~>").gain(0.54)

// drums · crash
const crash = s("cr").struct("<~@24 [x ~@2 x!2 ~@3] ~@23 [x ~@2 x!2 ~@3] ~@30>").gain(0.54)

stack(bass, recorder, acoustic_guitar_nylon, kick, snare, clap, low_tom, hihat, mid_tom, crash)

More by INXS