Strudelify

Mary's Boy Child Oh My Lord

Boney M.

KeyF majorTempo113 bpm
0:00/0:00
// Mary's Boy Child   Oh My Lord — Boney M.
// 113 bpm, 4/4, key F 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 112 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(113/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(`<
  ~@8 A B C D E F C G A B C D E F C G H I J K L M N O H I J K L M N O A B C D E F C G A B C D E F C G H I J K L M N O H
  I J K L M N O P Q R S T U R V P Q R S T U R V W X Y Z AA AB AC AD W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
>`.pickRestart({
  A: "f1@5 ~ f2@5 ~ a1@3 ~", B: "bb1@5 ~ bb1@6 g1@3 ~", C: "c2@5 ~ c1@5 ~ c1@3 ~", D: "f1@6 c2@5 ~ c1@3 ~",
  E: "f1@5 ~ f1@2 g1@3 ~ a1@3 ~", F: "bb1@5 ~ bb1 ~ g1@3 ~ g1@3 ~", G: "f1@5 ~ f1@6 c1 ~ c1 ~",
  H: "f1@5 ~ f1 ~ g1@5 ~ g1 ~", I: "c1@5 ~ c1 ~ f1@5 ~ e1 ~", J: "d1@5 ~ d1 ~ g1@4 g1 ~ g1 ~",
  K: "c1@5 ~ c2@6 c1@2 e1 ~", L: "f1@8 g1@4 a1@3 ~", M: "bb1@5 ~ bb1@2 g1@3 ~ g1@4", N: "c2@6 c1@2 c1@5 ~ c1@2",
  O: "f1@5 ~ f1@8 c1 ~", P: "gb1@5 ~ gb2@5 ~ bb1@3 ~", Q: "b1@5 ~ b1@6 ab1@3 ~", R: "db2@5 ~ db1@5 ~ db1@3 ~",
  S: "gb1@6 db2@5 ~ db1@3 ~", T: "gb1@5 ~ gb1@2 ab1@3 ~ bb1@3 ~", U: "b1@5 ~ b1 ~ ab1@3 ~ ab1@3 ~",
  V: "gb1@5 ~ gb1@6 db1 ~ db1 ~", W: "gb1@5 ~ gb1 ~ ab1@5 ~ ab1 ~", X: "db1@5 ~ db1 ~ gb1@5 ~ f1 ~",
  Y: "eb1@5 ~ eb1 ~ ab1@4 ab1 ~ ab1 ~", Z: "db1@5 ~ db2@6 db1@2 f1 ~", AA: "gb1@8 ab1@4 bb1@3 ~",
  AB: "b1@5 ~ b1@2 ab1@3 ~ ab1@4", AC: "db2@6 db1@2 db1@5 ~ db1@2", AD: "gb1@5 ~ gb1@8 db1 ~",
  AE: "eb1@5 ~ eb2@6 eb1@3 ~", AF: "ab1@5 ~ ab1 ~ bb1@3 ~ b1@3 ~", AG: "db2@5 ~ db2@8 ab1 ~",
  AH: "db1@5 ~ db1@5 ~ db1@3 ~", AI: "gb1@5 ~ gb2@6 db2@3 ~", AJ: "gb1@5 ~ gb2@5 ~ db2@3 ~",
  AK: "gb1@5 ~ gb2@5 ~ db2 ~ db1@2", AL: "gb1@2 ~@2 gb1 ~ gb1 ~ gb1@2 ~@6",
})).s("gm_acoustic_bass").gain(0.6)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@8 A B C D@2 E F G A B C D@2 E F G H I J K L M F N H I J K L M F N A B C D@2 E F G A B C D@2 E F G H I J K L M F N H
  I J K L M F N O P Q R@2 S T U O P Q R@2 S T U V W X Y Z AA T AB V W X Y Z AA T AB Z AA AC AD AE@3 AF
>`.pickRestart({
  A: "c3@3 c3@2 [f3,a3,c4]@3, [f3,g3,a3]@5 ~@3", B: "[d3,f3,g3]@3 [d3,f3,g3], bb3", C: "[bb2,c3]@3 [bb2,c3]@5, [e3,g3]",
  D: "[f3@3 ~@3 c4 ~ [f3,a3]@4 [eb3,g3,a3]@4, c3@25 ~@7, a3@10 a3@4 c4@11 ~@7, ~@3 f3@5 ~@8, ~ g3@2 ~]/2", // F Am7b5
  E: "[d3,f3,bb3]@3 [d3,f3,g3,bb3]@5", F: "[bb2,c3,f3] [bb2,c3,e3]", G: "c3@5 ~ f3 g3, a2@15 ~, f3@3 ~, ~@10 c3@5 ~",
  H: "[f3,g3,a3,c4] [f3,g3,bb3,d4]", I: "~ [f3,a3], [e3,g3] ~, c4@3 c4@5, ~ bb3 ~@2", J: "[c3,d3,f3,a3] [bb2,d3,f3,g3]",
  K: "c3 ~@2 bb3, [bb2,e3,g3], ~@2 c3@3 c3@3, ~@3 c4@5", L: "[c3,f3,a3]@2 ~ [a3,c4], ~ [c3,g3,bb3]",
  M: "[f3,bb3,d4]@3 [d3,f3,g3,bb3]@5", N: "c3@5 ~@2 g3, f2, [f3,a3]@3 f3, ~@5 c3@3",
  O: "db3@3 db3@2 [gb3,bb3,db4]@3, [gb3,ab3,bb3]@5 ~@3", P: "[eb3,gb3,ab3]@3 [eb3,gb3,ab3], b3",
  Q: "[b2,db3]@3 [b2,db3]@5, [f3,ab3]", // Bsus2 Fm
  R: "[gb3@3 ~@3 db4 ~ [gb3,bb3]@4 [e3,ab3,bb3]@4, db3@25 ~@7, bb3@10 bb3@4 db4@11 ~@7, ~@3 gb3@5 ~@8, ~ ab3@2 ~]/2", // Gb Bbm7b5
  S: "[eb3,gb3,b3]@3 [eb3,gb3,ab3,b3]@5", T: "[b2,db3,gb3] [b2,db3,f3]",
  U: "db3@5 ~ gb3 ab3, bb2@15 ~, gb3@3 ~, ~@10 db3@5 ~", V: "[gb3,ab3,bb3,db4] [gb3,ab3,b3,eb4]",
  W: "~ [gb3,bb3], [f3,ab3] ~, db4@3 db4@5, ~ b3 ~@2", X: "[db3,eb3,gb3,bb3] [b2,eb3,gb3,ab3]",
  Y: "db3 ~@2 b3, [b2,f3,ab3], ~@2 db3@3 db3@3, ~@3 db4@5", Z: "[db3,gb3,bb3]@2 ~ [bb3,db4], ~ [db3,ab3,b3]",
  AA: "[gb3,b3,eb4]@3 [eb3,gb3,ab3,b3]@5", AB: "db3@5 ~@2 ab3, gb2, [gb3,bb3]@3 gb3, ~@5 db3@3",
  AC: "~@3 bb3@5, db2@15 ~, ~ b2@7, ~ gb3@3", AD: "~@3 db4@4 ~, db2@7 ~, ~ b2@6 ~, ~@2 f3@5 ~",
  AE: "[~@23 gb4, gb2@16 gb2@16 gb2@15 ~, ~@2 db3@14 ~@2 db3@14 ~@2 db3@13 ~, ~@4 bb3@10 bb3@5 ~ bb3@10 bb3@5 ~ bb3@5 ~ bb3@6, ~@6 gb4@14 ~@2 gb4@13 ~@3 gb4@7 ~@3]/3",
  AF: "[gb2,db3]@2 ~@2 [gb2,db3,bb3,gb4]@3 ~ [gb2,db3,bb3,gb4]@2 ~@6", // Gb5 Gb
})).s("gm_epiano2").gain(0.32)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@16 A B C A@2 D E F G H I J K@2 L M G H I J K@2 L M ~@8 A B C A@2 D N F G H I J K@2 L M G H I J K@2 L M ~@8 O P Q O@2
  R S T U V W X Y@2 Z AA U V W X Y@2 Z AA AB AC AD AE AF@2 AG AH
>`.pickRestart({
  A: "[f2,c3,a3]", B: "[d3,bb3]@3 [f3,a3], g2", C: "e3@3 bb3, [c2,bb2]", D: "[d3,g3]@3 f3, bb1",
  E: "[bb2,f3]@2 d3 e3, c2, ~ bb2", F: "[c2,a2,f3]", G: "[f2,c3,a3] [g2,d3,bb3]", H: "[c2,bb2,e3] [f2,c3,f3,a3]",
  I: "[d2,a2,f3]@2 g3 f3, ~ [g2,bb2]", J: "[c2,bb2,e3]",
  K: "[[f2,c3,a3]@2 [g2,c3,bb3] [a2,c4] [bb2,d4]@2 [g2,f3,bb3]@2, ~@12 f3@11 ~@9]/2", L: "[c2,bb2,f3] [c2,bb2,e3]",
  M: "[c2,a2,f3]@15 ~", N: "[bb2,e3]@2 d3 e3, c2, ~ bb2", O: "[gb2,db3,bb3]", P: "[eb3,b3]@3 [gb3,bb3], ab2",
  Q: "f3@3 b3, [db2,b2]", R: "[eb3,ab3]@3 gb3, b1", S: "[b2,f3]@2 eb3 f3, db2, ~ b2", T: "[db2,bb2,gb3]",
  U: "[gb2,db3,bb3] [ab2,eb3,b3]", V: "[db2,b2,f3] [gb2,db3,gb3,bb3]", W: "[eb2,bb2,gb3]@2 ab3 gb3, ~ [ab2,b2]",
  X: "[db2,b2,f3]", Y: "[[gb2,db3,bb3]@2 [ab2,db3,b3] [bb2,db4] [b2,eb4]@2 [ab2,gb3,b3]@2, ~@12 gb3@11 ~@9]/2",
  Z: "[db2,b2,gb3] [db2,b2,f3]", AA: "[db2,bb2,gb3]@15 ~", AB: "[eb2,db3,gb3]", AC: "[ab2,b2,gb3,b3]@15 ~",
  AD: "[db2,b2,gb3]", AE: "~@8 db4@7 ~, [db2,b2,f3]@15 ~", AF: "[db3,bb3,gb4]/2", AG: "[bb3,gb4,db5]",
  AH: "[db4,bb4,gb5] ~@3 [bb4,gb5]@2 [db4,bb4,gb5] ~ [db4,bb4,gb5] ~@7, ~@4 db4 ~@11", // Gb Ebm Gb
})).s("gm_string_ensemble_1").gain(0.41)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@8 A B C D E F G@2 A B C D E F G@2 H I J K L M N O H I J K L M N O A B C D E F G@2 A B C D E F G@2 P Q R S T U V W P
  Q R S T U V W X Y Z AA AB AC AD@2 X Y Z AA AB AC AD@2 AE AF AG AH AI AJ AK AL AE AF AG AH AI AJ AK AL AI AJ AM AN AO
  AP AQ AR
>`.pickRestart({
  A: "~@6 f2 c3, f2@4 a3@4 c3@5 ~@3, ~ c3@2 f2@2 a3@3", B: "~@6 bb2 d3, bb2@4 g3@4 d3@5 ~@3, ~@2 d3@4 bb2@4 g3@5 ~",
  C: "~@6 c2 bb2, c2@4 e3@4 bb2@5 ~@3, ~ bb2@2 c2@2 e3@3",
  D: "f2 ~@6 f3, ~@2 a2@9 ~ a2@4, ~@4 c3@5 ~ c3@6, ~@6 f3@7 ~@3",
  E: "~@14 eb3 ~, f2@2 a3@2 ~ a3@3, ~@2 c3@6 eb3@5 ~@3, ~@6 f2@5 ~ f2@4",
  F: "~@14 g2 ~, bb2@6 g2@7 ~@3, ~@2 d3@5 ~ d3@8, ~ bb3 ~ f3",
  G: "[~ bb2 f3 ~@3 c2 ~@6 a2 c3 a2, c2@5 ~ c2@4 e3@4 f3@4 a2@6 ~@8, ~@8 bb2@8 f2@4 c3@4 f3@7 ~, ~@22 f2@7 ~@3]/2",
  H: "~@6 a2 ~@7 g2 ~, a2@4 c4@4 ~@2 d3@5 ~, ~ f3@3 g2@3 ~, ~@3 g3", I: "~ e3 g3 f3@2 ~ f2 c3, c3@5 a3@3",
  J: "~@6 d2 ~@5 f3@2 g2@2, d2@4 f3@4 ~@2 bb2@5 ~, ~ c3@3 g2@2 ~@2",
  K: "~@5 c3 ~ c3, c2@4 g3@4 c4@5 ~@3, ~ c3@3 ~@2 g3@2, ~@6 c2@9 ~", L: "~@2 a3 ~@3 a2 c3, f2 ~ c3 ~, ~ c3@2 a2@2 a3@3",
  M: "~@6 bb2 ~@5 bb3@2 g2@2, bb2 bb3 g2 ~, ~@2 d3@7 ~ d3@6", N: "~@6 c2 f3, c2 f3 bb2@2, ~ bb2@2 c2@2 e3@2 ~",
  O: "~@12 f2@2 a2 ~, f2@4 f3@4 a2@5 ~@3, ~@2 a2@4 f2@4 f3@5 ~",
  P: "~@4 a4@2 f3 ~ bb4@2 a4 ~ g4@2 f4 ~, f3 ~@3, ~ c4@2 ~@5", Q: "e4@2 ~@2 c4@2 e4 ~ a4@2 g4 ~ f4 ~ e4 ~, ~ g3@2 ~@5",
  R: "d4@2 ~@2 a3@2 d4 ~ g4 ~ f4 ~ e4 ~ d4 ~, ~ d3@2 ~@5", S: "c4@2 ~@10 c4@2 g3 ~, ~ g3@2 c4@2 bb3@2 ~, ~ bb3 g3 ~",
  T: "~@4 f4@2 ~@4 c4@2 ~@2 c4 ~, f3@5 ~ f3@5 ~ f3@4, ~@2 c4@5 ~ a4@6 ~@2",
  U: "~@6 bb2 ~@3 f3@2 ~@2 f3@2, bb2 d4 ~ bb3, ~@2 f3@4 ~@2 g2@5 ~@3",
  V: "~@4 e3 c4 ~ bb3, c2 bb3 ~ e3, ~@2 f3@4 c2@9 ~", W: "~@12 f2@2 c3 ~, f2@4 a3@4 c3@5 ~@3, ~@2 c3@4 f2@4 a3@5 ~",
  X: "~@6 gb2 db3, gb2@4 bb3@4 db3@5 ~@3, ~ db3@2 gb2@2 bb3@3",
  Y: "~@6 b2 eb3, b2@4 ab3@4 eb3@5 ~@3, ~@2 eb3@4 b2@4 ab3@5 ~",
  Z: "~@6 db2 b2, db2@4 f3@4 b2@5 ~@3, ~ b2@2 db2@2 f3@3",
  AA: "gb2 ~@6 gb3, ~@2 bb2@9 ~ bb2@4, ~@4 db3@5 ~ db3@6, ~@6 gb3@7 ~@3",
  AB: "~@14 e3 ~, gb2@2 bb3@2 ~ bb3@3, ~@2 db3@6 e3@5 ~@3, ~@6 gb2@5 ~ gb2@4",
  AC: "~@14 ab2 ~, b2@6 ab2@7 ~@3, ~@2 eb3@5 ~ eb3@8, ~ b3 ~ gb3",
  AD: "[~ b2 gb3 ~@3 db2 ~@6 bb2 db3 bb2, db2@5 ~ db2@4 f3@4 gb3@4 bb2@6 ~@8, ~@8 b2@8 gb2@4 db3@4 gb3@7 ~, ~@22 gb2@7 ~@3]/2",
  AE: "~@4 bb4@2 gb3 ~ b4@2 bb4 ~ ab4@2 gb4 ~, gb3 ~@3, ~ db4@2 ~@5",
  AF: "f4@2 ~@2 db4@2 f4 ~ bb4@2 ab4 ~ gb4 ~ f4 ~, ~ ab3@2 ~@5",
  AG: "eb4@2 ~@2 bb3@2 eb4 ~ ab4 ~ gb4 ~ f4 ~ eb4 ~, ~ eb3@2 ~@5",
  AH: "db4@2 ~@10 db4@2 ab3 ~, ~ ab3@2 db4@2 b3@2 ~, ~ b3 ab3 ~",
  AI: "~@4 gb4@2 ~@4 db4@2 ~@2 db4 ~, gb3@5 ~ gb3@5 ~ gb3@4, ~@2 db4@5 ~ bb4@6 ~@2",
  AJ: "~@6 b2 ~@3 gb3@2 ~@2 gb3@2, b2 eb4 ~ b3, ~@2 gb3@4 ~@2 ab2@5 ~@3",
  AK: "~@4 f3 db4 ~ b3, db2 b3 ~ f3, ~@2 gb3@4 db2@9 ~",
  AL: "~@12 gb2@2 db3 ~, gb2@4 bb3@4 db3@5 ~@3, ~@2 db3@4 gb2@4 bb3@5 ~",
  AM: "~@3 gb3, b2@3 bb3@5, ~@2 db3@6 b2@7 ~, ~@2 gb3@3 db3@3",
  AN: "~@12 f3@2 b2 ~, b2@8 b2@5 ~@3, ~@2 db3@7 ~ db3@5 ~, ~@4 f3@5 ~@7, ~@3 ab3@2 ~@3",
  AO: "~ db3 ~ eb3@2 ~@2 bb2, gb2@7 ~, ~@4 gb3@5 ~ gb3@6, ~@3 db3",
  AP: "~@2 db3 eb3@2 ~ db3 bb2, gb2@13 ~@3, ~ bb2@5 ~@2, ~@5 gb3@2 ~",
  AQ: "~@6 db3 bb2, gb2@13 ~@3, ~ bb2@5 ~@2, ~@2 db3@3 eb3@2 ~, ~@3 gb3@4 ~",
  AR: "gb2@2 ~@2 [gb2,gb3]@2 gb2 ~ [gb2,gb3]@2 ~@6", // Gb
})).s("gm_acoustic_guitar_steel").gain(0.45)

// other · orchestral harp · "HARP" · Am7 F Dm7 Am7 G7 Am Ab7 Eb7 …
const orchestral_harp = note(`<
  ~@23
  [~@10 f2 [g2,a2,c3] [f3,g3,a3] [c4,d4,f4] [g4,a4,c5] [d5,f5,g5]]
  [[a5,c6] ~@15]
  ~@7
  [c6 ~@15]
  ~@77
  [~@5 [eb2,gb2,ab2] [bb2,db3,eb3] [gb2,gb3,ab3] [ab2,bb2,db3] [eb3,gb3,ab3] [bb3,db4,eb4] [bb2,db3,eb3] [gb3,ab3,bb3] [db4,eb4,gb4] [ab4,bb4,db5] [eb5,gb5,ab5]]
  [[bb5,db6,eb6] gb6 ~@14]
>`).s("gm_orchestral_harp").gain(0.24)

// other · tubular bells · "TUBULARBEL"
const tubular_bells = note(`<
  ~@48 A B C D E B F ~ G H I J K L M N G H I J K L M N ~@8 O P Q R S P T ~ U V W X Y Z AA AB U V W X Y Z AA AB Y Z AC AD
  AE ~@3
>`.pickRestart({
  A: "c4 ~ c4 ~@3 c4 ~ f4 ~@3 f4 ~ d4 ~", B: "~@2 bb3 ~@3 g3 ~@3 d4 ~@3 d4 ~", C: "c4 ~@3 e4 ~ d4 ~@3 bb3 ~@3 a3 ~",
  D: "~@14 c4 ~", E: "c4 ~@3 a4 ~ g4 ~@3 f4 ~@3 d4 ~", F: "c4 ~@3 f4 ~ e4 ~@3 g4 ~@3 f4 ~",
  G: "a4 ~@3 a4 ~@3 bb4 ~@3 bb4 ~@3", H: "g4 ~@3 g4 ~@3 a4 ~@3 a4 ~@3", I: "f4 ~@3 f4 ~@3 g4 ~@3 g4 ~@3",
  J: "e4 ~@3 e4 ~@3 e4 ~@3 d4 ~@3", K: "c4 ~@3 a4 ~@3 g4 ~@3 f4 ~@3", L: "g4 ~@3 f4 ~@3 d4 ~@3 bb3 ~@3",
  M: "c4 ~@3 f4 ~@3 e4 ~@3 g4 ~@3", N: "f4 ~@3 c4 ~@3 f3 ~@3 c4 ~@3", O: "db4 ~ db4 ~@3 db4 ~ gb4 ~@3 gb4 ~ eb4 ~",
  P: "~@2 b3 ~@3 ab3 ~@3 eb4 ~@3 eb4 ~", Q: "db4 ~@3 f4 ~ eb4 ~@3 b3 ~@3 bb3 ~", R: "~@14 db4 ~",
  S: "db4 ~@3 bb4 ~ ab4 ~@3 gb4 ~@3 eb4 ~", T: "db4 ~@3 gb4 ~ f4 ~@3 ab4 ~@3 gb4 ~", U: "bb4 ~@3 bb4 ~@3 b4 ~@3 b4 ~@3",
  V: "ab4 ~@3 ab4 ~@3 bb4 ~@3 bb4 ~@3", W: "gb4 ~@3 gb4 ~@3 ab4 ~@3 ab4 ~@3", X: "f4 ~@3 f4 ~@3 f4 ~@3 eb4 ~@3",
  Y: "db4 ~@3 bb4 ~@3 ab4 ~@3 gb4 ~@3", Z: "ab4 ~@3 gb4 ~@3 eb4 ~@3 b3 ~@3", AA: "db4 ~@3 gb4 ~@3 f4 ~@3 ab4 ~@3",
  AB: "gb4 ~@3 db4 ~@3 gb3 ~@3 db4 ~@3", AC: "db4 ~@7 gb4 ~@7", AD: "f4 ~@7 ab4 ~@7", AE: "gb4 ~@15",
})).s("gm_tubular_bells").gain(0.44)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@24 A@7 B A@7 B ~@8 A@7 C A@7 D A@7 D ~@8 A@7 C A@7 D A@7 D A@3 D A@2 E ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~", C: "~@2 x ~@2 x!2 ~", D: "~ x!3", E: "~@2 x ~@2 x ~@2",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@23 [~@5 x!2 ~] ~@23 [~@3 x] ~@31 [~@3 x] ~@32>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@48 A B@4 C B D ~@24 A B@4 C B D ~@23 E>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~ x ~ x ~ x!2", D: "x", E: "~ x!2 ~",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 A ~@7 A ~@3 A ~@3 B ~@27 A ~@3 B ~@30 C ~>".pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x!2 ~@3", C: "~@7 x",
})).gain(0.58)

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

// drums · high tom
const high_tom = s("ht").struct("<~@47 [~ x ~@6] ~@31 [~ x ~@6] ~@30 [~@3 x] ~>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@7 A ~@23 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.58)

// drums · ride
const ride = s("rd").struct(`<
  ~@23 A B C A D E F A G B C A D E F A G@2 ~@3 G ~@3 G ~@7 H E@2 I H E@2 J H E@2 I H E@2 J G ~@3 G ~@3 G ~@7 H E@2 I H
  E@2 J H E@2 I H E@2 J H E@2 J K L M G
>`.pickRestart({
  A: "x!4", B: "~ x!3", C: "x ~ x ~ x ~ x!2", D: "x ~ x ~ x!4", E: "x ~ x!3 ~ x!2", F: "x!5 ~ x!2", G: "x",
  H: "~@2 x!3 ~ x!2", I: "x ~ x!3 ~@3", J: "x!2 ~@2", K: "~ x!7", L: "x!8", M: "x!5 ~@3",
})).gain(0.64)

// … 24 more lines

More by Boney M.