Strudelify
Overprotected cover art

Britney

Overprotected

Britney Spears

KeyC minorTempo97 bpm
0:00/0:00
// Overprotected — Britney Spears
// 97 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: The whole transcription plays 55 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(97/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass
const bass = note(`<
  ~@2 A B C D E F C D G H I J K L C D C M N O C P Q F R S ~ T U V W J X L C Y C Z N AA AB AC ~@11 AD C D C M N AE B AF
  AG E M N AH B C D AI M N AJ AK ~
>`.pickRestart({
  A: "~@10 g1@3 g1 ~@2", B: "~@2 g1@2 ~ g1@3 g1 ~ f1@3 f1@2 ~", C: "~@2 g1@2 ~ g1@3 g1@2 c2@3 c2@2 ~",
  D: "~@2 c2@3 g1 bb1 c2@2 ~ f1@3 f1@2 ~", E: "~@2 g1@2 ~ g1@3 g1@2 c2@3 c2@2 ~, ~@2 f1 ~@13",
  F: "~@2 c2@2 ~ c2@3 c2@2 f1@3 f1@2 ~", G: "~@2 g1@2 ~ g1@3 g1@2 c2@3 c2 ~@2", H: "~@2 c2@2 ~ c2@3 c2 ~ f1@6",
  I: "~ f1 bb1@4 ~ bb1@2 ~ c2@2 ~ c2!2 bb1", J: "g1@2 c2@7 ~ f1@2 ~ f1@2 ~", K: "f1@2 bb1@2 ~@4 b1 ~@7, ~@2 f1 ~@13",
  L: "~@8 g1@2 f1@3 f1@2 ~", M: "~@2 c2@2 ~ c2@3 c2 ~ ab1@3 ab1@2 ~", N: "~@2 bb1@2 ~ bb1@3 bb1 ~ eb2@3 eb2@2 ~",
  O: "~@2 ab1@3 eb2 g1 g1@2 ~ f1@3 f1@2 ~", P: "~@2 c2 ~@12 b1", Q: "~@8 g1@2 c2@3 c2@2 ~",
  R: "~@2 g1@3 d2 f1 g1@3 c2@3 c2 ~@2", S: "~@2 c2 ~@13", T: "~@8 c2 ~ f1@3 f1@2 ~",
  U: "~@2 g1@2 ~ g1@3 g1 ~ c2@3 c2 c2@2", V: "~@2 c2@2 ~ c2 bb1@2 bb1@2 f1@6",
  W: "~ f1 bb1@4 ~ bb1@2 ~ c2@2 ~ c2!2 bb1, ~@2 f1 ~@13", X: "f1@2 bb1@2 ~@3 b1 ~@8",
  Y: "~@2 c2@3 g1 bb1 c2@3 f1@2 ~ f1@2 ~", Z: "~@2 c2 g2 eb2 c2@3 c2 ~ ab1@3 ab1@2 ~",
  AA: "~@2 ab1@3 eb2 f1 g1@2 ~ f1@3 f1@2 ~", AB: "~@2 g1@2 ~ g1 c2@2 c2@2 c2@3 c2@2 ~",
  AC: "~@2 c2@2 ~ c2@3 c2 ~ f1@2 ~@4", AD: "~@5 c2@3 c2 ~ f1@3 f1@2 ~", AE: "~@2 ab1@3 eb2 g1 g1@3 f1@3 f1 f1@2",
  AF: "~@2 g1@2 ~ g1@3 [g1,c2] ~ c2@3 c2@2 ~", AG: "~@2 c2@3 g1 bb1 c2 f1 ~ f1@3 f1@2 ~",
  AH: "~@2 ab1@3 eb2 f1 g1@2 ~ f1@3 f1 ~@2", AI: "~@2 g1@2 ~ g1@3 g1 ~ c2@3 c2@2 ~",
  AJ: "~@2 ab1@3 eb2 gb1 g1@2 ~ f1@3 f1@2 ~", AK: "~@2 g1@2 ~ g1@3 g1 ~ c2 ~@5",
})).s("gm_acoustic_bass").gain(0.32).pan(0.6)

// bass · acoustic bass · soft notes
const bass_soft = note("<~@14 A ~@8 B ~@3 C D ~@5 E ~@11 F G ~@2 F H I J K ~@23>".pickRestart({
  A: "~@7 d2 g1 ~@7", B: "~@7 [c1,f1,ab1] ~@7 [g1,d2]", C: "~@7 [c1,f1,ab1] ~@8", D: "~ [g1,b1,d2] ~@7 [c2,eb2] ~@6",
  E: "~@7 g1 d2 ~@7", F: "~@9 [g1,c2,eb2] ~@6", G: "~@9 [c1,f1,ab1] ~@6", H: "~@10 [eb1,ab1,c2] ~@5",
  I: "~ [f1,bb1,d2] ~@7 eb2 [bb1,g2] ~@5", J: "[eb1,ab1,c2] ~@4 [g1,c2] d1 ~@2 [g1,c2,eb2] ~@5 [g1,b1,d2]",
  K: "~@5 [g1,c2,eb2] ~@10", // Cm
})).s("gm_acoustic_bass").gain(0.13).pan(0.6)

// chords · pad warm
const pad_warm = note("<~@2 A B C@6 D@2 ~@11 E@3 F@5 G@4 H@8 I@4 J@8 K@7 L@7 M@8 ~>".pickRestart({
  A: "~@11 d4 ~ d4 ~@2", B: "~@2 d4 ~@2 d4 ~@2 d4!2 [c4,f4]@6",
  C: "[~@2 [d4,g4]@8 [c4,eb4]@16 [c4,f4]@8 [d4,g4]@8 c4@8 c4@3 c4@3 c4!2 [c4,f4]@8 [d4,g4]@8 [c4,eb4]@15 [c4,f4]@7, ~@14 eb4@5 ~@13]/6", // G5 Cm F5 G5 F5 G5 Cm F5
  D: "[~@2 [d4,g4]@8 c4@3 c4@5 c4@3 c4@3 c4!2 ~@6, ~@10 eb4@15 ~@7]/2", // G5
  E: "[~@8 c4!2 [c4,f4]@5 d4@3 d4@3 d4@3 d4!2 [c4,eb4]@15 ~ [c4,f4]@6, ~@8 f4@2 ~@5 g4@11 ~@22]/3", // F5 Cm F5
  F: "[~@2 [d4,g4]@8 c4@3 c4@5 c4@3 c4@2 c4!2 c4@32 [c4,f4] f4@8 [d4,g4]@7 c4@4 c4@3, ~@10 eb4@13 f4@2 ~@33 c4@15 eb4@7]/5", // G5 F5 G5
  G: "[~@2 c4@3 ~ d4@2 d4!2 [c4,f4]@54, ~@5 c4@5 ~@54, ~@3 f4@2 ~@27]/4", H: "[~@5 [c4,f4]@59]/8",
  I: "[~@9 c4 c4@48 [c4,eb4]@6, ~@5 f4@27]/4", // Cm
  J: "[~@2 c4@3 c4@3 c4!2 c4@48 c4@8 c4@3 c4@3 c4 c4@55, ~@5 f4@59, ~@58 eb4@15 ~@55]/8", K: "[~@9 c4@103]/7",
  L: "[~@2 d4@3 d4@3 d4 [c4,f4]@103, ~@2 g4@7 d4 ~@102]/7", // F5
  M: "[~ d4 d4@3 d4@3 d4 [d4,f4] ~@103 d4 d4@3 d4@3 d4 eb4 ~@6, ~ g4@8 c4@112 ~@7, ~@113 g4@7 ~@8]/8", // Dm
})).s("gm_pad_warm").gain(0.11).pan(0.9)

// chords · piano
const piano = note(`<
  A B ~ C D@2 E@2 F@2 G H I@2 J K L@2 M@2 N O@3 P@2 Q@2 R S T H U@2 J K L@2 M@2 V W@6 X@4 Y@6 Z AA@8 AB@4 AC@2 AD@2 AE
  AF AG@2
>`.pickRestart({
  A: "[eb4,g4]@4 c4@2 ~ [b3,d4]@8 ~, c4 ~@7", B: "~ g3@2 ~@5", C: "~@2 c3@2 c3 ~ c3 ~ c4 g4 f4@5 ~",
  D: "[d4 eb4 d4@5 ~ d4 eb4 c4@10 ~ c4!2 bb3 c4 g4 f4@6, ~@26 eb4 ~@5]/2",
  E: "[eb4@2 d4 ~ eb4 d4 ~ c4@13 ~ c4!2 g3 c4 g4 f4@5 ~]/2", F: "[eb4 d4 d4@5 ~ d4 eb4 c4@10 ~ c4!2 bb3 c4 g4 f4@6]/2",
  G: "d4 ~ d4@2 eb4 d4@2 c4@9", H: "~@2 eb4@3 ~ g4@3 ~ ab4@2 g4 g4@2 f4",
  I: "[~ f4@7 ~ eb4 g4@2 f4 f4@2 eb4@2 g4@2 f4 ~ eb4@3 f4 eb4 ab4@2 g4 g4@2 f4]/2",
  J: "~ f4@6 ~ eb4 f4 g4@2 eb4 f4 g4@2", K: "eb4 f4 g4@2 ab4 g4@2 f4@7 c4!2",
  L: "[c4 d4 d4@2 ~ d4 ~ [d4,eb4] ~ eb4@21 c4!2]/2", M: "[c4 d4 d4@2 c4 d4@2 eb4 ~ eb4@20 ~ eb4@2]/2",
  N: "f4 ~ f4 ~ f4!2 ~ [f4,g4] ~ g4@6 ~", // Fsus2
  O: "[f4 g4 ab4@2 g4 f4@2 eb4@2 ~ f4@2 ~ g4 f4@5 ~ eb4 d4@2 c4@3 ~@2 d4 eb4@7 ~ c4!2 ~ c4 g4 [c4,eb4,g4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2, ~@26 c4@5 ~@8 bb3@2 ~@7, ~@9 g3@3 ~@4]/3", // Cm
  P: "[d4 eb4 d4@4 ~ d4!2 eb4 c4@10 ~ c4!2 bb3 c4 g4 f4@6]/2",
  Q: "[d4 ~ d4 ~ eb4 d4@2 c4@13 ~ bb4@2 ab4 g4 f4 f4@5 eb4]/2",
  R: "f4 eb4 f4@5 eb4 ~ eb4 eb4@2 [eb4,g4] f4 ~ f4, ~@8 f4@2 g4 ~@5", S: "eb4@3 d4 ~ d4 c4@2 bb3@2 f4@3 eb4 f4@2",
  T: "~ eb4 [d4,g4]@5 ~ [eb4,g4] [d4,f4]@2 [c4,eb4]@5", // G5 Eb Dm Cm
  U: "[~ f4@8 eb4 g4@2 f4 f4@2 eb4@2 g4@2 f4 ~ f4@2 eb4@2 eb4 ab4@2 g4 g4@2 f4]/2", V: "f4 ~ f4 ~ f4 f4@2 g4 ~ g4@6 ~",
  W: "[f4 g4 ab4@2 g4 f4@2 eb4@2 ~ f4@3 g4 f4@6 eb4 d4@2 ~@19 f3 ~ [f3,ab3] ~ f3 ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ ab3 ~ [f3,ab3] ~ [f3,ab3] ~ ab3 ~@3 f3 ~@3 ab3 ~ f3 ~@5 [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ [f3,ab3] ~ f3 ~ f3 ~ c4@2 [g3,eb4] ~ [g3,eb4] ~, ~@23 c4@67 g3 ~@3 c4@2]/6", // Fm Cm
  X: "[[g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ [g3,eb4] ~ eb4@2 g3 ~ f4!4 f4!7 eb4!3 ~@6 f4!3 ~ f4 ~ f4 eb4!2 g4 ~@8 g4@2 f4 eb4@2 d4@2 d4@3 eb4 eb4@3, c4 ~ c4!2 c4@18 c4@10, ~@8 g3 ~@33 f3@12 ~@10]/4", // Cm
  Y: "[c4@2 c4@4 eb4@3 ~ [ab3,bb3,f4] ~ f4 ~ f4!2 f4!7 eb4!2 eb4@6 eb4 eb4 f4!2 eb4!2 f4!2 eb4!2 f4 g4 ~ g4@4 eb4 f4 g4@4 eb4@4 ~@8 c3 ~ c3@2 c3@2 c3 ~ [eb4,g4]@8 [d4,f4]@4 ~ [d4,eb4] ~ f4@3 eb4 ~ [c4,eb4,g4]@2, ~@3 c4@26 c4@8 c4@9 ~@2, ~@12 [ab3,bb3]@6 ~@69 g4@2 d4 ~@6]/6", // Bb7 Eb Dm Ebmaj7 Cm Absus2
  Z: "[eb4,g4] ~ [f4,ab4] ~ ab4 eb4@2 f4@2 c4@2 [c4,eb4,g4]@3 c4!2, c4@4 ~@3 d4 ~@8", // Eb Fm Cm
  AA: "[~ d4 [d4,f4]@2 eb4 f4@2 bb4@2 [eb4,g4]@5 [eb4,g4] ~ eb4@2 [f4,ab4] ~ [f4,ab4] [eb4,g4] ~ [d4,f4] ~ [c4,eb4]@2 [eb4,g4]@2 ~ eb4@2 f4 ~ f4 ~ f4 f4@2 g4 ~ g4 g4@2 f4 eb4@2 ~ f4 g4 ab4@2 g4 f4@2 eb4@2 ~ f4@3 g4 f4@6 eb4 d4@2 ~@5 f4!4 f4!7 eb4!3 c3@2 c3 ~ c3@2 f4!3 ~ f4 ~@2 eb4!2 g4 ~@3 eb4@4 ~ d4@2 ~ eb4@2 d4 ~ d4@3 eb4 eb4@3, c4@25 ~@2 c4@44 c4@36 ab3@6 ~@3 f4@2 ~@10, ~@5 d4 ~ d4 ~@8 g4 ~@30 bb3@3 ~@52 f4@2 ~@2 f3@6 ~@16, ~@27 c4@5]/8", // Dm Eb Fm Eb Dm Cm Eb
  AB: "[c4@2 ~@4 [g3,eb4]@3 ~ [ab3,f4]@2 f4 ~ f4!2 f4!7 eb4!2 eb4@6 eb4 eb4 f4!2 eb4!2 f4!2 eb4!2 f4 g4 ~ g4@4 eb4 f4 g4@3 ~ eb4@4 c4@4 c4!2, ~ c4@28 ~@3, ~@10 bb3 ~ [ab3,bb3]@5 ~@47]/4", // Cm Db Absus2
  AC: "[~ d4 [d4,f4]@2 ~ [d4,f4] ~ [d4,g4] ~ [c4,f4]@2 eb4 c4@18 c4!2, c4@9 ~@23]/2", // Dm G5 F5
  AD: "[~ d4 [d4,f4]@2 ~ [d4,f4] ~ bb4@2 [eb4,g4]@21 eb4@2, c4@29 ~@3, ~@7 d4 ~@24]/2", // Dm Eb
  AE: "f4 ~ f4 ~ f4 f4@2 g4 ~ g4 g4@2 f4 eb4@2 bb3", AF: "f4 g4 ab4@2 g4 f4@2 eb4@2 ~ f4@3 eb4 d4@2",
  AG: "[~ c4 b3@5 ~ eb4 ~@2 c4@9 ~@12, ~@9 d4@2 ~@21, ~@5 g3@5 ~@6]/2",
})).s("gm_piano").gain(0.64)

// chords · piano · soft notes
const piano_soft = note("<A B@2 ~@40 C D E F G ~ H@2 ~@5 I J ~@7 K ~@6 L ~@5>".pickRestart({
  A: "~ g3, ~@8 f3 ~@7", B: "[~@3 g3@3 ~@2 eb4@7 ~, ~@2 [b3,d4]@10 ~@2 [f3,ab3]@17 ~, ~@15 c4@16 ~]/2",
  C: "~@10 ab3 ~@3 ab3 ~", D: "~@8 f3 ~@5 f3 ~", E: "[f3,ab3] ~ ab3 ~ [f3,ab3] ~ f3 ~ ab3 ~ [f3,ab3] ~ [f3,ab3] ~@3",
  F: "~@6 ab3 ~ ab3 ~ eb4 ~ c4@2 ~@2", G: "~ c4 ~@6", H: "[~@13 eb4@5 ~@14, ~@11 ab3@9 ~@12]/2",
  I: "~@9 eb4 ~@2 c4@2 ~@2", J: "~@2 g4 ~ f4 g4@3 ~ eb4@2 ~@5, ~@4 c4@5 ~@7", K: "~ g4 ~@6", L: "~@4 eb4 ~@11",
})).s("gm_piano").gain(0.4)

// chords · synth strings 1
const synth_strings_1 = note("<~@11 A@5 B@2 C@2 D E F@2 ~@7 G@5 H@2 I@2 J K L@8 ~ M N O@8 P@7 Q@7 R@2 ~>".pickRestart({
  A: "[~@10 f4@8 f4@8 eb4@16 f4@8 f4@6 ~@10 d4@3 d4@3 d4 ~ [c4,f4]@6, ~@28 g4@9 ~@3]/5", // F5
  B: "[~ [d4,g4]@8 [c4,eb4]@16 ~ [c4,f4]@6]/2", C: "[~ [d4,g4]@8 c4@9 c4@3 c4@3 c4 ~ [eb4,ab4]@6, ~@9 eb4@16 ~@7]/2",
  D: "~@2 [d4,f4]@7 [eb4,g4]@7", E: "~ [eb4,ab4]@5 [d4,g4]@3 [c4,f4]@7",
  F: "[~ [d4,g4]@9 c4@8 c4@3 c4@2 ~@9, ~@5 eb4@7 ~@4]/2", // G5
  G: "[~@10 f4@8 f4@8 eb4@15 f4 f4@8 f4@6 ~@10 d4@3 d4@3 d4 ~ [c4,f4]@6, ~@28 g4@9 ~@3]/5", // F5
  H: "[~ [d4,g4]@4 [c4,eb4]@8 [c4,f4]@3]/2", I: "[~@2 [d4,g4]@8 c4@8 c4@3 c4@3 c4 ~ [eb4,ab4]@6, ~@5 eb4@8 ~@3]/2",
  J: "~ [d4,f4]@8 ~ [eb4,g4]@6", K: "~ [eb4,ab4]@4 ~ [d4,g4]@3 [c4,f4]@7",
  L: "[~ [d4,g4]@5 c4@12 c4@3 c4@3 c4 ~@103, ~@3 eb4@61]/8", M: "~@5 ab4@3", N: "~ f4@8 ~ g4@6",
  O: "[ab4@6 g4@4 ~@6 g4@5 ~@13 c4@3 c4@3 c4 ~ [c4,f4]@7 ~ [d4,g4]@8 c4@15 [c4,f4]@8 ~ [d4,g4]@7 c4@9 c4@3 c4@3 c4 ~ ab4@7 ~ [d4,f4]@8 [eb4,g4]@6, ~@10 eb4@11 eb4@37 eb4@31 eb4@17 eb4@16 ~@6]/8", // F5 G5 F5 G5 Dm Eb
  P: "[~@2 ab4@4 [d4,g4]@3 ~ c4@3 c4@5 ~@8 [c4,f4]@7 [d4,g4]@7 c4@16 [c4,f4]@10 [d4,g4]@8 c4@8 c4@3 c4@3 c4 ~ ab4@7 [d4,f4]@9 [eb4,g4]@6, ~ eb4@19 eb4@17 eb4@8 eb4@8 ~@3, ~@5 f4@4 ~@47]/7", // G5 F5 G5 F5 G5 Dm Eb
  Q: "[~ ab4@5 [d4,g4]@3 c4@4 c4@4 ~@9 c4@7 ~ [d4,g4]@7 c4@16 c4@8 [d4,g4]@8 c4@9 c4@3 c4@3 c4 ~ ab4@7 d4@8 [eb4,g4]@7, ~ eb4@40 eb4@32 eb4@17 eb4@15 ~@7, ~@9 f4@17 f4@31 f4@48 ~@7]/7", // G5 Eb
  R: "[~@2 ab4@4 [d4,g4]@3 c4@8 ~@9 c4 ~@5, ~ eb4@13 ~@2]/2", // G5
})).s("gm_synth_strings_1").gain(0.12).pan(0.9)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~@11 A@5 ~@3 B ~@11 C@5 ~@3 B ~@11 D@2 E F@2 ~@3 B ~@6 B ~@6 B ~@4>".pickRestart({
  A: "[~@10 c4@8 d4@8 c4@16 c4@8 d4@6 d4@10 ~@7 d4 ~@6]/5", B: "~@9 c4 ~@6",
  C: "[~@10 c4@8 d4@8 c4@15 c4 c4@8 d4@6 d4@10 ~@7 d4 ~@6]/5", D: "[~@17 d4@8 ~ eb4@6, ~@5 eb4@8 ~@3]/2",
  E: "~@3 d4@2 c4@3, eb4@5 ~@3", F: "[d4@5 c4@13 ~@14]/2",
})).s("gm_synth_strings_1").gain(0.07).pan(0.9)

// chords · lead 1 square
const lead_1_square = note("<~@16 A B@2 C@8 ~@9 A B@2 D@8 ~@23 E F@3 ~@4>".pickRestart({
  A: "~@14 eb4 ~", B: "[eb4@2 f4 ~ f4 eb4 ~ d4@2 c4@2 eb4@18 ~ eb4 ~]/2",
  C: "[eb4@2 f4 ~ f4 eb4@2 d4@2 c4@2 eb4@117]/8", D: "[eb4@2 f4 ~ f4 eb4@2 d4@2 c4@2 ~@47 c4@10 ~@60, ~@11 eb4@117]/8",
  E: "~@7 [eb4,g4]", // Eb
  F: "[g4@2 [f4,ab4] ~ [f4,ab4] g4@2 [d4,f4] ~ [c4,eb4]@2 [eb4,g4]@19 eb4@2 g4 ~ [f4,ab4] ~ [f4,ab4] g4@2 [d4,f4] ~@8, eb4@5 eb4@4 ~@2 c4@31 ~@6, ~@30 g4 ~ eb4@5 eb4@5 ~@6]/3", // Fm Dm Cm Eb Fm Dm
})).s("gm_lead_1_square").gain(0.64)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C@3 B C@3 B C@2 D B C@3 B C@3 E F C@2 E ~ B C B C@2 D B C@3 G C@3 B C@3 B C@3 B C@2 D B C@3 B C@2 B C@3 B C@2
  B C@3 B C@2 E ~
>`.pickRestart({
  A: "~@7 x", B: "~ x!3 ~@3 x", C: "~@3 x ~@3 x", D: "~@3 x ~@4", E: "~ x!3 ~@4", F: "~@2 x!2 ~@3 x",
  G: "~ x ~ x ~@3 x",
})).gain(0.45)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@15 A ~@3 A ~@3 A@2 ~@2 A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@2 A ~@3 A ~@2 A ~
>`.pickRestart({
  A: "~@5 x ~@10",
})).gain(0.28)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B C@3 B C@3 B C@2 D B C@3 B C@3 E B C@2 E ~ B C B C@2 D B C@3 B C@3 B C@3 B C@3 B C@2 F B C@3 B C@2 B C@3 B C@2
  B C@3 B C@2 E ~
>`.pickRestart({
  A: "~@5 x ~ x", B: "~@3 x ~ x ~ x", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~ x ~@2", E: "~@3 x ~ x ~@2", F: "~ x ~ x ~@4",
})).gain(0.28)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A B C@3 B C@3 D ~@3 B C@3 B C@3 D A C@2 D ~ B C D ~@3 B C@3 E C@3 F C@3 B C@3 D ~@3 B C@3 F C@2 B C@3 B C@2 B C@3
  F C@2 D ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@4 x ~", C: "x!4", D: "~ x ~@6", E: "x!3 ~@3 x ~", F: "x!2 ~@4 x ~",
})).gain(0.17)

// drums · low tom
const low_tom = s("lt").struct("<~@39 [~ x ~@2] ~@38>").gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@2 ~@2 A ~ A ~ A ~@3 A ~@3 B ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@2 A ~@3 A
  ~@2 A ~
>`.pickRestart({
  A: "~@7 x!2 ~@7", B: "~@3 x ~@3 x!2 ~@7",
})).gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A B ~@2 A B ~@2 A B ~@3 B ~@3 B ~@2 A B@2 ~ A B ~ B A B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~ A B ~@2 A B ~
  A B ~@3 B ~ A B ~
>`.pickRestart({
  A: "~@7 x", B: "~@9 x!2 ~@5",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct("<~@11 A B@2 C ~@16 A B@2 C ~@16 A B@2 D ~@23>".pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x!6 ~@2", D: "x!5 ~@3",
})).gain(0.28)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@15 A B@3 A B@2 C ~@4 D ~@2 E ~@4 A B@3 F B@3 G ~@11 A B@3 H B I A B@2 C A B J A B@3 K B C L ~
>`.pickRestart({
  A: "~@10 x!6", B: "x!16", C: "x!14 ~@2", D: "~@5 x ~@2", E: "~@13 x!2 ~", F: "x!2 ~ x!2 ~@5 x!6", G: "x",
  H: "x!2 ~@8 x!6", I: "x!15 ~", J: "x!13 ~@3", K: "x ~@9 x!6", L: "~@10 x!2 ~@4",
})).gain(0.33)
// … 32 more lines

More by Britney Spears