Strudelify

I Wanna Sex You Up

Color Me Badd

KeyA majorTempo100 bpm
0:00/0:00
// I Wanna Sex You Up — Color Me Badd
// 100 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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(`<
  ~ 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 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 A B C D A B C D A B C D A B C D E@3
>`.pickRestart({
  A: "d2@5 d3 d2 ~ a2@4 d2@2 a2@2", B: "e2@4 ~@2 a2@3 ~ a2 ~ a2 b2 a2@2", C: "d2@5 d3 d2 ~ a2@5 ~ a2@2",
  D: "e2@5 ~ e2@2 a2@3 ~ a2 b2 a2@2", E: "[d2@11 ~@5]/3",
})).s("gm_acoustic_bass").gain(0.54)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A B C D A B C D E F E G E G E G E F E G E G E G A B C D A B C D E F E G E G E G E F E G E G E G 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 H@2 ~
>`.pickRestart({
  A: "[a3,c#4,e4]@15 ~", B: "[b3,d4,f#4]@6 [g3,b3,d4]@9 ~", C: "[a3,c#4,e4]", D: "[b3,d4,f#4]@4 [g3,b3,d4]@3 ~",
  E: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  F: "[b3,d4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", // Bm
  G: "[b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~ [b3,d4,f#4] ~", // Bm
  H: "[d3,a3,c#4,e4]/2", // A
})).s("gm_epiano2").gain(0.44)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~ A B A B A B A B C D C D C D C E ~@8 A B A B A B A B C D C D C D C E ~@8 A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B F@2 ~
>`.pickRestart({
  A: "~@2 e4@2 e5@8 e5@2 e4 ~, e4 ~@7, ~ e5@3 ~@12", B: "[b3,d4]@5 ~@4 e3 a3 ~ a3 b3 a3 ~", C: "[a3,c#4]", D: "[b3,d4]",
  E: "[g3,b3,d4]@13 ~@3", F: "[[d3,a3,c#4,e4]@25 ~@7]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.46)

// other · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@2 A ~ A ~ A ~ A B C B C B C B ~@10 A ~ A ~ A ~ A B C B C B C B ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "f#4@5 ~@11", B: "f#3", C: "g3",
})).s("gm_acoustic_guitar_nylon").gain(0.29)

// other · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C D@2 B C D@2 A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ E@3
>`.pickRestart({
  A: "[a3,a4]@2 [b3,b4]@2 [d4,d5]@2 [e4,e5] ~ [f#4,f#5]@2 [a4,a5]@2 [f#4,f#5]@2 [e4,e5] ~", // A B D E F# A F# E
  B: "[f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~", // F#m
  C: "[g3,b3,d4,f#4] ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4] ~ [g3,b3,d4,f#4]@6 [g3,b3,d4,f#4] ~@3", // Gmaj7
  D: "[[f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [f#3,a3,c#4,f#4] ~ [g3,b3,d4,f#4]@14 ~@4]/2", // F#m Gmaj7
  E: "[d2@11 ~@5]/3",
})).s("gm_rock_organ").gain(0.53)

// drums · kick
const kick = s("bd").struct("<[~@9 x ~@3 x ~ x] [x ~@2 x!3 ~ x]!80 x ~@2>").gain(0.67)

// drums · snare
const snare = s("sd").struct("<A B@7 C B@15 C B@7 C B@15 C B@7 C B@7 C B@7 C B@7 D ~@3>".pickRestart({
  A: "~@5 x!3", B: "~ x ~ x", C: "~@4 x ~@7 x!2 ~ x", D: "~@4 x ~@10 x",
})).gain(0.67)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A ~@7 B ~@15 B ~@7 B ~@15 B ~@7 B ~@7 B ~@7 B ~@7 C ~@3>".pickRestart({
  A: "~@13 x ~@2", B: "~@7 x", C: "~@12 x!3 ~",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!80 ~@3>").gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<[~@7 x] ~@79 [~@5 x ~@2] ~@3>").gain(0.67)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~ x!3 ~ x ~]!80 ~@3>").gain(0.67)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x ~@2 x ~@5", B: "~@2 x ~@2 x ~ x ~@2 x ~@3 x ~",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@3 x] ~@79 [~@3 x ~@4] ~@3>").gain(0.67)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~@2
>`.pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.67)

// drums · high tom
const high_tom = s("ht").struct("<~@80 [~ x ~@6] ~@3>").gain(0.67)

stack(
  bass, epiano2, acoustic_guitar_nylon, acoustic_guitar_nylon_2, rock_organ, kick, snare, snare_soft, clap, low_tom,
  hihat, hihat_soft, mid_tom, open_hat, high_tom
)

More by Color Me Badd