Strudelify

No Leaf Clover

Metallica

KeyE♭ minorTempo76 bpm
0:00/0:00
// No Leaf Clover — Metallica
// 76 bpm, 2/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 6, 4/4 at bar 7, 2/4 at bar 13, 4/4 at bar 14, ...) are rendered on a constant 2/4 grid of one bar per cycle
// note: Full arrangement: all 194 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · viola
const viola = note(`<
  A B A C A B D A B A C A B D ~@18 E F@2 G@2 H@2 I J K L M K L M@2 N O K L P Q R S T U M J V W M X Y ~@6 Z AA AB AC AD
  AC AE AC AD AC E AF AG E AH AG E AF AG AI AH AJ AK ~@6 Z AA AB AC AD AC AE AC AD AC AL@2 AM@2 AN AO AP@2 E AQ AR M AS
  AT AU AV AW AQ AR AX@2 K AY AZ@2 A B A C A B D A B A C A B D A B A C A B D BA BB BC BB BA BB BD BE AF AG AF BE AF AG
  AF BF BG BH BI M BJ BK BL BM ~ BH BI M BJ BK BL A B A C D BN@2
>`.pickRestart({
  A: "[eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3] [db3,ab3]", // Eb5 Db5
  B: "[eb3,bb3]@2 [eb3,bb3] [db3,ab3] [eb3,bb3] [gb3,db4]@3", C: "[eb3,bb3]@2 [eb3,bb3] [db3,ab3] [eb3,bb3] bb3@3",
  D: "[eb3,bb3] [b2,gb3,db4]@3 [eb3,bb3] [b2,gb3,db4]@3", E: "eb3 bb3@2 eb3 b3@2 bb3@2", F: "[f4@2 eb4@13 ~]/2",
  G: "[f4@7 ~ gb4@4 bb3@18 ~@2]/2", H: "[f4@7 ~ gb4@14 eb4@2 b4@4 bb4@4]/2", I: "f4@4 bb4@11 ~", J: "ab4@7 ~",
  K: "gb4@7 ~", L: "f4@7 ~", M: "eb4@7 ~", N: "f4@7 ~ bb3@7 ~", O: "gb3 ab3 bb3 db4", P: "f4 gb4 f4@2 f4 gb4 f4@2",
  Q: "~@2 bb4@4 ab4 gb4", R: "f4@7 ~ ab4@7 ~", S: "bb4@7 ~", T: "~@8 bb4@7 ~", U: "ab4@11 ~ gb4@2 f4@2",
  V: "b4@7 ~ bb4@4 ab4@4", W: "gb4@11 ~ f4@4", X: "f4 gb4!2 ab4", Y: "ab4 b4!2 bb4", Z: "f3 gb3 f3 gb3 f3 gb3 f3 gb3",
  AA: "ab3 bb3 b3 bb3 b3 db4 eb4 f4", AB: "[eb3,gb3,bb3,gb4]@7 ~", AC: "[eb3,ab3,b3]@7 ~", AD: "[d3,f3,bb3]@7 ~",
  AE: "[eb3,gb3,bb3]@7 ~", AF: "[ab3,eb4]@7 ~", AG: "[bb3,f4]@7 ~", AH: "[b3,gb4]@7 ~", AI: "[gb3,db4]@7 ~",
  AJ: "[bb3,f4]!4", AK: "[bb3,gb4]!4", AL: "[[eb3,gb3,b3]@15 ~]/2", AM: "[[eb3,gb3,bb3]@15 ~]/2",
  AN: "[eb3,gb3,b3]@7 ~", AO: "[f3,ab3,db4]@7 ~", AP: "f3 gb3 f3 gb3", AQ: "eb4@7 ~ gb4@7 ~", AR: "eb4@11 ~ bb3@4",
  AS: "bb3@7 ~", AT: "eb4@7 ~ f4@7 ~", AU: "gb4@7 ~ b4@4 bb4@4", AV: "ab4@11 ~ gb4@4", AW: "f4@7 ~ bb4@7 ~",
  AX: "[eb4@23 ~ bb4@7 ~]/2", AY: "b4@7 ~ bb4@7 ~", AZ: "[bb4@27 ~ gb4@2 f4@2]/2",
  BA: "[eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]!2", BB: "[ab3,eb4]@2 [ab3,eb4]!3 [ab3,eb4]@3",
  BC: "[bb3,f4]!2 [bb3,f4]@2 [bb3,f4]@2 [bb3,f4]!2", BD: "[eb3,bb3] [bb3,f4]@3 [ab3,eb4] [bb3,f4]@3",
  BE: "[eb3,bb3]@7 ~", BF: "[eb2,bb2]@7 ~", BG: "[bb2,f3]@7 ~", BH: "[b2,gb3]@7 ~ bb4@4 ab4@4", BI: "gb4 f4 eb4 d4",
  BJ: "~@3 f3", BK: "gb3@7 ~@9", BL: "f3@7 ~ bb3@2 ab3@2 gb3@2 f3@2", BM: "eb3@7 ~", BN: "[[eb3,bb3]@15 ~]/2",
})).s("gm_viola").gain(0.72)

// chords · brass section
const brass_section = note(`<
  A B A C A B D A B A C A B D ~@19 E@2 F@2 G@2 H I J K L J K L@2 M N J K O P Q R S T L I U V L W X ~@7 Y Z AA AB AC AD
  AE AD AC ~ AF AG ~ AH AG ~ AF AG AI AH AJ@2 ~@7 Y Z AK ~@3 AL ~@8 AM@2 ~ AN AO AP AG AQ AR AS AT AN AO AU@2 AV AW AX@2
  A B A C A B D A B AY AZ BA BB D A B A C A B D BC BD BE BD BC BD BF BG BH AB BH BG BH BI BH BJ BK BL BM L BN BO BP AP ~
  BL BM L BN BO BP A B A C D BQ@2
>`.pickRestart({
  A: "[bb2,eb3]!2 [bb2,eb3]@2 ~@2 [bb2,eb3] [ab2,db3]", B: "[bb2,eb3]@7 ~ [bb2,eb3]@2 [db3,gb3]@6",
  C: "[bb2,eb3]@7 ~ [bb2,eb3]@2 [bb2,bb3]@6", D: "[bb2,eb3] [db3,gb3]@3 [bb2,eb3] [db3,gb3]@3", E: "[f4@2 eb4@13 ~]/2",
  F: "[f4@7 ~ gb4@4 bb3@18 ~@2]/2", G: "[f4@7 ~ gb4@14 eb4@2 b4@4 bb4@4]/2", H: "f4@4 bb4@11 ~", I: "ab4@7 ~",
  J: "gb4@7 ~", K: "f4@7 ~", L: "eb4@7 ~", M: "f4@7 ~ bb3@7 ~", N: "gb3 ab3 bb3 db4", O: "f4 gb4 f4@2 f4 gb4 f4@2",
  P: "~@2 bb4@4 ab4 gb4", Q: "f4@7 ~ ab4@7 ~", R: "bb4@7 ~", S: "~@8 bb4@7 ~", T: "ab4@11 ~ gb4@2 f4@2",
  U: "b4@7 ~ bb4@4 ab4@4", V: "gb4@11 ~ f4@4", W: "f4 gb4!2 ab4", X: "ab4 b4!2 bb4", Y: "ab3 bb3 b3 bb3 b3 db4 eb4 f4",
  Z: "[bb3,gb4]@7 ~", AA: "[b3,ab4]@7 ~ gb4@7 ~", AB: "[bb3,f4]@7 ~", AC: "ab3@7 ~", AD: "bb3@7 ~", AE: "b3@7 ~",
  AF: "ab2@7 ~", AG: "bb2@7 ~", AH: "b2@7 ~", AI: "gb2@7 ~", AJ: "bb2!4", AK: "~@2 ab3@13 ~", AL: "ab3@7 ~@9",
  AM: "bb2 b2 bb2 b2", AN: "eb3@7 ~ gb3@7 ~", AO: "eb3@11 ~ bb2@4", AP: "eb3@7 ~", AQ: "eb3@7 ~ f3@7 ~",
  AR: "gb3@7 ~ b3@4 bb3@4", AS: "ab3@11 ~ gb3@4", AT: "f3@7 ~ bb3@7 ~", AU: "[eb3@23 ~ bb3@7 ~]/2", AV: "gb3@7 ~",
  AW: "b3@7 ~ bb3@7 ~", AX: "[bb3@27 ~ gb3@2 f3@2]/2", AY: "eb3 f3 gb3 ab3 gb3 ab3 bb3 b3",
  AZ: "bb3 b3 db4 eb4 db4 eb4 f4 gb4", BA: "eb4 f4 gb4 ab4 gb4 ab4 bb4 b4", BB: "bb4 b4 db5 eb5 db5 eb5 f5 gb5",
  BC: "[eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3]@2 [eb3,bb3]!2", BD: "[ab3,eb4]@2 [ab3,eb4]!3 [ab3,eb4]@3",
  BE: "[bb3,f4]!2 [bb3,f4]@2 [bb3,f4]@2 [bb3,f4]!2", BF: "[eb3,bb3] [bb3,f4]@3 [ab3,eb4] [bb3,f4]@3",
  BG: "[eb3,bb3]@7 ~", BH: "[ab3,eb4]@7 ~", BI: "[f3,bb3,f4]@7 ~", BJ: "[eb2,bb2]@7 ~", BK: "[bb2,f3]@7 ~",
  BL: "[b2,gb3]@7 ~ bb4@4 ab4@4", BM: "gb4 f4 eb4 d4", BN: "~@3 f3", BO: "gb3@7 ~@9",
  BP: "f3@7 ~ bb3@2 ab3@2 gb3@2 f3@2", BQ: "[[bb2,eb3]@15 ~]/2",
})).s("gm_brass_section").gain(0.72)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A ~@15 B@2 C@3 D E@2 B@2 F G H@2 I@2 ~ J@2 K@2 L@2 M G N O P N O P@2 Q R N O S T U F V W P G X Y P Z AA AB@2 C@3 D E@2
  AC ~ F ~@3 F AD ~ AC AE ~ AF F ~ AC AE AG AH AI AJ AB@2 F G AK@2 I@2 AL@2 AE AM AN@2 ~@2 AO@2 N ~ AH AP AQ AR ~ AS AT
  P AU AV AW AX AY AS AT AZ@2 N BA BB@2 ~@25 BC@2 BD ~@10 BE BF P BG BH BI P ~ BE BF P BG BH BI BJ@4 BK BL@2
>`.pickRestart({
  A: "[bb4,eb5]@7 ~@9", B: "[bb5@22 ~@2 b5@7 ~]/2", C: "[bb5@23 ~]/3", D: "eb6@11 ~ f6@4", E: "[d6@15 ~]/2",
  F: "bb5@7 ~", G: "ab5@7 ~", H: "[bb5@7 ~ eb6@22 ~@2]/2", I: "[f6@15 ~]/2", J: "[f5@2 eb5@13 ~]/2",
  K: "[f5@7 ~ gb5@4 bb4@18 ~@2]/2", L: "[f5@7 ~ gb5@14 eb5@2 b5@4 bb5@4]/2", M: "f5@4 bb5@11 ~", N: "gb5@7 ~",
  O: "f5@7 ~", P: "eb5@7 ~", Q: "f5@7 ~ bb4@7 ~", R: "gb4 ab4 bb4 db5", S: "f5 gb5 f5@2 f5 gb5 f5@2",
  T: "~@2 bb5@4 ab5 gb5", U: "f5@7 ~ ab5@7 ~", V: "~@8 bb5@7 ~", W: "ab5@11 ~ gb5@2 f5@2", X: "b5@7 ~ bb5@4 ab5@4",
  Y: "gb5@11 ~ f5@4", Z: "f5 gb5!2 ab5", AA: "ab5 b5!2 bb5", AB: "[bb5@23 ~ b5@7 ~]/2", AC: "eb6@7 ~",
  AD: "~@2 bb5 db6", AE: "f6@7 ~", AF: "gb5@7 ~ ab5@7 ~", AG: "~ gb5 ab5 bb5", AH: "b5@7 ~", AI: "[bb5,f6] f6!3",
  AJ: "gb6!4", AK: "[gb5@7 ~ bb5@15 ~ eb6@7 ~]/2", AL: "[gb6@15 ~]/2", AM: "gb6@7 ~ f6@7 ~", AN: "[eb6@15 ~]/2",
  AO: "[b5@23 ~ f5@7 ~]/2", AP: "db6@7 ~", AQ: "f5 gb5 f5 gb5", AR: "f5 gb5 f5 gb5 f5 gb5 f5 gb5",
  AS: "eb5@7 ~ gb5@7 ~", AT: "eb5@11 ~ bb4@4", AU: "bb4@7 ~", AV: "eb5@7 ~ f5@7 ~", AW: "gb5@7 ~ b5@4 bb5@4",
  AX: "ab5@11 ~ gb5@4", AY: "f5@7 ~ bb5@7 ~", AZ: "[eb5@23 ~ bb5@7 ~]/2", BA: "b5@7 ~ bb5@7 ~",
  BB: "[bb5@27 ~ gb5@2 f5@2]/2", BC: "[gb5@22 ~@2 ab5@7 ~]/2", BD: "f5@7 ~@9", BE: "~@2 bb5 ab5", BF: "gb5 f5 eb5 d5",
  BG: "~@3 f5", BH: "gb5@7 ~@9", BI: "f5@7 ~ bb5@2 ab5@2 gb5@2 f5@2", BJ: "[eb6@52 db6@4 bb5@7 ~]/4",
  BK: "ab5@7 ~ gb5@7 ~", BL: "[f5@15 ~]/2",
})).s("gm_string_ensemble_1").gain(0.72)

// other · oboe
const oboe = note("<~@23 A B ~@43 C D ~@27 C D E ~@94>".pickRestart({
  A: "~ eb5 db5 b4 eb5 db5 b4 bb4", B: "bb4@7 ~", C: "~@4 bb5 ab5 gb5 f5", D: "gb5@7 ~", E: "f5@7 ~ eb5@7 ~",
})).s("gm_oboe").gain(0.72)

// other · flute
const flute = note("<A ~@15 B C ~@2 B C ~@3 D ~@2 E F G@2 ~@155 A ~@6>".pickRestart({
  A: "[bb4,eb5]@7 ~@9", B: "~@4 bb5 ab5 gb5 f5", C: "eb5@7 ~", D: "bb5@2 ab5@2 gb5@2 f5@2 eb5@7 ~",
  E: "gb5@5 f5 eb5 db5", F: "b4@7 ~ gb5@7 ~", G: "[f5@15 ~]/2",
})).s("gm_flute").gain(0.72)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@16 A B C D A E F G A B H I J K G ~@63 L@2 M N O P G ~@55 Q R S R T R U V W X Y V W X ~@24
>`.pickRestart({
  A: "eb3@4 gb3@4 bb3@7 ~", B: "eb3@4 ab3@4 b3@7 ~", C: "d3@4 f3@4 bb3@7 ~", D: "f3@4 bb3@4 bb2@7 ~",
  E: "eb3@7 ~ b3@4 bb3@4", F: "bb2@7 ~ f3@7 ~", G: "bb2@7 ~@9", H: "d3 f3 bb3 f3", I: "bb2@4 f3@4 bb3@7 ~",
  J: "eb3@7 ~ bb3@7 ~", K: "b2@7 ~ ab2@7 ~", L: "~@8 eb3@7 ~", M: "~@8 d3@7 ~", N: "~@8 ab3@7 ~", O: "gb3@7 ~ eb3@7 ~",
  P: "b2@7 ~ b2@7 ~", Q: "~@2 gb3 bb3", R: "~ eb3 b3 ab3", S: "~@4 f3@4 bb3@7 ~", T: "~@4 bb2@4 gb3@7 ~",
  U: "~ f3 ~ f3", V: "~@8 gb3@7 ~", W: "~@2 b3 bb3", X: "~@8 bb3@7 ~", Y: "~@2 b3 ab3",
})).s("gm_pizzicato_strings").gain(0.72)

// other · muted trumpet
const muted_trumpet = note("<A B ~ C ~ B D ~ B ~ C ~ B D ~@121 A B ~ C ~ B D ~@45 A B ~ C D E@2>".pickRestart({
  A: "[bb4,eb5]@7 ~@9", B: "~@4 bb3 db4@3", C: "~@5 bb3@3", D: "bb3 db4@3 bb3 db4@3", E: "[bb3@15 ~]/2",
})).s("gm_muted_trumpet").gain(0.72)

// other · timpani
const timpani = note("<A B A C A B D A B A C A B D ~@173 A B A C D E F>".pickRestart({
  A: "eb3!2 eb3@2 ~@3 db3", B: "eb3@7 ~ eb3@2 gb3@6", C: "eb3@7 ~ eb3@2 bb3@6", D: "eb3 gb3@3 eb3 gb3@3", E: "eb3@7 ~",
  F: "eb3!8 eb3@7 ~",
})).s("gm_timpani").gain(0.72)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@16 A B C B A B C D A B C E A B C F ~@33 A B C B A B C B ~@21 A B C B A B C B ~@47 G H G I G H ~ G J K J G J ~@17 A C
  L C A C L C ~@7
>`.pickRestart({
  A: "[gb4,bb4] eb4 [gb4,bb4] eb4", B: "[ab4,b4] eb4 [ab4,b4] eb4", C: "[f4,bb4] d4 [f4,bb4] d4",
  D: "d4 eb4 ab4@2 d4 eb4 ab4@2", E: "eb4@2 ab4@2 db5 b4 ab4@2", F: "eb4 ab4 b4 bb3", G: "gb4 eb4 gb4 eb4",
  H: "gb4@2 eb4@2 gb4@2 d4 eb4", I: "gb4 eb4 gb4 d4", J: "ab4 eb4 ab4 eb4", K: "f4 d4 f4 d4",
  L: "[gb4,b4] eb4 [gb4,b4] eb4", // B5
})).s("gm_distortion_guitar").gain(0.72)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@32 A B A B A B A C D E F A G F A E F G F H A E F A G F A E F I G H@2 ~@16 A E F A G F A E F I G H J ~@24 A B A B A B
  A C A B A B A B A C A K L K M K L N K L K M K L N K L K M K L N K O P O K O Q R E F E R E F E S T U T S T U T S T U T
  S T U T K L K M N ~@2
>`.pickRestart({
  A: "eb2 bb2@2 eb2 b2@2 bb2@2", B: "[eb2,bb2]!8", C: "[f2,c3]!8", D: "eb2 bb2@2 eb2 b2@2 bb2 ab2", E: "[ab2,eb3]@7 ~",
  F: "[bb2,f3]@7 ~", G: "[b2,gb3]@7 ~", H: "[bb2,f3]!4", I: "[gb2,db3]@7 ~", J: "[bb2,gb3]!4",
  K: "[eb2,bb2]!2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]!2", L: "[eb2,bb2]@2 [eb2,bb2]!3 [gb2,db3]@3",
  M: "[eb2,bb2]@2 [eb2,bb2]!3 [a2,e3]@3", N: "[eb2,bb2] [gb2,db3]@3 [eb2,bb2] [gb2,db3]@3",
  O: "[ab2,eb3]@2 [ab2,eb3]!3 [bb2,f3]@3", P: "[bb2,f3]!2 [bb2,f3]@2 [bb2,f3]@2 [bb2,f3]!2",
  Q: "[eb2,bb2] [bb2,f3]@3 [ab2,eb3] [bb2,f3]@3", R: "[eb2,bb2]@7 ~", S: "[eb2,bb2]@7 ~ [eb2,bb2]@7 ~",
  T: "[bb2,f3]@7 ~ [bb2,f3]@7 ~", U: "[b2,gb3]@7 ~ [b2,gb3]@7 ~",
})).s("gm_overdriven_guitar").gain(0.72)

// bass · electric bass finger
const bass = note(`<
  ~@32 A B A B A B A C A D E A F E A D E F E G A D E A F E A D E H F G@2 ~@16 A D E A F E A D E H F G@2 ~@24 A B A B A B
  A C A B A B A B A C A I J I K I J L I J I K I J L I J I K I J L I M N M I M O P D E D P D E D Q R S R Q R S R Q R S R
  Q R S R I J I K L ~@2
>`.pickRestart({
  A: "eb1 bb1@2 eb1 b1@2 bb1@2", B: "eb1!8", C: "f1!8", D: "ab1@7 ~", E: "bb1@7 ~", F: "b1@7 ~", G: "bb1!4",
  H: "gb1@7 ~", I: "eb1!2 eb1@2 eb1@2 eb1!2", J: "eb1@2 eb1!3 gb1@3", K: "eb1@2 eb1!3 a1@3", L: "eb1 gb1@3 eb1 gb1@3",
  M: "ab1@2 ab1!3 bb1@3", N: "bb1!2 bb1@2 bb1@2 bb1!2", O: "eb1 bb1@3 ab1 bb1@3", P: "eb1@7 ~", Q: "eb1@7 ~ eb1@7 ~",
  R: "bb1@7 ~ bb1@7 ~", S: "b1@7 ~ b1@7 ~",
})).s("gm_electric_bass_finger").gain(0.72)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@72 A B@2 C A B@2 C A ~@20 A B@2 C A B@2 C D@2 E F@3 G H I J K L M N O P Q R K L M S O P Q T ~@59
>`.pickRestart({
  A: "~@4 ab4 bb4 ab4 gb4", B: "[eb4@27 ~ d4@2 eb4@2]/2", C: "d4@7 ~", D: "[~@4 ab4 bb4 ab4 gb4@8 ~]/2",
  E: "ab4@7 ~ ab4@2 bb4@2 ab4@2 gb4@2", F: "[eb4@7 gb4@2 eb4@3 ab4 bb4 ab4 gb4@8 ~]/3", G: "ab4@7 ~",
  H: "f4 gb4 f4 gb4", I: "f4 gb4 f4 gb4 f4 gb4 f4 gb4", J: "eb4 bb4@2 eb4 b4@2 db5@2", K: "eb5@2 eb5@2 eb5@3 bb4",
  L: "eb5 bb4 eb5@2 ~@4", M: "bb4!4", N: "bb4@4 bb4@4 bb4 ab4 gb4 f4 bb4 ab4 gb4 f4",
  O: "~ gb4 ab4 bb4 db5 bb4 db5 bb4", P: "db5 b4 bb4 ab4 gb4 eb4 gb4 eb4 gb4@2 eb4@2 gb4@4",
  Q: "f5 c5 f5 c5 f5 c5 f5 c5 f5 c5 f5 c5 f5 c5 f5 c5", R: "c5@7 ~ f5@7 ~", S: "ab5@3 ab5@3 ab5@2 bb5@7 ~",
  T: "f5@7 ~ bb5@2 ab5@2 gb5@2 f5@2",
})).s("gm_electric_guitar_jazz").gain(0.72)

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@33 A@7 B A@2 B A@2 B A@4 ~ B A@2 B A@2 B A@4 ~@8 C@2 A@8 B A@2 B A@2 B A@4 ~@8 C D A@16 B A@7 B A@7 B ~@28 A@4 ~ A@2
  ~ A@4 ~ A@2 ~ A@4 ~ A@2 E ~@7
>`.pickRestart({
  A: "x!4", B: "x", C: "x ~ x ~ x!4", D: "x!8", E: "x!2 ~@2",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@2 A ~@3 A ~@20 B C ~ A ~ C ~ A B A ~ B A ~ B A ~ A ~ A B A ~ B A ~ B A ~ A ~ A ~@17 B A ~ B A ~ B A ~ A ~@19
  D ~@7 B C ~ A ~ C ~ A B C ~ A ~ C ~ A B E ~@3 A ~ F ~@4 A ~ F ~@4 A ~ F ~@6 F ~@4 D ~@3 A ~@3 D ~@3 A ~@3 D ~@3 A ~@3
  F A ~
// … 8 more lines

More by Metallica