Strudelify

Melt Away

Mariah Carey

KeyD majorTempo90 bpm
0:00/0:00
// Melt Away — Mariah Carey
// 90 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: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 4 "Organ" percussive organ (copy of ch 5 "Pad 2" pad warm)
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~ A B C@2 ~@17 D B E F A B C G D H I J K L M N ~@17 D B E F A B C G D H I J K L M O ~@17 D B E F A B C G D H I J K L M
  N D B E F A B C G D H ~@2
>`.pickRestart({
  A: "~ [b3,f#4]@3 [b3,f#4]@2 [g3,c#4]@2", B: "~@2 c#4 e4@2 c#4 ~ g3, ~@2 g3@9 ~ b3@4",
  C: "[a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~@2", D: "[b3,f#4]@2 g2@2 [b3,f#4]@3 ~ [b3,f#4]@4 [g3,c#4]@4",
  E: "[a3,e4] ~ [a3,e4] ~ [a3,e4]@2 [a3,d4]@2", F: "~@2 d4 f#4@2 d4 ~ a3, ~@2 a3@9 ~ b3@4",
  G: "~@2 [g3,c4]@6 [c4,f#4]@2 d3@2 [c4,f#4]@3 ~", H: "~@2 [g3,c#4]@5 ~ [g3,c#4]@2 ~@2 [g3,c#4]@2 ~@2",
  I: "[a3,e4]@2 f#2@2 [a3,e4]@3 ~ [a3,e4]@4 [a3,d4]@4", J: "~@2 [a3,d4]@5 ~ [a3,d4]@2 ~@2 [a3,d4]@2 ~@2",
  K: "[b3,f#4]@2 g2@2 [b3,f#4]@3 ~ [b3,f#4]@4 [a#3,e4]@4", L: "~ [a#3,e4]@3 [a#3,e4]@2 [a3,d4]@2",
  M: "[a3,d4] ~ [a3,d4] ~@2 b2 f#3 [a3,d4]", N: "~ b2 f#3 [a3,d4]@2 b2 [f#3,a3,d4] ~",
  O: "~@2 b2@2 f#3@2 [a3,d4]@4 ~ b2@2 [a3,d4]@3, ~@13 f#3 ~@2", // D5
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~ A B C@2 D E F G E H I J K L M G N L O P@2 Q B R S A B C T U B V W X Y Z@2 D E F G E H I J K L M G N L O P@2 Q B R S
  A B C T U B V W X Y AA@3 ~@16 Q B R S A B C T U B V W X Y Z@2 Q B R S A B C T U B ~@2
>`.pickRestart({
  A: "[f#6,b6]@2 [b5,f#6] [g5,c#6]", B: "[c#6,g6]", C: "[e6,a6]", D: "~ d6, [f#6,a6]", E: "[g5,d6] [g5,c#6]",
  F: "[f#6,a6] [f#6,b6]", G: "[b5,f#6]", H: "[g5,c#6]", I: "[c#6,f#6]", J: "[g6,a6] [f#6,a6]", K: "[d6,g6] [g5,c#6]",
  L: "g5 a5, e6", M: "[f#6,c#7] [b5,f#6]", N: "[d6,e6] [g5,c#6]", O: "[d6,a6] [d6,e6]", P: "[c6,e6]/2",
  Q: "[b5,f#6]@2 [b5,f#6] [g5,c#6]", R: "[a5,e6]@2 [a5,e6] [a5,d6]", S: "[a5,d6]", T: "[c6,g6] [f#6,c7]",
  U: "[f#6,a6]@2 [b5,f#6] [g5,c#6]", V: "[e6,f#6]@2 [a5,e6] [a5,d6]", W: "[d6,f#6]", X: "[f#6,a6]@2 [b5,f#6] [a#5,e6]",
  Y: "[e6,a#6]@2 [a#5,e6] [a5,d6]", Z: "[a6 f#6, d6]/2", AA: "[a6@16 f#6@17 ~@15, d6@11 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.12)

// chords · piano
const piano = note(`<
  ~ A B C@2 D E F G H I J K L M N D L O P Q@2 R@7 S@5 T@5 E F G H I J K L M N D L O P Q@2 R@7 S@5 U@6 V@2 W@2 X@6 Y@5
  R@7 S@5 Z@4 R@7 AA@5
>`.pickRestart({
  A: "[b3,f#4,a4,d5]@3 ~ [b3,f#4,a4,d5]@2 [g3,c#4,e4,b4]@2", B: "[g3,c#4,e4,b4]@7 ~", C: "[e3,f#3,a3,c#4]@7 ~",
  D: "[f#4,g4,b4,d5]@7 ~@5 b4@2 d5 ~, g2@7 ~, ~@7 d5@7 ~@2, ~@7 b4@3 g4@4 ~@2, ~@7 g4 f#4@6 ~@2", // Gmaj7
  E: "e4@2 ~@2 g4@2 b4 ~ [c#4,e4,g4,a4]@6 c#4 e4, [b3,d4]@7 ~@9, g4 ~@3, ~@2 e4@5 ~@9", // A7 Bm
  F: "~@4 f#4@2 a4 ~ [b3,d4,f#4,a4]@8, [c#4,e4,a4]@7 ~@9, f#4 ~@3, ~ d4@2 ~@5", // Bm7 A
  G: "[b3,d4,f#4,a4]@9 ~ g2@2 [b3,d4,f#4,a4]@3 ~", // Bm7
  H: "[b3,d4,e4,g4] ~ [b3,d4,e4,g4] ~ [c#4,e4,g4,a4] ~ [c#4,e4,g4,a4] ~, ~ e3@2 ~@2 a2@2 ~", // Em7 A7
  I: "[c#4,e4,g4,a4]@9 ~ a2@2 [c#4,e4,g4,a4]@3 ~", J: "[c#4,e4,f#4,a4]@12 d4 f#4 a4 e5",
  K: "[a3,c4,e4,g4]@2 ~@2 [a3,c4,e4,g4]@2 ~@2 [c4,d4,f#4,a4]@6 f#4 a4, ~ d3@2 ~@5", // Am7 D7
  L: "e4@2 ~@2 g4@2 b4 ~ [c#4,e4,g4,a4]@8, [b3,d4]@7 ~@9, g4 ~@3, ~@2 e4@5 ~@9", // A7 Bm
  M: "a2@8 ~@4 a3@2 c#4 ~, [c#4,e4]@15 ~, a3@3 ~, g3@10 g3@5 ~, ~@8 a2@7 ~", // C#m
  N: "[c#4,e4,f#4,a4]@2 ~@2 [c#4,e4,f#4,a4]@2 ~@6 b3@2 d4 ~, ~@2 d3@4 ~@2 [d4,f#4,a4]@7 ~, ~@2 b3 ~, ~@5 g3@2 ~", // F#m7 D
  O: "[c#4,e4,g4,a4]@3 ~@3 e4 g4, ~@3 a2@5, ~ a3, ~@5 c#4@3", // A7
  P: "[b3,d4,f#4,a4]@4 [b3,d4,e4,g#4] ~ [b3,d4,e4,g#4] ~, ~@5 e3@2 ~", // Bm7 E7
  Q: "[~@7 e4@9, a4, e4@3 c4@5, c4@5 g3@11, g3@3 a2@13]/2",
  R: "[~ [f#3,b3,d4,a4]@4 ~@2 [g3,c#4] c#4@8 [e3,a3,c#4]@4 a3@2 [a3,d4,f#4,b4]@2 f#4@8 [b3,f#4,a4,d5]@4 ~@2 [g3,c#4,e4,b4]@2 c#4@8 [e3,f#3,a3,c#4]@8, ~@5 [f#3,d4,a4]@3 f#4@8 g#3@16 ~@4 [b3,f#4,a4,d5]@16 ~@4, ~@5 b3@3 [g3,b3]@16 [a3,d4]@16 [g3,e4,b4]@16, ~@7 e4@16 ~ b4@14 ~@18, ~@7 b4@13 [e3,c#4,g#4]@16 ~@20]/7", // Bm7 Gdim A Bm7 C#m7b5 F#m7 D Bm7 …
  S: "[[c4,e4]@5 [f#3,b3]@3 [f#3,b3,d4]@5 ~ g3@2 ~@3 b4@2 [c#4,e4]@3 [a3,c#4,e4,g#4]@5 a3 [a3,b3,d4,f#4]@2 [a3,b3,d4,f#4]@8, g3@13 [f#3,b3,d4,a4]@16 ~@11, a4@8 a3@16 ~@5 [c#4,e4,g#4]@11, ~@5 [g#3,c4]@9 [c#4,b4]@2 g3 c#4 e4@3 [g3,b4]@16 ~@3, ~@5 e4@9 f#4@16 ~@10]/5", // C B5 Bm C#m Amaj7 Bm7 C#m G# …
  T: "[~@2 [b3,f#4,a4]@6 f#4@4 [a#3,e4,f#4]@6 [a#3,e4,f#4,c#5]@6 f#4@4 [a3,d4,f#4]@4 a3@24 ~@6 b4@2 [f#4,g4,b4,d5]@7 ~@5 b4@2 d5 ~, ~@2 d5@26 b3@30 d4@13 b4@3 g4@4 ~@2, ~@8 a4@24 b4@30 ~@9 d5@7 ~@2, ~@8 [b3,d4]@16 [a#3,e4,c#5]@8 d4@24 a3@15 g4 f#4@6 ~@2, ~@6 c#4@10 f#4@14 f#4@2 g2@7 ~]/5", // B7 F#7 D Gmaj7 Bm A#dim
  U: "[~@2 [b3,f#4,a4]@6 f#4@4 [a#3,e4,f#4]@6 [a#3,e4,f#4,c#5]@6 f#4@4 [a3,d4,f#4]@4 a3@24 ~@24 d4@2 [d4,e4]@5 ~ [d4,e4,g4,b4]@5 ~ [d4,e4,g4]@2, ~@2 d5@26 b3@31 d4@6 e2@31, ~@8 a4@24 b4@31 b4@3 g3 b3 d4 e4@2 e3@5 g3@2 b3@4 [g3,b3]@14, ~@8 [b3,d4]@16 [a#3,e4,c#5]@8 d4@24 a3@31 e3@9, ~@12 c#4@20 f#4@29 f#4@32 b4@3]/6", // B7 F#7 D Dsus2 Em7 G Bm A#dim
  V: "[~ b3 g3 d4@10 ~@6 d5 ~@10 f#4@2, g3@2 ~ f#3@29, ~@3 [d5,f#5]@15 a4@2 [a4,d5,f#5]@12, ~@3 [f#4,a4]@14 f#4@3 f#4@10 ~@2, ~@13 d4@13 d4@6]/2", // D F#m
  W: "[a4@3 d5 ~@15 d4@2 ~ [d4,e4]@5 ~ [d4,e4,g4,b4]@4, ~@5 e2@27, ~@6 g3@3 e4@13 ~@10, ~@7 b3@4 e3@16 e3@5, ~@8 d4@7 g3@2 b3@4 ~ [g3,b3]@10]/2", // Dsus2 Em7 G
  X: "[~@4 b3 g3 ~@17 b4@7 ~@6 f#4@2 a4 ~@17 d5 ~@13 b4@2 d5 ~@16 a4@2 [d4,f#4,a4]@5, ~ [g4,b4]@4 ~@2 [f#4,a4]@16 [d5,f#5,a5]@8 a4 f#4@2 d4@6 d4 [g4,b4]@10 d4@7 g5@16 ~@4 a4@9 f#4@4 ~@5, ~@2 [d4,e4]@4 ~ d4@24 b4@9 [d5,g5]@14 g4 b4@2 g4 b4@6 d4@4 g4@5 ~@2 d4@6 a3@15, ~@3 g3@2 ~@2 b2@33 ~ e3@32 ~ f#3@22, ~@7 b4@6 b3@27 ~ e5@16 [d5,e5]@16 ~@4 f#4@8 d4@6 ~@5]/6", // D G F#m D G Dsus2 G5 Dsus2
  Y: "[~@2 [a4,d5,f#5]@5 ~@3 f#4 d4 f#3@11 ~@5 f#4 ~@13 d4@2 f#4 ~ f3@11 ~@5 f4@18, ~ a3@11 g#2@32 ~@2 [a2,g4,a#4]@32 ~@2, ~@7 [a4,d5,f#5]@4 ~ [f#4,g#4,b4]@15 d4@2 [f#4,g#4,b4]@16 ~@12 f3@23, ~@9 d4@2 ~ [b3,d4]@14 b3@3 d4@11 b3@5 ~ [d4,f4]@15 d4@19, ~@23 f#3@6 b3@7 f#3@9 ~ a#3@14 a#3@20]/5", // D D# D G#m7 Bm Dm
  Z: "[~ [b3,f#4,a4]@3 f#4@2 [a#3,e4,f#4]@3 [a#3,e4,f#4,c#5]@3 f#4@2 [a3,d4,f#4]@2 a3@12 ~@3 b4, ~ d5@13 b3@15 d4@3, ~@4 a4@12 b4@15 ~, ~ [b3,d4]@2 [a#3,e4,c#5] d4@3 a3, ~@3 c#4@5 f#4@7 f#4]/4", // B7 F#7 D Bm A#dim
  AA: "[[c4,e4]@5 [f#3,b3]@3 [f#3,b3,d4]@5 ~ g3@2 ~@3 b4@2 [g3,c#4,e4,b4]@16 ~@3, g3@13 [f#3,b3,d4,a4]@16 ~@11, a4 a3@2 ~@2, ~@5 [g#3,c4]@9 [c#4,b4]@2 g3 c#4 e4@3 ~@19, ~@5 e4@9 f#4@16 ~@10]/5", // C B5 Bm C#m7b5 Bm7 G# C#7
})).s("gm_piano").gain(0.36)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~ A B C@2 D E F D E G H I E J K D L M N O P Q R S T A B C U Q R V W X Y Z@2 D E F D E G H I E J K D L M N O P Q R S T
  A B C U Q R V W X Y Z AA AB AC AD AE@5 AF AG AH AI AJ@4 AK Q R S T A B C U Q R V W X Y Z@2 Q R S T A B C U Q R ~@2
>`.pickRestart({
  A: "g2@5 ~ g2@2 g2@4 a1@4", B: "a1@5 ~ a1 ~ a1@6 a1 ~", C: "f#2@6 c#3 ~ c#3@6 a#1 ~", D: "g2@4 ~@3 g2 g2@5 ~@2 g2",
  E: "e2@7 e2 a1@6 a1!2", F: "d2@6 ~ f#2 g2@6 f#2 g2", G: "a1@4 ~@3 a1 a1@5 ~@2 b1", H: "d2@4 ~@3 d2 d2@5 ~@2 c#2",
  I: "d2@7 d2 d2@6 d2!2", J: "a1@5 ~@2 e1 a1@6 ~ b1", K: "d2@7 d2 g2@6 g2!2", L: "e2@6 ~ b1 a1@6 g1 a1",
  M: "a1@6 ~ a1 a1@5 ~ c#2 d2", N: "b1@7 b1 e2@6 e2!2", O: "a1@6 ~ a1 a1@5 ~ e1 f1", P: "a1@3 ~@5",
  Q: "g2@3 g#2 g2@2 a1@2", R: "a1@5 ~ a1@2 e2@6 a1 ~", S: "f#2@3 g2 f#2@2 b1@2", T: "b1@5 ~ b1 ~ b1@6 b1 ~",
  U: "a1@6 a1@2 d2@5 ~ d2@2", V: "f#2@4 c#3@2 c#2 ~ f#2@4 b1@4", W: "b1@5 ~ b1@2 f#2@6 b1 ~", X: "g2@3 g2 g2@2 f#2@2",
  Y: "f#2@3 f#2 f#2@2 b1@2", Z: "b1@6 f#2 ~ f#2@6 b1 ~", AA: "b1@6 f#2 ~ f#2@6 ~ b1", AB: "~ e3@6 e3 ~ e3@6 ~",
  AC: "b2@2 e2@5 ~ e2 ~ e2@6", AD: "~ e2@2 f#2@5 ~ f#2 ~ f#2@5",
  AE: "[~@2 f#2 ~ f#2@5 ~ f#2 ~ f#2@6 ~ f#2 ~ e2@5 ~ e2 ~ e2@6 ~ b2@2 e3@6 e3 ~ e3@6 e2@2 ~ b1@5 ~ b1 ~ b1@7 b0 ~ b1@5 ~ b1 ~]/5",
  AF: "b1@5 ~ b1 ~ e2@6 ~ e2", AG: "~ e2@6 b1@2 e2@5 ~@2", AH: "e2 ~ e2@6 b1@2 f#2@5 ~", AI: "~ f#2 ~ f#2@7 f#1 f#2@5",
  AJ: "[~@2 f#2 ~ f#2@5 ~ f#2 ~ g#2@6 ~ g#2 ~ g#2@6 d2@2 g#2@5 ~@2 g#2 ~ g#2@6 d2@2 a1@6 a3 ~ a3@2 ~ a2@2 e3@2 d3@2 ~, ~@53 a#3@2 ~@9]/4",
  AK: "~ d3@2 d3@2 ~@11",
})).s("gm_fretless_bass").gain(0.42)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@3 ~ B C@2 B C B@5 C B C B C B ~ A@16 B C@2 B C B@5 C B C B C B ~ A@15 D E F G H I J K L M N O P Q R S T ~ A@26 ~@2
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~@6 x!2 ~@5 x ~", C: "x ~@6 x!2 ~ x ~@3 x ~", D: "x ~@5 x ~ x ~@6 x",
  E: "~ x ~@5 x ~ x ~@6", F: "~ x!2 ~@5 x ~ x ~@5", G: "~@2 x!2 ~@5 x ~ x ~@4", H: "~@3 x!2 ~@5 x ~ x ~@3",
  I: "~@4 x!2 ~@5 x ~ x ~@2", J: "~@5 x!2 ~@5 x ~ x ~", K: "~@6 x!2 ~@5 x ~ x", L: "~@3 x!2 ~@2 x",
  M: "x ~@6 x!2 ~@6 x", N: "~ x ~@6 x!2 ~@6", O: "x ~ x ~@6 x!2 ~@5", P: "~ x ~ x ~@6 x!2 ~@4",
  Q: "~@2 x ~ x ~@6 x!2 ~@3", R: "~@3 x ~ x ~@6 x!2 ~@2", S: "~@4 x ~ x ~@6 x!2 ~", T: "~@4 x ~@2 x ~@6 x ~",
})).gain(0.48)

// drums · rim
const rim = s("rim").struct(`<
  ~ A B A ~@18 A B A B A B A B A B A B A B A B ~@17 A B A B A B A B A B A B A B A C ~@17 A B A B A B A B A B A B A B A B
  A B A B A B A B A B ~@2
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "~@2 x ~@2 x ~@2", C: "~@4 x ~@6 x ~@4",
})).gain(0.56)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@8 A ~@2 A@2 ~@28 A ~@2 A@2 ~@70>".pickRestart({
  A: "~@7 x ~@8",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@71 A B C D E F G H I A B C D E F G ~@29>".pickRestart({
  A: "~@5 x ~@8 x ~", B: "~@6 x ~@8 x", C: "~@7 x ~@8", D: "x!2", E: "x ~@8 x ~@6", F: "~ x ~@8 x ~@5",
  G: "~@2 x ~@8 x ~@4", H: "~@3 x ~@8 x ~@3", I: "~@4 x ~@8 x ~@2",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@25 A ~@7 A ~@3 B ~@20 A ~@7 A ~@3 B ~@20 A ~@7 A ~@3 B ~@3 A ~@8>".pickRestart({
  A: "~ x", B: "~ x ~@2 x ~@3",
})).gain(0.32)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@71 A B C D E F G H I J K L M N O P ~@29>".pickRestart({
  A: "~@2 x ~ x ~ x ~ x ~ x ~@2 x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~", C: "x ~ x ~@2 x!3",
  D: "~ x ~@3 x ~@5 x ~ x ~ x", E: "~ x ~@2 x ~@2 x", F: "~@5 x ~ x ~@5 x ~ x", G: "~ x ~ x ~@6 x ~@5",
  H: "x ~@8 x ~@5 x", I: "~ x ~ x ~ x ~@6 x ~@3", J: "~ x ~@2 x!2 ~@2", K: "~ x ~ x ~ x ~ x ~@6 x ~",
  L: "~@2 x ~@2 x!3", M: "~ x ~ x ~ x ~ x ~ x ~ x ~@3 x", N: "~@3 x ~@4", O: "x ~@6 x ~@7 x", P: "~@3 x!4 ~",
})).gain(0.24)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A@2 ~ A B ~@3 B A B C B C D ~@18 A@2 ~ A B ~@3 B A B C B C D ~@19 E ~@4 F ~@5 G H ~@30
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@5 x ~@2", C: "~@15 x", D: "~@11 x ~@4", E: "~ x ~@6", F: "~@3 x ~@4", G: "~@3 x",
  H: "~@13 x ~@2",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~ A ~@24 A ~@7 A ~ A ~@22 A ~@7 A ~ A ~@22 A ~@7 A ~ A ~@5 A ~@7>".pickRestart({
  A: "~ x ~@2",
})).gain(0.4)

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

// drums · ride
const ride = s("rd").struct("<~ A@3 ~@18 B A@15 ~@17 B A@14 C ~@17 B A@15 B A@9 ~@2>".pickRestart({
  A: "x!8", B: "~ x!7", C: "x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@71 A B C D E F G H I J K ~ L@2 M N ~@29>".pickRestart({
  A: "~@5 x ~@10", B: "~@3 x ~@4", C: "~@7 x ~@8", D: "~ x", E: "~@9 x ~@6", F: "~@5 x ~@2", G: "~@11 x ~@4",
  H: "~@3 x", I: "~@13 x ~@2", J: "~@7 x", K: "~@15 x", L: "x", M: "~ x ~@14", N: "~ x ~@6",
})).gain(0.72)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~ A B@2 ~@19 C D E A B@2 A C F B E G D C ~@19 C D E A B@2 A C F B E G D C ~@19 C D E A B@2 A C F B E G D C ~@2 C D E A
  B@2 A C F ~@2
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "~@3 x", C: "~@3 x ~@2 x ~", D: "x ~@2 x", E: "x", F: "~@3 x ~@4", G: "x ~@2 x ~@2 x ~",
})).gain(0.24)

// drums · congas
const congas = s("conga:13").struct(`<
  ~ A ~ A ~@18 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@18 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B C D E F G H I J K L M N O P Q ~ A ~
// … 32 more lines

More by Mariah Carey