Strudelify

(Sex U Up) The Way You Like It (Radio Edit)

LFO

KeyB♭ minorTempo128 bpm
0:00/0:00
// (Sex U Up) The Way You Like It (Radio Edit) — LFO
// 128 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 178 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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 · synth bass 1
const bass = note(`<
  ~@24 A@16 B@8 ~@16 C D C D C D C D C D C D C D C D E F E F E F E F E F E F E F E F E F E F E F E F ~@8 C D C D C D C D
  C D C D C D C D C D C D C D C D ~@8 C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D G@2
>`.pickRestart({
  A: "eb1@2 ~ eb1@2 ~ eb1@2 ~ eb1 ~ eb1 e1@2 eb1 ~",
  B: "[eb1,eb2]@2 ~ [eb1,eb2]@2 ~ [eb1,eb2]@2 ~ [eb1,eb2] ~ [eb1,eb2] [e1,e2]@2 [eb1,eb2] ~", // Eb E Eb
  C: "[bb1,bb2]@2 ~ [bb1,bb2] ~@2 [bb1,bb2]@2 ~ [bb1,bb2] ~ [bb1,bb2] [f2,f3] ~ [f2,f3] ~", // Bb F
  D: "[gb2,gb3]@2 ~ [gb2,gb3]@2 ~ [gb2,gb3]@2 ~ [gb2,gb3] ~ [gb2,gb3] [f2,f3] ~ [f2,f3] ~", // Gb F
  E: "[bb0,bb1]@2 ~ [bb0,bb1] ~@2 [bb0,bb1]@2 ~ [bb0,bb1] ~ [bb0,bb1] [f1,f2] ~ [f1,f2] ~", // Bb F
  F: "[gb1,gb2]@2 ~ [gb1,gb2]@2 ~ [gb1,gb2]@2 ~ [gb1,gb2] ~ [gb1,gb2] [f1,f2] ~ [f1,f2] ~", // Gb F
  G: "[[bb1,bb2]!15 [bb1,bb2]@2 ~@15]/2", // Bb
})).s("gm_synth_bass_1").gain(0.8)

// bass · lead 8 bass lead
const bass_2 = note("<~@24 A@24 ~@40 B@8 ~@82>".pickRestart({
  A: "~@3 eb1@5", B: "bb3/8",
})).s("gm_lead_8_bass_lead").gain(0.62)

// other · rock organ
const rock_organ = note(`<
  ~@64 A B A B A B A B A B A B A B A B ~@24 A B A B A B A B A B A B A B A B A B A B A B A B ~@24 A B A B A B A B ~@18
>`.pickRestart({
  A: "[bb2,bb3]@2 ~ [bb2,bb3] ~@2 [bb2,bb3]@2 ~ [bb2,bb3] ~ [bb2,bb3] [f3,f4] ~ [f3,f4] ~", // Bb F
  B: "[gb3,gb4]@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~ [gb3,gb4] ~ [gb3,gb4] [f3,f4] ~ [f3,f4] ~", // Gb F
})).s("gm_rock_organ").gain(0.51)

// other · rock organ · soft notes
const rock_organ_soft = note("<~@88 A B A B A B A B A B A B A B A B ~@74>".pickRestart({
  A: "[bb3,bb4]@2 ~ [bb3,bb4] ~@2 [bb3,bb4]@2 ~ [bb3,bb4] ~ [bb3,bb4] [f4,f5] ~ [f4,f5] ~", // Bb F
  B: "[gb4,gb5]@2 ~ [gb4,gb5]@2 ~ [gb4,gb5]@2 ~ [gb4,gb5] ~ [gb4,gb5] [f4,f5] ~ [f4,f5] ~", // Gb F
})).s("gm_rock_organ").gain(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@64 A B A B A B A B C D C D E F C D ~@8 G@8 ~@16 C D C D E F C D C D C D E F C D ~@24 C D C D E F C D ~@18
>`.pickRestart({
  A: "bb4 ~@2 bb4 ~@2 bb4 ~@2 bb4 ~@2 f5 ~ bb4 ~", B: "gb5 ~@2 gb5 ~@2 gb5 ~@2 gb5 ~@2 f5 ~ f5 ~",
  C: "f6@2 ~ [bb4,f6] ~@2 f6@2 ~ f6@2 ~ [f5,f6] ~ [bb4,f6] ~, bb4 ~@5 bb4 ~@2 bb4 ~@6", // Bb5 F Bb5
  D: "[gb5,gb6] ~@2 [gb5,gb6] ~@2 gb6@2 ~ gb6@2 ~ [f5,f6] gb6 [f5,f6] ~, ~@6 gb5 ~@2 gb5 ~@6", // Gb F
  E: "[bb4,f6] ~@2 f6@2 ~ f6@2 ~ [bb4,f6] ~@2 [f5,f6] ~ [bb4,f6] ~, ~@3 bb4 ~@2 bb4 ~@9", // Bb5 F Bb5
  F: "[gb5,gb6] ~@2 [gb5,gb6] ~@2 gb6@2 ~ [gb5,gb6] ~@2 [f5,f6] gb6 [f5,f6] ~, ~@6 gb5 ~@9", G: "[bb4,bb5]/8",
})).s("gm_string_ensemble_1").gain(0.5)

// other · clarinet
const clarinet = note(`<
  ~@80 A B A C A D E F ~@8 A B A C A D E F G ~ G ~ G ~ E F G ~ G ~ G ~ E F H I J I H I J I H I J I H I J I K ~ L@2 M ~
  N@2 ~@8 G ~ G ~ G ~ E F G ~ G ~ G ~ E F ~@10
>`.pickRestart({
  A: "bb4@9 ~ bb4 ~ bb4 ~ bb4 ~", B: "f5 ~ gb5 ~ gb5@2 ~@10", C: "f5 ~ gb5 ~ gb5 ~@3 f5 ~ gb5 ~ gb5 ~@3",
  D: "f5 ~ gb5 ~ gb5 ~@11", E: "f4 ~ f4@2 bb4 ~ bb4 ~ f5 ~ f5 ~ bb5 ~ bb5 ~", F: "gb5@6 ab5 gb5 f5@7 ~",
  G: "~@2 bb4 ~ bb4 ~ bb4 ~ f5@2 ~ ab5@2 ~ gb5@2", H: "~@8 f5@2 ~ ab5@2 ~ gb5@2", I: "~ gb5 ~ gb5 ~@4",
  J: "~@2 f5 ~ f5@2 ~@4 f5 ~ f5 ~ f5 ~", K: "~@2 gb5 ~ gb5 ~ eb5 ~ f5@2 ~ gb5@2 ~ f5@2",
  L: "[~@2 gb5 ~ gb5 ~ eb5 ~ f5@2 ~@2 gb5 ~ f5@8 gb5 eb5@2 ~@7, ~@23 f5 ~@8]/2",
  M: "~@2 gb5 ~ gb5 ~ eb5 ~ f5@2 ~ gb5 ~@2 f5@2", N: "[~@2 bb5@2 ~@2 gb5 ~ ab5@2 ~@2 bb5@2 ab5@10 gb5@8]/2",
})).s("gm_clarinet").gain(0.8)

// other · clarinet · soft notes
const clarinet_soft = note("<~@121 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@42>".pickRestart({
  A: "~@10 gb5@2 ~@2 gb5 ~",
})).s("gm_clarinet").gain(0.48)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@22 [x!6 ~@10] ~@113 [x!16]!4 [x!8 ~@8] ~@37>").gain(0.32)

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

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 A@40 ~@8 A@48 ~@8 A@24 ~@8 A@32 ~@2>".pickRestart({
  A: "x!4",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@40 ~@8 A@48 ~@8 A@24 ~@8 A@32 ~@2>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.8)

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

// drums · congas
const congas = s("conga:18").struct("<[~@11 x ~@4]!48 ~@130>").gain(1.54)

// drums · congas
const congas_2 = s("conga:33").struct("<[~@7 x]!16 [x ~@2 x ~@3 x]!8 [~@3 x ~@3 x] [x ~@2 x ~@3 x]!23 ~@130>")
  .gain(1.54)

stack(
  bass, bass_2, rock_organ, rock_organ_soft, string_ensemble_1, clarinet, clarinet_soft, kick, snare, snare_soft, clap,
  pedal_hat, open_hat, crash, congas, congas_2
)