Strudelify
Holier Than Thou cover art

1991 · Metallica

Holier Than Thou

Metallica

KeyG majorTempo166 bpm
0:00/0:00
// Holier Than Thou — Metallica
// 166 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 112, 4/4 at bar 112, 2/4 at bar 114, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "Guitar 2" electric guitar clean (copy of ch 2 "Guitar 1" distortion guitar)
// note: Full arrangement: all 163 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(166/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.

// other · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  A@8 B@16 C@3 D@4 E@7 F@5 G@7 H@8 I@4 J@7 K@8 L G@7 H@8 I@4 M@8 N@7 O P@7 Q R Q R Q R S T@2 U@2 T@2 V W X@3 Y ~@3 Z AA
  AB AA AB AA AB AA@3 AB AA AC X@2 AD AE@2 AF@2 AG
>`.pickRestart({
  A: "[~@14 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@2]/8", // E5
  B: "[~@2 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@2]/8", // E5
  C: "[~ a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2@2]/3", // E5
  D: "[e2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2@2]/2", // E5
  E: "[e2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 [e2,b2,e3]@11 a2 a#2 g2 a2 a#2 [g2,d3,g3]@11 a2 a#2 g2 a2 a#2 [e2,b2,e3]@10]/7", // E5 G5 E5
  F: "[~ a2 a#2 g2 a2 a#2 [g2,d3,g3]@11 a2 a#2 g2 a2 a#2 [e2,b2,e3]@11 a2 a#2 g2 a2 a#2 g2 a#2, ~@78 a2 ~]/5", // G5 E5
  G: "[~@2 a#2@2 a#2@2 a#2@2 [a2,a#2]@2 a2@2 g2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2 a2@2 a#2@2 [g2,d3,g3]@22 a2@2 a#2@2 g2@2 a2@2 a#2@2 [e2,b2,e3]@20]/7", // A#maj7 E5 G5 E5
  H: "[~ a2 a#2 g2 a2 a#2 [g2,d3,g3]@11 a2 a#2 g2 a2 a#2 [e2,b2,e3]@11 a2 a#2 g2 a2 a#2 g2 a#2@2 a#2!3 [a2,a#2] a2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2@2, ~@78 a2 ~@49]/8", // G5 E5 A#maj7 E5
  I: "[e2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2 a2 a#2 g2@2]/4", // E5
  J: "[e2@2 a2@2 a#2@2 g2@2 a2@2 a#2@2 g2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2 a2@2 a#2@2 g2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2 a2@2 a#2@2 [e2,b2,e3]@20]/7", // E5
  K: "[~ a2 a#2 g2 a2 a#2 [g2,d3,g3]@11 a2 a#2 g2 a2 a#2 [e2,b2,e3]@11 a2 a#2 g2 a2 a#2 [g2,d3,g3]@11 a2 a#2 g2 a2 a#2 [e2,b2,e3]@10]/8", // G5 E5 G5 E5
  L: "~ a2 a#2 g2 a2 a#2 g2 a#2, ~@14 a2 ~",
  M: "[e2@2 a2@2 a#2@2 g2@2 a2@2 a#2@2 g2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2 a2@2 a#2@2 g2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2 a2@2 b2@2 [e2,b2,e3]@18 [g2,d3,g3]@12 [f#2,c#3]@2 [f2,c3]@2 [e2,b2,e3]@2]/8", // E5 G5 F#5 F5 E5
  N: "[~ [e2,b2,e3]!6 [e2,b2,e3]@2 [e2,b2,e3]!3 a#2 a2 g2 [e2,b2,e3]@2 [e2,b2,e3]!6 [e2,b2,e3]@2 [e2,b2,e3]!3 a#2 a2 g2 [e2,b2,e3]@2 [e2,b2,e3]!6 [e2,b2,e3]@2 [e2,b2,e3]!3 a#2 a2 g2 [f2,c3,f3]@2 g2 a2 [e2,b2,e3]@2 [e2,b2,e3]!3]/7", // E5 F5 E5
  O: "[e2,b2,e3]!3 [e2,b2,e3]@2 [e2,b2,e3]!3", // E5
  P: "[a#2@2 a2@2 g2@2 [f2,c3,f3]@4 g2@2 a2@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 a#2@2 a2@2 g2@2 [f2,c3,f3]@8 f#2@8 [g2,d3,g3]@8 g#2@32 [e2,b2,e3]@4 e2@2 e2!2 e2@2]/7", // F5 E5 F5 G5 E5
  Q: "e2!2 e2@2 e2@2 [g2,d3,g3]@4 e2@2 e2!2 e2@2", R: "e2@2 [a2,e3,a3]@2 [a#2,f3,a#3]@4 e2!2 e2@2 e2!2 e2@2",
  S: "e2!2 e2@2 e2@2 [g2,d3,g3]@4 a2@2 a#2@2 g2@2", T: "[a2 a#2 [g2,d3,g3]@11 a2 a#2 g2]/2",
  U: "[a2 b2 [e2,b2,e3]@11 a2 a#2 g2]/2", V: "a2 a#2 g2 a#2@2 a#2!3, ~@6 a2 ~@9",
  W: "[a2,a#2]@2 a2@2 g2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2", X: "e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2",
  Y: "e2!2 e2@2 e2@2 [e2,b2,e3]@4 ~@6", Z: "~@4 e2 a2 a#2 g2", AA: "a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2",
  AB: "a2 a#2 g2@2 e2 a2 a#2 g2", AC: "a2@2 a#2@2 g2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2",
  AD: "e2!2 e2@2 e2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2", AE: "[a2 a#2 [e2,b2,e3]@11 a2 a#2 g2]/2",
  AF: "[a2 a#2 [g2,d3,g3]@11 a2 [e2,a#2] [e2,b2,e3]]/2", AG: "[e2,b2,e3] ~@7",
})).s("gm_distortion_guitar").gain(0.4)

// other · overdriven guitar · "Guitar 3"
const overdriven_guitar = note(`<
  ~@5 A@8 ~@2 B@3 ~ B@3 ~@2 C@2 ~@51 D@6 E@8 ~@14 F@7 G H@7 ~@26 I J K J@3 K J L M@2 N O@2 P@2 Q
>`.pickRestart({
  A: "[~@7 [d3,g3]@6 [e3,a3] [f3,a#3] [f3,a#3]@5 ~@3 [d3,g3]@6 [e3,a3] [f3,a#3] [f3,a#3]@5 ~@3 [d3,g3]@6 [e3,a3] [f3,a#3] [f3,a#3]@5 ~@3 [d3,g3]@6 [e3,a3] [f3,a#3] [b2,e3]]/8", // G5 A5 A#5 G5 A5 A#5 G5 A5 …
  B: "[~ a2 a#2 g2 a2 a#2 g2 e2@2 a2 a#2 g2 a2 a#2 f#2 g2@6 g2@2 e2]/3", C: "[~ a2 a#2 g2 a2 a#2 g2 e2@2 ~@7]/2",
  D: "[~@14 d4@6 d4!10 d4@16 a3@16 g3@6 g3@10 g3@18]/6",
  E: "[~@4 [g4,b4]@4 g4@2 e4@2 d4@2 e4@32 [g4,g5]@26 a4@4 a4 g4 e4@30 d4@2 e4@4 d4@2 b3@2 [a3,b3]@2 a#3@2 a3@2 g3@2 [e3,a3]@2]/8", // G Asus2 A5
  F: "[~@2 d3 e3 g3@2 e3@2 g3@2 a3@2 f3@2 e3@4 d3 e3 g3@2 e3@2 a#3@2 a3@2 g3@2 e3@4 d3 e3 g3@2 e3@2 g3@2 a3@2 f3@2 e3@4 d3 e3 g3@2 e3@2 a#3@2 a3@2 g3@2 e3@4 d3 e3 g3@2 e3@2 g3@2 a3@2 f3@2 e3@4 d3 e3 g3@2 e3@2 a#3@2 a3@2 g3@2 f3@4 g3@2 a3@2 e3@4 d3 e3 g3@2 e3@2]/7",
  G: "g3@2 a3@2 f3@2 e3@4 d3 e3 g3@2 e3@2",
  H: "[a#3@2 a3@2 g3@2 f3@4 g3@2 a3@2 e3@4 d3 e3 g3@2 e3@2 g3@2 a3@2 f3@2 e3@4 d3 e3 g3@2 e3@2 a#3@2 a3@2 g3@2 f3@4 g3@2 a3@2 f#3@4 g3@2 a3@2 g3@4 a3@2 b3@2 g3@4 a3@2 b3@28 ~@8]/7",
  I: "~@4 e2 a2 a#2 g2", J: "a2 a#2 g2 [e2,b2,e3]@2 a2 a#2 g2", K: "a2 a#2 g2@2 e2 a2 a#2 g2",
  L: "a2@2 a#2@2 g2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2", M: "e2!2 e2@2 e2@2 [e2,b2,e3]@4 e2@2 e2!2 e2@2",
  N: "e2!2 e2@2 e2@2 [e2,b2,e3]@4 a2@2 a#2@2 g2@2", O: "[a2 a#2 [e2,b2,e3]@11 a2 a#2 g2]/2",
  P: "[a2 a#2 [g2,d3,g3]@11 a2 [e2,a#2] [e2,b2,e3]]/2", Q: "[e2,b2,e3] ~@7",
})).s("gm_overdriven_guitar").gain(0.57)

// other · electric guitar clean · "Guitar 4"
const electric_guitar_clean = note("<~@114 A@6 ~@43>".pickRestart({
  A: "[~@2 f#3 g3 b3@2 g3@2 b3@2 c4@2 a3@2 g3@4 f#3 g3 b3@2 g3@2 d4@2 c4@2 b3@2 a3@4 b3@2 c4@2 a3@4 b3@2 c4@2 b3@4 c4@2 d4@2 b3@4 c4@2 e4@28 ~@8]/6",
})).s("gm_electric_guitar_clean").gain(0.4)

// other · overdriven guitar · "Guitar 5"
const overdriven_guitar_2 = note("<~@119 A@2 B C@2 D E F G H I J K L M N O P Q R ~@24>".pickRestart({
  A: "[~@6 [g4,b4]@16 e4@6 a4 ~ g4 e4]/2", B: "g4@2 [e4,a4]@2 [f#4,a#4]@4 a4@3 g4 e4@2 a4@2",
  C: "[~ g4 e4@2 a4@2 g4 e4 d5@6 d5@6 b4@2 e5@2 g5 e5 d5 b4 g5 e5 g5 e5]/2", D: "d5 b4 g5 e5 g5 e5 d5 b4 g5@4 g5@4",
  E: "g5@4 g5@3 g5 e5@4 e5@3 g5", F: "e5@4 e5@2 e5!2 g5 e5!3 g5 e5 d5 e5", G: "d5@2 d5@2 ~ e4 g4 a4",
  H: "a#4 g4 ~ d5@2 c5 a#4 g4", I: "a4@2 a#4@2 g4@4 ~@2 f#5@5 e5", J: "f#5@4 [e5,f#5] e5 d5@2 e5@2 e5@4 e5@2",
  K: "e5@2 e5@2 e5@2 e5@2 e5!2 ~ e5!3 ~ e5", L: "e5!4 e5@2 e5!3 [e5,g5] d5 b4 e5 [e5,g5] d5 b4",
  M: "e5 [e5,g5] d5 b4 e5 [e5,g5] d5 b4 g5 e5 f#5!2 a5 g5 f#5 g5", N: "b5 [g5,a5] b5@2 c6@2 d6@6 ~@4",
  O: "~@3 [e4,a4]@5", P: "~@3 [f#4,b4]@5", Q: "~@3 [g4,c5]@5", R: "~@3 [b4,e5]@5",
})).s("gm_overdriven_guitar").gain(0.57)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A@8 B@16 C@3 D@4 E@4 F G H I F G H J@5 F G H I F G H K@4 L@4 M@8 F G H I F G H J@5 F G H I F G H K@4 L@4 N@8 O@7 P Q@5
  R S T U T U T U V W F X Y W F Z AA AB@2 AC AD AE AF AE AG AE AG AE AG AE AG AE@3 AG AE AH AB@2 AI AJ AK AL AM AN
>`.pickRestart({
  A: "[~@14 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@2]/8", // E
  B: "[~@2 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@2]/8", // E
  C: "[~ a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1@2]/3",
  D: "[e1 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1@2]/2",
  E: "[e1 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 e1@11 a1 a#1 a1!2 a#1 g1@2]/4", F: "g1!8", G: "g1!6 e1!2",
  H: "e1!8", I: "e1!6 g1!2",
  J: "[e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 a#1@4 a#1@2 a#1@2 a#1@2 a#1@2 a1@2 g1@2 e1@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 a1@2 a#1@2 g1@2 a1@2 a#1@2 g1@4, ~@24 a1 ~@55]/5", // E
  K: "[e1!7 a#1@2 a#1!4 a1 g1 e1@2 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1@2, ~@24 a1 ~@39]/4",
  L: "[e1 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1 e1@2 a1 a#1 g1 a1 a#1 g1@2]/4",
  M: "[e1@2 a1@2 a#1@2 g1@2 a1@2 a#1@2 g1@2 e1@4 a1@2 a#1@2 g1@2 a1@2 a#1@2 g1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 a1@2 a#1@2 g1@2 a1@2 a#1@2 e1@22 a1@2 a#1@2 a1@2 a1@2 a#1@2 g1@4]/8", // E
  N: "[e1@2 a1@2 a#1@2 g1@2 a1@2 a#1@2 g1@2 e1@4 a1@2 a#1@2 g1@2 a1@2 a#1@2 g1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2 e1!2 e1@2 e1@2 [e1,e2]@4 a1@2 a#1@2 g1@2 a1@2 a#1@2 e1@18 g1@12 f#1@2 f1@2 e1@2]/8", // E
  O: "[~ e1!6 e1@2 e1!3 a#1 a1 g1 e1@2 e1!6 e1@2 e1!3 a#1 a1 g1 e1@2 e1!6 e1@2 e1!3 a#1 a1 g1 f1@2 f1!2 e1@2 e1!3]/7",
  P: "e1!3 e1@2 e1!3",
  Q: "[a#1@2 a1@2 g1@2 f1@4 f1@2 f1@2 e1@4 e1@2 e1@2 e1@2 e1@2 e1@2 e1@2 e1@4 e1@2 e1@2 e1@2 a#1@2 a1@2 g1@2 f1@4 f1@2 f1@2 f#1@4 f#1@2 f#1@2 g1@4 g1@2 g1@2 g#1@4 g#1@2 g#1!2 g#1@2]/5",
  R: "g#1!2 g#1@2 g#1@2 g#1@4 g#1@2 g#1!2 g#1@2", S: "g#1!2 g#1@2 g1@2 e1@4 e1@2 e1!2 e1@2",
  T: "e1!2 e1@2 e1@2 g1@4 e1@2 e1!2 e1@2", U: "e1@2 a1@2 a#1@4 e1!2 e1@2 e1!2 e1@2",
  V: "e1!2 e1@2 e1@2 g1@4 a1@2 a#1@2 g1@2", W: "a1 a#1 g1@2 g1!4", X: "g1!2 e1!6", Y: "e1!2 e2@2 e1 a1 a#1 g1",
  Z: "g1!3 a#1@2 a#1!3", AA: "a#1@2 a1@2 g1@2 [e1,e2]@4 e1@2 e1!2 e1@2, a1 ~@15",
  AB: "e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1!2 e1@2", AC: "e1!2 e1@2 e1@2 [e1,e2]@4 e1@2 e1@2 e1@2",
  AD: "e2@3 e1@2 a1 a#1 g1", AE: "a1 a#1 g1 e1@2 a1 a#1 g1", AF: "a1 a#1 g1@2 ~ a1 a#1 g1",
  AG: "a1 a#1 g1@2 e1 a1 a#1 g1", AH: "a1@2 a#1@2 g1@2 [e1,e2]@4 e1@2 e1!2 e1@2",
  AI: "e1!2 e1@2 e1@2 [e1,e2]@4 a1@2 a#1@2 g1@2", AJ: "a1 a#1 e1@3 e1@3", AK: "e1@3 e1@2 a1 a#1 g1",
  AL: "a1 a#1 g1@3 g1@3", AM: "g1@3 g1@2 a1 a#1 e1", AN: "e1 ~@7",
})).s("gm_electric_bass_pick").gain(0.4)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A@23 B C@8 D E C@9 A@2 F C@20 E D E C@9 A@2 E C@20 E D G C@13 H@2 C@3 E C@2 G C@3 G C@4 H@2 I J C@18 G K L K M N
>`.pickRestart({
  A: "~ x!3", B: "~ x!6 ~", C: "~ x ~ x", D: "~ x ~@2 x ~@2 x", E: "~ x!2 ~@3 x ~", F: "~ x!2 ~@5",
  G: "~@2 x ~@2 x!2 ~", H: "x!2 ~ x", I: "x ~ x ~@2 x!3", J: "x!3 ~@3 x ~", K: "~@2 x ~@2 x ~@2", L: "x ~@2 x ~ x!2 ~",
  M: "x ~@2 x ~ x!3", N: "x",
})).gain(0.4)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@34 A ~@11 B ~@20 B ~ A ~@11 B ~@20 B ~@23 C ~@3 C ~@26 D ~ E ~ C ~>".pickRestart({
  A: "~ x ~ x ~@4", B: "~@3 x ~@4", C: "~@5 x!3", D: "~@7 x", E: "~@5 x ~ x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~ A@11 ~ A@3 ~ A@3 ~ A@3 ~@10 B ~@9 A@2 C ~@20 B ~ B ~@9 A@2 B ~@20 B ~@15 D ~@8 E ~@3 E ~@26 E ~ E ~ F
>`.pickRestart({
  A: "~@7 x", B: "~@4 x!2 ~@2", C: "~@4 x!3 ~", D: "~@3 x ~@4", E: "x!2 ~@6", F: "x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A ~@11 A ~@3 A ~@3 A ~@3 A ~@3 B ~@3 B ~ B ~@4 C ~@3 A ~@2 B ~@4 C ~@3 A ~@3 A ~@3 A@4 B ~ B ~@4 C ~@3 A ~@2 B ~@4 C
  ~@3 A ~@3 A ~@3 A@4 B A@2 ~@3 A ~ A D ~ E ~ A E D ~ D ~@3 F ~@3 C ~@3 C ~@2 D@5 ~@11 D ~@3 D@4 C ~ C ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~ x ~@2", D: "~@3 x ~@4", E: "~@3 x ~@3 x", F: "~ x!2 ~@5",
})).gain(0.4)

stack(
  distortion_guitar, overdriven_guitar, electric_guitar_clean, overdriven_guitar_2, bass, kick, snare, hihat, low_tom,
  mid_tom, high_tom, crash
)

More by Metallica