Strudelify
Silent Night cover art

1994 · Merry Christmas

Silent Night

Mariah Carey

KeyB♭ majorTempo72 bpm
0:00/0:00
// Silent Night — Mariah Carey
// 72 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 54 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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 · acoustic bass · "ACOU BASS"
const bass = note("<~@6 A@2 B@3 C@3 D@3 E@3 F@3 G@3 H I@2 J@3 K L@2 M@3 N@3 O@3 P@2 Q R@3 ~ S@2 ~>".pickRestart({
  A: "[~@6 f1@6 bb1@15 ~ bb1 ~ bb1@17 ~]/2", B: "[bb1@8 f1 bb1@6 c2@3 f1@7 e1 f1 gb1@6 gb1@3]/3",
  C: "[g1@11 ~ g1@6 f1@12 bb1@2 c2@2 d2@2 eb2@16 bb1@2 eb2@9 ~ eb2@2 c2@6]/3",
  D: "[d2@6 c2@3 bb1@6 d2@3 eb2@8 bb1 eb2@5 d2 c2@3]/3",
  E: "[bb1@11 ~ c2@6 g1@9 ~ g1@2 c2@5 ~ f1@14 g1@2 ab1@2 a1@11 ~ d1@6]/3",
  F: "[g1@9 c2@6 gb1@3 f1@7 eb1 e1 f1@6 a1@3]/3", G: "[bb1@15 ~ f1 ~ bb1@11 ~ f1@2 g1@2 f1@2 bb1@16 f1@2 bb0@17 ~]/3",
  H: "bb0@7 f1 gb1 g1@3", I: "[gb1@6 c1@6 f1@14 e1@2 f1@2 gb1@6 e1@5 ~ d1@6]/2",
  J: "[g1@8 gb1 bb0@7 f1 g1 eb2@8 bb1 eb2@3 d2@3 c2@3]/3", K: "bb1@8 f1 bb1@3", L: "[c2@3 d2@3 eb2@8 bb1 eb2@6 c2@3]/2",
  M: "[d2@12 f2@6 g2@12 c2@5 ~ f1@15 ~ f1@2 a1@12 d1@4 gb1@2]/3",
  N: "[g1@7 gb1 g1 c1@6 gb1@3 f1@7 eb1 e1 f1@6 gb1@3]/3",
  O: "[g1@15 ~ g1@2 a1@12 d2@4 eb2@2 f2@5 ~ bb2@8 c2@2 d2@2 eb2@6 ab2@10 gb2@2]/3",
  P: "[f2@9 ~ f2@2 c3@5 ~ a2@12 d2@2 eb2@2 e2@2 f2@6 bb1@6]/2", Q: "bb1 c2 d2 eb2@3 ab2 gb2 f2 eb2 db2 c2",
  R: "[f1@15 ~ f1@2 a1@16 d1@2 g1@14 gb1@2 f1@2 c1@17 ~]/3", S: "[~@6 bb0@8 ~ bb0@9]/2",
})).s("gm_acoustic_bass").gain(0.5)

// other · tubular bells · "TUBULARBEL"
const tubular_bells = note("<~@47 [bb4 ~@7] ~@3 [~@4 bb4 ~@3] [~@2 bb4 ~@5] ~>")
  .s("gm_tubular_bells").gain(0.43).pan(0.6)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note("<~@2 A@2 B C@6 D@6 E@6 F@8 G H I@5 J@3 K@3 L@3 M@3 N@4>".pickRestart({
  A: "[~@18 [c3,g4,d5]@12 [eb3,eb5]@5 ~ bb5@6 f5@6, ~@18 bb4@15 ~@3 d5@11 ~, ~@15 gb4 ~@8]/2", // Csus2 Eb
  B: "[bb4,d5]@5 [eb5,e5] f5@9 eb5@2 ~ c5@6, ~ f4@3, ~ c5@2 ~", // Bb Emaj7
  C: "[[eb4,g4]@17 ~ [d4,f4]@10 ~@2 [a4,d5,f5]@4 [g4,c5,eb5] ~ [f4,d5]@52 [g4,eb5]@2 f4@12 e4@6 eb4@18 ~@12 c6@6, bb4@28 f3@7 ~@91 gb4@18, ~@30 [db5,e5] ~@5 bb4@54 [bb4,d5]@18 [a4,c5]@36, ~@138 b5 ~@5]/6", // Eb Dm Cm Dm Cm Dbm Bb Am
  D: "[[g4,bb4,bb5]@9 [f4,c5]@6 [bb4,d5]@3 [eb4,g5]@14 [d4,f5] [c4,eb5]@3 [d4,f5]@9 [bb3,bb5]@9 [eb4,eb5,g5]@18, ~@9 ab5@9 bb4@53 ~, ~@30 d5@5 ~@13]/6", // Gm F5 Bb Eb Dm Cm Dm Bb …
  E: "[f5@18 ~@6 g6@4 f6 g6 db6 bb5@5 [f4,c5,f5]@18 [a4,eb5,g5]@12 [gb4,gb5]@6 ~@12 d6@2 a6@3 g6 db6 c6 ~@10 [eb4,eb5,gb5]@6 ~@12 bb4@6 ~@12 eb5@6, bb4@18 ~@18 [g4,g5]@9 [c4,c5,e5]@6 ~@3 f4@17 ~, d5@30 ~@36 d5@23 ~@19 f5@29 ~@7, bb3@11 ~@7 g4@11 ~ c4@5 ~@51 ab6 ~@57, ~@24 gb6 ~@6 c6 ~@4 [a5,c6]@36 bb5@20 bb5@14 ~@2 d5@18 [f3,a4,c5]@18]/6", // F5 Am7b5 Gb Ebm G C Am F
  F: "[[bb3,f4,d5]@12 [f3,g4,eb5]@6 [bb3,f4,d5]@10 [bb4,eb5,g5]@2 [a4,d5,f5]@3 ~ [g4,c5,eb5]@2 ~@30 bb6@3 [gb6,g6] [g4,eb5]@2 f4@18 g4@12 e4@6 f4@17 ~ gb4@17 ~ [g4,bb4]@16 [gb4,a4,db5]@2 c5@12 d5@6 [bb4,eb5,g5]@12, bb4@25 ~@5 f3@6 bb4@72 a4@36 ~@18 [f4,ab4]@18 ~@12, ~@18 f5@17 ~@61, ~@36 d5@32 ~@4 d5@29 ~ c5@24 d5@34 ~@32, ~@66 a6 ~@3 bb6@14 ~@108]/8", // Bb Cm Bb Eb Dm Cm Gmaj7 Cm …
  G: "~@2 [d3,eb3] [f3,g3,ab3,bb3] [c4,d4,eb4,f4,g4] [ab4,bb4,c5,d5,eb5,f5,g5] bb5@10 a5@2 [a4,eb5,g5]@6, ~ [eb5,g5]@2 ~, ~@6 ab5 ~@17", // Ebmaj7 Gm7 Cm Abmaj7 Am7b5 Eb
  H: "[bb4,d5]@2 [a4,eb5] [f4,bb4,d5], f5@3 ~", // Bb Adim Bb
  I: "[[a4,c5,eb5]@6 [ab4,d5,f5]@6 [eb5,g5]@36 ~@12 a4@6 ~@6 g6@4 f6 g6 db6 c6 bb5@4 f5@29 ~ gb5@6, ~@2 bb4@8 ~ [bb4,g5]@3 [a4,c5]@6, ~@8 d5@5 e5 ~@6, ~@48 f5@18 ~@6 gb6 ~@47]/5", // Adim Ddim Eb Am
  J: "[d5@3 e5@2 [eb5,gb5] d5@3 eb5@2 [c5,gb5], bb4@3 a4, g5@5 ~ f5@5 ~]/3", // Ebm Cdim
  K: "[[bb4,d5]@3 eb5@2 [c5,gb5] c5 ~@2 [bb4,g5] [ab4,eb5,gb5]@2, g5@5 ~@2 d5@3 ~@2, ~ a4 [ab4,f5] ~]/3", // Bb Cdim Eb Ab7 Db
  L: "[[d5,f5]@12 e5@6 eb5@12 gb5@6 ~@18 [bb4,g5]@6 [ab4,eb5,gb5]@6 [bb2,c3] [d3,eb3,f3,g3] [ab3,bb3,c4,d4,eb4,f4,g4] [ab4,bb4,c5,d5,eb5,f5,g5] [ab5,bb5,c6,d6,eb6,f6] [g6,ab6], bb4 a4 [ab4,f5] ~, ~@2 g5@3 c5@2 d5@3 ~@2]/3", // Dm Eb Ab7 Bbsus2 Ebmaj7 Abmaj7 Fm7 Abmaj7 …
  M: "[[d6,f6,bb6]@9 f6@6 gb6@3 d6@9 e6@7 ~@2, ~@18 [a5,c6]@17 ~ [bb5,g6]@32 ~@4]/3", // Bb Am Eb
  N: "[d5@9 eb5@8 ~ [eb5,g5]@9 [d5,f5]@10 ~@11, [f5,bb5]@18 [bb3,bb4]@19 ~@11]/4", // Eb Dm Bb5 Bb
})).s("gm_percussive_organ").gain(0.08).pan(0.4)

// chords · piano · "A.PIANO 1"
const piano = note("<A B@8 C@2 D@3 E@6 F@6 G@3 H@3 I J@2 K@2 L M@6 N@3 O@7>".pickRestart({
  A: "~@2 f6 [f5,bb5,c6,f6], ~@11 f4@13, ~@11 bb5@7 ~@6, ~ [bb4,d5,d6,bb6]", // Fsus4 Bb
  B: "[c6@6 [f4,eb5,g5,a5,c6,f6]@9 [g4,eb5,eb6]@3 d5@5 ~@7 d5@6 [bb4,d5]@6 ~@18 [d4,f4]@6 ~@12 f3@6 ~@30 bb2@6 ~@2 f3@2 [eb4,g4]@2 f2@4 [f2,g3,bb3,eb4]@2 bb2@18 ~@6 f3@6 ~@6 bb2@16 [f2,f3,g3,bb3,eb4]@2 [bb2,f3,bb3,d4]@6, [bb4,f5,bb5,d6]@15 g5@8 d5 g5@2 d4@3 bb4 [f5,a5]@22 d3@8 bb4@28 eb4@2 f2@22 c4@2 bb3@6 bb2@4 bb3 ~ [f3,a3,d4,f4]@6 ~@18 bb2@16 f3@18 ~@8, ~@18 [gb5,c6]@18 g5@18 gb4@6 [bb2,bb3,c4]@6 [d4,f4]@4 bb3@2 bb2@18 c4@6 [eb2,eb3,g3]@29 ~@67, ~@18 gb4@10 a4@14 [c3,bb3,bb4,d5]@6 c5@2 c3@8 d5@20 f4@47 ~@39 bb3@20 ~@8, ~@24 [g3,bb5]@12 f4@6 [e4,g4]@12 [eb3,eb4,bb4]@2 c5@16 d4@6 [f2,g3,bb3,eb4]@6 f3@12 bb3@8 eb4@2 d4@2 c4@2 d4@15 ~@7 [bb3,c4,d4,f4]@30 [c4,d4,f4]@22 ~@8]/8", // F7 Cm Bb Dm Eb Bb F Dm …
  C: "[~@4 [f3,d4]@2 [c2,e3,bb3,d4]@6 [f2,f3,a3,c4]@17 ~ gb3@6 ~@8 d4@2 c5@2, ~@30 [gb2,a3]@17 ~, ~@15 d4@7 ~@2, ~@36 [gb3,d5]@11 ~, ~@42 a4@5 ~]/2", // Dm C7 F Gbm D
  D: "[~@7 d4 bb3 ~@3 [f3,ab3]@3 [bb2,bb3,d4] [c3,c4,eb4] [d3,d4,f4] [bb3,eb4,g4]@3 [bb3,eb4,g4]@3 ~@6 [bb3,eb4,g4]@3 ~@2 [eb2,f4], [g2,bb4]@17 ~ [f2,f4]@12 ~@6 eb2@18 eb2@16 ~@2, d4@10 d4@2 g4@5 ~@55, ~@6 g3@11 ~@55, ~@4 bb3@4 ~@16 [bb3,eb4,g4]@6 ~@3 [bb3,eb4,g4]@3]/3", // Fm Bb Cm Dm Eb Ebsus2 Gm F …
  E: "[~@3 [c4,f4]@3 bb3@2 [bb2,bb3] [bb2,bb3]@3 ~@4 [c4,eb4] [d4,f4] [bb3,eb4,g4]@3 [bb3,eb4,g4]@3 ~@2 bb2 ~@3 [bb3,eb4]@3 f4@2 [eb2,a3,c4] [bb3,d4]@3 f4@3 f4@3 ~@8 g4 [f2,c4,f4,a4]@9 ~@8 d5, bb2@8 [g3,eb4] d4@3 g3@3 [bb2,bb3,d4]@2 ~@10 eb2@8 f4@4 ~@3 [a3,c4]@9 [c3,bb3,e4,a4]@3 ~@18, ~@3 d4@6 f3@8 ~ eb3@9 eb3@9 bb2@18 ~@15 [d2,gb4]@3, ~@6 f4@11 ~@7 [bb3,eb4,g4]@3 ~@6 [bb3,eb4]@3 ~@3 [bb3,d4]@6 [g2,d4,f4]@9 ~@9 [f2,c4,f4,a4]@9, ~@6 c4@6 [bb2,bb3,eb4]@2 bb4@3 ~@13 g4@6 ~@9 bb3@3 g3@6 [f3,c5]@18]/6", // F5 Bb Cm Dm Eb Eb5 Adim Bb …
  F: "[g3@2 g2@2 a2@2 bb2@12 [c3,e4,g4,d5]@12 [gb4,bb4]@2 f4 ~ eb4 ~@19 [c4,f4,a4,c5]@16 eb4@2 [bb2,f3,d4]@10 bb3 [ab3,a3] eb4@2 eb4@4 bb3@10 [g3,bb3,eb4]@2 [g3,bb3]@4 [g3,eb4] ~ [f3,bb3,d4]@16 [f2,eb4]@2 ~@6 [bb4,d5,f5]@10 [f2,eb4]@2, bb4@30 f4 ~@5 [d4,f4,bb4]@18 ~@16 bb3@12 ~@24 bb3@2 ~@23 [bb5,d6]@11 ~@2, [d4,g4,d5]@17 ~@13 [eb3,db5]@6 f3@16 f3@18 g3 ~@53 [g3,bb3] ~@17 [g3,bb3] ~, ~@50 f2@22 ~@12 [f2,g3,bb3]@6 [bb2,f3,d4]@12 [f2,f4]@6 bb2 ~@17 [bb2,f3,bb3,d4]@16 ~@2]/6", // C Gb F Bb Amaj7 Eb Gm Cm …
  G: "[[bb2,f3,bb3,d4]@11 ~ [d3,f3,a3,d4]@6 [g2,f3,bb3,d4]@11 ~ [c3,e3,g3,bb3,d4]@6 [a3,c4]@6 [c4,f4]@6 [c4,f4,a4]@5 ~ [gb2,c4,eb4,a4]@11 ~ [d3,c4,gb4,a4]@5 ~, ~@36 [f2,f3]@17 ~@19, ~@42 a3@11 ~@19]/3", // Bb Dm Gm7 C7 Am F5 F Gbdim …
  H: "[~@6 g3@5 ~ [g2,g3,bb3,d4,g4]@4 [gb2,gb3,a3,db4,gb4] ~ [bb2,ab3,c4,f4]@10 [bb2,bb3,d4] ~ c4@2 [c4,eb4]@2 d4@2 ~@28 f4@2 [f2,f3,a3,c4,eb4]@5 ~, [g2,d4,g4,bb4]@11 ~@17 g4@2 [bb2,ab3,f4]@5 ~ [eb2,bb3,eb4,g4]@18 [eb2,bb3,eb4,g4]@12 ~@6, ~@7 eb3@4 ~]/3", // Gm Gbm Fm Bb Cm F7 Gm Bb7 …
  I: "[bb2,f3,bb3,d4,f4]@11 ~ [a2,a3,c4,eb4,f4]@5 ~ [bb2,bb3,d4,f4]@6", // Bb F7 Bb
  J: "[[c3,a3,c4,eb4,f4]@6 ~@2 [bb3,bb4] [c4,c5] [d4,eb4,d5,eb5] [f4,f5] [g4,bb4,eb5,g5]@8 ~@4 [bb2,eb4,g4]@6 g4@10 f4@2 [f2,f3,a3,c4,eb4]@5 ~, ~@6 [d3,ab3,f4]@6 [eb3,eb4]@11 ~@7 [eb2,eb3,bb3,eb4]@12 ~@6, ~@6 d4@4 ~@2 bb3@17 ~@19]/2", // F7 Bb C Ebmaj7 F Eb F7 Ddim …
  K: "[[bb3,f4]@6 bb4@4 bb4@2 ~@4 [eb4,g4,c5,eb5]@2 ~@6 g3@6 [c3,c4,e4,g4,bb4,d5]@6 [c4,f4,a4,c5]@7 ~@5, [bb2,f3,d4]@3 ~@5, ~ bb3@2 ~@3 f3@2, ~@3 [f4,d5,f5]@2 [g4,eb5] [f2,f4,bb4,d5,f5]@3 [g2,d4,f4,bb4,d5]@6 ~@9, ~@5 g5@4 ~@15]/2", // Bb5 Cm C7 F Bb Dm Cm Bb …
  L: "[c4,f4,a4]@5 ~@7 [c4,f4,a4]@6 [d3,d4,gb4,a4,c5]@6, ~ a2@2 ~", // F D7
  M: "[g3@6 ~@18 c4@5 ~ c4@2 c4@2 bb3@2 ~@6 [bb4,c5]@6 ~@4 bb2@2 ~@6 f3@6 ~@22 g4@2 [a2,c4,eb4,a4]@11 ~ [d3,c4,gb4,a4]@6 [f2,f3,c4,eb4,ab4]@6 [d4,f4,ab4]@6 [d4,f4,ab4]@5 ~ [eb2,eb3,bb3,d4,g4]@5 ~@11 [d5,d6]@2, d4@29 ~@19 [f4,bb4,c5,d5]@6 [f4,a4,c5]@12 a4@16 g4@2 a4@6 ~@48 [bb4,bb5]@6, bb4@20 bb4@9 ~@13 f5@12 ~@18 g4@6 g2@12 ~@24 [bb2,bb3]@11 ~@7 [ab2,ab3,c4,eb4,gb4]@12, g4@18 [c3,e4,g4,c5]@11 ~ [eb3,db4,gb4]@6 bb2@16 ~@20 [g3,d4,bb4]@18 ~@50 [c5,c6]@4, ~@6 g3@23 ~@7 bb3@18 ~@12 [gb3,c4,gb4,c5]@24 ~@54]/6", // Bbsus2 Adim D7 Fm7 Ddim Ebmaj7 D Bb …
  N: "[~@12 [c4,g4]@6 c4@4 c4@8 c4@6 [f2,f3,c4,eb4,ab4]@6 [bb2,bb3,d4,f4,ab4]@11 ~ [eb2,eb3,bb3,d4,g4]@6 [ab2,ab3,c4,eb4,gb4]@6 [ab4,c5,eb5]@2 [ab4,c5,gb5]@2 [ab4,c5,gb5]@2, [bb2,bb3,d5,f5,bb5]@3 eb4@2 [d2,d3,gb4,a4]@2 ~@5, ~ [d4,f4,bb4]@6 ~@5, ~@2 [c3,g3,e4]@5 ~@5, ~@3 [a2,a3,g4]@4 ~@4 ab2]/3", // C5 Fm7 Bb7 Ebmaj7 Ab7 Ab Ab7 Bb …
  O: "[[d5,f5]@6 [bb4,d5]@6 ~@4 [bb2,f5]@2 [c5,eb5,g5]@6 g5@4 g5@2 [d3,c5,gb5,a5]@5 ~ d5@6 bb4@6 ~@4 c5@2 [e4,g4,bb4]@3 ~@6 [bb7,c8]@5 ~@4 [f5,bb5]@5 ~ [f4,bb4,d5,f5]@6 [bb3,f4,bb4,c5,d5]@5 ~ [eb4,g4,bb4,eb5]@9 [f3,eb4,g4,bb4,eb5]@3 [f3,eb4,f4,a4,c5]@6 [bb2,bb3,g4,bb4]@12 bb4@2 ~@2 [eb4,g4,c5]@2 [bb2,bb3,d4,f4,bb4]@22 ~@20, bb5@18 ~@32 db5@4 ~@3 [e4,g4]@4 [g6,bb6,d7] [e7,g7]@5 ~@55 [f4,bb4,d5]@4 ~@42, bb3@12 [bb3,bb4,d5]@6 a3@12 ~@18 [g3,bb4,f5]@6 ~@5 [g5,bb5]@9 ~@22 f5@11 ~@19 [bb2,bb3,eb5]@6 ~@42, ~@3 [bb2,f5]@5 ~@10 [g2,bb5]@9 c3@3 [d6,e6]@4 ~@26 g4@2 ~@22, ~@14 eb5@4 ~@6 [c5,eb5]@6 ~@12 [d5,g5]@12 ~@4 [bb4,d5,e5]@10 ~@3 [bb4,c5,d5]@6 c5@6 ~@6 f3@9 ~@10 eb4@16 ~@44]/7", // Dm Bb Bb5 Cm D7 Edim Bbsus2 Bb5 …
})).s("gm_piano").gain(0.36)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@7 A B ~@3 C ~ B ~ A ~ C A ~@4 D A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A B ~ A ~@7
>`.pickRestart({
  A: "~ x ~@4", B: "~@2 x", C: "~@5 x ~@6", D: "~ x ~",
})).gain(0.23)

// drums · rim
const rim = s("rim").struct("<~@25 A B C A B C A B C A B C A B D E F G H F G E ~@7>".pickRestart({
  A: "x ~@2 x", B: "~ x", C: "~ x ~@2", D: "~ x ~ x", E: "x ~ x!2", F: "~ x!2 ~", G: "x!2 ~ x", H: "~@3 x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@47 [~ x!2 ~] [x ~@2 x] ~@5>").gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@36 A ~@2 A ~@2 A B ~@2 B ~@2 C ~ D ~@2>".pickRestart({
  A: "~@5 x!2 ~@5", B: "~@11 x", C: "~@2 x!2 ~@8", D: "~@3 x!2 ~@3",
})).gain(0.23)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@36 A ~@2 A ~@2 A B ~@2 B C ~ D ~ E ~@2>".pickRestart({
  A: "~ x ~", B: "~@5 x", C: "x", D: "~ x ~@10", E: "~ x!2 ~@5",
})).gain(0.23)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A ~@2 B ~@3 C ~ B D ~@4 B ~@2 B C ~ A C ~ A C ~ A C ~ A C ~ A D ~ A ~@2 A E F A ~@5
>`.pickRestart({
  A: "~@5 x ~@6", B: "~ x ~@2", C: "~@11 x", D: "~@3 x", E: "~@2 x!2", F: "~@2 x",
})).gain(0.23)

// drums · high tom
const high_tom = s("ht").struct("<~@36 A ~@2 B ~@2 B C ~@2 C ~@2 D ~ D ~@2>".pickRestart({
  A: "~@2 x!2 ~@8", B: "~ x ~@2", C: "~@3 x", D: "x",
})).gain(0.23)

// drums · crash
const crash = s("cr").struct("<~@39 A ~@5 A ~ B C@2 ~ A C ~>".pickRestart({
  A: "~ x", B: "x", C: "~ x ~@2",
})).gain(0.29)

// drums · ride
const ride = s("rd").struct("<~@44 x ~@9>").gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@7 A ~ B A ~ B ~@2 B A ~ B A ~ C A ~ B A ~ B A ~ B A ~ B A ~ B A ~ B ~@2 B ~@2 B ~@8
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~@4 x!3 ~@17",
})).gain(0.29)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  ~@7 A ~@4 B A ~@4 B A ~ B A ~ B A ~ B A ~ B A ~ B A ~ B A ~ B ~@2 B ~@2 B ~@8
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2",
})).gain(0.75)

stack(
  bass, tubular_bells, percussive_organ, piano, kick, kick_soft, rim, snare, low_tom, hihat, mid_tom, open_hat,
  high_tom, crash, ride, tambourine, jingle_bells
)

More by Mariah Carey