Strudelify
You Sexy Thing cover art

1996 · Hot Chocolate

You Sexy Thing

Hot Chocolate

KeyF majorTempo105 bpm
0:00/0:00
// You Sexy Thing — Hot Chocolate
// 105 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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.

// other · overdriven guitar · "Guitar"
const overdriven_guitar = note("<~@9 A B C D ~@8 A B C D ~@20 A B C D ~@65>".pickRestart({
  A: "f3@7 ~ a3@2 bb3 ~ c4@2 f3@2", B: "bb3@7 ~", C: "f3@6 ~ f3 a3@2 bb3 ~ c4 f3@3", D: "bb3@13 ~@3",
})).s("gm_overdriven_guitar").gain(0.36)

// other · brass section · "Brass"
const brass_section = note(`<
  A@2 ~@34 A@2 B ~ A@2 B ~@17 C@2 D@2 E@2 F@2 G ~@11 C@2 D@2 E@2 F@2 E@2 D@2 E@2 F@2 E@2 D@2 E@2 F@2 E@2 D@2 E@2 F@2 H ~
>`.pickRestart({
  A: "[~@8 [bb4,c5] ab4 f4 ~ ab4 f4 bb4 f4@10 ~@7]/2", B: "ab4 ~ f4 ~@13",
  C: "[~@8 [bb4,c5] ab4 f4 ~ ab4 f4 bb4 f4@10 ~ eb4 f4 ~ eb4 f4 ~]/2", // Bbsus2
  D: "[ab4 ~ f4 ~@9 ab4 f4 bb4 f4@9 ~@2 eb4 f4 ~ eb4 f4 ~]/2",
  E: "[ab4 ~ f4 ~@5 [bb4,c5] ab4 f4 ~ ab4 f4 bb4 f4@10 ~ eb4 f4 ~ eb4 f4 ~]/2", // Bbsus2
  F: "[ab4 ~ f4 ~@9 ab4 f4 bb4 f4@8 ~@3 eb4 f4 ~ eb4 f4 ~]/2", G: "ab4 ~ f4 ~@5 [bb4,c5] ab4 f4 ~ ab4 f4 bb4 ~",
  H: "ab4 ~ f4 ~@5 c5 ~@7",
})).s("gm_brass_section").gain(0.54)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@12 A B ~@2 A B ~@3 C D@3 ~@4 E F G H ~@4 I J K J L J K J C D@3 ~@4 E F G H ~@4 I J K J L J K J C D@3 ~@8 I J K J L J
  K J C D@3 C D@3 C D@3 C D@3 C D@3 C D@3 ~
>`.pickRestart({
  A: "~@8 d4 f4 ~ bb4 ~ d5@2 ~", B: "c5@2 a4 ~@13", C: "f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4!2 ~@2",
  D: "[f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4 bb4 d5 ~ f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4!2 ~@2 f4 bb4 d5 f5, ~@15 f5@29 ~@4]/3",
  E: "bb4@3 ~", F: "c5@3 ~@5", G: "d5@3 ~", H: "e5@7 ~@9", I: "f4 a4 c5 f5 ~@2 c4@2", J: "d4@2 bb3 d4",
  K: "f4 a4 c5 f5 ~@2 c4@2, c4@11 ~@5", L: "f4 a4 c5 f5 ~@2 c4 ~, c4@5 ~@3",
})).s("gm_string_ensemble_1").gain(0.5)

// bass · synth bass 1 · "Bassline"
const bass = note(`<
  ~ A B A C A B A C A B A C A B A C A B A C A B A C A B A C D E F G H I J K A B A C A B A C A B A C A B A C D E F G H I
  J K A B A C A B A C A B A C A B A C H I J K A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "f1@4 ~@2 f1!2 ~ eb1 ~@3 c1 eb1 ~", B: "f1@4 ~@2 f1!2 ~ ab1 ~@3 f1 ab1 ~",
  C: "f1@3 ~ f1@2 ~ f1 ab1 f1 bb1 ~ [b1,c2] bb1 ab1 ~", D: "bb1@5 ~ ab1 bb1 ~ bb1@2 ~@2 ab1 bb1 ~",
  E: "c2@2 ~@4 c2!2 ~ c2 ~ g1 ~ c2 ~ g1", F: "bb1@4 ~@2 bb1!2 ~ bb1 ~@3 g1 bb1 ~", G: "c2@4 ~@2 c2!2 ~ c2 ~@3 g1 c2 ~",
  H: "d2@2 ~@2 d2 ~ a1 d2 ~ d2 ~@3 a1 d2 ~", I: "c2@2 ~@2 c2@2 g1 c2 ~ c2 ~@3 g1 c2 ~",
  J: "d2@2 ~@2 d2@2 ~ d2 ~@2 d2 ~@5", K: "d2 ~ d2 ~ d2 ~@3 d2 ~ c2 ~ a1 ~ g1 ~",
})).s("gm_synth_bass_1").gain(0.4)

// chords · epiano2 · "E.-Piano 1"
const epiano2 = note(`<
  ~@9 A B A C A B A C A B A C A B A C A B A C B D E D F G H I A B A C A B A C A B A C A B A C B D E D F G H I A B A C A
  B A C A B A C A B A C F G H I A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C J
>`.pickRestart({
  A: "[f3,a3,c4]@5 ~ [f3,a3,c4] ~", B: "[f3,bb3,d4]@10 ~@2 [f3,bb3,d4]@3 ~", C: "[f3,bb3,d4]@5 ~ [f3,bb3,d4] ~",
  D: "[g3,c4,e4]@11 ~ [g3,c4,e4]@2 ~@2", E: "[f3,bb3,d4]@11 ~ [f3,bb3,d4]@2 ~@2", F: "[d3,f3,a3]@11 ~ [d3,f3,a3]@2 ~@2",
  G: "[c3,e3,g3]@11 ~ [c3,e3,g3]@2 ~@2", H: "[d3,f3,a3]@11 ~@5",
  I: "[d3,f3,a3]@2 ~@2 [d3,f3,a3]@2 ~@2 [g3,c4] ~@4 d6 ~@2, ~@8 e3@2 ~ [e3,g3,c4]@4 ~", J: "f3@5 ~@3",
})).s("gm_epiano2").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~ [x ~@5 x!2 ~@8]!112 ~>").gain(0.54)

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

// drums · hihat
const hihat = s("hh").struct("<~ [x!16]!112 ~>").gain(0.36)

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

// drums · cowbell
const cowbell = s("cb").struct("<~@9 [x!4]!104 ~>").gain(0.42)

// drums · congas
const congas = s("conga:13").struct("<~@2 [~ x ~@3 x ~@2]!111 ~>").gain(1.34)

// drums · congas
const congas_2 = s("conga:33").struct("<~@2 [~@6 x!2 ~@6 x!2]!111 ~>").gain(1.34)

stack(
  overdriven_guitar, brass_section, string_ensemble_1, bass, epiano2, kick, snare, hihat, crash, cowbell, congas,
  congas_2
)

More by Hot Chocolate