Strudelify

Ride the Lightning

Metallica

KeyG majorTempo152 bpm
0:00/0:00
// Ride the Lightning — Metallica
// 152 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 248 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 2.
setcpm(152/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 · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  A B A B A B A C@2 D@11 E F@3 G H@3 I H@3 I J@4 K L K L J@2 K L K L M@4 H@3 I H@3 I J@4 K L K L J@2 K L K L N O N O N O
  N O P Q R S T U N O N O N O V@7 W@4 X@2 Y Z AA AB@2 AC AD AE AF AG AH AI@4 AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW
  AX AY AZ BA BB@3 BC BD BE BF BG BH BI BJ BK BL BM BN BK BL BM BO BP BQ BR BS BT BU BV BW BX BY BX BY BX BY BX BZ CA CB
  CC CD CE CF BX BY BX BY BX CG@5 CH@11 CI CJ CK@3 CL CK@3 CM CN@3 CO CP CQ CP CR CN CO CP CQ CP CS CT@4 CU@2 CV@2 CU@2
  CV@2 CW CX CY CZ CW CX CY DA DB DC DD
>`.pickRestart({
  A: "~@2 b5@2 c6@3 ~@3 a5@2 b5@3 ~", B: "~@2 e5@2 f#5@3 ~@3 g5@2 e5@3 ~",
  C: "[~@2 e5@2 f#5@3 ~@3 g5@2 e5@7 ~ [a3,e4]@2 e3@2 e3@2 [a3,e4]@2 e3@2 e3@2]/2", D: "e3!2 [a3,e4] e3!2 [a3,e4] e3!2",
  E: "e3@2 e3@2 [f#3,c#4]@3 ~ [e3,b3]@3 ~ [f#3,c#4]@2 [a3,e4]@2", // F#5 E5 F#5 A5
  F: "[f#3,c#4]@2 [c4,g4]@2 [f#3,c#4]@3 ~ [e3,b3]@3 ~ [f#3,c#4]@2 [a3,e4]@2", // F#5 C5 F#5 E5 F#5 A5
  G: "[f#3,c#4] [c4,g4] [b3,f#4] ~@3 [c4,g4] [b3,f#4]", H: "[a3,e4] e3!2 [a3,e4] e3!4",
  I: "[a3,e4] e3!2 [a3,e4] e3!2 [c4,g4] [b3,f#4]", // A5 C5 B5
  J: "~ c#4 f#3@2 f#3@2 ~ c#4 f#3@2 f#3@2 f#3@2 f#3@2, [f#3,b3] ~@2 [f#3,b3] ~@4", // B5
  K: "[c#4,g#4]@3 ~@3 [c4,g4]@2 [b3,f#4]@3 ~@3 [c#4,g#4]@2", L: "[a3,e4]!8",
  M: "[f#3,c#4]@3 ~ [e3,b3]@3 ~ [f#3,c#4]@2 [a3,e4]@2 [f#3,c#4]@2 [c4,g4]@2", // F#5 E5 F#5 A5 F#5 C5
  N: "[e4,b4,e5] [d#4,a#4,d#5] [d4,a4,d5] a#3 [g3,c4,g4,c5] g#3 [f#3,b3,f#4,b4] [g3,d4,g4]", // E5 D#5 D5 C5 B5 G5
  O: "e3!4 [g3,d4,g4]@2 e3!6 [g3,d4,g4]@2 e3!2", P: "c4!4 [c4,g4]@2 c4!6 [c4,g4]@2 c4!2",
  Q: "b3!4 [b3,f#4]@2 b3!6 [b3,f#4]@2 b3!2", R: "a#3!4 [a#3,f4]@2 a#3!6 [a#3,f4]@2 a#3!2",
  S: "a3!4 [a3,e4]@2 a3!6 [a3,e4]@2 a3!2", T: "f3!4 [f3,c4]@2 f3!6 [f3,c4]@2 f3!2",
  U: "g3!4 [g3,d4]@2 g3!2 a#3!4 [a#3,f4]@2 a#3!2", // G5 A#5
  V: "[[e4,b4,e5]@2 [d#4,a#4,d#5]@2 [d4,a4,d5]@2 a3@2 [c4,g4,c5]@31 ~ [b3,f#4,b4]@31 ~ [e3,b3]@11 ~ e3@2 g3@2 [c4,g4]@11 ~ e3@2 f#3@2 [g3,d4,g4]@3 ~ [a3,e4,a4]@2 ~@2]/7", // E5 D#5 D5 C5 B5 E5 C5 G5 …
  W: "[[a3,e4,a4]@23 ~ [e3,b3]@11 ~ e3@2 g3@2 [c4,g4]@11 ~ e3@2 f#3@2 [g3,d4,g4]@3 ~ [a3,e4,a4]@2 ~@2]/4", // A5 E5 C5 G5 A5
  X: "[[a3,e4,a4]@23 ~ g5 [c5,e5] c5 [e5,g5] g5 [c5,e5] c5 [e5,g5]]/2", // A5 C Em C Em
  Y: "[c5,e5] [e5,g5] [c5,g5] [e5,g5]!2 [c5,e5,g5]!3 [e5,g5] [c5,e5] [c5,g5] [e5,g5] c5 [e5,g5] c5 [e5,g5]", // C Em C5 Em C Em C C5 …
  Z: "[c5,e5] [e5,g5] [c5,e5] [e5,g5] [c5,e5] [e5,g5] [c5,e5] [e5,g5] [c5,g5] [e5,g5] [c5,e5] [e5,g5] c5 [e5,g5] e5 [c5,g5]", // C Em C Em C Em C Em …
  AA: "c5 [e5,g5] e5 [c5,g5] c5 [e5,g5] e5 [c5,g5] [c5,e5] [e5,g5] [c5,e5] [e5,g5] c5 [e5,g5] c5 [e5,g5]", // Em C5 Em C5 C Em C Em
  AB: "[c5 a5@7 a5@3 ~ a5@6 a5@3 ~ g5@2 f#5@7 ~]/2", AC: "f#5@2 g5@2 f#5 [f#5,g5] e5@2 d5@2 b4@2 d5@2 d5@2",
  AD: "e5@15 ~", AE: "~@7 [e4,e5] [e4,e5]@2 [f#4,f#5]@2 [f#4,f#5]@2 [f#4,f#5]@2", AF: "[f#4,f#5] [g4,g5]!4 [a4,a5]!3",
  AG: "[a4,a5] [g4,g5]!2 [a4,a5]!2 [b4,b5]!2 [a4,a5]", AH: "[a4,a5] [b4,b5]!2 [c5,c6]!2 [d5,d6]!2 [e5,e6]",
  AI: "[[e5,e6]@3 ~ g5@2 a5@2 b5@10 d6@2 e6@3 d6 e6@2 d6@2 b5@2 d6@4 b5@2 d6@2 d6 e6 e6@3 ~ b6@2 a6@4 a6 f#6 d7@3 ~ d7 b6 [b6,d7] b6 b6@2 a6 b6]/4", // E Bm
  AJ: "a6@2 a6@4 e6 f#6 a6 f#6 e6 f#6 a6 f#6 e6 f#6", AK: "b5 c#6 e6 c#6 a6 f#6 e6 c#6 b5 c#6 e6 c#6 b5 a5 f#5 a5",
  AL: "b5 a5 f#5 e5 c#5 e5 f#5 e5 c#5 b4!2 a4 b4 a4 f#4 a4", AM: "c#5@2 e5@2 f#5 a5 ~ b5!2 a5 f#5@2 a5@2 b5@2",
  AN: "a5@3 ~ b5@2 c#6@2 e6@4 e6@4", AO: "e6@2 c#6 a6@2 a6!3", AP: "a6@3 ~ a6@2 f#6@2 a6 f#6!3 a6 f#6 e6 c#6",
  AQ: "b5 c#6 e6 c#6 b5 a5 f#5 a5 [b5,b6]@4 [a5,a6]@3 ~", AR: "[f#5,f#6]@3 ~ e6@2 f#6@2 a6 f#6!3 a6 f#6 b6 f#6",
  AS: "a6 f#6 e6 f#6 a6!2 b6 g#6 a6 [e6,f#6] f#6!2 a6!2 b6 f#6", // Esus2
  AT: "a6 f#6 e6 f#6 a6!2 b6 g#6 a6 f#6 ~ c#6 f#6 e6 ~ c#6", AU: "e6 c#6 ~ b5 c#6 b5 ~ a5 b5 a5 ~ f#5 a5@2 b5@2",
  AV: "e5@3 ~ e5@2 f#5@2 a5@2 b5@2 c#6@2 d6@2", AW: "c#6 [c#6,d6] b5@2 c#6@2 d6@2 e6@2 f#6@2 g6 f#6 e6@2",
  AX: "d6@2 c#6@2 d6@2 e6@2 f#6 g6 ~ a6 g6 a6 ~ b6", AY: "a6 b6 ~ c7 b6 c7 d7 d7@4 ~ d7@3 ~",
  AZ: "d7@3 ~ a6 b6 c#7@2 c#7 b6 a6 g6 b6 a6 g6 f#6", BA: "a6 g6 ~ e6 g6 e6 f6 f#6 a6 g6 ~ e6 g6 e6 ~ d6",
  BB: "[f#6 e6 ~ c6 e6 d6 ~ [b5,c6] [d#5,a#5,d#6]@27 ~ e6@2 e6@2 e6@2 e6@2 e6@2 e6@2]/3", BC: "e6!8",
  BD: "e6@2 e6!2 g6 e6 f#6 e6 d6 e6 d6 [b5,c#6] c#6 b5 a5 g5", BE: "e5 g5 a5 g5 a5@3 ~ a5@3 ~ a5@4",
  BF: "~@2 e6@2 g#6 f#6 ~ e6 d#6 c#6 ~ b5 g#6 f#6 ~ e6", BG: "d#6 c#6 ~ b5 a6 g#6 ~ f#6 e6 d#6 ~ c#6 a6 g#6 ~ f#6",
  BH: "e6 d#6 ~ c#6 b6 a6 ~ g#6 f#6 e6 ~ d#6 c#7 b6 ~ a6", BI: "g#6 f#6 ~ e6 d7 c#7 ~ b6 a6 g#6 ~ f#6 a6@3 ~",
  BJ: "a5@2 c6@2 b6 g6 e6 g6 b6 g6 e6 g6 b6 g6 e6 g6", BK: "b6 g6 e6 g6 a6 f#6 d6 f#6 a6 f#6 d6 f#6 a6 f#6 d6 f#6",
  BL: "a6 f#6 d6 f6 a6 f6 d6 f6 a6 f6 d6 f6 a6 f6 d6 f6", BM: "a6 f6 d6 f6 g#6 e6 b5 e6 g#6 e6 b5 e6 g#6 e6 b5 e6",
  BN: "g#6 e6 b5 e6 b6 g6 e6 g6 b6 g6 e6 g6 b6 g6 e6 g6", BO: "g#6 e6 b5 e6 f6 c6 a5 c6 f6 c6 a5 c6 f6 c6 a5 c6",
  BP: "f6 c6 a5 c6 g6 d6 b5 d6 g6 d6 b5 f6 a#6 f6 d6 f6", BQ: "a#6 f6 d6 f6 c7 g6 e6 g6 c7 g6 c7 g6 e6 g6 c7 g6",
  BR: "c7 g6 e6 g6 b6 g6 e6 g6 b6 g6 b6 g6 e6 g6 b6 g6", BS: "b6 g6 e6 g6 a#6 g6 e6 g6 a#6 g6 a#6 g6 e6 g6 a#6 g6",
  BT: "a#6 g6 e6 g6 a6 g6 e6 g6 a6 g6 a6 g6 e6 g6 a6 g6", BU: "a6 g6 a6@2 f6 c6 a5 c6 f6 c6 f6 c6 a5 c6 f6 c6",
  BV: "f6 c6 a5 d6 g6 d6 b5 d6 g6 d6 b5 e6 a#6 f#6 d6 f#6",
  BW: "a#6 f#6 d6 f#6 [e4,b4,e5]@2 [d#4,a#4,d#5]@2 [d4,a4,d5]@2 a#3@2 [g3,c4,g4,c5]@2 g#3@2", // E5 D#5 D5 C5
  BX: "[f#3,b3,f#4,b4]@2 [g3,d4,g4]@2 e3!4 [g3,d4,g4]@2 e3!6", // B5 G5
  BY: "[g3,d4,g4]@2 e3!2 [e4,b4,e5]@2 [d#4,a#4,d#5]@2 [d4,a4,d5]@2 a#3@2 [g3,c4,g4,c5]@2 g#3@2", // G5 E5 D#5 D5 C5
  BZ: "[g3,d4,g4]@2 e3!2 c4!4 [c4,g4]@2 c4!6", CA: "[c4,g4]@2 c4!2 b3!4 [b3,f#4]@2 b3!6",
  CB: "[b3,f#4]@2 b3!2 a#3!4 [a#3,f4]@2 a#3!6", CC: "[a#3,f4]@2 a#3!2 a3!4 [a3,e4]@2 a3!6",
  CD: "[a3,e4]@2 a3!2 f3!4 [f3,c4]@2 f3!6", CE: "[f3,c4]@2 f3!2 g3!4 [g3,d4]@2 g3!2 a#3!4",
  CF: "[a#3,f4]@2 a#3!2 [e4,b4,e5]@2 [d#4,a#4,d#5]@2 [d4,a4,d5]@2 a#3@2 [g3,c4,g4,c5]@2 g#3@2", // A#5 E5 D#5 D5 C5
  CG: "[[g3,d4,g4]@2 e3!2 [e4,b4,e5]@2 [d#4,a#4,d#5]@2 [d4,a4,d5]@2 a3@2 [c4,g4]@63 ~ [a3,e4]@2 e3@2]/5", // G5 E5 D#5 D5 C5 A5
  CH: "e3 [a3,e4] e3!4 [a3,e4] e3", CI: "e3 [a3,e4] e3!2 [c4,g4] [b3,f#4] [a#3,f4] ~",
  CJ: "~@2 [c4,g4] [b3,f#4] [a3,e4] e3!2 [a3,e4]", CK: "e3!4 [a3,e4] e3!2 [a3,e4]",
  CL: "e3!2 [c4,g4] [b3,f#4] [a3,e4] e3!2 [a3,e4]", // C5 B5 A5
  CM: "e3@2 e3@2 [c4,g4]@2 [b3,f#4]@2 ~ c#4 f#3@2 f#3@2 ~ c#4, ~@4 [f#3,b3] ~@2 [f#3,b3]", // C5 B5
  CN: "f#3@2 f#3@2 f#3@2 f#3@2 ~ c#4 f#3@2 f#3@2 ~ c#4, ~@4 [f#3,b3] ~@2 [f#3,b3]", // B5
  CO: "f#3@2 f#3@2 f#3@2 f#3@2 [c#4,g#4]@3 ~@3 [c4,g4]@2", // C#5 C5
  CP: "[b3,f#4]@3 ~@3 [c#4,g#4]@2 [a3,e4]@2 [a3,e4]@2 [a3,e4]@2 [a3,e4]@2", // B5 C#5 A5
  CQ: "[a3,e4]@2 [a3,e4]@2 [a3,e4]@2 [a3,e4]@2 [c#4,g#4]@3 ~@3 [c4,g4]@2", // A5 C#5 C5
  CR: "[a3,e4]@2 [a3,e4]@2 [a3,e4]@2 [a3,e4]@2 ~ c#4 f#3@2 f#3@2 ~ c#4, ~@4 [f#3,b3] ~@2 [f#3,b3]", // A5 B5
  CS: "[a3,e4]@2 [a3,e4]@2 [a3,e4]@2 [a3,e4]@2 [f#3,c#4]@3 ~ [e3,b3]@3 ~", // A5 F#5 E5
  CT: "[f#3,c#4]@2 [a3,e4]@2 [f#3,c#4]@2 [c4,g4]@2 [f#3,c#4]@3 ~ [e3,b3]@3 ~", // F#5 A5 F#5 C5 F#5 E5
  CU: "[[f#3,c#4]@2 [a3,e4]@2 [f#3,c#4]@2 [c4,g4]@17 ~ [f#3,c#4]@3 ~ [e3,b3]@3 ~]/2", // F#5 A5 F#5 C5 F#5 E5
  CV: "[[f#3,c#4]@2 [a3,e4]@2 [f#3,c#4]@2 [e3,b3]@17 ~ [f#3,c#4]@3 ~ [e3,b3]@3 ~]/2", // F#5 A5 F#5 E5 F#5 E5
  CW: "[f#3,c#4]@2 [a3,e4]@2 [f#3,c#4]@2 [c4,g4]@4 c4!2 [c4,g4]@2 c4!2", // F#5 A5 F#5 C5
  CX: "[c4,g4]@2 c4!2 [c4,g4] [b3,f#4]@3 [f#3,c#4]@3 ~ [e3,b3]@3 ~", // C5 B5 F#5 E5
  CY: "[f#3,c#4]@2 [a3,e4]@2 [f#3,c#4]@2 [e3,b3]@9 ~", CZ: "e3!8 [f#3,c#4]@3 ~ [e3,b3]@3 ~", DA: "e3!8 ~@2 b5@2 c6@3 ~",
  DB: "~@2 a5@2 b5@3 ~@3 e5@2 f#5@3 ~", DC: "~@2 g5@2 e5@3 ~ e5@3 ~ e5@3 ~", DD: "e5@3 ~ e5@3 ~@9",
})).s("gm_distortion_guitar").gain(0.11).pan(0)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar_2 = note(`<
  A B A B A B A B ~@129 C D E ~@5 F G H I J K L M N K L M O P Q R S T U V W ~@78 X Y Z ~
>`.pickRestart({
  A: "~@2 f#5@2 g5@3 ~@3 d5@2 e5@3 ~", B: "~@2 a4@2 b4@3 ~@3 d4@2 ~@4", C: "~@4 d5 e5 f#5@2 g5 f#5 e5 d5 f#5 e5 d5 c5",
  D: "e5 d5 ~ b4 d5 c5 b4 c5 e5 d5 ~ b4 d5 c5 ~ a4", E: "c5 b4 ~ g4 b4 a4 ~ [f#4,g4] ~@8",
  F: "~@2 b5@2 d#6 c#6 ~ b5 a#5 g#5 ~ f#5 d#6 c#6 ~ b5", G: "a#5 g#5 ~ f#5 e6 d#6 ~ c#6 b5 a#5 ~ g#5 e6 d#6 ~ c#6",
  H: "b5 a#5 ~ g#5 f#6 e6 ~ d#6 c#6 b5 ~ a#5 g6 f#6 ~ e6", I: "d#6 c#6 ~ b5 a6 g#6 ~ f#6 e6 d#6 ~ c#6 d#7@4",
  J: "~@4 e6 c6 a5 c6 e6 c6 a5 c6 e6 c6 a5 c6", K: "e6 c6 a5 c6 d6 b5 g5 b5 d6 b5 g5 b5 d6 b5 g5 b5",
  L: "d6 b5 g5 b5 d6 a#5 g5 a#5 d6 a#5 g5 a#5 d6 a#5 g5 a#5", M: "d6 a#5 g5 a#5 c#6 a5 e5 a5 c#6 a5 e5 a5 c#6 a5 e5 a5",
  N: "c#6 a5 e5 a5 e6 c6 a5 c6 e6 c6 a5 c6 e6 c6 a5 c6", O: "c#6 a5 e5 a5 ~@3 g5 a5 g5 e5 g5 a5 g5 e5 g5",
  P: "a5 g5 e5 g5 b5 a5 f#5 a5 b5 a5 f#5 c6 d6 c6 a5 c6", Q: "d6 c6 a5 c6 g6 d6 b5 d6 g6 d6 g6 d6 b5 d6 g6 d6",
  R: "g6 d6 b5 d6 f#6 d6 b5 d6 f#6 d6 f#6 d6 b5 d6 f#6 d6", S: "f#6 d6 b5 d6 f6 d6 b5 d6 f6 d6 f6 d6 b5 d6 f6 d6",
  T: "f6 d6 b5 d6 e6 d6 b5 d6 e6 d6 e6 d6 b5 d6 e6 d6", U: "e6 d6 e6@2 a5 g5 e5 a5!2 g5 c6 g5 e5 g5 a5 g5",
  V: "a5 g5 e5 a5 b5 a5 f#5 a5 b5 a5 f#5 b5 d6 c6 a5 c6", W: "d6 c6 a5 c6 ~@12", X: "~@10 f#5@2 g5@3 ~",
  Y: "~@2 d5@2 e5@3 ~@3 a4@2 b4@3 ~", Z: "~ d4 ~@6",
})).s("gm_distortion_guitar").gain(0.11).pan(1)

// chords · distortion guitar · "Guitar 3"
const distortion_guitar_3 = note(`<
  ~@105 A@3 B@12 C@2 D E F G D E F G D E F G D E F H I J@3 K L K L K L K M N O P Q N O P R S T N O P R S U ~@82
>`.pickRestart({
  A: "[~@8 [e3,b3]@11 ~ e3@2 g3@2 [c4,g4]@11 ~ e3@2 f#3@2 [g3,d4,g4]@3 ~ [a3,e4,a4]@2 ~@2]/3", // E5 C5 G5 A5
  B: "[[a3,e4,a4]@23 ~ [e3,b3]@11 ~ e3@2 g3@2 [c4,g4]@11 ~ e3@2 f#3@2 [g3,d4,g4]@3 ~ [a3,e4,a4]@2 ~@2]/4", // A5 E5 C5 G5 A5
  C: "[[a3,e4,a4]@23 ~ [f#3,c#4]@3 ~ [f#3,c#4]@2 [f#3,c#4]@2]/2", // A5 F#5
  D: "[f#3,c#4]@3 ~ f#3@2 g#3@2 [d4,a4]@3 ~ [d4,a4]@2 [d4,a4]@2", // F#5 D5
  E: "[d4,a4]@3 ~ f#3@2 g#3@2 [a3,e4]@3 ~ [b3,f#4]@2 [b3,f#4]@2", // D5 A5 B5
  F: "[b3,f#4]@3 ~ [b3,f#4]@2 [b3,f#4]@2 [b3,f#4]@3 ~ [b3,f#4]@2 [b3,f#4]@2", // B5
  G: "[b3,f#4]@3 ~ [b3,f#4]@2 [b3,f#4]@2 [f#3,c#4]@3 ~ [f#3,c#4]@2 [f#3,c#4]@2", // B5 F#5
  H: "[b3,f#4]@3 ~ [b3,f#4]@2 [b3,f#4]@2 [a3,e4]@2 [a3,e4]@2 [a3,e4]@2 ~@2", I: "~@4 [g3,d4]!2 ~@2",
  J: "[~@8 [f3,c4,f4]@27 ~ e3!6 [g3,d4,g4]@2 e3!4]/3", // F5 G5
  K: "e3!2 [g3,d4,g4]@2 e3!6 [g3,d4,g4]@2 [b3,f#4,b4]@2 [c4,g4,c5]@2", L: "[b3,f#4,b4]@3 ~ e3!6 [g3,d4,g4]@2 e3!4",
  M: "[b3,f#4,b4]@3 ~ c4!4 [c4,g4]@2 c4!6", N: "[c4,g4]@2 c4!2 b3!4 [b3,f#4]@2 b3!6",
  O: "[b3,f#4]@2 b3!2 a#3!4 [a#3,f4]@2 a#3!6", P: "[a#3,f4]@2 a#3!2 a3!4 [a3,e4]@2 a3!6",
  Q: "[a3,e4]@2 a3!2 c4!4 [c4,g4]@2 c4!6", R: "[a3,e4]@2 a3!2 f3!4 [f3,c4]@2 f3!6",
  S: "[f3,c4]@2 f3!2 g3!4 [g3,d4]@2 g3!2 a#3!4", T: "[a#3,f4]@2 a#3!2 c4!4 [c4,g4]@2 c4!6",
  U: "[a#3,f4]@2 a#3!2 d6@2 d#6@2 d6@2 d#6@2 ~@4", // A#5
})).s("gm_distortion_guitar").gain(0.29)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A@8 B C@11 D E@3 F G@3 H G@3 H I@4 J K J K I@2 J K J K L@4 G@8 I@4 J K J K I@2 J K J K ~ M N M N M N M O P Q R S T N M
  N M N M U@7 V@20 W@2 X Y Z AA X Y Z AA X Y Z AA X Y Z AB AC AD@3 AE AF AE AF AE AF AE AG AH AI AJ AK AH AI AJ AL AM AN
  AH AI AJ AL AM AO AP AQ AP AQ AP AQ AP AR AH AI AJ AL AM AO AP AQ AP AQ AP AS@5 AT@11 AU AV AW@3 AX AW@3 AY I@3 AZ BA
  BB BA BC I AZ BA BB BA BD BE@4 BF@2 BG@2 BF@2 BG@2 BH BI BJ BK BH BI BJ BL BM BN ~
>`.pickRestart({
  A: "e1@3 ~@5 e1@3 ~@5", B: "~@2 a#1 e1!2 a#1 e1!2", C: "e1!2 a#1 e1!2 a#1 e1!2",
  D: "e1@2 e1@2 f#1@3 ~ e1@3 ~ f#1@2 a1@2", E: "f#1@2 c2@2 f#1@3 ~ e1@3 ~ f#1@2 a1@2", F: "f#1 c2 b1 ~@3 c2 b1",
  G: "a#1 e1!2 a#1 e1!4", H: "a#1 e1!2 a#1 e1!2 c2 a#1", I: "f#1!8", J: "c#2@3 ~@3 c2@2 b1@3 ~@3 c#2@2", K: "a1!8",
  L: "f#1@3 ~ e1@3 ~ f#1@2 a1@2 f#1@2 c2@2", M: "e1!4 g1@2 e1!6 g1@2 e1!2", N: "e2 d#2 d2 a#1 c2 g#1 b1 g1",
  O: "c2!4 c2@2 c2!6 c2@2 c2!2", P: "b1!4 b1@2 b1!6 b1@2 b1!2", Q: "a#1!4 a#1@2 a#1!6 a#1@2 a#1!2",
  R: "a1!4 a1@2 a1!6 a1@2 a1!2", S: "f1!4 f1@2 f1!6 f1@2 f1!2", T: "g1!4 g1@2 g1!2 a#1!4 a#1@2 a#1!2",
  U: "[e2@2 d#2@2 d2@2 a1@2 c2@31 ~ b1@31 ~ e1@11 ~ e1@2 g1@2 c2@11 ~ e1@2 f#1@2 g1@3 ~ a1@2 ~@2]/7",
  V: "[a1@23 ~ e1@11 ~ e1@2 g1@2 c2@11 ~ e1@2 f#1@2 g1@3 ~ a1@2 ~@2]/4", W: "[a1@23 ~ f#1@3 ~ f#1@2 f#1@2]/2",
  X: "f#1@3 ~ f#1@2 g#1@2 d2@3 ~ d2@2 d2@2", Y: "d2@3 ~ f#1@2 g#1@2 a1@3 ~ b1@2 b1@2",
  Z: "b1@3 ~ b1@2 b1@2 b1@3 ~ b1@2 b1@2", AA: "b1@3 ~ b1@2 b1@2 f#1@3 ~ f#1@2 f#1@2",
  AB: "b1@3 ~ b1@2 b1@2 a1@2 a1@2 a1@2 ~@2", AC: "~@4 g1!2 ~@2", AD: "[~@8 f1@27 ~ e1!6 g1@2 e1!4]/3",
  AE: "e1!2 g1@2 e1!6 g1@2 b1@2 c2@2", AF: "b1@3 ~ e1!6 g1@2 e1!4", AG: "b1@3 ~ c2!4 c2@2 c2!6",
  AH: "c2@2 c2!2 b1!4 b1@2 b1!6", AI: "b1@2 b1!2 a#1!4 a#1@2 a#1!6", AJ: "a#1@2 a#1!2 a1!4 a1@2 a1!6",
  AK: "a1@2 a1!2 c2!4 c2@2 c2!6", AL: "a1@2 a1!2 f1!4 f1@2 f1!6", AM: "f1@2 f1!2 g1!4 g1@2 g1!2 a#1!4",
  AN: "a#1@2 a#1!2 c2!4 c2@2 c2!6", AO: "a#1@2 a#1!2 e2@2 d#2@2 d2@2 a#1@2 c2@2 g#1@2", AP: "b1@2 g1@2 e1!4 g1@2 e1!6",
  AQ: "g1@2 e1!2 e2@2 d#2@2 d2@2 a#1@2 c2@2 g#1@2", AR: "g1@2 e1!2 c2!4 c2@2 c2!6",
  AS: "[g1@2 e1!2 e2@2 d#2@2 d2@2 a1@2 c2@63 ~ a#1@2 e1@2]/5", AT: "e1 a#1 e1!4 a#1 e1", AU: "e1 a#1 e1!2 c2 b1 a#1 ~",
  AV: "~@2 c2 b1 a#1 e1!2 a#1", AW: "e1!4 a#1 e1!2 a#1", AX: "e1!2 c2 a#1!2 e1!2 a#1", AY: "e1!2 c2 a#1 f#1!4",
  AZ: "f#1@2 f#1@2 f#1@2 f#1@2 c#2@3 ~@3 c2@2", BA: "b1@3 ~@3 c#2@2 a1@2 a1@2 a1@2 a1@2",
  BB: "a1@2 a1@2 a1@2 a1@2 c#2@3 ~@3 c2@2", BC: "a1!4 f#1!4", BD: "a1@2 a1@2 a1@2 a1@2 f#1@3 ~ e1@3 ~",
  BE: "f#1@2 a1@2 f#1@2 c2@2 f#1@3 ~ e1@3 ~", BF: "[f#1@2 a1@2 f#1@2 c2@17 ~ f#1@3 ~ e1@3 ~]/2",
  BG: "[f#1@2 a1@2 f#1@2 e1@17 ~ f#1@3 ~ e1@3 ~]/2", BH: "f#1@2 a1@2 f#1@2 c2@4 c2!2 c2@2 c2!2",
  BI: "c2@2 c2!3 b1@3 f#1@3 ~ e1@3 ~", BJ: "f#1@2 a1@2 f#1@2 e1@9 ~", BK: "e1!8 f#1@3 ~ e1@3 ~", BL: "e1!8 e1@2 ~@6",
  BM: "e1 ~@3 e1 ~@3", BN: "e1@2 ~@2 e1@3 ~@9",
})).s("gm_electric_bass_finger").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@7 B C D@7 E F@4 G@12 H I H I G@2 H I H I J@4 G@12 H I H I G@2 H I H I K H@7 L@7 M H N O M P@3 Q R S T P@2 S T
  P@2 S T P@2 S T P@2 S T P@2 S T P@2 S T P@2 S T P@2 S T P@2 S T P U V W ~ X L@38 Y Z AA AB AC AD A@7 AE AF@8 AG AH@12
  I AI I AI AH@2 I AI I AI AJ@4 AK AL K AM AN@2 AO W AN@3 AP AN@3 AP AN AQ ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x ~ x ~@4 x", D: "~@2 x ~@4 x", E: "~@2 x ~@3 x!2", F: "~ x!2 ~@3 x!2",
  G: "x ~@4 x ~@2", H: "x ~@3 x!2 ~@2", I: "x!2 ~@2 x!2 ~@2", J: "x ~@3 x!2 ~ x", K: "x ~@4 x!2 ~", L: "x!4",
  M: "~@2 x ~ x ~ x!2 ~@2 x ~ x ~ x!2", N: "~ x!3 ~ x!3", O: "x ~@2 x ~@4", P: "~@3 x!2 ~@2 x", Q: "~@3 x ~@4",
  R: "~@4 x ~@2 x", S: "~@3 x!2 ~@3", T: "~ x ~@2 x ~@2 x", U: "~@3 x!4 ~", V: "~@4 x!2 ~@2", W: "~ x", X: "~ x!3",
  Y: "x ~@5 x ~ x ~ x!2 ~@2 x ~", Z: "x ~ x!3 ~@7 x ~ x ~", AA: "~@3 x!3 ~ x", AB: "x!3 ~@2 x ~@2",
  AC: "~@6 x ~ x ~ x!2 ~@2 x ~", AD: "x ~ x!2 ~@6 x ~ x ~@3", AE: "~@2 x!2", AF: "~@3 x ~@2 x ~", AG: "~@2 x!3 ~@3",
  AH: "~ x ~@2 x ~@3", AI: "x!2 ~@2 x ~@3", AJ: "x!2 ~ x!2 ~@3", AK: "x", AL: "~ x!2 ~", AM: "~ x!2 ~ x ~@3", AN: "x!2",
  AO: "x ~@9 x!2 ~@2 x!2", AP: "x!3 ~", AQ: "x!2 ~@2",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@11 A B C@8 D@3 E F@22 G@4 F@22 H F@7 I@7 J F@2 B J K L@3 ~ L@39 M N B ~ O I@22 P Q I@14 R C@2 H S T ~@7 U C@7 V W
  F@22 X@4 Y F Z AA Y AB AC AD F@3 AE F@3 AF C AG ~
>`.pickRestart({
  A: "~@12 x!4", B: "~ x", C: "x!2", D: "x!2 ~@6 x ~@7", E: "x!2 ~@2 x ~@7 x ~ x ~", F: "~ x ~ x",
  G: "~@4 x ~@7 x!2 ~@2", H: "x ~@2 x", I: "~ x ~ x ~ x ~ x", J: "x!2 ~@2 x ~@3 x!2 ~@2 x ~@3", K: "x!3 ~@5", L: "x",
  M: "x ~@3 x!3 ~", N: "~@4 x!2 ~@2", O: "~@3 x ~ x ~ x", P: "~@2 x ~@3 x ~@3 x ~ x!4", Q: "x!4 ~@2 x ~@3 x ~@3 x ~",
  R: "~@2 x ~ x!2 ~@2 x ~@3 x!2 ~@2", S: "~@4 x!2 ~@2 x ~@3 x!2 ~@2", T: "x ~ x!3 ~@3", U: "~@4 x!4 ~@8", V: "x ~ x!2",
  W: "~@2 x!2 ~@2 x ~", X: "~@4 x!2 ~@6 x ~@3", Y: "~ x ~@2", Z: "~@4 x ~@3 x!2 ~@2 x ~@3", AA: "x!2 ~@2 x ~@7 x ~@3",
  AB: "~@3 x", AC: "~@4 x ~@3 x!2 ~@2 x!2 ~@2", AD: "x!2 ~@10 x ~@3", AE: "x!8 ~@4 x ~@3", AF: "x!9 ~@7", AG: "x!2 ~@2",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<A@12 ~@78 B ~@6 C ~@84 D ~@3 A@7 E ~@35 D F ~@2 G H ~ I ~@11>".pickRestart({
  A: "x!2", B: "~@8 x!2 ~@6", C: "~@4 x!4 ~@8", D: "~@12 x!2 ~@2", E: "x", F: "~@2 x!2 ~@12", G: "~@4 x!4",
  H: "x!4 ~@4", I: "~@6 x!2 ~@8",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B@11 C B@48 D B@14 E B E B E F B@2 G F B@39 H I J ~ A B@22 K A B@14 L M L M L N ~@7 O B@7 H A B@26 G F P Q G F
// … 29 more lines

More by Metallica