Strudelify

Come On Over (All I Want Is You)

Christina Aguilera

KeyE♭ majorTempo120 bpm
0:00/0:00
// Come On Over (All I Want Is You) — Christina Aguilera
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 100 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 2
const bass = note(`<
  A B A B A B C ~ D E D F D E D F G H I H I H J K A L A L M N O P Q B C ~ D E D F D E D F G H I H I H J K A L A L M N O
  P Q B A R S T@2 U S T@2 V W H X H X H Y Z@2 AA AB AC@4 AD AE AF AG@3 AC@2 AD AE AF AB ~
>`.pickRestart({
  A: "eb1@7 ~@5 eb1@4 g1@7 ~@5 g1@4", B: "ab1@7 ~@5 ab1@4 bb1@7 ~ d1@4 d1@4", C: "eb1@7 ~@5 eb1@4 g1@7 ~@5 ab1@4",
  D: "eb1@7 ~@25", E: "ab1@7 ~@25", F: "ab1@7 ~@9 ab1@7 ~ ab1@7 ~", G: "c2@7 ~@5 eb1@11 ~@5 f1@4",
  H: "f1@7 ~@5 gb1@11 ~ g1@7 ~", I: "c1@7 ~@5 eb1@11 ~@5 f1@4", J: "f1@7 ~@5 f1@18 ~@2",
  K: "bb1@7 ~ bb1@7 ~ bb0@14 ~@2", L: "ab1@7 ~@9 bb1@7 ~ bb1@7 ~", M: "c2@7 ~@5 c1@11 ~@9", N: "ab1@11 ~ a1@18 ~@2",
  O: "bb2@11 ~ bb0@11 ~@9",
  P: "[bb0,bb1]@7 ~ [bb0,bb1]@7 ~ [bb0,bb1]@4 [bb0,bb1]@4 [c1,c2] [eb1,eb2]@3 [c1,c2] [bb0,bb1]@3", // Bb C Eb C Bb
  Q: "[c1,c2] eb1@7 ~@4 eb1@4 g1@7 ~@5 g1@4", R: "ab1@7 ~@5 ab1@4 bb1@7 ~@9", S: "eb2@7 ~@9 eb1@7 ~ db1@4 eb1@4",
  T: "~@16 eb1@7 ~ db1@4 eb1@4", U: "~@12 eb1@4 eb1 eb1@7 eb1 bb3@7", V: "~@12 eb1@4 eb1 eb1@3 eb1@4 eb1 eb1@7",
  W: "c2@4 c2@4 ~@4 eb1@11 ~@5 f1@4", X: "c1@4 c1@4 ~@4 eb1@11 ~@5 f1@4", Y: "c2@7 ~@5 b1@11 ~ bb1@7 ~",
  Z: "[~@3 f1@13]/2", AA: "~@3 f1@7 ~@9 f1@7 ~@6", AB: "~@3 bb1@7 ~ bb1@7 ~ bb1@7 ~ bb1@5",
  AC: "[~@3 eb1@7 ~@5 eb1@4 g1@7 ~@5 g1@4 ab1@7 ~@9 bb1@7 ~ bb1@5]/2", AD: "~@3 c2@7 ~@5 c1@11 ~@6",
  AE: "~@3 ab1@11 ~ a1@17", AF: "~@3 bb2@11 ~ bb0@11 ~@6",
  AG: "[~@3 [bb0,bb1]@7 ~ [bb0,bb1]@7 ~ [bb0,bb1]@4 [bb0,bb1]@4 [eb1,eb2]@3 ~ [bb0,bb1]@3 ~ [c1,c2] ~@11 eb1@4 g1@7 ~@5 g1@4 ab1@7 ~@9 bb1@7 ~ bb1@5, ~@27 [c1,c2] ~@3 [c1,c2] ~@3 eb1@7 ~@54]/3", // Bb Eb Bb C
})).s("gm_synth_bass_2").gain(0.8)

// bass · piano
const bass_2 = note(`<
  A B A B A B C ~@9 D@6 E F A G A G H I J K A B C ~@9 D@6 E F A G A G H I J K A B A L ~@8 M@6 N O@2 P Q R@4 S T U V R@4
  S T U Q ~
>`.pickRestart({
  A: "[eb1,eb2]@7 ~@5 [eb1,eb2]@4 [g1,g2]@7 ~@5 [g1,g2]@4", // Eb G
  B: "[ab1,ab2]@7 ~@5 [ab1,ab2]@4 [bb1,bb2]@7 ~ [d1,d2]@4 [d1,d2]@4", // Ab Bb D
  C: "[eb1,eb2]@7 ~@5 [eb1,eb2]@4 [g1,g2]@7 ~@5 [ab1,ab2]@4", // Eb G Ab
  D: "[[c2,c3]@11 ~ [eb1,eb2]@15 ~ [f1,f2]@15 ~ [gb1,gb2]@11 ~ [g1,g2]@7 ~]/2", E: "[f1,f2]@7 ~@5 [f1,f2]@18 ~@2",
  F: "[bb1,bb2]@7 ~ [bb1,bb2]@7 ~ [bb1,bb2]@14 ~@2", G: "[ab1,ab2]@7 ~@9 [bb1,bb2]@7 ~ [bb1,bb2]@7 ~",
  H: "[c2,c3]@15 ~", I: "[ab1,ab2]@11 ~ [a1,a2]@18 ~@2", J: "[bb1,bb2]@15 ~",
  K: "[bb1,bb2]@7 ~ [bb1,bb2]@7 ~ [bb1,bb2]@7 ~@9", L: "[ab1,ab2]@7 ~@5 [ab1,ab2]@4 [bb1,bb2]@7 ~@9",
  M: "[[c2,c3]@4 [c2,c3]@4 ~@4 [eb1,eb2]@15 ~ [f1,f2]@15 ~ [gb1,gb2]@11 ~ [g1,g2]@7 ~]/2", // C Eb F Gb G
  N: "[c2,c3]@7 ~@5 [b1,b2]@4 ~@8 [bb1,bb2]@7 ~", O: "[~@3 [f1,f2]@13]/2", P: "~@3 [f1,f2]@7 ~@9 [f1,f2]@7 ~@6",
  Q: "~@3 [bb1,bb2]@7 ~ [bb1,bb2]@7 ~ [bb1,bb2]@7 ~ [bb1,bb2]@5", // Bb
  R: "[~@3 [eb1,eb2]@7 ~@5 [eb1,eb2]@4 [g1,g2]@7 ~@5 [g1,g2]@4 [ab1,ab2]@7 ~@9 [bb1,bb2]@7 ~ [bb1,bb2]@5]/2", // Eb G Ab Bb
  S: "~@3 [c2,c3]@29", T: "~@3 [ab1,ab2]@11 ~ [a1,a2]@17", U: "~@3 [bb1,bb2]@29",
  V: "~@3 [bb1,bb2]@7 ~ [bb1,bb2]@7 ~ [bb1,bb2]@7 ~@6", // Bb
})).s("gm_piano").gain(0.8)

// chords · ocarina
const ocarina = note(`<
  ~@8 A B A C A B A B ~ D ~ D ~ D ~ E ~@12 A B A C A B A B ~ D ~ D ~ D F E ~@21 D ~ D ~ D ~@6 G ~ H ~@5 G ~ I ~@5
>`.pickRestart({
  A: "[eb4,ab4,c5]@7 ~@25", B: "[ab4,c5,eb5]@7 ~@25", C: "[ab4,c5,eb5]@7 ~@9 [ab4,bb4,c5,f5]@7 ~ [ab4,bb4,c5,f5]@7 ~",
  D: "~@16 [ab4,bb4,db5,f5]@7 ~ [ab4,bb4,db5,f5]@7 ~", E: "[ab4,ab5]@7 ~ [ab4,ab5]@7 ~ [ab4,ab5]@14 ~@2",
  F: "[ab4,bb4,eb5]@15 ~", G: "~@19 [ab4,bb4,eb5]@7 ~ [ab4,bb4,eb5]@5", H: "~@19 [c5,eb5,ab5]@7 ~ [c5,eb5,ab5]@5",
  I: "~@19 [bb4,db5,f5,ab5]@7 ~ [bb4,db5,f5,ab5]@5", // Bbm7
})).s("gm_ocarina").gain(0.72)

// chords · harpsichord · "Tout Droits Réervées"
const harpsichord = note("<~@16 A@6 B C ~@20 A@6 B C ~@20 A@6 ~@22>".pickRestart({
  A: "[c4@7 ~ [eb4,g4]@4 bb3@8 [eb4,g4]@8 a3@8 [eb4,g4]@8 ab3@11 ~ bb3 g3@7]/2", B: "~@2 g3@2 ab3@2 eb4@9 ~",
  C: "[ab3,c4,eb4]@7 ~ [ab3,c4,eb4]@7 ~ [ab3,c4,eb4]@14 ~@2", // Ab
})).s("gm_harpsichord").gain(0.56)

// chords · piano · "out permission"
const piano = note("<~@28 A B C D ~@24 A B C D ~@19 E@2 F G ~@4 H I J K@2 ~@3 H I J L ~>".pickRestart({
  A: "[c4,eb4,g4]@11 ~@5", B: "[c4,eb4,ab4]@7 ~@5 [c4,gb4,a4]@18 ~@2", C: "[c4,eb4,ab4,bb4]@15 ~",
  D: "~ [bb3,bb4] bb2 [bb2,bb3,bb4] ~ [bb3,bb4] bb2 [bb2,bb3,bb4], [bb1,bb2]@7 ~@9 [bb1,bb2]@7 ~@9", // Bb
  E: "[~@3 [g4,b4,d5]@13]/2", F: "~@3 [c4,eb4,ab4]@7 ~@9 [c4,eb4,ab4]@7 ~@6",
  G: "~@3 [c4,eb4,ab4]@7 ~ [c4,eb4,ab4]@7 ~ [c4,eb4,ab4]@7 ~ [c4,eb4,ab4]@5", H: "~@3 [c4,eb4,g4]@22 ~@7",
  I: "~@3 [c4,eb4,ab4]@7 ~@5 [c4,gb4,a4]@17", J: "~@3 [c4,eb4,ab4,bb4]@29",
  K: "[~@7 [bb3,bb4]@4 bb2@4 [bb2,bb3,bb4]@4 ~@4 [bb3,bb4]@4 bb2@4 [bb2,bb3,bb4]@4 ~@29, ~@3 [bb1,bb2]@7 ~@9 [bb1,bb2]@7 ~@38]/2", // Bb
  L: "~@3 [c4,eb4,ab4,bb4]@7 ~ [c4,eb4,ab4,bb4]@7 ~ [c4,eb4,ab4,bb4]@7 ~ [c4,eb4,ab4,bb4]@5", // Ab
})).s("gm_piano").gain(0.48)

// other · lead 2 sawtooth · "mm3k"
const lead_2_sawtooth = note(`<
  A B A B A B C ~ D E D F D E D F G H I H I H J K A L A L M N O P Q B C ~ D E D F D E D F G H I H I H J K A L A L M N O
  P Q B A R S@7 T U H V H V H W ~@2 X@4 Y@2 Z AA AB AC@3 Y@2 Z AA AB AD ~
>`.pickRestart({
  A: "eb2@7 ~@5 eb2@4 g2@7 ~@5 g2@4", B: "ab2@7 ~@5 ab2@4 bb2@7 ~ d2@4 d2@4", C: "eb2@7 ~@5 eb2@4 g2@7 ~@5 ab2@4",
  D: "eb2@7 ~@25", E: "ab2@7 ~@25", F: "ab2@7 ~@9 ab2@7 ~ ab2@7 ~", G: "c3@7 ~@5 eb2@11 ~@5 f2@4",
  H: "f2@7 ~@5 gb2@11 ~ g2@7 ~", I: "c2@7 ~@5 eb2@11 ~@5 f2@4", J: "f2@7 ~@5 f2@18 ~@2",
  K: "bb2@7 ~ bb2@7 ~ bb1@14 ~@2", L: "ab2@7 ~@9 bb2@7 ~ bb2@7 ~", M: "c3@7 ~@5 c2@11 ~@9", N: "ab2@11 ~ a2@18 ~@2",
  O: "bb3@11 ~ bb1@11 ~@9",
  P: "[bb1,bb2]@7 ~ [bb1,bb2]@7 ~ [bb1,bb2]@4 [bb1,bb2]@4 [c2,c3] [eb2,eb3]@3 [c2,c3] [bb1,bb2]@3", // Bb C Eb C Bb
  Q: "[c2,c3] eb2@7 ~@4 eb2@4 g2@7 ~@5 g2@4", R: "ab1@7 ~@5 ab1@4 bb1@4 eb3@4 eb3 eb3@3 eb3 eb3@3",
  S: "eb3 eb3@3 eb3 eb3@3 eb3 eb3@3 eb3@4 eb3 eb3@3 eb3 eb3@3 eb3@4 eb3 eb3@3",
  T: "eb3 eb3@3 eb3 eb3@3 eb3 eb3@3 eb3@4 eb3 eb3@7 ~@8", U: "c3@4 c3@4 ~@4 eb2@11 ~@5 f2@4",
  V: "c2@4 c2@4 ~@4 eb2@11 ~@5 f2@4", W: "c3@7 ~@5 b2@11 ~ bb2@7 ~",
  X: "[~@31 eb3@4 eb3@4 eb3@4 eb3@3 ~ eb3@3 ~ eb3@3 ~ eb3@3 ~ eb3@3 ~ eb3@3 ~ eb1@7 ~@5 eb1@4 g1@7 ~@5 g1@4 ab1@7 ~@9 bb1@7 ~ bb1@5, ~@67 eb3 ~@60]/4",
  Y: "[~@3 eb1@7 ~@5 eb1@4 g1@7 ~@5 g1@4 ab1@7 ~@9 bb1@7 ~ bb1@5]/2", Z: "~@3 c2@7 ~@5 c1@11 ~@6",
  AA: "~@3 ab1@11 ~ a1@17", AB: "~@3 bb2@11 ~ bb0@11 ~@6",
  AC: "[~@3 [bb0,bb1]@7 ~ [bb0,bb1]@7 ~ [bb0,bb1]@4 [bb0,bb1]@4 [eb1,eb2]@3 ~ [bb0,bb1]@3 ~ [c1,c2] ~@11 eb1@4 g1@7 ~@5 g1@4 ab1@7 ~@9 bb1@7 ~ bb1@5, ~@27 [c1,c2] ~@3 [c1,c2] ~@3 eb1@7 ~@54]/3", // Bb Eb Bb C
  AD: "~@3 bb1@7 ~ bb1@7 ~ bb1@7 ~ bb1@5",
})).s("gm_lead_2_sawtooth").gain(0.56)

// other · string ensemble 1 · "MIDI MAN!A! 3000!"
const string_ensemble_1 = note(`<
  ~@16 A@6 B C D@7 E F ~@11 A@6 B C D@7 E F ~@11 A@6 G ~@2 H I J@7 K@2 J@6 I ~
>`.pickRestart({
  A: "[[c3,c4]@11 ~ [eb2,eb3]@15 ~ [f2,f3]@15 ~ [gb2,gb3]@11 ~ [g2,g3]@7 ~]/2", B: "[f2,f3]@15 ~",
  C: "[bb2,bb3,bb4]@7 ~ [bb2,bb3,bb4]@7 ~ [bb2,bb3,bb4]@7 ~@9", // Bb
  D: "[eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~", // Eb
  E: "[bb4,bb5]@4 [bb2,bb3] [bb2,bb3]@3 bb3 [bb4,bb5]@3 [bb2,bb3]@4 [bb4,bb5]@4 [f3,f4,f5]@4 [g3,g4,g5] [bb3,bb4,bb5]@3 [g3,g4,g5] [bb3,bb4]@3, ~@2 bb2 ~@4 bb2", // Bb F G Bb G Bb
  F: "[c4,c5] [eb3,eb4,eb5]@7 ~@24, c3@7 ~@25", G: "[c4,c5,c6]@7 ~@5 [b3,b4,b5]@4 ~@8 [bb3,bb4,bb5]@7 ~",
  H: "~@3 [ab3,ab4,ab5]@7 ~@9 [ab3,ab4,ab5]@7 ~@6", // Ab
  I: "~@3 [bb3,bb4,bb5]@7 ~ [bb3,bb4,bb5]@7 ~ [bb3,bb4,bb5]@7 ~ [bb3,bb4,bb5]@5", // Bb
  J: "~@3 [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@5", // Eb
  K: "[~@3 [bb4,bb5]@4 [bb2,bb3]@3 ~ [bb2,bb4,bb5]@4 [bb2,bb3]@4 [bb4,bb5]@4 [f3,f4,f5]@4 [bb3,bb4,bb5]@3 ~ [bb2,bb3,bb4]@4 [c3,eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@7 ~ [eb4,eb5,eb6]@5, ~@11 bb3 ~@15 [g3,g4,g5] ~@3 [g3,g4,g5] ~@3 [c4,c5] ~@28]/2", // Bb F Bb Cm Eb G C
})).s("gm_string_ensemble_1").gain(0.56)

// other · overdriven guitar
const overdriven_guitar = note("<~@76 A@2 ~@22>".pickRestart({
  A: "[c5@7 ~ bb4@7 ~ bb4@7 ~ c5@4 bb4@34 ~@2]/2",
})).s("gm_overdriven_guitar").gain(0.48)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@16 A@6 B C D ~@3 E ~@15 A@6 B C D ~@3 E ~@7 F ~@3 F ~@3 G@6 H ~@4 I ~@3 J ~@3 I ~@3 J ~@2 K ~
>`.pickRestart({
  A: "[c3@11 ~ eb2@15 ~ f2@15 ~ gb2@11 ~ g2@7 ~]/2", B: "f2@15 ~", C: "bb2@7 ~ bb2@7 ~ bb2@14 ~@2",
  D: "[eb3,bb3]@7 ~@25", E: "[c3,g3]@7 ~@25", F: "[bb2,eb3]@7 ~@25",
  G: "[[c3,g3]@4 [c3,g3]@4 ~@4 eb2@15 ~ f2@15 ~ gb2@11 ~ g2@7 ~]/2", H: "c3@7 ~@5 b2@11 ~ bb2@7 ~",
  I: "~@3 [eb3,bb3]@7 ~@22", J: "~@3 [c3,g3]@7 ~@22",
  K: "~@3 [bb2,f3,bb3]@7 ~ [bb2,f3,bb3]@7 ~ [bb2,f3,bb3]@7 ~ [bb2,f3,bb3]@5", // Bb5
})).s("gm_distortion_guitar").gain(0.48)

// chords · rock organ
const rock_organ = note("<~@28 A B C D ~@24 A B C D ~@19 E ~ F@2 ~@4 G@2 H I ~@4 G@2 H J ~>".pickRestart({
  A: "~@28 [f3,g3] [a3,b3]@3, ~@7 e3", B: "[c4,d4] [e4,f4,g4,a4,b4] [c5,eb5,ab5]@6 ~@4 [c5,gb5,a5]@18 ~@2",
  C: "[bb4,eb5,bb5]@15 ~", D: "[bb4,eb5,f5,bb5]@7 ~ a4@4 [f4,g4] [c4,d4,e4] [a3,b3]@2 g3@7 ~@9",
  E: "~@8 [g2,a2] [b2,c3] ~@2 [f3,g3] [a3,b3,c4,d4] [e4,f4,g4,d5,g5,b5]@2 ~@16, ~@9 [d3,e3]@7 ~@16", // Gsus2 Cmaj7 Fsus2 D7 Em7 Dsus2
  F: "[~@31 [c3,d3,e3,f3,g3]@4 [a3,b3,c4,d4,e4] [c5,eb5,ab5]@6 ~ [c5,eb5,ab5]@7 ~ [c5,eb5,ab5]@7 ~ [c5,eb5,ab5]@5, ~@36 f4 ~@27]/2", // C Am Ab
  G: "[~@31 [f3,g3] [a3,b3]@3 [c4,d4,e4,f4,g4] [c5,eb5,ab5]@6 ~@5 [c5,gb5,a5]@17, ~@31 e3@4 ~ [a4,b4] ~@27]/2", // Fsus2 Asus2 C Ab Gbdim Asus2
  H: "~@3 [bb4,eb5,bb5]@29", I: "~@3 [bb4,eb5,f5,bb5]@7 ~ a4@4 [d4,e4,f4,g4] [a3,b3]@2 ~ g3@7 ~@6, ~@16 c4 ~@15",
  J: "~@3 [bb4,eb5,bb5]@7 ~ [bb4,eb5,bb5]@7 ~ [bb4,eb5,bb5]@7 ~ [bb4,eb5,bb5]@5", // Eb5
})).s("gm_rock_organ").gain(0.48)

// other · brass section · "us credit!"
const brass_section = note("<~@72 A ~ A ~ A ~ B ~@4 C ~@3 D ~@3 C ~@3 D ~@2 E ~>".pickRestart({
  A: "[c5,c6]!2 ~@6", B: "[c4,c5,c6]@7 ~@5 [b3,b4,b5]@4 ~@8 [bb3,bb4,bb5]@7 ~",
  C: "~@3 [eb5,eb6]@4 [d5,d6]@4 [b4,b5]@7 ~@14, ~@11 [db5,db6] ~@20", // Eb D B Db
  D: "~@3 [g4,eb5,c6]@4 [gb4,db5,d5,bb5,b5]@4 [eb4,e4,b4,c5,ab5,a5] ~@20, ~@11 [d4,bb4,g5]@7 ~@14", // Cm Gb Emaj7 Gm
  E: "~@3 [bb3,bb4,bb5]@7 ~ [bb3,bb4,bb5]@7 ~ [bb3,bb4,bb5]@7 ~ [bb3,bb4,bb5]@5", // Bb
})).s("gm_brass_section").gain(0.48)

// other · electric guitar muted
const electric_guitar_muted = note("<~@36 A B C D A B C B ~@56>".pickRestart({
  A: "~@2 eb3!2 [bb2,eb3] eb3 ~@2", B: "~@8 eb3@4 eb3@4 eb3 f3@3 bb3@4 g3@7 ~", C: "~@2 eb3!2 [bb2,eb3] eb3 bb2 eb3",
  D: "~@8 eb3@4 eb3@4 eb3 f3@3 bb3@4 f3@4 bb3@4",
})).s("gm_electric_guitar_muted").gain(0.48)

// other · synth drum · "I AM CANADIAN!"
const synth_drum = note(`<
  ~@11 A B C D E F G H G H G H I J ~@10 K L ~@2 A B C D E F G H G H G H I J ~@20 G H G H G H ~@21
>`.pickRestart({
  A: "~@7 a3", B: "a2@7 ~@25", C: "~@5 d3 ~@2", D: "~@5 e3 ~@2", E: "~@16 e3@4 f3@4 f3 f3@3 f3 f3@3", F: "f3@7 ~@25",
  G: "~@7 g3", H: "g2@7 ~@25", I: "~@4 g3@4 c3@4 g3@4 c3@4 g3@4 c3 g3@3 c3 g3@3", J: "c3@7 ~@25",
  K: "~@4 d5@4 c5@4 b4@4 a4 g4@3 f4 e4@3 d4 c4@3 b3 a3@3", L: "g3@7 ~@25",
})).s("gm_synth_drum").gain(0.48)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!4 ~@78 [~@11 x ~@15 x ~@4] ~@17>").gain(0.72)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@2 C D B@20 E B@2 F B@2 G ~ B@20 E B@2 F B@3 H I@3 J B@3 K B@5 L M N ~@2 O P@4 Q P@2 R P@4 Q P@2 S ~
>`.pickRestart({
  A: "~@4 x ~@3 x!2 ~@6", B: "~ x ~ x", C: "~@2 x ~@4 x", D: "~@9 x ~@2 x ~@3", E: "~@3 x ~@8 x ~@3",
  F: "~@3 x ~@6 x ~@2 x ~@2", G: "~@2 x ~@3 x!2", H: "~ x!2 ~", I: "~ x ~@2", J: "~ x!2 ~@3 x ~",
  K: "~@4 x ~@3 x!2 ~@2 x ~@3", L: "~@2 x ~@2 x!2 ~", M: "x ~@2 x ~@2 x ~", N: "~@3 x ~@4", O: "~@11 x ~@7 x ~ x ~@10",
  P: "~@11 x ~@15 x ~@4", Q: "~@9 x ~@17 x ~@4", R: "~@9 x ~@13 x ~@5 x ~@2", S: "~@3 x ~@7 x ~@7 x ~@7 x ~@4",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@3 ~ A@27 ~ A@27 B A@7 C A@6 D ~@4 E@15 ~@2>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "x!7 ~", D: "x ~@2 x ~@2 x ~", E: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B ~ C D E ~@3 E ~@3 E
// … 65 more lines

More by Christina Aguilera