Strudelify

Stronger

Britney Spears

KeyG♯ minorTempo113 bpm
0:00/0:00
// Stronger — Britney Spears
// 113 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 91 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(113/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 · distortion guitar · "untitled"
const bass = note("<A ~ A ~ A ~@49 B ~ B ~@32 C@2>".pickRestart({
  A: "g#1@7 ~, g#2@3 ~", B: "g#1@2 g#1@2 g#1@3 ~", C: "[~ g#1@2 ~, ~@2 g#2@3 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.41)

// other · synth strings 2
const synth_strings_2 = note("<~ A ~@3 B ~@10 C@2 ~@18 D@2 ~@15 E ~@3 F ~@6 G@2 ~@7 H I ~@13 J K ~>".pickRestart({
  A: "~ g#2@3, g#5, ~ g#3@7", B: "~ g#3", C: "[~@7 f#2@5 ~@4]/2", D: "[~@7 [f#2,f#3]@5 ~@4]/2", E: "g#3", F: "~ g#4",
  G: "[~ c#3@2 ~]/2", H: "~ [d#2,g#3]", I: "[d#2,d#3] ~", J: "~ g#2", K: "a#2 ~",
})).s("gm_synth_strings_2").gain(0.41)

// other · synth strings 2 · soft notes
const synth_strings_2_soft = note("<~@14 A B@2 ~@17 A C@2 ~@54>".pickRestart({
  A: "e3", B: "[d#3@15 g#2@11 ~@6]/2", C: "[d#3@15 ~ b3@10 ~@6, ~@15 g#2@11 ~@6]/2",
})).s("gm_synth_strings_2").gain(0.2)

// other · piano
const piano = note("<~@2 A@4 ~@8 B C D@2 ~@14 A@2 E F G@2 ~@12 A@4 ~@37>".pickRestart({
  A: "g#6!3 ~@5 g#6!3 ~@5", B: "e3!4, e2@3 ~@5", C: "d#3 e3 ~@2, d#2@3 ~@5", D: "[[g#1,g#2]@3 ~@4 f#1@4 ~@5]/2",
  E: "e3!3 ~, e2@3 ~@5", F: "d#3!2 ~@2, d#2@3 ~@5", G: "[[g#1,g#2]@3 ~@4 [f#1,f#2]@4 ~@5]/2",
})).s("gm_piano").gain(0.2)

// other · distortion guitar
const distortion_guitar = note("<~@2 [g#1!3 ~] ~ [g#1!3 ~] ~@86>").s("gm_distortion_guitar").gain(0.31)

// other · distortion guitar · soft notes
const distortion_guitar_soft = note("<A@6 ~@85>".pickRestart({
  A: "[~@7 g#1@3 ~@6, ~ g#2 ~@2]/2",
})).s("gm_distortion_guitar").gain(0.15)

// other · pan flute
const pan_flute = note("<~@3 A B ~ C D E F C G E H I J@3 ~@8 K L E M N O P Q ~@12 R S ~ T U V W ~@38>".pickRestart({
  A: "~@2 b5@2 a#5 ~ a#5@2 g#5@6 g#5@2", B: "g#5@2 g#5@2 g#5@2 d#5 ~@9, ~@2 d#5 ~@13", C: "g#3 ~ g#3 ~ g#3 ~@3",
  D: "~@3 a#3 b3 a#3 g#3 f#3", E: "e3 ~ b3 ~ e3 ~@3", F: "~ d#3 ~ d#3 ~@3 d#3", G: "~ g#3!2 a#3 b3 a#3 g#3 f#3",
  H: "~ d#3 ~ d#3 ~@4", I: "e4@4 ~@4 e4@3 ~@5",
  J: "[d#4@2 e4 d#4@2 c#4@2 c#4@2 b3@3 ~ g#3 d#4 c#4@2 d#4 ~ d#4 d#4@2 f#4 ~]/3", K: "g#3@5 ~ g#3@6 ~@4",
  L: "~@2 g#3 a#3 b3 a#3 g#3 f#3", M: "~@2 d#3@3 ~ d#3@3 ~@5 d#3@2", N: "g#3 ~ g#3 ~ g#3 ~ b3!2",
  O: "g#3@3 ~@5 b3@2 a#3@2 g#3@2 f#3@2", P: "e3@2 ~@4 b3 c#4, ~@4 c#4@3 ~", Q: "~ d#4@3 ~@4", R: "g#3@5 ~ g#3@5 ~@5",
  S: "~@10 f#4 g#4@3 f#4@2", T: "~@10 g#4 ~ g#4@2 d#4@2", U: "g#3 ~ g#3 g#3@3 ~@2 g#3 ~ g#3 g#3@3 ~@2", V: "~@14 g#3!2",
  W: "g#3 ~ g#3 g#3@2 g#3!4 ~ g#3 g#3@3 ~@2",
})).s("gm_pan_flute").gain(0.41)

// other · orchestra hit
const orchestra_hit = note("<~@2 A ~@3 B ~@39 C ~@3 C ~@15 D ~ E ~ F ~@3 E ~ E ~ F ~@2 E ~ E ~ F ~@5>".pickRestart({
  A: "[g#3,g#4] ~@3", B: "[g#3,g#4,g#5] ~@3", C: "[g#3,g#4] ~@7", D: "~@8 [e2,e3]@3 ~@5", E: "~@8 [g#2,e3]@3 ~@5",
  F: "~@8 [b2,b3,b4]@3 ~@5", // B
})).s("gm_orchestra_hit").gain(0.36)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A B ~@3 C ~@6 D E@2 F G H@3 I J ~@2 K L M ~@5 D N@2 F G H@3 I O ~@3 P Q R ~@13 S T@2 U@5 V@3 W@7 X@5 Y@2
>`.pickRestart({
  A: "~@13 g#4@3", B: "g#4 ~ g#4 ~ g#4 ~@3", C: "g#3 ~ g#3 ~ g#3 ~@3", D: "~@2 [d#3,d#4] [f#3,f#4]",
  E: "[[g#2,e3,b4]@6 [g#2,e3,g#4]@6 [g#2,d#3,g#4]@2 [f#2,f#3,a#4]@6 [g#2,g#3,g#4]@2 [g#2,d#3,g#4]@9 ~]/2", // E C#m G#5 F# G# G#5
  F: "[g#2,g#3,b4]@2 [g#2,g#3,b4]@2 [g#2,g#3,b4] [g#2,g#3,g#4]!2 [g#2,d#3,d#4]", // G#m G# G#5
  G: "[f#2,f#3]@2 [g#2,g#3] [g#2,d#3,b4]@3 b2@2, a#4@3 ~@5", // F# G# G#m
  H: "[[b2,d#3,b4]@4 [f#2,d#3,f#4]@2 [e2,e3,e4]@4 [d#2,d#3,d#4]@4 [g#2,g#3,g#4]@4 [f#2,f#3,f#4]@4 [e2,e3,f#4]@4 [d#2,d#3,d#4,b4]@4 [d#2,d#3,d#4,b4]@4 [f#2,c#3,c#4,f#4]@9 ~@5]/3", // B D#m E D# G# F# Esus2 G#m …
  I: "~ d#2 ~ d#2, [g#2,g#3,g#4] [a#2,a#3,a#4]", J: "[g#2,g#3]@5 ~ [g#2,g#3]@5 ~@5", K: "~@7 [d#3,d#4]",
  L: "[g#3,g#4] ~@3 [g#3,g#4] ~@3 [g#3,g#4] ~@3 b4@2 b4@2", M: "g#4 ~@7",
  N: "[[g#2,e3,b4]@6 [g#2,e3,g#4]@6 [g#2,d#3,g#4]@2 [f#2,f#3,a#4]@6 [g#2,g#3,g#4]@2 [g#2,d#3]@9 ~, ~@22 g#4@7 ~@3]/2", // E C#m G#5 F# G# G#5
  O: "[g#2,g#3,g#4]@2 ~ [g#2,g#3,g#4]@2 ~@3", P: "g#4 ~ g#4 g#4@2 ~@3 g#4 ~ g#4 g#4@2 ~@3", Q: "~@14 g#4!2",
  R: "g#4 ~ g#4 g#4@2 g#4!4 ~ g#4 g#4@2 ~@3", S: "~ e4 ~ b4, ~ e3",
  T: "[[e3,a#4]@2 [e3,g#4]@2 a#4@2 b4 g#3@4 ~@3 b4@2, ~@4 f#3@3 g#4@3 ~@2 e3@4]/2", // Edim E
  U: "[a#4@2 a#4@2 g#4@2 g#4@2 [f#3,a#4]@6 [g#3,g#4]@8 ~@6 [b3,d#4]@2 [b3,e4]@4 [f#3,f#4]@4 [b3,b4]@4 [f#3,f#4]@4 [b3,b4]@4 [b3,b4]@4 [f#3,c#5]@4 [f#3,a#4]@4 [f#3,g#4]@4 [f#3,f#4]@5 ~ [g#3,g#4]@6 ~@2, e3!2 ~@18]/5", // F# G# B E5 F# B F# B …
  V: "[[a#3,a#4]@6 ~@2 [g#2,e3,g#4]@6 [g#2,e3,g#4]@6 [g#2,d#3,d#4]@2 [f#2,f#3,f#4]@6 [g#2,g#3,g#4]@2 [g#2,d#3]@9 ~ [g#2,g#3,b4]@4 [g#2,g#3,b4]@4, ~@30 d#4@7 ~@11]/3", // A# C#m G#5 F# G# G#5 G#m
  W: "[[g#2,g#3,b4]@2 [g#2,g#3,g#4]@2 [g#2,g#3,g#4]@2 [g#2,d#3,d#4]@2 [a#2,f#3,a#4]@6 [g#2,d#3,b4]@6 b2@4 [b2,d#3,b4]@4 [f#2,d#3,d#4,f#4,b4]@2 [e2,e3,e4,b4]@4 [d#2,d#3,d#4,f#4]@4 [g#2,g#3,g#4,b4]@4 [f#2,f#3,f#4]@4 [e2,e3,f#4,b4]@4 [d#2,d#3,d#4,b4]@4 [d#3,c#4,c#5]@4 a#4@4 g#4@4 f#4@6 [g#2,e3,g#4]@6 [g#2,e3,g#4]@6 [g#2,d#3,d#4]@2 [f#2,f#3,f#4]@6 [g#2,g#3,g#4]@2 [g#2,d#3]@9 ~ [g#2,g#3,b4]@4 [g#2,g#3,b4]@4, ~@58 [c#3,c#4]@13 ~@41, ~@58 f#4@8 ~@28 d#4@7 ~@11]/7", // G#m G# G#5 D#m G#m B E5 D#m …
  X: "[[g#2,g#3,b4]@2 [g#2,g#3,g#4]@2 [g#2,g#3,g#4]@2 [g#2,d#3,d#4]@2 [f#2,f#3]@4 [g#2,g#3]@2 [g#2,d#3,b4]@6 b2@4 [b2,d#3,b4]@4 [f#2,d#3,d#4,f#4,b4]@2 [e2,e3,e4,b4]@4 [d#2,d#3,d#4,f#4]@4 [g#2,g#3,g#4,b4]@4 [f#2,f#3,f#4]@4 [e2,e3,f#4,b4]@4 [d#2,d#3,d#4,b4]@4 [d#2,d#3,d#4,b4,c#5]@4 a#4@4 g#4@4 f#4@6 [g#2,g#3,g#4]@7 ~, ~@4 a#4@3 ~@22 [c#3,c#4]@6 ~@5, ~@29 f#2@5 ~@6, ~@29 f#4@4 ~@7]/5", // G#m G# G#5 F# G# G#m B E5 …
  Y: "[[a#2,a#3,a#4]@6 ~@2 [g#3,g#4]@5 ~ [g#3,g#4]@5 ~@13]/2", // A# G#
})).s("gm_string_ensemble_1").gain(0.31)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@8 A B C@2 A B D E F@2 ~@5 G@2 H I@2 J B ~@2 A B D E F@2 ~@5 G@2 H ~@8 K L M N K L M N K L M O ~@14 P@2 ~@5 P@2 ~@2
>`.pickRestart({
  A: "b4", B: "a#4", C: "d#5/2", D: "e5", E: "d#5", F: "[b4@13 c#5@16 ~@3]/2", G: "[~@10 b5@4 b5@4 a#5@9 ~@5]/2",
  H: "g#5@7 ~ a#5@7 ~", I: "[g#5@5 ~ g#5@6 ~@20, g#4]/2", J: "b4@2 ~@2 e4 ~@3, e4 ~ b4@6", K: "[g#3,g#4,d#5]",
  L: "[e3,e4,e5]", M: "[f#3,f#4,f#5]", N: "[c#3,c#4,f5]", O: "[c#3,c#4,f5] ~", P: "[~@2 b5@4 b5@4 a#5@9 ~@13]/2",
})).s("gm_string_ensemble_1").gain(0.15)

// bass · fretless bass
const bass_2 = note("<~@6 A B C D A E F D ~@12 G H F D I J F D ~@11 K ~@4 L M N ~@38>".pickRestart({
  A: "g#1 ~ g#1 ~ g#1 ~@3", B: "~@3 a#1 b1 a#1 g#1 f#1", C: "e1@2 ~@2 e1@2 ~@2 e1!3 ~@5", D: "~@4 d#1!3 f#1",
  E: "~ g#1!2 a#1 b1 a#1 g#1 f#1", F: "e1 ~ e1 ~ e1 ~@3", G: "g#1@2 ~ g#1@2 ~@3", H: "~@2 g#1 a#1 b1 a#1 g#1 f#1",
  I: "g#1 ~ f#1 ~ g#1 ~ b1!2", J: "g#1@3 ~@5 b1@2 a#1@2 g#1@2 f#1@2", K: "g#1!2 ~ g#1!3 ~ g#1 a#1@4 a#1@4",
  L: "g#1 ~ g#1 g#1@2 ~@3 g#1 ~ g#1 g#1@2 ~@3", M: "~@14 g#1!2", N: "g#1 ~ g#1 g#1@2 g#1!4 ~ g#1 g#1@2 ~@3",
})).s("gm_fretless_bass").gain(0.41)

// other · pad halo
const pad_halo = note("<~@14 A B C@2 ~@16 A D E ~@54>".pickRestart({
  A: "[e4,e5]@4 [e4,e5]@3 ~ [e4,e5]@4 e5@3 ~", B: "d#5@3 ~ d#5@2 d#5@4 c#5@3 ~ c#5@2",
  C: "[~@2 b4@3 ~ b4@3 ~ g#4@2 d#5@2 c#5@4 [c#5,d#5]@4 [c#5,d#5]@2 d#5@3 ~ f#5@3 ~]/2", // C#sus2
  D: "d#5@3 ~ d#5@3 ~ d#5@4 c#5@3 ~", E: "b4@3 ~ b4@2 b4@3 ~@7",
})).s("gm_pad_halo").gain(0.15)

// chords · synth bass 2
const synth_bass_2 = note(`<
  ~@14 A B@3 C@2 D E F@3 G H ~@7 A I J K C@2 D E F@3 L H ~@7 M N O ~ P ~@2 Q R ~@2 P S T@2 U@5 V@2 W X Y@3 Z AA AB AC@5
  AD@2
>`.pickRestart({
  A: "[e2,e4]@6 ~@2 e4@5 ~@3", // E
  B: "[d#4@4 e4@2 d#4@3 ~ c#4@2 c#2@2 ~@4 b3@4 ~@4 g#3@2 d#4@2 c#4@4 d#4@2 ~@2 d#4@2 d#4@4 f#4@4, d#2@3 ~@4 c#4@2 ~@15, ~@8 g#1@3 ~@4 f#1@3 ~@6]/3",
  C: "[[e1,g#4]@6 g#4@5 ~ d#4@2 ~@6 g#4@2 ~@2 g#1@6 ~@2, ~@14 f#4@5 ~@3 d#4@6 ~@4, ~@8 f#1@3 ~@5]/2", // E
  D: "g#4@3 ~ g#4@3 ~ g#4@2 g#4@2 g#4@2 d#4@2, e1@3 ~@5", E: "f#4@2 g#4 ~@3 b3@2, f#1@3 d#4@3 ~@2, ~@4 g#1@3 ~",
  F: "[[b1,b4]@2 f#4 ~@15 f#1@2 f#1@2 f#1@2, ~ b1 e1!2 c#2!2 b1!2 f#1 ~@3, ~@6 e4@4 d#4@4 g#4@4 f#4@4 e4@4 d#4@4 d#4@4 c#4@9 ~@5]/3", // B
  G: "g#1!2 d#1!2, g#4@7 ~ a#4@7 ~", H: "g#4@5 ~ g#4@5 ~@5", I: "f#4@4 d#4@2 c#4@3 ~ d#4@2 c#2@2 c#4@2, d#2@3 ~@5",
  J: "~ b3@2 ~@2 g#3 f#4!2, g#1@3 ~@5", K: "d#4 c#4 ~ d#4 d#4@2 f#4@2, f#1@3 ~@5",
  L: "g#1!2 ~ g#1!3 ~ g#1 d#1@4 d#1@4, g#4@7 ~ a#4@7 ~", M: "b4 ~ b4 g#4@3 ~@2 b4 ~ b4 g#4@3 f#4@2", N: "~@14 g#4!2",
  O: "b4 ~ b4 g#4@2 g#4 f#4@2 b4 ~ b4 g#4@3 f#4@2", P: "b4 ~ b4 g#4@3 ~@2 b4 ~ b4 g#4@3 ~@2", Q: "~@7 g#4",
  R: "g#4 d#4 ~@6", S: "~@3 b4, ~@4 e1@3 ~", T: "[a#4@2 g#4@2 a#4@2 b4 ~ g#1@3 ~@3 b4@2, ~@4 f#1@3 g#4@3 ~@2 e1@3 ~]/2",
  U: "[a#4!2 g#4!2 [f#1,a#4]@3 ~ g#1@3 ~ b1@2 b4 ~@2 f#4 ~@12 g#4 ~@3 f#1@2 g#1@2 g#1@2, ~@7 g#4@3 ~@4 b1@2 e1@2 e1@2 c#2@2 c#2@2 b1@2 b1@2 f#1@2 f#1@2 f#1@2 ~@6, ~@15 b4@2 ~@2 b4@2 f#4@2 b4@2 b4@2 c#5@2 a#4@2 g#4@2 f#4@2 ~ g#4@3 ~]/5", // F#
  V: "[d#1@2 d#1@2 [e1,b4]@3 ~@5 f#1@3 ~, a#4@3 ~@4 b4@9]/2", W: "~ a#4 g#4@2 ~@8 b4@4, g#1@3 ~ e1@3 ~, b4 ~@7",
  X: "a#4!2 g#4 d#4 c#5 b4 a#4 b4, ~@4 f#1@3 ~",
  Y: "[g#1@3 ~ [b1,b4]@2 f#4 ~@15 f#1@2, g#4 ~@2 b1 e1!2 c#2!2 b1!2 f#1 ~, ~@7 e4@2 d#4@2 g#4@2 f#4@2 e4@2 d#4@2 d#4@2 c#4@3]/3", // B
  Z: "[f#1,d#4]@2 [f#1,f#4]@2 [e1,g#4]@3 g#4", AA: "~ f#4 d#4@2 ~@4 f#4@4 g#4@2 a#4@2, ~@4 f#1@3 ~",
  AB: "g#4@4 g#4 d#4 ~@2 g#4@4 g#4@4, g#1@3 ~ e1@3 ~",
  AC: "[g#4@2 g#4@2 g#4@2 d#4@2 [f#1,f#4]@6 ~@4 c#4@2 b3@2 ~@2 [b1,b4]@4 f#4@2 ~@28 f#4@2 g#4@2 ~@4 g#4@2 f#1@4 g#1 [g#1,d#4] ~ [g#1,f#4] [g#1,g#4] [g#1,d#4] ~ [g#1,g#4], ~@7 d#4@2 ~@6 e4@2 d#4@2 g#4@2 f#4@2 e4@2 d#4@2 d#4@2 ~@2 f#4@2 ~@3 g#4 ~@3, ~@8 g#1@3 ~@3 b1@2 e1@2 e1@2 c#2@2 c#2@2 b1@2 b1@2 f#1@2 f#1@2 f#1@2 ~@6]/5", // F# B G#5 G#7 G# G#5 G#
  AD: "[[d#1,a#4]@4 d#1@4 g#4@5 ~ g#4@5 ~@13]/2", // D#5
})).s("gm_synth_bass_2").gain(0.36)

// chords · synth bass 2 · soft notes
const synth_bass_2_soft = note("<~@55 A ~ A ~ B C ~ D ~ B ~@11 E ~@14>".pickRestart({
  A: "g#4 f#4 ~@6", B: "b4 ~ b4 g#4@3 ~@2 b4 ~ b4 g#4@3 ~@2", C: "b4 ~ b4 g#4@3 ~@10", D: "~@2 g#4 d#4 g#4 d#4 ~@2",
  E: "~@5 a#4 g#4@2 ~@8, ~@2 b4 ~@5",
})).s("gm_synth_bass_2").gain(0.2)

// other · music box
const music_box = note(`<
  ~@22 A B C D E ~@11 F G H I A B C D ~@24 J H K L M N O P J H K Q N O P J H K ~@3
>`.pickRestart({
  A: "b5 ~@7 g#5 ~@7", B: "g#5 ~@7 b5 ~@7", C: "f#5 ~@15", D: "g#4 ~@7 a#4 ~@7", E: "g#4 ~@15",
  F: "g#5 ~@5 g#5 ~@5 g#5 ~ f#5 ~", G: "~@6 g#5 ~@9", H: "g#5 ~@7 g#5 ~@7", I: "f#5 ~@5 g#5 ~@9", J: "~@8 b5 ~@7",
  K: "b5 ~@7 f#5 ~@7", L: "~@8 g#4 ~@7", M: "a#4 ~@7 g#5 ~@5 g#5 ~", N: "~@4 g#5 ~ f#5 ~@7 g#5 ~", O: "~@8 g#5 ~@7",
  P: "g#5 ~@7 f#5 ~@5 g#5 ~", Q: "~@8 g#5 ~@5 g#5 ~",
})).s("gm_music_box").gain(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@3 C ~@2 B@5 D E F G ~ H@7 G B@4 I J B K E F G ~ H@7 L M@3 N M@3 O M@3 P Q@2 R S@2 T@2 ~ U V@7 W V@6 X V@6 Y Z ~
>`.pickRestart({
  A: "~@4 x!4", B: "x ~@3 x!2 ~@2", C: "x ~@7 x!5 ~ x ~", D: "x ~@7 x!4 ~@4", E: "x!2", F: "x ~@5 x ~ x ~@5 x!2",
  G: "x ~@6 x!2 ~ x ~ x ~ x ~", H: "x ~@6 x!2 ~ x ~@5", I: "x!3 ~", J: "~@4 x!2 ~@2", K: "x ~@7 x!3 ~@5",
  L: "x!2 ~ x!3 ~ x!2 ~@7", M: "x!3 ~@3 x ~ x!3 ~@3 x ~", N: "x!3 ~@3 x ~ x!3 ~ x ~ x ~", O: "x!3 ~@3 x!5 ~@3 x ~",
  P: "x!3 ~@3 x ~ x!4 ~ x!2 ~", Q: "x ~@6 x", R: "x ~@5 x!2", S: "~@11 x ~@2 x ~", T: "~@5 x!2 ~", U: "~@8 x ~@6 x",
  V: "x ~ x ~@5 x ~@6 x", W: "x ~ x ~@3 x!3 ~@6 x", X: "x ~ x ~@3 x ~ x ~@6 x", Y: "x ~ x ~@5 x!2 ~ x!3 ~ x",
  Z: "x!2 ~@2",
})).gain(0.41)

// drums · rim
const rim = s("rim").struct("<~@19 A ~@19 A ~@13 A ~@3 A ~@10 B ~@5 C D E D@6 E D@4 F ~@2>".pickRestart({
  A: "~@5 x!2 ~", B: "~ x!2 ~@5", C: "~@3 x", D: "~ x ~ x", E: "~ x!2 ~@3 x ~", F: "~ x ~@2",
})).gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  ~ A B@3 C ~ D B@5 E B@2 F G B@12 ~ B@2 C B@2 F H B@7 A B@3 I B@3 J B@3 J ~@8 D B@7 K B@6 L B@6 M N ~
>`.pickRestart({
  A: "~@8 x ~@3 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~ x ~", D: "~@3 x", E: "~@2 x ~@3 x!2", F: "~ x ~@2",
  G: "~@12 x ~ x!2", H: "~@8 x ~@3 x ~ x!2", I: "~@4 x ~ x!5 ~ x ~ x ~", J: "~@2 x ~@2 x!3", K: "~@4 x!2 ~@6 x ~@3",
  L: "x!2 ~ x", M: "~@4 x ~@3 x!2 ~ x!3 ~ x", N: "x!2 ~@2",
})).gain(0.41)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A ~@14 B C ~@15 D ~@2 B E ~@7 F ~@45>".pickRestart({
  A: "~@13 x!3", B: "~@3 x", C: "~@8 x ~ x!6", D: "~@6 x!2", E: "~@10 x!6", F: "~@8 x ~ x ~ x!4",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct("<~@19 A ~@19 A ~@13 A B@3 C ~@10 D ~@5 E B F B@6 F B@4 G ~@2>".pickRestart({
  A: "~@5 x!2 ~", B: "~ x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~ x!2 ~@5", E: "~@3 x", F: "~ x!2 ~@3 x ~", G: "~ x ~@2",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@21 A B ~@2 C ~@15 A B ~@14 D ~@12 E ~@7 E ~@6 F ~@3 G ~>".pickRestart({
  A: "~@14 x!2", B: "x", C: "~@6 x!2", D: "~@7 x", E: "~@6 x!3 ~@7", F: "~@3 x!2 ~@3", G: "x!2 ~@2",
})).gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@25 A ~@7 B ~@12 C@3 D C@3 E C@4 ~@16 F ~@16>".pickRestart({
  A: "~@14 x!2", B: "~@8 x!3 ~@5", C: "x!2 ~@2 x!2 ~@2", D: "x ~ x ~@3 x!3 ~ x ~@5", E: "x!2 ~@2 x!2 ~ x",
  F: "~@6 x!2 ~@8",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~ A ~@5 B ~@5 C D@2 E A ~@13 F D ~ D@2 E A ~@7 A G@12 D ~@22 H ~@7 H ~>".pickRestart({
  A: "~@2 x!2", B: "~@5 x ~ x", C: "~@6 x!2", D: "x", E: "x ~@6 x", F: "~ x ~@2", G: "~ x!2 ~@2 x!2 ~", H: "x!2 ~@2",
// … 48 more lines

More by Britney Spears