Strudelify

I'm a Slave for You

Britney Spears

KeyC minorTempo208 bpm
0:00/0:00
// I'm a Slave for You — Britney Spears
// 208 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 188 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(208/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 · electric bass finger
const bass = note("<~@169 A B C D@2 E F G H B C D@2 E F G I ~@2>".pickRestart({
  A: "~@13 c3@2 ~@7 c3 ~", B: "~@7 c3@2 ~@10 c3 ~@4", C: "~ c3@2 ~@10 c3@2 ~@7 c3@2",
  D: "[~@7 c3@2 ~@10 c3@9 ~@3 c3@2 ~@4 c3@2 ~@7 c3@2]/2", E: "~@7 c3@2 ~@10 c3@2 ~@3", F: "~@7 c3 ~@5 c3@2 ~@7 c3@2",
  G: "~@7 c3 ~@5 c3 ~@2 c3@2 ~ c3@2 ~@3", H: "~ c3 ~@2 c3 ~@2 c3 ~@5 c3@2 ~@7 c3 ~", I: "~ c3 ~@2 c3 ~@2 c3 ~@16",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · clavinet
const clavinet = note(`<
  ~@17 A@4 B@16 C@4 A@4 D ~@2 E B@20 C@4 F@4 G@8 H@3 ~ A@4 C@4 A@4 C@4 A@4 B@12 I@4 G@8 H@3 ~ A@4 B@8 C@4 A@4 B@24 C@4
  ~@3
>`.pickRestart({
  A: "[~@13 [c3,c4,eb4] ~@8 [c3,c4,eb4]@7 ~@2 [c3,eb4]@2 ~@10 [c3,c4,eb4]@12 ~@6 [c3,c4]@2 ~@7 [c3,c4,eb4]@7 ~@2 [c3,c4,eb4] ~@5 [c4,ab4]@5 ~ g4@2 ~@3, ~@31 c4 ~@29 eb4 ~@23 eb4@8 ~@3, ~@91 c4 ~@4]/4", // Cm C Cm Fm
  B: "[~ [c4,ab4]@5 ~ g4@2 ~@4 [c3,c4,eb4] ~@8 [c3,c4,eb4]@7 ~@2 [c3,eb4]@2 ~@10 [c3,c4,eb4]@12 ~@6 [c3,c4]@2 ~@7 [c3,c4,eb4]@7 ~@2 [c3,c4,eb4] ~@5 [c4,ab4]@5 ~ g4@2 ~@3, ~ eb4@6 c4 ~@23 c4 ~@29 eb4 ~@23 eb4@8 ~@3, ~@91 c4 ~@4]/4", // Fm Cm C Cm Fm
  C: "[~ [c4,ab4]@5 ~ g4@2 ~@4 [c3,c4,eb4] ~@8 [c3,c4,eb4]@7 ~@2 [c3,eb4]@2 ~@10 [c3,c4,eb4]@12 ~@6 [c3,c4]@2 ~@7 [c3,c4,eb4]@7 ~@2 [c3,c4,eb4] ~@16, ~ eb4@6 c4 ~@23 c4 ~@29 eb4 ~@34]/4", // Fm Cm C Cm
  D: "~ [c4,ab4]@5 ~ g4@2 ~@15, ~ eb4@6 c4 ~@16", E: "~@13 [c4,ab4]@5 ~ g4@2 ~@3, ~@13 eb4@8 ~@3, ~@19 c4 ~@4",
  F: "[~@13 [f3,ab3,c4,eb4,g4]@28 ~@2 [f3,ab3,c4,eb4,g4]@14 ~@4 [c3,g3,d4,g4]@2 ~@7 [g3,d4,g4]@9 c4 ~@5 [c3,g3,eb4,g4]@6 d4 ~@4, ~@35 c3@4 ~@9]/4", // Fm7 Csus2 G5 Cm
  G: "[~ [c3,g3,eb4,g4]@6 d4 ~@5 [c3,eb3,c4,eb4] ~@8 [c3,g3,c4,eb4]@7 ~@2 [c3,g3,c4,eb4]@2 ~@10 [c4,eb4]@16 ~@2 [bb2,bb3,d4,f4]@4 ~@2 [bb2,bb3,d4,f4] ~@2 [bb2,bb3,d4,f4]@7 ~@2 [bb2,bb3,d4,f4]@3 ~@9 [f3,bb3,d4,f4]@13 ~@5 [f3,ab3,c4,eb4,g4]@28 ~@2 [f3,ab3,c4,eb4,g4]@14 ~@4 [c3,g3,d4,g4]@2 ~@7 [g3,d4,g4]@9 c4 ~@5 [c3,g3,eb4,g4]@6 d4 ~@4, ~@13 g3@2 ~@28 [c3,g3]@13 ~@110 c3@8 ~@18]/8", // Cm Bb Fm7 Csus2 G5 Cm C5
  H: "[~ [c3,g3,eb4,g4]@6 d4 ~@5 [c3,eb3,c4,eb4] ~@8 [c3,g3,c4,eb4]@7 ~@2 [c3,g3,c4,eb4]@2 ~@10 [c4,eb4]@16 ~@13, ~@13 g3@2 ~@28 [c3,g3]@13 ~@16]/3", // Cm C5
  I: "[~ [c4,ab4]@5 ~ g4@2 ~@4 [f3,ab3,c4,eb4,g4]@28 ~@2 [f3,ab3,c4,eb4,g4]@14 ~@4 [c3,g3,d4,g4]@2 ~@7 [g3,d4,g4]@9 c4 ~@5 [c3,g3,eb4,g4]@6 d4 ~@4, ~ eb4@6 c4 ~@62 c3@8 ~@18]/4", // Fm Fm7 Csus2 G5 Cm
})).s("gm_clavinet").gain(0.26).pan(0.7)

// other · flute
const flute = note(`<
  ~@2 A B C ~ D ~@3 E F G ~ H I J ~@60 K L ~@7 K M ~ N O P ~ Q R ~ S T ~@27 K L ~@7 K M ~@35 U V W ~@5 X Y Z AA AB AC P
  ~@2
>`.pickRestart({
  A: "~@13 d4@11", B: "~@19 g4@2 ~@3", C: "~ gb4@2 ~ f4@3 eb4@2 ~ d4@2 ~ eb4@3 d4@4 ~@4", D: "~ bb3@9 ~@14",
  E: "~ g4@2 ~ bb4@3 gb4 ~@5 f4@3 eb4@2 ~@6", F: "~@19 b3@2 ~ c4@2", G: "~ eb4@2 ~@4 f4@2 ~@4 d4@2 ~ eb4@2 ~@6",
  H: "~@7 g4@2 ~ bb4@2 ~ gb4@8 ~@3", I: "~ f4@5 ~@7 g4@8 ~ gb4 ~", J: "~ f4@3 eb4@2 ~ c4@2 ~@4 eb4@2 ~ f4@2 ~@6",
  K: "~@19 bb3@2 ~ c4@2", L: "~ d4@2 ~ eb4@2 ~ d4@9 ~@8", M: "~ eb4@2 ~ f4@5 ~@15", N: "~@4 d4@2 ~ c4 ~@16",
  O: "~@19 d4@2 ~@3", P: "~ eb4@5 ~@18", Q: "~@19 f4@3 ~@2", R: "~ bb3@2 ~ c4@2 ~ d4@2 ~ eb4@6 ~@8",
  S: "~@19 d4@2 ~ eb4 ~", T: "~ f4@4 ~@2 g4@4 ~@13, ~ e4 ~@22", U: "~@19 d4@3 eb4@2", V: "~ f4@2 ~ eb4@2 ~@18",
  W: "~@7 d4@3 eb4@2 ~ f4@2 ~@4 g4@3 ~@2", X: "~@7 c4@2 ~ d4@2 ~ eb4@3 ~@8", Y: "~@19 f4@3 eb4@2", Z: "~ d4@5 ~@18",
  AA: "~ c4@3 ~@15 d4@4 ~", AB: "~@13 eb4@4 ~@7", AC: "~@7 f4@4 ~@13",
})).s("gm_flute").gain(0.33)

// chords · pad halo
const pad_halo = note(`<
  ~@74 A@2 B C D@2 E@2 A@2 B C D@2 ~@24 F G ~@6 F G A@2 B C D@2 E@2 A@2 B C D@2 ~@40 F G ~@6 F G ~@2
>`.pickRestart({
  A: "[~@19 [ab3,c4,eb4,ab4]@15 ~@14]/2", B: "~@19 d4@2 ~@3, ~@13 [eb4,g4]@8 ~@3", C: "~ [eb4,g4]@6 d4@2 ~@15",
  D: "[~@19 [bb3,c4,eb4,g4]@18 ~@11]/2", E: "[~@19 [bb3,d4,f4,bb4]@14 ~@15]/2",
  F: "~@7 [c4,eb4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4] ~@2 [c4,eb4] ~@4, ~@7 g4@2 ~@7 ab4@2 ~ g4@2 ~@3", // Cm Ab Cm
  G: "~ [eb4,ab4]@2 ~@4 [eb4,g4]@2 ~@15, ~ c4 ~@5 c4 ~@16", // Ab5 Eb
})).s("gm_pad_halo").gain(0.33).pan(0.6)

// chords · slap bass 1
const slap_bass_1 = note(`<
  ~@17 A@4 B@16 C@4 A@4 D ~@2 E B@20 C@4 F@4 G@8 H@3 ~ A@4 C@4 A@4 C@4 A@4 B@12 I@4 G@8 H@3 ~ A@4 B@8 C@4 A@4 B@24 C@4
  ~@3
>`.pickRestart({
  A: "[~@13 [g3,bb3,c4] ~@8 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4,eb4] ~@11 [c3,g3,bb3,c4,eb4]@15 ~@3 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4] ~@5 [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@2 ~@3, ~@13 [c3,eb4]@2 ~@64 eb4@2 ~@15]/4", // C7 Cm7 C7 Ab Cm
  B: "[~ [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@3 ~@3 [g3,bb3,c4] ~@8 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4,eb4] ~@11 [c3,g3,bb3,c4,eb4]@15 ~@3 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4] ~@5 [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@2 ~@3, ~@13 [c3,eb4]@2 ~@64 eb4@2 ~@15]/4", // Ab Cm C7 Cm7 C7 Ab Cm
  C: "[~ [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@3 ~@3 [g3,bb3,c4] ~@8 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4,eb4] ~@11 [c3,g3,bb3,c4,eb4]@15 ~@3 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4,eb4]@7 ~@2 [c3,g3,bb3,c4] ~@16, ~@13 [c3,eb4]@2 ~@64 eb4@2 ~@15]/4", // Ab Cm C7 Cm7 C7 Cm
  D: "~ [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@3 ~@14", E: "~@13 [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@2 ~@3",
  F: "[~@13 [f3,ab3,c4,eb4,g4]@28 ~@2 [f3,ab3,c4,eb4,g4]@14 ~@4 [c3,g3,d4,g4]@2 ~@7 [g3,d4,g4]@9 c4 ~@5 [c3,g3,eb4,g4]@6 d4 ~@4, ~@35 c3@4 ~@9]/4", // Fm7 Csus2 G5 Cm
  G: "[~ [c3,g3,eb4,g4]@6 d4 ~@5 [c3,eb3,c4,eb4] ~@8 [c3,g3,c4,eb4]@7 ~@2 [c3,g3,c4,eb4]@2 ~@10 [c4,eb4]@16 ~@2 [bb2,bb3,d4,f4]@4 ~@2 [bb2,bb3,d4,f4] ~@2 [bb2,bb3,d4,f4]@7 ~@2 [bb2,bb3,d4,f4]@3 ~@9 [f3,bb3,d4,f4]@13 ~@5 [f3,ab3,c4,eb4,g4]@28 ~@2 [f3,ab3,c4,eb4,g4]@14 ~@4 [c3,g3,d4,g4]@2 ~@7 [g3,d4,g4]@9 c4 ~@5 [c3,g3,eb4,g4]@6 d4 ~@4, ~@13 g3@2 ~@28 [c3,g3]@13 ~@110 c3@8 ~@18]/8", // Cm Bb Fm7 Csus2 G5 Cm C5
  H: "[~ [c3,g3,eb4,g4]@6 d4 ~@5 [c3,eb3,c4,eb4] ~@8 [c3,g3,c4,eb4]@7 ~@2 [c3,g3,c4,eb4]@2 ~@10 [c4,eb4]@16 ~@13, ~@13 g3@2 ~@28 [c3,g3]@13 ~@16]/3", // Cm C5
  I: "[~ [c3,ab3,c4,eb4,ab4]@5 ~ [c3,g3,c4,eb4,g4]@3 ~@3 [f3,ab3,c4,eb4,g4]@28 ~@2 [f3,ab3,c4,eb4,g4]@14 ~@4 [c3,g3,d4,g4]@2 ~@7 [g3,d4,g4]@9 c4 ~@5 [c3,g3,eb4,g4]@6 d4 ~@4, ~@35 c3@4 ~@9]/4", // Ab Cm Fm7 Csus2 G5 Cm
})).s("gm_slap_bass_1").gain(0.4).pan(0.4)

// chords · synth brass 2
const synth_brass_2 = note("<~@8 A B ~@30 A B ~@30 A B ~@30 A B ~@46 A B ~@34>".pickRestart({
  A: "~@10 [a3,c4,eb4] ~@2 [a3,c4,eb4] ~@2 [a3,c4,g4]@2 ~@4 [a3,eb4,g4]@2, ~@10 g4@2 ~ g4@2 ~ eb4 ~@5 c4 ~", // Adim Am7 Am7b5
  B: "~ [b3,d4,f4,a4]@2 ~@4 [b3,d4,f4,a4]@2 ~@15", // Bm7b5
})).s("gm_synth_brass_2").gain(0.3).pan(0.6)

// other · lead 4 chiff
const lead_4_chiff = note(`<
  ~@33 A B A B C B A D ~@16 A B A B C B A B C B A B C B A D ~@16 A B A B C B A D A B A B C B A D ~@32 A B A B C B A B C
  B A B C B A D A B A B C B A D A B A B C B A D A B A B C B A B C B A B C B A D ~@3
>`.pickRestart({
  A: "~@19 c5 ~@4", B: "~ eb5@9 ~@3 bb4@10 ~", C: "~ bb4@9 ~@9 c5 ~@4", D: "~ eb5@9 ~@14",
})).s("gm_lead_4_chiff").gain(0.38).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C A B A C A B A C A B A D A D E D A D A D A D E D A D A D F D E D A D A D A D E D A D A D A D G D A D A D F D
  E D A D A D A D E D A D A D H D E D A D A D A D E D A D A ~ A D E D A D A@3 D E D A D A D A D E D A D A D A D E D A D
  A D F D E D A D A D A D E D A D A ~ A D E D A D A D A D E D A D A D H D E A@2 D A D A D E A@2 D A D A D E D A D A D A
  D E D A D A D H ~@2
>`.pickRestart({
  A: "~@13 x ~@10", B: "~@10 x ~@2 x ~@5 x ~@4", C: "~@13 x ~@5 x ~@4", D: "~@19 x ~@4", E: "~ x ~@11 x ~@10",
  F: "~@7 x ~@5 x ~@10", G: "~ x ~@22", H: "~@7 x ~@2 x ~@2 x ~@10",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@2 A@14 ~ A@35 ~ A@35 ~@2 A@7 ~ A@38 ~@2 A@19 ~ A@7 ~ A@21 ~>".pickRestart({
  A: "~ x ~@22",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@2 A@14 ~ A@35 ~ A@35 ~@2 A@7 ~ A@38 ~@2 A@19 ~ A@7 ~ A@21 ~>".pickRestart({
  A: "~ x ~@22",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A B ~@15 C D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D B ~ F D@2 E F D@2 E F D@2 E F D@2 E F D@2
  E F D@2 E F D@2 E F D@2 E F D E ~ C D@2 E F D@2 B C D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F
  D@2 E F D E ~ C D@2 E F D@2 E F D@2 E F D@2 E F D@2 B C D@2 E F D@2 B C D@2 E F D@2 E F D@2 E F D@2 E F D@2 E G ~@2
>`.pickRestart({
  A: "x ~@18 x ~@4", B: "~ x ~@5 x ~@16", C: "~@13 x ~@5 x ~@4", D: "~ x ~@5 x ~@5 x ~@5 x ~@4",
  E: "~ x ~@5 x ~@5 x ~@10", F: "~ x ~@11 x ~@5 x ~@4", G: "~ x ~@22",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@20 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A
  B ~@2 A B ~@2 A B ~@6 A B ~@2 C ~@3 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@6 A B ~@2 A
  B ~@2 A B ~@2 A B ~@2 C B ~@2 A B ~@2 C B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2
>`.pickRestart({
  A: "~@19 x ~@4", B: "~@7 x ~@16", C: "~@13 x ~@10",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@169 [~@13 x ~@10] ~@18>").gain(0.5)

// drums · bongos
const bongos = s("bongo:4").struct("<~ A B C D E B F B A B C D E B F B ~@171>".pickRestart({
  A: "~@19 x ~@2 x ~", B: "~@7 x ~@11 x ~@4", C: "~@13 x ~@10", D: "~ x ~@22", E: "~ x ~@11 x ~@5 x ~@2 x ~",
  F: "~@7 x ~@2 x ~@2 x ~@5 x ~@2 x ~",
})).gain(1.04)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~ A B C D ~ B@3 E B C D ~ B@4 ~@170>".pickRestart({
  A: "~@13 x ~@10", B: "~ x ~@22", C: "~ x ~@17 x ~@2 x ~", D: "~@7 x ~@11 x ~@4", E: "~ x ~@11 x ~@10",
})).gain(1.04)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B
  C B C B C B C B C B C B C B C B C B C B C B C B C B C B C ~@2 B C B C B C ~@2 B C B C B C B C B C B C B C B C B C B C
  B C B C B C B C B C B C B C B C B C ~@2 B C B C B C B C B C B C B C B C B C ~@2 B C B C B C ~@2 B C B C B C B C B C B
  C B C B C B C B C A ~
>`.pickRestart({
  A: "~@7 x ~@2 x ~@2 x ~@10", B: "~@19 x ~@2 x ~", C: "~ x ~@22",
})).gain(1.76)

stack(
  bass, clavinet, flute, pad_halo, slap_bass_1, synth_brass_2, lead_4_chiff, kick, snare, clap, hihat, open_hat, crash,
  bongos, bongos_2, cabasa
)

More by Britney Spears