Strudelify

When I Saw You

Mariah Carey

KeyC majorTempo70 bpm
0:00/0:00
// When I Saw You — Mariah Carey
// 70 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 71 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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.

// chords · epiano1 · "Piano"
const epiano1 = note(`<
  A B C D A E F G H I J K L M N O P Q R S H T F U V W F X P E F G P Y R Z AA M AB AC AD AE R AF AG AH J AI AJ AK AL AM
  AN AO AP AQ M AR AS AT AU AR AV AW AX AY AS AZ BA BB BC
>`.pickRestart({
  A: "[c4,e4,g4]@5 ~ [e4,g4]@2 [b1,d4,g4,b4]@7 ~, c3 ~, ~@5 c4@2 ~@9", // C Em G
  B: "e4@4 e4@2 e4 ~ [b3,e4,g4]@5 ~ [e4,g4]@2, [a2,a4,c5] g2, ~@13 b3@2 ~", // Em Am
  C: "~@13 c4!2 ~, [f2,f4,a4]@15 ~, c4@13 ~@3, ~@6 a3@9 ~", D: "[g#4,c5,d5,f5]@13 ~ g#4 c5, d4@12 ~ d4@2 ~",
  E: "[a2,c4,e4,g4,b4]@7 ~ [g2,b3,e4,g4]@7 ~", F: "~@14 c4 ~, [f2,c4,e4,g4]@15 ~, a3@13 a3@2 ~, ~@6 f3@9 ~",
  G: "[f2,c4,f4,g#4] [f2,g#3,c4,d4,f4] [g2,d4,g4,c5] [g2,d4,g4,b4]", H: "[c3,c4,e4,g4]@7 ~ [b1,d4,g4,b4]@7 ~",
  I: "c4@4 c4@2 e4@2 b3@4 b3@2 b3 ~, [a2,g4,a4] [b1,e4,g4], e4@3 ~@5", J: "[e4,g4,a4,c5]@13 ~ e4 g4, a3@12 ~ a3@2 ~",
  K: "[d4,f4,g#4,c5]@5 ~ [f4,g#4,c5]@2 [a2,d4,e4,g4,b4]@4 [a2,c#4,e4,g4,a4]@4, a#2 ~, ~@5 d4@2 ~@9", // Dm7b5 Fm Em7 A7
  L: "[c4,d4,f4,a4]@5 ~ [d4,f4,a4]@2 [d3,c4,e4,g4]@7 ~, d3 ~, ~@5 c4@2 ~@9", M: "[g4,b4,d5]@13 ~ g4 b4, d4@12 ~ d4@2 ~",
  N: "c4@4 c4@2 d4@2 [d3,c4,e4,g4]@7 ~, [d3,f4,a4] ~, d4@3 ~@5", O: "[g2,c4,d4,f4,a4]@7 ~ [g2,b3,d4,f4,g4]@7 ~",
  P: "c4@4 c4@2 c4 ~ [b1,d4,g4,b4]@7 ~, [c3,e4,g4] ~", // G C
  Q: "[a2,e4,a4,c5]@7 ~ [b3,e4,g4]@5 ~ [e4,g4]@2, ~ g2, ~@13 b3@2 ~", // Am Em
  R: "~@6 a3@7 ~@2 e4, [f2,e4,g4], c4@7 c4, a3@6 ~@7 a3@2 ~, ~ f3@3", // C
  S: "c4@4 c4@2 c4 ~ d4@4 d4@2 d4 ~, [g2,f4,a4] [g2,g4,b4]", T: "e4@4 e4@2 e4 ~ [e2,b3,e4,g4]@7 ~, [a2,a4,c5] ~",
  U: "c4@4 c4@2 c4 ~ [g2,d4,g4,b4]@7 ~, [g2,f4,a4] ~", // G Dm
  V: "[c4,e4,g4]@5 ~ [e4,g4]@2 d4@4 d4@2 d4 ~, c3 [b1,g4,b4], ~@5 c4@2 ~@9", // C Em
  W: "[a2,e4,a4,c5]@7 ~ b3@4 b3@2 b3 ~, ~ [g2,e4,g4]", // Am C
  X: "[d4,f4,g#4,c5]@5 ~ [f4,g#4,c5]@2 [g2,d4,g4,c5]@4 [g2,d4,g4,b4]@4, a#2 ~, ~@5 d4@2 ~@9", // Dm7b5 Fm Gsus4 G
  Y: "[c4,e4,g4,a4]@5 ~ [e4,g4,a4]@2 [b1,b3,e4,g4]@7 ~, a2 ~, ~@5 c4@2 ~@9", // Am7 A7 Em
  Z: "[a#2,d4,f4,g#4,c5]@7 ~ [a2,d4,e4,g4,b4]@4 [a2,c#4,e4,g4,a4]@4", // A#7 Em7 A7
  AA: "c4@4 c4@2 d4@2 c4@4 c4@2 c4 ~, [d3,f4,a4] [d3,e4,g4], d4@3 ~@5", // Dm Em7
  AB: "[c4,d4,f4,a4]@5 ~ [d4,f4,a4]@2 [c4,e4,g4]@5 ~ [e4,g4]@2, d3!2, ~@5 c4@2 ~@6 c4@2 ~", // Dm7 Dm C Em
  AC: "c4@2 c4 d4 b3@2 b3 d4, [g2,f4,a4] [g2,f4,g4], d4@3 ~ d4@3 ~", // Dm G7
  AD: "[c3,c4,e4,g4]@7 ~ d4@4 d4@2 d4 ~, ~ [b1,g4,b4]", // C Em
  AE: "[e4,a4,c5]@5 ~ [a4,c5]@2 [g2,b3,e4,g4]@7 ~, a2 ~, ~@5 e4@2 ~@9", AF: "[g2,c4,f4,a4]@7 ~ [g2,d4,g4,b4]@7 ~",
  AG: "c4@4 c4@2 c4 ~ d4@4 d4@2 d4 ~, [c3,e4,g4] [b1,g4,b4]", // C Em
  AH: "[e4,a4,c5]@5 ~ [a4,c5]@2 [e2,b3,e4,g4]@7 ~, a2 ~, ~@5 e4@2 ~@9", // Am Em
  AI: "d4@4 d4@2 d4 ~ [g#3,b3,d4,f4]@5 ~ [b3,d4,f4]@2, [g2,g4,c5] g#2, ~@13 g#3@2 ~", // G#dim Bdim C5
  AJ: "~@6 e4@7 e4!2 a4, [a2,a4,c5], e4@3 ~@5, ~ c4@3", AK: "[d4,f4,g#4,c5]@13 ~ d4 f4, g#3@12 ~ g#3@2 ~",
  AL: "~@13 c4!2 ~, [g2,e4,g4]@15 ~, c4@13 ~@3, ~@6 g3@9 ~", AM: "[e4,f#4,a4,c5]@13 ~ e4 f#4, a3@12 ~ a3@2 ~",
  AN: "[f2,c4,f4,a4]@7 ~ [c4,e4,g4]@5 ~ [e4,g4]@2, ~ e3, ~@13 c4@2 ~", AO: "[a4,c5,e5]@13 ~ a4 c5, e4@12 ~ e4@2 ~",
  AP: "~@6 c4@7 c4!2 f4, [f2,f4,a4], c4@3 ~@5, ~ a3@3", AQ: "~@14 d4 ~, [g2,d4,f4,a4]@15 ~, c4@13 c4@2 ~, ~@6 a3@9 ~",
  AR: "d#4@4 d#4@2 d#4 ~ [f4,a#4,d5]@5 ~ [a#4,d5]@2, [d#3,g4,a#4] d3, ~@13 f4@2 ~", // A# D#
  AS: "[c4,d#4,g4]@5 ~ [d#4,g4]@2 [d4,g4,a#4]@5 ~ [g4,a#4]@2, c3 a#1, ~@5 c4@2 ~@6 d4@2 ~", // Cm D# Gm
  AT: "~@14 d#4 ~, [g#2,d#4,g4,a#4]@15 ~, c4@13 c4@2 ~, ~@6 g#3@9 ~", // D#
  AU: "[d#4,g#4,c5]@5 ~ [g#4,c5]@2 [d3,f4,a#4,d5]@7 ~, a#1 ~, ~@5 d#4@2 ~@9", // G# A#
  AV: "[c3,c4,d#4,g4]@7 ~ d4@4 d4@2 d4 ~, ~ [g2,g4,a#4]", // Cm Gm
  AW: "~@6 c4@7 ~@2 g4, [g#2,g4,a#4], d#4@7 d#4, c4@6 ~@7 c4@2 ~, ~ g#3@3", // D#
  AX: "[a#1,d#4,g#4,c5]@7 ~ [a#2,f4,a#4,d5]@7 ~", AY: "[d#3,d#4,g4,a#4]@7 ~ [d3,f4,a#4,d5]@7 ~",
  AZ: "[g#2,d#4,g#4,c5]@7 ~ [c#3,b3,d#4,f4,g#4]@7 ~", BA: "~@6 d#4@7 d#4!2 g4, [d#3,g4,a#4], d#4@3 ~@5, ~ a#3@3",
  BB: "[g3,a#3,d#4]@11 ~ [g3,a#3,d#4]@3 ~", BC: "[g3,a#3,d#4]@15 ~",
})).s("gm_epiano1").gain(0.36)

// other · oboe
const oboe = note(`<
  ~@4 A@2 B@2 C@2 D@2 E@2 F@2 G H I J K H I L M ~@3 N@2 O P Q@3 R S@2 T@2 U H I J V H I W X@4 Y Z AA AB@2 AC AD AE AF AG
  AH AE AI@2 ~ AJ@3 ~
>`.pickRestart({
  A: "[c5@8 b4@2 c5@3 d5@2 c5@9 b4@3 c5@2 d5@2 [d5,e5], ~@15 d5 ~@16]/2", // Dsus2
  B: "[c5@8 b4@2 c5@2 ~ d5@2 g#4@5 e5@4 e5@3 [e5,f5] d5@4]/2", // Fmaj7
  C: "[c5@7 ~ b4@2 c5@2 ~@2 c5 c5@9 b4@3 c5@2 d5@2 c5, ~@13 d5@2 d5 ~@16]/2",
  D: "[c5@8 b4@3 c5@2 g5@2 ~ g5 ~@5 e5@2 ~ c#5@5 d5 e5, d5 ~@14 f5@7 ~@2 e5@2 ~@6]/2",
  E: "[f5@2 g5@2 a5@2 e5@6 f5@2 [e5,f5] d5@12 ~ d5@2 e5@2, ~@15 e5 ~@16]/2", // Fmaj7
  F: "[f5@2 g5@2 a5@2 e5@6 f5@2 e5@4 [e5,f5] d5@13]/2", G: "e5!3 d5", H: "c5@2 e5 g5 e5 d5 c5@2", I: "d5 e5 g5 e5",
  J: "d5@2 e5@2 a5 g5 e5 d5", K: "e5!3 d5, ~@12 e5 ~@3", L: "d5@4 e5@4 d5@5 e5@2 d5", M: "[d5,e5] c5@9 ~@6",
  N: "[c5@8 b4@3 c5@2 d5@2 c5@9 b4@3 c5@2 d5@2 [c5,d5], ~@15 d5 ~@16]/2", O: "c5@8 b4@3 c5@2 d5@3",
  P: "g#4@4 e5@4 e5@2 f5 d5@4 c5, ~@11 e5 ~@4",
  Q: "[c5@8 b4@2 c5@3 g5@2 e5@2 d5 c5@6 b4@2 c5@3 d5@2 e5@2 d5 [d5,e5] ~@5 b4@2 c5@3 g5@3, d5 ~@33 c5@6 ~@8]/3", // Dsus2
  R: "f5@4 e5 ~ e5 c#5@7 d5 e5", S: "[f5@2 g5@2 a5@2 e5@6 f5@2 e5@4 [e5,f5] d5@9 d5@2 e5@2]/2",
  T: "[f5@2 g5@2 a5@2 e5@6 f5@2 e5@4 [e5,f5] d5@12 ~]/2", U: "e5@2 e5@2 e5 c5 d5@2", V: "e5@4 e5@3 ~ e5@2 c5@2 d5@4",
  W: "d5@4 e5@4 d5@4 e5@2 d5 [d5,e5]", // Dsus2
  X: "[c5@4 e5@2 g5 a5@2 b5 c6@8 g#5 g#5@2 e6@2 d6@2 e6 c6@8 a5 ~ a5@2 g5 e5@2 d5 c5@8 e5!2 e5@2 g5 e5@2 d5 c5@6, ~@26 d6 ~@37]/4",
  Y: "~ f5@5 c5@4 a5@6, g5 ~@7", Z: "g5@13 ~@3", AA: "f5@2 e5 f5 a5 c6@2 b5",
  AB: "[~ a5 g5@10 e5@2 g5 g5@16 ~, ~@15 a5 ~@16]/2", AC: "g5@4 g5@3 ~ g5@4 f5@4", AD: "d#5@2 g5 a#5 g5 f5 d#5@2",
  AE: "f5 g5 a#5 g5", AF: "f5@2 g5@2 c6 a#5 g5 f5", AG: "g5@4 g5@3 ~ g5@2 d#5@2 f5@4",
  AH: "d#5@4 g5@2 a#5@2 ~ f5@2 ~ d#5@4, ~@4 g5 ~@3", AI: "[f5@4 g5@4 f5@4 g5@2 ~ d#5@11 ~@6, ~@7 f5 ~@8]/2",
  AJ: "[g5@2 f5@4 g5@2 f5@6 g5 f5@2 g5 d#5@22 ~@8, ~@18 f5 ~@29]/3",
})).s("gm_oboe").gain(0.54)

// bass · fretless bass · "Bass"
const bass = note(`<
  A B C D A E F G A H I J K L M N O E F P Q R I P A B F S Q B C G A H I T U V W X Q E F Y A Z F AA AB AC AD AE AF AG C
  AH AI AJ AK AL AM AN AO AP AQ AR AK AS AT AU AV
>`.pickRestart({
  A: "c2@5 ~ c2 ~ b1@5 ~ b1 ~", B: "a1@6 a1 ~ g2@5 ~ g2 ~", C: "f2@5 ~ f2 ~ f2@6 c2 ~", D: "a#1@5 ~ a#1 ~ a#1@6 f2 ~",
  E: "a1@5 ~ a1 ~ g2@5 ~ g2 ~", F: "f3@5 ~ f3 ~ f3@3 c3 f2@3 ~", G: "f2!2 g2!2", H: "a1@5 ~ a1 ~ b1@6 b1 ~",
  I: "f2@4 ~@2 f2 ~ f2@6 c2@2", J: "a#1@6 f1 ~ a1@4 a1@4", K: "d2@6 d2 ~ d2@5 ~ d2 ~", L: "g2@5 ~ g2 ~ g2@6 d2 ~",
  M: "d2@5 ~ d2 ~ d2@6 g1 ~", N: "g2@5 ~ g2 ~ g2@5 ~ g2 ~", O: "c2@5 ~ c2 ~ b1@6 b1 ~", P: "g2@6 c2 ~ g2@5 ~ g2 ~",
  Q: "c2@6 c2 ~ b1@5 ~ b1 ~", R: "a1@5 ~ a1 ~ e2@6 e2 ~", S: "a#1@5 ~ a#1 ~ g2@4 g2@4", T: "a#1@5 ~ a#1 ~ a1@4 a1@4",
  U: "d2@5 ~ d2 ~ d2@6 d2 ~", V: "g3@5 ~ g3 ~ g3@3 d3 g2@3 ~", W: "d2@5 ~ d2 ~ d2@5 ~ d2 ~", X: "g2@6 d2 ~ g2@5 ~ g2 ~",
  Y: "g2@5 ~ g2 ~ g2@6 g2 ~", Z: "a1@6 e1 ~ e2@5 ~ e2 ~", AA: "g2@5 ~ g2 ~ g#2@6 b1 ~", AB: "a1@5 ~ a1 ~ a1@4 a1@3 ~",
  AC: "g#2@5 ~ g#2 ~ g#2@6 d2 g#2", AD: "g2@5 ~ g2 ~ g2@6 g#2 f2", AE: "f#2@5 ~ f#2 ~ f#2@4 g2@3 ~",
  AF: "f2@5 ~ f2 ~ e2@6 e2 ~", AG: "a1@5 ~ a1 ~ a1@6 f#2 a1", AH: "g2@5 ~ g2 ~ g2@6 g2@2",
  AI: "g2@4 ~@2 g2 ~ g2@6 d2@2", AJ: "d#2@6 d#2 ~ d2@6 d2 ~", AK: "c2@5 ~ c2 ~ a#1@5 ~ a#1 ~",
  AL: "g#2@4 ~@2 g#2 ~ g#2@6 d#2@2", AM: "a#1@5 ~ a#1 ~ d2@5 ~ d2 ~", AN: "d#2@6 d#2 ~ d2@6 b1 ~",
  AO: "c2@5 ~ c2 ~ g2@5 ~ g2 ~", AP: "g#2@5 ~ g#2 ~ g#2@4 g#2@3 ~", AQ: "a#1@5 ~ a#1 ~ a#1@5 ~ a#1 ~",
  AR: "d#2@5 ~ d#2 ~ d2@5 ~ d2 ~", AS: "g#2@5 ~ g#2 ~ c#2@6 g#1 ~", AT: "d#2@5 ~ d#2 ~ d#2@4 d#2@3 ~",
  AU: "d#2@6 ~ d#2 d#2@7 a#1", AV: "d#2",
})).s("gm_fretless_bass").gain(0.35)

// other · synth strings 1 · "3rdViolin"
const synth_strings_1 = note(`<
  ~@16 A B C D A B E D F ~@15 A B C D A B C G C H I J K J@2 C L M N C O M N C P M N Q R@2 ~
>`.pickRestart({
  A: "g4@3 g4", B: "e4@3 e4", C: "c4", D: "c4 d4", E: "c4@15 ~", F: "e4@8 d4 ~@7", G: "c4@2 b3!2", H: "g#3", I: "g3",
  J: "a3", K: "a3!2 g3@2", L: "b3@5 ~@3", M: "g4@2 f4!2", N: "d#4@2 d4!2", O: "c4@3 c4 d4@4", P: "c4@2 a#3 d4",
  Q: "c4 b3", R: "[a#3 a#3@20 ~@11]/2",
})).s("gm_synth_strings_1").gain(0.28)

// other · synth strings 1 · "2ndViolin"
const synth_strings_1_2 = note(`<
  ~@16 A B C D A B E D F ~@15 A B C D A B C G C H@3 I H@2 J@2 K L M N K L M O K L M P@2 ~
>`.pickRestart({
  A: "c5@2 b4!2", B: "a4@2 b4 g4", C: "e4", D: "f4 g4", E: "e4@15 ~", F: "g4@9 ~@7", G: "f4@3 d4", H: "c4",
  I: "c4 c4@3", J: "[d4@27 ~@5]/2", K: "a#4@3 a#4", L: "g4@3 g4", M: "d#4", N: "d#4@3 d#4 f4@4", O: "d#4@2 d4 f4",
  P: "[~ d#4@20 ~@11]/2",
})).s("gm_synth_strings_1").gain(0.28)

// other · synth strings 1 · "1stViolin"
const synth_strings_1_3 = note(`<
  ~@16 A B C D A B E D F ~@15 A B C D A B C G C H I J K I H L@2 M N O P M N O Q M N O R@2 ~
>`.pickRestart({
  A: "e5@3 d5", B: "c5@3 b4", C: "a4", D: "a4 b4", E: "a4@15 ~", F: "c5@9 ~@7", G: "a4@3 g#4", H: "f4", I: "e4",
  J: "f#4", K: "g4 f4@3", L: "[g4@27 ~@5]/2", M: "d#5@3 d5", N: "c5@3 a#4", O: "g#4", P: "a#4@3 a#4 a#4@4",
  Q: "a#4@3 a#4", R: "[~ g4@20 ~@11]/2",
})).s("gm_synth_strings_1").gain(0.32)

// other · piano · "Acoustic Grand (octave)"
const piano = note("<A B C D ~@20 A B C D ~@43>".pickRestart({
  A: "c4@8 b3@2 c4@3 d4@3", B: "c4@8 b3@3 c4@2 d4@3", C: "c4", D: "f4@6 [e4,f4] e4@5 d4@4",
})).s("gm_piano").gain(0.48)

// other · piano · "Acoustic Grand"
const piano_2 = note("<A B C D ~@20 A B C D ~@43>".pickRestart({
  A: "c5@8 b4@2 c5@3 d5@3", B: "c5@8 b4@3 c5@2 d5@3", C: "c5", D: "f5@6 [e5,f5] e5@5 d5@4",
})).s("gm_piano").gain(0.54)

// drums · kick
const kick = s("bd").struct("<~@12 A@14 B@2 A@5 C@2 A@3 B A@2 B A@6 C B A@6 D A B A C A@7 E F G>".pickRestart({
  A: "x ~@5 x ~ x ~@6 x", B: "x ~@2 x!2 ~@3", C: "x ~@5 x ~ x ~@4 x ~ x", D: "x ~@4 x!2 ~@8 x",
  E: "x ~@2 x!2 ~@2 x!2 ~@6 x", F: "x ~@6 x!2 ~@6 x", G: "x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~@12 A@14 B@2 A@10 B A@2 B A@7 B A@6 C A B A@9 D E ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "x ~@8 x ~@6", D: "x!2 ~@7 x ~@2 x ~@3", E: "~@4 x ~@6 x!2 ~@3",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@12 [~ x ~ x]!58 ~>").gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@23 A ~@10 B ~@5 B ~@14>".pickRestart({
  A: "~@7 x ~@5 x!2 ~", B: "~@13 x!2 ~",
})).gain(0.56)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@23 A ~@10 B ~@5 C ~@11 D ~@2>".pickRestart({
  A: "~@3 x!2 ~@6 x ~@4", B: "~@11 x ~@4", C: "~@6 x ~@4 x!2 ~@3", D: "~@13 x!2 ~",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@12 A@3 ~ A@4 B ~ A@2 ~@2 B ~ A ~ A ~@3 A ~ A C ~@2 A ~@3 A ~ A@3 ~@3 A ~@3 D A ~ A B ~ A ~@2 A ~@5
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@14 x!2", D: "~@9 x ~@6",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@15 A ~@23 A ~@10 B ~@5 C ~@11 D ~@2>".pickRestart({
  A: "x", B: "~ x", C: "~@3 x!2 ~@11", D: "~@4 x!2 ~@5 x ~@4",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@23 A ~@10 A ~@5 A ~@10 B A@2>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.4)

// … 13 more lines

More by Mariah Carey