Strudelify
What You Need cover art

1985 · Listen Like Thieves

What You Need

INXS

KeyF♯ majorTempo124 bpm
0:00/0:00
// What You Need — INXS
// 124 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "FINGERDBA" electric bass finger (copy of ch 3 "FRETLESS" fretless bass)
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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 · synth brass 1 · "SYNBRASS"
const synth_brass_1 = note(`<
  ~ A ~ B ~ C ~ D E A ~ A ~ A ~ A ~@9 F G H I J@4 K@2 A ~ A ~ A ~@21 A ~ A L B ~ M ~ A ~ N ~ O@8 P@2 Q R@8 S@4 T
>`.pickRestart({
  A: "[c#4,f#4,c#5,f#5] ~ [c#4,f#4,c#5,f#5] ~@5", B: "[c#4,f#4,c#5] ~ [c#4,f#4,c#5,f#5] ~@5, f#5 ~@15",
  C: "[c#4,f#4,c#5] ~ [c#4,f#4,c#5] ~@5, f#5 ~@3 f#5 ~@11", D: "[c#4,f#4,c#5,f#5] ~ [c#4,f#4,c#5] ~@5, ~@4 f#5 ~@11",
  E: "a4!2 g#4 ~ f#4 ~ g#4 ~ a4 ~ d#4 ~ f#4 d#4 ~@2", F: "b4@3 ~@9 a4!2 g#4 ~", G: "f#4@3 ~ d#4@4 ~@7 g#4",
  H: "a4@2 g#4 ~ f#4 ~ d#4 ~ g#4 ~ d#4 ~ f#4 g#4 ~ d#4", I: "g#4 f#4 d#4 [a#3,f#4]@13",
  J: "[~@32 d#4@8 f#4@8 g#4@8 a#4@4 b4@3 c#5, b2@63 ~, b3@3 b3@5, ~ d#3@3 ~@4, ~@16 f#3@15 ~@33]/4",
  K: "[[c#4,f#5] ~ [c#4,f#4,f#5] ~@13, f#3@7 ~, c#5 c#5@6 ~, f#4 ~@31]/2", // F#5
  L: "a4 d#4 f#4 d#4 a4 d#4 f#4 [d#4,a4] c#4 d#4 c#5 [c#4,d#5] f#5@2 ~@2, ~@11 f#4@2 ~@3", // D#dim C#sus2
  M: "[c#4,f#4,f#5] ~@3 [c#4,f#4,c#5,f#5]@2 ~@10, c#5 ~@7", N: "[c#5,f#5] ~ [c#4,f#4,c#5] ~@5, [c#4,f#4] ~@3 f#5 ~@11",
  O: "[~@15 g#3@8 a#3@8 ~@9 g#3@7 a#3@7 ~ b3@9 ~@8 f#4@8 g#4@8 a#4@8 f#4@8 g#4@8 a#4@8 b4@7 ~, b2@79 ~@17 d#4@31 ~, ~@8 d#3@24 f#3@32 [b3,d#4]@33 ~@31]/8", // B
  P: "[[a#4,c#5]@27 ~ [a#4,c#5] [g#4,b4]@3, f#4@31 ~]/2", Q: "[f#4,a#4]",
  R: "[~@8 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,b4,d#5] [f#4,a#4,c#5] [d#4,g#4,b4] [f#4,a#4,c#5]@24 ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,b4,d#5] [d#4,f#4,a#4,c#5] [g#4,b4] [a#4,c#5]@24 ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,b4,d#5] [f#4,a#4,c#5] [d#4,g#4,b4] [f#4,a#4,c#5]@24 ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,b4,d#5] [f#4,g#4,a#4,c#5] [d#4,b4] [f#4,c#5]@17, ~@23 f#4@12 ~@20 a#4@9]/8", // F# G#m F# G#m F# G#m D#m7 G#m …
  S: "[~@8 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,b4,d#5] [f#4,g#4,a#4,b4,c#5] d#4 [f#4,c#5]@24 ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [g#4,b4,c#5,d#5] [d#4,f#4,g#4,a#4,b4] [f#4,a#4,c#5]@17 ~, ~@7 a#4@12 ~@13]/4", // F# G#m F# F#5 F# G#m G#m7 F#
  T: "[g#4,a#4] ~ [f#4,a#4,c#5]@2 ~@2 [d#4,g#4,d#5] ~ [f#4,a#4,f#5]@3 ~@5, d#4 ~@7", // G#sus2 F# G#5 F#
})).s("gm_synth_brass_1").gain(0.56)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~ A ~ B ~ C ~ D E A ~ A ~ A ~ A ~@9 F G H I J@4 K@2 A ~ A ~ A ~@21 A ~ A L B ~ M ~ A ~ N ~ O@8 P@2 Q@5 R@8 S
>`.pickRestart({
  A: "[c#5,f#5,c#6,f#6] ~ [c#5,f#5,c#6,f#6] ~@5", B: "[c#5,f#5,c#6] ~ [c#5,f#5,c#6,f#6] ~@5, f#6 ~@15",
  C: "[c#5,f#5,c#6] ~ [c#5,f#5,c#6] ~@5, f#6 ~@3 f#6 ~@11", D: "[c#5,f#5,c#6,f#6] ~ [c#5,f#5,c#6] ~@5, ~@4 f#6 ~@11",
  E: "a5!2 g#5 ~ f#5 ~ g#5 ~ a5 ~ d#5 ~ f#5 d#5 ~@2", F: "b5@3 ~@9 a5!2 g#5 ~", G: "f#5@3 ~ d#5@4 ~@7 g#5",
  H: "a5@2 g#5 ~ f#5 ~ d#5 ~ g#5 ~ d#5 ~ f#5 g#5 ~ d#5", I: "g#5 f#5 d#5 [a#4,f#5]@13",
  J: "[~@32 d#5@8 f#5@8 g#5@8 a#5@4 b5@3 c#6, b3@63 ~, b4@3 b4@5, ~ d#4@3 ~@4, ~@16 f#4@15 ~@33]/4",
  K: "[[c#5,f#6] ~ [c#5,f#5,f#6] ~@13, f#4@7 ~, c#6 c#6@6 ~, f#5 ~@31]/2", // F#5
  L: "a5 d#5 f#5 d#5 a5 d#5 f#5 [d#5,a5] c#5 d#5 c#6 [c#5,d#6] f#6@2 ~@2, ~@11 f#5@2 ~@3", // D#dim C#sus2
  M: "[f#5,c#6] ~ [c#5,f#5,c#6,f#6] ~@5, [c#5,f#6] ~@15", N: "[c#6,f#6] ~ [c#5,f#5,c#6,f#6] ~@5, [c#5,f#5] ~@15",
  O: "[~@15 g#4@8 a#4@8 ~@9 g#4@7 a#4@8 b4@9 ~@8 f#5@8 g#5@8 a#5@8 f#5@8 g#5@8 a#5@8 b5@7 ~, b3@79 ~@17 d#5@31 ~, ~@8 d#4@24 f#4@32 [b4,d#5]@33 ~@31]/8", // B
  P: "[[a#5,c#6]@27 ~ [a#5,c#6] [g#5,b5]@3, f#5@31 ~]/2", // A#m G#m
  Q: "[[f#5,a#5]@23 ~ [f#5,a#5] ~ [f#5,a#5] ~ [g#5,b5] [f#5,a#5] [d#5,g#5] [f#5,a#5]@24 ~ [f#5,a#5] ~ [f#5,a#5] ~ [g#5,b5] [d#5,f#5,a#5] g#5 a#5@17, ~@31 f#5@9]/5", // F# G#m F# G#5 F# G#m D#m
  R: "[~@8 [f#5,a#5] ~ [f#5,a#5] ~ [g#5,b5] [f#5,a#5] [d#5,g#5] [f#5,a#5]@24 ~ [f#5,a#5] ~ [f#5,a#5] ~ [g#5,b5] [f#5,g#5,a#5] d#5 f#5@24 ~ [f#5,a#5] ~ [f#5,a#5] ~ [g#5,b5] [f#5,g#5,a#5] d#5 f#5@24 ~ [f#5,a#5] ~ [f#5,a#5] ~ [g#5,b5] [d#5,f#5,g#5,a#5] [f#5,a#5]@17 ~, ~@23 a#5@12 ~@4 a#5@12 ~@13]/8", // F# G#m F# G#5 F# G#m F# G#m …
  S: "d#5@2 [f#5,a#5]@2 ~@2 [d#5,g#5] ~ [f#5,a#5]@3 ~@5, g#5 ~@15", // F# G#5 F#
})).s("gm_brass_section").gain(0.56)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F A F G F H F A F H F I J K L K J M L N O A F P Q P@2 G F H F G F A F K J K J M R M S ~@12 G F A F A F G T
  U F A F V P@7 G F W F X F H F H F A F A F A Y
>`.pickRestart({
  A: "f#1 ~ f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1@2 f#1 ~ f#1 ~", B: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~",
  C: "f#1@2 f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1@2 f#1@2 f#1@2", D: "f#1 ~ f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2",
  E: "f#1@2 f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1@2 f#1@2 f#1 ~", F: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  G: "f#1 ~ f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1@2 f#1@2 f#1 ~", H: "f#1 ~ f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1 ~ f#1 ~ f#1 ~",
  I: "f#1@6 ~ f#1 e1 ~ f#1@4 ~@2", J: "e1 ~ f#1@3 ~ e1 ~ f#1 ~@7", K: "f#1@5 ~@2 f#1 e1 ~ f#1@5 ~",
  L: "e1 ~ f#1@2 ~@2 e1 ~ f#1 ~@7", M: "f#1@5 ~@2 f#1 e1 ~ f#1@4 ~@2",
  N: "f#1@2 f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1 ~ f#1 ~ f#1 ~", O: "f#1 ~ f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  P: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", Q: "b1 ~ b1@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  R: "e1 ~ f#1@3 ~ e1 ~ f#1@2 ~@6", S: "e1 ~ f#1@2 ~@2 e1 ~ f#1@2 ~@6",
  T: "f#1@2 f#1 ~ f#1 ~ f#1 ~ f#1@2 f#1 ~ f#1 ~ f#1 ~", U: "f#1 ~ f#1 ~ f#1 ~ f#1 g#1 a1@2 g#1 ~ f#1@2 f#1 ~",
  V: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1@2 b1 ~", W: "f#1 ~ f#1 ~ f#1 ~ f#1 g#1 a1 ~ g#1 ~ f#1 ~ f#1 ~",
  X: "f#1 ~ f#1 ~ f#1 ~ f#1 g#1 a1 ~ g#1@2 f#1 ~ f#1 ~", Y: "e1 ~ f#1 ~@3 e1 ~ f#1 ~@7",
})).s("gm_fretless_bass").gain(0.35)

// other · synth drum · "SYNTH DRU"
const synth_drum = note(`<
  A ~@2 B ~@5 C D E F G H I F ~ J ~ J ~ J K L ~@8 M N O F P Q R F ~ J ~ S ~ J K T U V U W X ~@11 Y Z AA AB AC AD AE F
  ~@8 K AF X ~ U W X ~ U W X ~ K AF X ~
>`.pickRestart({
  A: "~@15 a#5", B: "~@2 a#5 ~ a#5 ~@11", C: "f#5 ~@9 f#5 ~ g#5 ~ f#5 ~", D: "g#5 ~@2 f#5 ~@11 g#5",
  E: "f#5 ~ f#5 g#5 ~@2 f#5 ~ g#5 ~ f#5 ~@2 g#5 ~@2", F: "f#5 ~@15", G: "f#5 ~ g#5 f#5 ~@8 f#5 ~ g#5 ~",
  H: "f#5 ~@2 g#5 ~@12", I: "f#5 ~ g#5 f#5 ~@2 g#5 ~ f#5 ~ g#5 f#5 ~@2 g#5 ~", J: "~@12 f#5 ~ g#5 ~", K: "~@14 f#5 g#5",
  L: "f#5 ~ g#5 f#5 ~ f#5 g#5 f#5 g#5 ~ f#5 g#5 ~@4", M: "f#5 ~@3 g#5 ~@5 f#5 ~ g#5 ~ g#5 f#5", N: "~@2 g#5 ~@11 g#5 ~",
  O: "f#5 ~ f#5 g#5 ~@2 f#5 ~ g#5 ~ g#5 f#5 ~ g#5 ~@2", P: "f#5 ~ g#5 ~ f#5 ~@5 g#5 ~ f#5 ~ f#5 g#5",
  Q: "~@2 f#5 ~@11 g#5 ~", R: "g#5 ~ g#5 f#5 ~@2 g#5 ~ f#5 ~ g#5 f#5 ~ g#5 ~@2", S: "~@10 f#5 ~ g#5 ~@3",
  T: "f#5 ~ g#5 f#5 ~ g#5 f#5 g#5 f#5 ~ g#5 f#5 ~@4", U: "~@14 g#5 f#5",
  V: "g#5 ~ g#5 f#5 ~ g#5 f#5 g#5 f#5 ~ g#5 f#5 ~@4", W: "g#5 ~ g#5 f#5 ~@2 g#5 f#5 g#5 ~ g#5 f#5 ~ g#5 f#5 g#5",
  X: "f#5 ~ g#5 f#5 ~@12", Y: "f#5 ~@3 g#5 ~@7 f#5 ~ g#5 f#5", Z: "~@2 g#5 ~@13",
  AA: "f#5 ~ g#5 f#5 ~@2 g#5 ~ f#5 ~ g#5 ~@2 f#5 ~@2", AB: "g#5 ~@15", AC: "f#5 ~ g#5 f#5 ~@6 f#5 ~ g#5 ~ f#5 ~",
  AD: "g#5 ~@2 f#5 ~@10 f#5 ~", AE: "g#5 ~ f#5 ~ g#5 ~ g#5 ~ f#5 ~ g#5 f#5 ~@2 g#5 ~",
  AF: "f#5 ~ g#5 f#5 ~@2 g#5 f#5 g#5 ~ g#5 f#5 ~ g#5 f#5 g#5",
})).s("gm_synth_drum").gain(0.4)

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

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@72 [~@5 x ~@2] ~@6 [~@7 x] [~@3 x ~@4] ~@16>").gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@72 [~@8 x!2 ~@6] ~@6 [~@13 x ~@2] [~@5 x ~@10] ~@16>").gain(0.44)

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

stack(synth_brass_1, brass_section, bass, synth_drum, kick, snare, low_tom, hihat, mid_tom, high_tom, crash)

More by INXS