Strudelify
Someday cover art

1990 · Mariah Carey

Someday

Mariah Carey

KeyD majorTempo128 bpm
0:00/0:00
// Someday — Mariah Carey
// 128 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 170 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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(`<
  ~@2 A@2 B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J K L M N G H I J K L M N G H I J K L M O G P I J K L M F G P Q R K S M O
  T P I J U V W X Y Z AA AB AC AD M AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH
  AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AM AN AE AF AG AH AI AJ AK AL AE AF AG
  AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK ~
>`.pickRestart({
  A: "e2/2", B: "[a1@7 a1]/2", C: "[d2@7 d2]/2", D: "[c2@7 ~]/2", E: "[e2@15 e2]/2",
  F: "e1@3 ~ e1@2 ~@2 e1@2 d1@2 e1@2 g1@2", G: "e1 ~ e1@2 ~@4 e1@2 d1@2 e1@2 g1@2", H: "a1 ~ a1 ~ a1 g1 a1 c2",
  I: "a1!2 ~@2 a1 g1 c2 a1", J: "d2 ~ d2 ~ d2 a1 c2 d2", K: "~ d2 ~ d2 ~ d2 ~ d2", L: "g2 ~ g2 ~ g2 g1 a1 c2",
  M: "~ g1 a1 c2 ~ a1 c2 d2", N: "e1 ~ e1 ~ e1 d1 e1 g1", O: "~ e1@6 ~ e1@4 ~@4 e1@4 d1@4 e1@4 g1@4",
  P: "~ a1@4 ~@3 a1@4 ~@4 a1@4 g1@4 a1@4 c2@4", Q: "a1@4 a1@4 ~@8 a1@4 ~ g1@3 c2@4 a1@4",
  R: "~ d2@4 ~@3 d2@4 ~@4 d2@4 a1@4 c2@4 d2@4", S: "~ g2@4 ~@3 g2@4 ~@4 g2@4 g1@4 a1@4 c2@4",
  T: "e1@2 ~@2 e1@4 ~@8 e1@4 ~ d1@3 e1@4 g1@4", U: "~@4 d2@4 ~@5 d2@4 ~@3 d2@4 ~@4 d2@4",
  V: "~ g2@4 ~@3 g2@4 ~@4 g2@4 g1@4 ~ a1@3 c2@4", W: "~@4 g1@4 ~ a1@3 c2@4 ~@4 a1@4 c2@4 d2@4",
  X: "~ e1@6 ~ e1@4 ~@4 e1@4 ~ d1@4 e1@4 g1@3", Y: "~ e1@2 ~ e1@4 ~@8 e1@4 ~ d1@4 e1@3 g1@4",
  Z: "~ a1@4 ~@3 a1@4 ~@4 a1@4 g1@4 a1@4 ~ c2@3", AA: "~ a1@3 a1@4 ~@8 a1@4 ~ g1@3 c2@4 a1@4",
  AB: "~ d2@4 ~@3 d2@4 ~@4 d2@4 a1@4 ~ c2@3 d2@4", AC: "~@5 d2@4 ~@4 d2@4 ~@3 d2@4 ~@4 d2@4",
  AD: "~ g2@4 ~@3 g2@4 ~@4 g2@4 g1@4 ~ a1@4 c2@3", AE: "~ e1@6 ~@2 e1@4 ~@4 e1@4 d1@4 e1@4 g1@3",
  AF: "~ e1@2 ~@2 e1@4 ~@8 e1@4 d1@4 e1@4 g1@3", AG: "~ a1@4 ~@4 a1@4 ~@4 a1@4 g1@4 a1@4 c2@3",
  AH: "~ a1@4 a1@4 ~@8 a1@4 g1@4 c2@4 a1@3", AI: "~ d2@4 ~@4 d2@4 ~@4 d2@4 a1@4 c2@4 d2@3",
  AJ: "~@5 d2@4 ~@4 d2@4 ~@4 d2@4 ~@4 d2@3", AK: "~ g2@4 ~@4 g2@4 ~@4 g2@4 g1@4 a1@4 c2@3",
  AL: "~@5 g1@4 a1@4 c2@4 ~@4 a1@4 c2@4 d2@3", AM: "~ g1@4 ~@4 g1@4 ~@8 g1@4 a1@4 c2@3",
  AN: "~@5 g1@4 a1@4 c2@4 g1@4 a1@4 c2@4 d2@3",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · pad warm
const pad_warm = note("<~@2 A@2 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 D@4 E@4 F@4 G@8 H@8 G@96 I@8 J@2>".pickRestart({
  A: "[b3,d4]/2", B: "[c4@31 ~ d4@32, a3@63 ~]/4", C: "[e4 d4, b3]/4", D: "[~ d4, c4@31 ~@33, ~ a3@126 ~]/4",
  E: "[e4@64 ~ d4@63, b3]/4", F: "[~ c4@62 ~ d4@64, ~ a3@126 ~]/4",
  G: "[~ e4@64 d4@64 c4@62 ~@2 d4@63, ~ b3@128 a3@126 ~]/8", H: "[~ e4@64 d4@64 c4@62 ~ d4@64, ~ b3@128 a3@126 ~]/8",
  I: "[~@65 d4@64 c4@62 ~@2 d4@63, ~ [b3,e4]@80 ~@48 a3@126 ~]/8", J: "[~ [b3,e4]@58 ~@5]/2",
})).s("gm_pad_warm").gain(0.22)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@18 A@4 B@2 C@2 ~@32 D@4 B@2 C@2 ~@2 E@8 F@2 G@2 H I ~@8 J@2 F@2 G@2 K I L@6 M@8 J@2 D@4 N@4 D@4 O@4 D@4 N@4 D@4 P@24
  Q@4
>`.pickRestart({
  A: "[g5@127 ~]/4", B: "f#5/2", C: "e5/2", D: "[~ g5@127]/4", E: "[~ e4@64 a4@64 g4@64 b4@62 ~]/8", F: "[c5@3 e5]/2",
  G: "d5/2", H: "e5", I: "g5", J: "[~ b4@62 ~]/2", K: "~ e5@31", L: "[~@9 b5@16 g5@15 ~ a5@14 e5@74 d5@63]/6",
  M: "[~ b4@72 b5@16 g5@15 ~ a5@14 e5@74 d5@63]/8", N: "[~ f#5@63 e5@64]/4",
  O: "[~ f#5@64 ~@32 g6@31, ~@65 [b3,e5]@63, ~@33 e6@31]/4", P: "[~ f#5@64 e5@64 g5@127]/8",
  Q: "[~ f#5@64 e5@58 ~@5]/4",
})).s("gm_string_ensemble_2").gain(0.25)

// chords · percussive organ
const percussive_organ = note(`<
  ~@18 A@2 B@4 C@2 ~@32 D@2 E@4 F@2 ~@48 G@2 H@4 I@2 G@2 H@4 I@2 G@2 J@4 I@2 G@2 K@4 I@2 G@2 J@4 I@2 L@2 K@4 I@2 M@8
>`.pickRestart({
  A: "[[b4,d5,g5]@63 ~]/2", B: "[c5 [d5,f#5], a4@127 ~]/4", C: "[[b4,e5,g5]@63 ~]/2", D: "[~ [b4,d5,g5]@63]/2",
  E: "[~ c5@63 ~ [d5,f#5]@63, ~ a4@127]/4", F: "[~ [b4,e5,g5]@63]/2", G: "[~ [b4,d5]@63]/2",
  H: "[~ c5@64 d5@63, ~ a4@127]/4", I: "[~ [b4,e5]@63]/2", J: "[~ c5@63 ~ d5@63, ~ a4@127]/4",
  K: "[~@2 c5@63 d5@63, ~ a4@127]/4", L: "[~ b4@31, ~ d5@63]/2",
  M: "[~@2 [b4,d5]@63 ~ c5@63 d5@64 [b4,e5]@57 ~@6, ~@33 a4@64 ~@31]/8", // Bm E5
})).s("gm_percussive_organ").gain(0.12)

// other · alto sax
const alto_sax = note(`<
  ~@18 A@2 B@2 C D E@2 ~@32 A@2 B@2 F G H I@2 ~@46 J@2 K L@2 M N O@2 P Q ~ R S ~@2 T@2 U@2 ~@3 V@2 ~ W@2 X ~ Y Z AA AB@2
  AC@3 AD AE AF@3 AC@3 AD AG AH AB@2 AC@3 AD AG AI
>`.pickRestart({
  A: "[~@4 a4@11 ~]/2", B: "[~@12 e4@2 ~@2 b4@6 c5 b4 a4@40]/2", C: "~@12 a4 ~@3 b4@12 d5@2 ~@2",
  D: "a4@11 ~ b4@2 ~@2 d4@12 d4@3 ~", E: "[~ d4@2 e4 ~ e4@51 ~@8]/2", F: "~@12 a4 ~@4 b4@11 d5@2 ~@2",
  G: "~ a4@11 b4@2 ~@2 d4@12 ~ d4@3", H: "~ d4@3 e4 ~ e4@26", I: "[g4@4 a4@9 c5@4 b4@7 ~ e4@2 ~@2 e4@12 ~@23]/2",
  J: "[~@13 g4@2 ~@2 b4@8 g4@4 e4@19 ~ b3@4 d4@4 e4@3 ~ g4@3]/2", K: "~@5 f#4@8 e4@12 e4@2 d#4 ~ d4@3",
  L: "[~@13 e4@4 g4@8 a4@4 c5@6 ~@2 b4@4 a4@4 g4@11 ~ d5@7]/2", M: "~ a4@12 g4@3 ~ a4@10 ~@2 b4@2 ~",
  N: "~ f4@2 e4@2 d4@2 ~@2 e4@2 ~@2 d4@10 ~@2 e4@2 ~@5",
  O: "[~@5 d4@4 e4@3 ~ g4@3 ~ a4@4 g4@2 ~@6 g5@24 e5 ~@3 b4@2 a4 b4 g4@3]/2", P: "~ e4@31", Q: "~@25 a4@3 ~ g4@2 ~",
  R: "~@25 d5@7", S: "~ a4@10 a4 b4 g4@4 a4@4 a4@4 ~@7", T: "[~@13 a4@2 ~@2 b4@7 ~ a4@2 ~@2 g4@10 ~@25]/2",
  U: "[~@25 g4 ~@3 g4@12 ~@23]/2", V: "[~ b4@4 d5@2 ~@2 e5@2 ~@2 g5@25 ~@3 a4@4 b4@2 g4@2 a4@4 g4@8 ~@3]/2",
  W: "[~@13 e5@8 d5@2 b4@2 d5@2 b4@2 a4 ~ b4@2 ~ a4@8 ~@22]/2", X: "~ g4@12 e4@2 c4@2 a3@3 ~@12",
  Y: "~ g4 ~ g4@2 ~@4 g4 ~@3 g4!2 ~@4 g4 ~ g4 ~@3 g4@4 a4@2 ~",
  Z: "~ e4 g4@3 ~@2 g4 g4@3 ~@2 g4 g4@3 ~@2 g4 ~ g4@2 ~@2 e4@5 ~ g4",
  AA: "b4 g4 ~ g4@2 b4 g4 b4@2 g4 b4@2 ~ b4@19, ~@3 b4 ~@28", AB: "[~@17 a4@44 ~@3]/2",
  AC: "[~@13 e4@2 ~@2 b4@6 c5 b4 a4@40 ~@12 a4 ~@3 b4@12 d5@2 ~]/3", AD: "~ a4@11 ~ b4@2 ~@2 d4@12 d4@3",
  AE: "~ d4@3 ~ e4 ~ e4@25", AF: "[~ g4@4 a4@8 c5@5 b4@7 e4@2 ~@2 e4@20 a4@44 ~@3]/3", AG: "~@2 d4@3 e4 ~ e4@25",
  AH: "~ g4@30 ~", AI: "~ g4@26 ~@5",
})).s("gm_alto_sax").gain(0.35)

// chords · piano
const piano = note(`<
  ~@2 A@2 B@2 C@2 D E F@4 G@2 H@2 I@2 J K L@2 M@2 ~@16 N O P K Q R M@2 N S T@2 U@2 V@2 W@2 J X Y@2 Z@2 AA AB P AC Q AD
  AE@2 AA AF AG@2 AH@2 V@2 AA AI AJ AK Q AL Z@2 AA AM AN@2 AH@2 V@2 AA AO AJ AK Q AL Z@2 AA AP AN@2 AH@2 V@2 AQ@4 AR@2
  AS@2 AT AU AV@2 AR@2 AW@2 AA AM AX@2 AH@2 AY@2 AA AM AZ@2 AH@2 BA@2 AA AM BB@2 AH@2 BA@2 AA AM AZ@2 AH@2 BA@2 AA AM
  AZ@2 BC@2 BD@2
>`.pickRestart({
  A: "[[b3,d4,e4]@42 ~@2 [b3,d4]@7 ~ [b3,e4]@12]/2", B: "[[a3,c4,e4]@41 ~@11 g4@10 ~@2, ~@44 [a3,c4,e4]@19 ~]/2",
  C: "[[d4,f#4]@51 ~ [d4,f#4]@12]/2", D: "[b3,e4,g4]@15 b4", E: "g4@2 [b3,e4]@13 ~ g4@8 [b3,e4]@8, ~@16 b3@5 ~@11",
  F: "[[b3,d4,e4]@48 ~@4 [b3,g4]@12 [a3,c4]@41 ~@11 g4@10 ~@2, ~@52 e4@24 ~@32 [a3,c4,e4]@19 ~]/4", // E7 Em Am
  G: "[[d4,f#4]@51 ~@2 [d4,f#4]@11]/2", H: "[~ [e4,g4,b4]@25 ~@10 g4@28, b3@25 ~@3 [b3,e4]@36]/2",
  I: "[[e4,g4]@39 ~ d4 ~@3 [d4,e4,g4]@7 ~ g4@6 ~@2 g4@4, ~@13 [d4,e4]@3]/2", J: "~ e4@27 ~@4, c4@7 ~",
  K: "~@12 [e4,g4]@7 ~ [e4,g4]@11 ~", L: "[~ f#4@42 ~ [d4,f#4,a4]@7 ~@2 d4@8 ~@3, d4@42 ~@10 [f#4,a4]@9 ~@3]/2",
  M: "[~ [e4,g4,b4]@23 ~@5 b4@13 ~@2 [e4,g4]@7 ~ [e4,g4]@9 ~@3, ~@24 e4@19 ~@21, ~@28 g4@15 ~@21]/2", N: "[e4,g4]@3 ~",
  O: "~@8 d4 ~@4 e4@6 ~ [d4,e4,g4,b4]@12, ~@12 [d4,g4,b4]@7 ~@13", P: "~ e4@28 ~@3, c4@7 ~, ~ a4@16 ~@15",
  Q: "~ [d4,f#4]@31", R: "~@13 [f#4,a4]@7 ~ [d4,a4]@9 ~@2, ~@12 d4@7 ~ f#4@9 ~@3",
  S: "~@8 d4 ~@4 e4@6 ~ [d4,e4,g4,b4]@12, ~@12 [d4,g4,b4]@7 ~@13, ~@13 a3@17 ~@2", // Em7 G
  T: "[~ [a3,a4]@18 ~ a3@17 ~@8 g4@6 ~ [a3,e4,g4]@12, c4@7 ~@9, ~ e4@28 ~@15 e4@6 ~@14]/2", // A A7
  U: "[~@45 [f#4,a4]@7 ~ [a3,f#4,a4]@11, ~ [d4,f#4]@33 ~@10 d4@7 ~@2 d4@8 ~@3, ~@20 a3@27 ~@17]/2", // F#m D
  V: "[~ [e4,g4,b4]@23 ~@5 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@18 ~@21]/2", // Em G Em
  W: "[~ e4@38 ~@2 d4 ~@3 e4@6 ~ g4@6 ~@2 g4@4, g4@39 ~@5 [d4,g4]@7 ~ [d4,e4]@12]/2", // G5 Dsus2
  X: "~@13 e4@6 ~ [e4,g4]@11 ~, ~@12 g4@7 ~@13", // Em
  Y: "[~ [d4,f#4]@42 ~@2 [f#4,a4]@7 ~ [d4,f#4,a4]@9 ~@2, ~@44 d4@7 ~@13]/2", // D F#m D
  Z: "[~ [e4,g4,b4]@23 ~@5 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@19 ~@20]/2", AA: "~ [e4,g4]@24 ~@7",
  AB: "~@9 d4 ~@3 [e4,b4]@6 ~@2 g4@10 ~, ~@12 [d4,g4]@7 ~ [d4,e4,b4]@12", AC: "~@13 [e4,g4]@7 [e4,g4]@11 ~",
  AD: "~@13 [f#4,a4]@7 ~ [d4,f#4,a4]@9 ~@2, ~@12 d4@7 ~@13", // F#m D
  AE: "[~ [e4,g4,b4]@23 ~@5 [g4,b4]@14 ~@2 [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@18 ~@21]/2", // Em G Em
  AF: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4]@11, ~@13 a3@17 ~@2, ~@20 b4@11 ~", // Em7
  AG: "[~ [a3,a4]@18 ~@2 a3@17 ~@7 [e4,g4]@6 ~@2 [e4,g4]@11, ~ [c4,e4]@28 ~@23 a3@12]/2", // A Em C
  AH: "[~@45 [d4,f#4,a4]@7 ~ [a3,f#4,a4]@11, ~ [d4,f#4]@33 ~@19 d4@8 ~@3, ~@21 a3@27 ~@16]/2", // D
  AI: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4]@11, ~@20 b4@11 ~", AJ: "~ [c4,e4]@28 ~@3, ~ a4@16 ~@15",
  AK: "~@13 [e4,g4]@7 ~ [e4,g4]@11", AL: "~@13 [d4,f#4,a4]@7 ~ [d4,f#4,a4]@9 ~@2",
  AM: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4,b4]@11, ~@13 a3@17 ~@2", // Em7
  AN: "[~ [a3,a4]@18 ~@2 a3@17 ~@7 [e4,g4]@6 ~@2 [a3,e4,g4]@11, ~ [c4,e4]@28 ~@35]/2", // A Em A7 C
  AO: "~@9 d4 ~@3 [d4,e4,g4,b4]@7 ~ [d4,e4,g4,b4]@11", AP: "~@13 [d4,e4,g4,b4]@7 ~ [d4,e4,g4,b4]@11, ~@13 a3@17 ~@2",
  AQ: "[~ [e4,b4] ~@3 [e4,g4,b4]@4 ~@4 [e4,g4,b4]@11 ~ [e4,g4] ~@3 [e4,g4]@5 ~@3 [e4,g4]@5 ~@11 [e4,g4,b4]@6 ~@2 [e4,b4]@4 [e4,c5] ~@3 [e4,g4,c5]@5 ~@3 [e4,g4,c5]@11 ~ [e4,g4] ~@3 [e4,g4]@6 ~@6 c5@6 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@8 ~@3, ~ g4@2 ~@58 g4@8 ~@32 [e4,g4]@11 ~@16]/4", // E5 Em E5 C Em C Em
  AR: "[~ [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@5 ~@3 [d4,f#4,a4]@11 ~ [d4,f#4,g4]@2 ~@2 [d4,f#4,a4]@5 ~@3 [d4,f#4,a4]@11 ~ [d4,a4] ~@3 [d4,f#4,a4]@8 ~@3, ~@49 f#4@2 ~@13]/2", // D Gmaj7 D D5 D
  AS: "[~ [b3,e4,g4]@3 ~ [b3,e4,g4]@5 ~@3 [e4,g4]@12 b3@3 ~ g4@12 ~@4 g4@3 ~@5 [b3,e4,g4]@7 ~@4, ~@13 b3@9 ~@7 e4@11 ~@24, ~@29 b3@8 ~@4 [b3,e4]@7 ~@16]/2", // Em E5
  AT: "~ [e4,g4]@2 ~@2 [b3,e4,g4]@3 ~@5 [b3,g4] ~@3 [b3,d4]@3 ~@4 [b3,g4]@2 ~@3 [b3,e4,g4]@3, ~ b3 ~@11 e4@2 ~@2 g4 ~@5 e4@3 ~@6", // Em Bm Em
  AU: "~@5 [b3,e4,g4]@3 ~ [b3,g4] ~@3 [b3,e4,g4]@7 ~ [b3,e4,g4]@7 ~@4, ~@9 e4@2 ~@21", // Em
  AV: "[~ [e4,c5] ~@3 [e4,g4,c5]@5 ~@3 [e4,g4,c5]@11 ~ [e4,g4] ~@3 [e4,g4]@5 ~@7 c5@6 ~@2 [e4,g4,c5] ~@3 [e4,g4,c5]@8 ~@3, ~ g4@2 ~@34 [e4,g4]@11 ~@16]/2", // C Em C Em
  AW: "[~ [b3,e4,g4]@48 ~@15]/2", // Em
  AX: "[~@2 a4@16 ~@3 a3@17 ~@7 [e4,g4]@6 ~@2 [a3,e4,g4]@11, ~ [c4,e4]@28 ~@35, ~ a3@18 ~@45]/2", // Em A7 C
  AY: "[~@2 [g4,b4]@23 ~@4 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~ e4@23 ~ e4@18 ~@21]/2", // G Em
  AZ: "[~@2 a4@16 ~@3 a3@17 ~@7 [e4,g4]@6 ~@2 [a3,e4,g4]@11, ~ c4@28 ~@35, ~ a3@18 ~@45, ~@2 e4@27 ~@35]/2", // Em A7
  BA: "[~@2 [e4,g4,b4]@23 ~@4 [g4,b4]@15 ~ [e4,g4]@7 ~ [e4,g4]@9 ~@2, ~@25 e4@18 ~@21]/2", // Em G Em
  BB: "[~@2 a4@16 ~@3 a3@17 ~@7 [e4,g4]@7 ~ [a3,e4,g4]@11, ~ c4@28 ~@35, ~ a3@18 ~@45, ~@2 e4@27 ~@35]/2", // Em A7
  BC: "[~@45 [d4,f#4,a4]@7 ~ [a3,f#4,a4]@11, ~ d4@33 ~@19 d4@8 ~@3, ~@2 f#4@33 ~@29, ~@21 a3@27 ~@16]/2", // D
  BD: "[~@2 [e4,g4,b4]@23 ~@5 b4@13 ~@21, ~@25 e4@19 ~@20, ~@29 g4@14 ~@21]/2", // Em
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A@6 B A C@10 D C@5 B A B A B A B A B@11 A B E F@7 B F B F@8 G@32 F@14 ~ H F@10 I F@13 I F I F@3 I J I F I F@3 I ~
>`.pickRestart({
  A: "x!2", B: "~ x ~@14 x ~@15", C: "x!4", D: "~ x ~@6 x ~@7 x ~@7 x ~@7", E: "x ~@16 x ~@14", F: "~ x ~@15 x ~@14",
  G: "~ x ~@7 x ~@7 x ~@7 x ~@6", H: "~@17 x ~@14", I: "~@2 x ~@14 x ~@14", J: "~ x ~@15 x ~@3 x ~@3 x ~@6",
})).gain(0.35)

// drums · clap
const clap = s("cp").struct("<~@18 A@15 B A@8 C A D C A D C A C A E@29 F E@46 ~ E@17 G E@22 ~>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@8 x ~@16 x ~@6", D: "~@9 x ~@14 x ~@7", E: "~@9 x ~@15 x ~@6",
  F: "~@9 x ~@11 x ~@3 x ~@6", G: "~@9 x ~@16 x ~@5",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A B@24 C B@7 C B@6 D B@2 C B@3 E F E C E C E B E@9 G E@15 H E@7 I E@7 H E@7 J E@6 ~ K E@7 J E@7 J E@7 K E@7 J E@7
  ~
>`.pickRestart({
  A: "~@9 x ~ x!2 ~ x ~", B: "~ x ~ x", C: "~@8 x ~@16 x ~@6", D: "~@8 x ~@6 x!2 ~@3 x ~@3 x ~ x ~@5",
  E: "~@9 x ~@15 x ~@6", F: "~@9 x ~@11 x ~@4 x ~@2 x ~@2", G: "~@9 x ~@13 x ~ x ~@3 x ~@2",
  H: "~@9 x ~@6 x ~@6 x ~ x ~ x ~ x ~@2", I: "~@9 x ~@15 x ~ x ~@4", J: "~@9 x ~@17 x ~ x ~@2",
  K: "~@9 x ~@11 x ~@5 x ~ x ~@2",
})).gain(0.35)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@17 A ~@23 B ~@15 C ~@7 D ~@15 E ~@15 F ~@7 G ~@7 F ~@7 H ~@7 I ~@7 H ~@7 H ~@7 H ~@7 J ~@8
>`.pickRestart({
  A: "~@4 x!5 ~ x ~@5", B: "~@10 x!2 ~@4", C: "~@12 x!3 ~@13 x ~@3", D: "~@6 x ~@10 x!2 ~@6 x ~@6", E: "~@21 x ~@10",
  F: "~@13 x!3 ~@5 x ~@10", G: "~@23 x ~@8", H: "~@25 x ~@6", I: "~@7 x ~@9 x ~ x ~@5 x ~@6", J: "~@25 x ~@5 x",
})).gain(0.15)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@10 A B A B A B A ~ A B A B A B A B A B A B A B A ~ A B A B A B A ~ A B A B A B A ~ A B C D A B A ~ A D A B E D F D C
  D C D C D C ~ F D F D F D F ~ F D F D F D F ~ F D F D F D F ~ F D F D F D F ~ F D F D F D G ~ F D F D F D F D F D F D
  F D F D F D F D F D F D F D F D F D F D F D F D F D G ~ F D F D F D F D F D F D F D F ~
>`.pickRestart({
  A: "~ x ~@3 x ~ x", B: "~@5 x ~@2", C: "~@4 x ~@16 x ~@7 x ~@2", D: "~@21 x ~@10", E: "~@4 x ~@15 x ~@8 x ~@2",
  F: "~@5 x ~@15 x ~@7 x ~@2", G: "~@5 x ~@15 x ~@10",
// … 72 more lines

More by Mariah Carey