Strudelify
The Shortest Straw cover art

…And Justice for All

The Shortest Straw

Metallica

KeyG majorTempo167 bpm
0:00/0:00
// The Shortest Straw — Metallica
// 167 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1, 7/8 at bar 8, 4/4 at bar 9, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 234 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(167/4)

// 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 · overdriven guitar · "Guitar 1"
const overdriven_guitar = note(`<
  A B C B D@2 C B E F G F H F G F I J K@2 L@2 K@2 M N O P Q P Q P Q P R P S T U V W X Y V W X Y Z AA Z AB Z AA Z AB P Q
  P Q AC AD AE AF AE J K@2 L@2 K@2 M N F G F H F G F I P Q P R P S T U V W X Y V W X Y Z AA Z AB Z AA Z AB P Q P Q AC AD
  AE AF AE J K@2 L@2 K@2 M N F G F H F G F I P Q P R AG AH AI AJ AG AH AI AJ AK AL AM AN AO AL AM AN AP AQ AR AS AT AQ
  AR AS AU@4 AV@4 AW AX F G F H F G F I J K@2 L@2 K@2 M AY AZ BA@4 BB@8 BC@8 BD BE BF BE BG BH@2 BI@2 BH@2 BJ BK BL BM
  BN BO@8 BP BQ BR
>`.pickRestart({
  A: "~@3 [e2,b2,e3] [f2,c3,f3] [e2,b2,e3] ~@2", B: "~@3 [e2,b2,e3] [f2,c3,f3] [e2,b2,e3] ~ [e2,b2,e3]",
  C: "[f2,c3,f3] [e2,b2,e3] [g2,d3,g3]@2 [f2,c3,f3] [e2,b2,e3] ~@2", // F5 E5 G5 F5 E5
  D: "[[f2,c3,f3] [e2,b2,e3] [a#2,f3,a#3]@2 [f2,c3,f3] [e2,b2,e3]@6 [e2,b2,e3] [f2,c3,f3] [e2,b2,e3] ~ [e2,b2,e3]]/2", // F5 E5 A#5 F5 E5 F5 E5
  E: "[e2,b2,e3] [f2,c3,f3] [e2,b2,e3]@2 [e2,b2,e3] [f2,c3,f3] [e2,b2,e3]@2", // E5 F5 E5 F5 E5
  F: "e2@2 e2@2 e2!2 e2@2 [e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4", // E5 F5 E5
  G: "[e2,b2,e3] [g2,d3,g3]@2 [a#2,f3,a#3]@2 [f2,c3,f3] [e2,b2,e3]@2", // E5 G5 A#5 F5 E5
  H: "[e2,b2,e3] [a#2,f3,a#3]@2 [g2,d3,g3]@2 [f2,c3,f3] [e2,b2,e3]@2", // E5 A#5 G5 F5 E5
  I: "[g2,d3,g3]!2 ~ [g2,d3,g3] [f#2,c#3,f#3] ~@2 [f2,c3,f3]", // G5 F#5 F5
  J: "[e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 e2@2 e2@2 e2!2 e2@2", // E5 F5 E5
  K: "[[e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [g2,d3,g3]@4 [a#2,f3,a#3]@4 [f2,c3,f3]@2 [e2,b2,e3]@4 e2@2 e2@2 e2!2 e2@2]/2", // E5 F5 E5 G5 A#5 F5 E5
  L: "[[e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [a#2,f3,a#3]@4 [g2,d3,g3]@4 [f2,c3,f3]@2 [e2,b2,e3]@4 e2@2 e2@2 e2!2 e2@2]/2", // E5 F5 E5 A#5 G5 F5 E5
  M: "[e2,b2,e3] [f2,c3,f3] [e2,b2,e3]@2 [g2,d3,g3]!2 ~ [g2,d3,g3]", // E5 F5 E5 G5
  N: "[f#2,c#3,f#3] ~@2 [f2,c3,f3] [e2,b2,e3] [f2,c3,f3] [e2,b2,e3]@2", // F#5 F5 E5 F5 E5
  O: "e2@2 e2@2 e2!2 e2@2 e2@2 [e2,b2,e3]@2 ~@2 [f2,c3,f3]@2", P: "[e2,b2,e3]@3 e3@2 a#3@3 a3@3 a#3@2 e3@3",
  Q: "e2@2 e2@2 e2 e2@2 e2 e2@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3] [f#2,c3,f#3]@2", // E5 F5 E5 F#dim
  R: "e2@2 e2@2 e2 e2@2 e2 e2@2 [e2,b2,e3] [g2,d3,g3]@2 [e2,b2,e3] [g2,d3,g3]@2", // E5 G5 E5 G5
  S: "e2@2 e2@2 e2 e2@2 e2 e2@2 [e2,b2,e3] [a2,e3,a3]@2 [e2,b2,e3] [a2,e3,a3]@2", // E5 A5 E5 A5
  T: "[e2,b2,e3]@3 a2@2 e3@3 a#3@3 a3@2 b3 a3 g3", // E5
  U: "[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2 [f#2,c#3,f#3]@3 [f#2,c#3,f#3] [f#2,c#3,f#3]@3 [f2,c3,f3]@2", // G5 F#5 F5
  V: "e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [f2,c3,f3] ~ e2@2 [f2,c3,f3]", // F5
  W: "e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [g2,d3,g3]@2 e2 [g2,d3,g3]@2", // G5
  X: "e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [f2,c3,f3]@2 e2 [f2,c3,f3]@2", // F5
  Y: "e2@2 e2@2 e2 e2@3 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2", // G5 F#5 F5
  Z: "f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [g2,d3,g3]@2 f#2 [g2,d3,g3]@2", // G5
  AA: "f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [a2,e3,a3]@2 f#2 [a2,e3,a3]@2", // A5
  AB: "f#2@2 f#2@2 f#2 f#2@3 [a2,e3,a3,c#4,e4,a4]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@2", // A G#5 G5
  AC: "[b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 e3 f3 e3 d3 e3 f3 e3 d3", // B5
  AD: "[e3,b3,e4]@2 ~ [e3,b3,e4] ~ [e3,b3,e4] [f3,c4,f4]@2", // E5 F5
  AE: "[b2,f#3,b3]@2 [c3,g3,c4]@2 [c3,g3,c4]@4 e3 f3 e3 d3 e3 f3 e3 d3", // B5 C5
  AF: "[a2,e3,a3]@2 ~ [a2,e3,a3] ~ [e3,b3,e4] [f3,c4,f4]@2", AG: "[e2,b2,e3]", AH: "[f2,c3,f3]",
  AI: "[f#2,d3,f#3,a3,d4]", AJ: "[g2,d3,g3]@8 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2",
  AK: "~@8 e2@2 e2@2 e2 e2@2 e2", AL: "e2@2 e2 [f2,c3,f3] ~ e2@2 [f2,c3,f3] e2@2 e2@2 e2 e2@2 e2",
  AM: "e2@2 e2 [g2,d3,g3]@2 e2 [g2,d3,g3]@2 e2@2 e2@2 e2 e2@2 e2", // G5
  AN: "e2@2 e2 [f2,c3,f3]@2 e2 [f2,c3,f3]@2 e2@2 e2@2 e2 e2@3", // F5
  AO: "[g2,d3,g3]@2 [g2,d3,g3]@2 [f#2,c#3,f#3]@2 [f2,c3,f3]@2 e2@2 e2@2 e2 e2@2 e2", // G5 F#5 F5
  AP: "[g2,d3,g3]!2 [f#2,c#3,f#3] [f2,c3,f3] [e2,b2,e3] ~@3", // G5 F#5 F5 E5
  AQ: "~@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3] [f2,c3,f3]@2 ~@8", // E5 F5 E5 F5
  AR: "~@2 [f2,c3,f3] [g2,d3,g3]@2 [f2,c3,f3] [g2,d3,g3]@2 ~@8", // F5 G5 F5 G5
  AS: "~@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3]@3 ~@5", // E5 F5 E5 F5 E5
  AT: "[g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 [e2,b2,e3]@2 ~@6", // G5 F#5 F5 E5
  AU: "[[g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 [f#2,c#3,f#3,a#3,c#4,f#4]@16 [g2,d3,g3,b3,d4,g4]@16 [g#2,e3,g#3,b3,e4]@16 [a2,e3,a3,c#4,e4,a4]@8]/4", // G5 F#5 F5 F# G E A
  AV: "[[a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@2 [f#2,c#3,f#3,a#3,c#4,f#4]@16 [g2,d3,g3,b3,d4,g4]@16 [g#2,e3,g#3,b3,e4]@16 [a2,e3,a3,c#4,e4,a4]@8]/4", // A5 G#5 G5 F# G E A
  AW: "[a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@2 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2", // A5 G#5 G5 F#5 F5
  AX: "~@4 [e2,b2,e3] [f2,c3,f3] [e2,b2,e3]@2", AY: "[f#2,c#3,f#3] ~@2 [f2,c3,f3] [e2,b2,e3]@2 ~@2",
  AZ: "~@4 e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [f2,c3,f3]", // F5
  BA: "[~ e2@2 [f2,c3,f3] e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [g2,d3,g3]@2 e2 [g2,d3,g3]@2 e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [f2,c3,f3]@2 e2 [f2,c3,f3]@2 e2@2 e2@2 e2 e2@3 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [f2,c3,f3]]/4", // F5 G5 F5 G5 F#5 F5
  BB: "[~ e2@2 [f2,c3,f3] e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [g2,d3,g3]@2 e2 [g2,d3,g3]@2 e2@2 e2@2 e2 e2@2 e2 e2@2 e2 [f2,c3,f3]@2 e2 [f2,c3,f3]@2 e2@2 e2@2 e2 e2@3 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [g2,d3,g3]@2 f#2 [g2,d3,g3]@2 f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [a2,e3,a3]@2 f#2 [a2,e3,a3]@2 f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [g2,d3,g3]@2 f#2 [g2,d3,g3]@2 f#2@2 f#2@2 f#2 f#2@3 [a2,e3,a3,c#4,e4,a4]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@2 f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [g2,d3,g3]]/8", // F5 G5 F5 G5 F#5 F5 G5 A5 …
  BC: "[~ f#2 [g2,d3,g3]@2 f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [a2,e3,a3]@2 f#2 [a2,e3,a3]@2 f#2@2 f#2@2 f#2 f#2@2 f#2 f#2@2 f#2 [g2,d3,g3]@2 f#2 [g2,d3,g3]@2 f#2@2 f#2@2 f#2 f#2@3 [a2,e3,a3,c#4,e4,a4]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@2 [e2,b2,e3]@3 e3@2 a#3@3 a3@3 a#3@2 e3@3 e2@2 e2@2 e2 e2@2 e2 e2@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3] [f#2,c3,f#3]@2 [e2,b2,e3]@3 e3@2 a#3@3 a3@3 a#3@2 e3@3 e2@2 e2@2 e2 e2@2 e2 e2@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3] [f#2,c3,f#3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 e3 f3 e3 d3]/8", // G5 A5 G5 A G#5 G5 E5 F5 …
  BD: "e3 f3 e3 d3 [e3,b3,e4]@4 ~@2 [e3,b3,e4]@2 ~@2 [e3,b3,e4]@2", // E5
  BE: "[f3,c4,f4]@4 [b2,f#3,b3]@2 [c3,g3,c4]@2 [c3,g3,c4]@4 e3 f3 e3 d3", // F5 B5 C5
  BF: "e3 f3 e3 d3 [d3,a3,d4]@4 ~@2 [a2,e3,a3]@2 ~@2 [e3,b3,e4]@2", // D5 A5 E5
  BG: "e3 f3 e3 d3 [e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 e2@2 e2@2", // E5 F5 E5
  BH: "[e2!2 e2@2 [e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [g2,d3,g3]@4 [a#2,f3,a#3]@4 [f2,c3,f3]@2 [e2,b2,e3]@4 e2@2 e2@2]/2", // E5 F5 E5 G5 A#5 F5 E5
  BI: "[e2!2 e2@2 [e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 [e2,b2,e3]@2 [a#2,f3,a#3]@4 [g2,d3,g3]@4 [f2,c3,f3]@2 [e2,b2,e3]@4 e2@2 e2@2]/2", // E5 F5 E5 A#5 G5 F5 E5
  BJ: "e2!2 e2@2 [e2,b2,e3]@2 [f2,c3,f3]@2 [e2,b2,e3]@4 [g2,d3,g3]@2 [g2,d3,g3]@2", // E5 F5 E5 G5
  BK: "~ [g2,d3,g3] [f#2,c#3,f#3] ~@2 [f2,c3,f3] [e2,b2,e3] [f2,c3,f3]", // G5 F#5 F5 E5 F5
  BL: "[e2,b2,e3]@4 e2@2 e2@2 e2!2 e2@2 [e2,b2,e3]@2 [f2,c3,f3]@2", BM: "~ [f2,c3,f3] [e2,b2,e3] ~@3 e2!2",
  BN: "e2 e2@2 e2 e2@2 e2 [f2,c3,f3]@2 e2 [f2,c3,f3]@2 e2@2 e2@2", // F5
  BO: "[e2 e2@2 e2 e2@2 e2 [g2,d3,g3]@2 e2 [g2,d3,g3]@2 [e2,b2,e3]@16 [f2,c3,f3]@16 [f#2,d3,f#3,a3,d4]@16 [g2,d3,g3]@8 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 [e2,b2,e3]@16 [f2,c3,f3]@16 [f#2,d3,f#3,a3,d4]@16 [g2,d3,g3]@4]/8", // G5 E5 F5 D G5 F#5 F5 E5 …
  BP: "~@4 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2", // G5 F#5 F5 E5
  BQ: "[e2,b2,e3] [e2,b2,e3]@2 [e2,b2,e3] [e2,b2,e3]@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3] [f2,c3,f3]@2 [e2,b2,e3]@2 ~@2", // E5 F5 E5 F5 E5
  BR: "~@2 [e2,b2,e3]!2 [e2,b2,e3]@2 [e2,b2,e3]@6 ~@4", // E5
})).s("gm_overdriven_guitar").gain(0.5)

// other · overdriven guitar · "Guitar Solo"
const overdriven_guitar_2 = note("<~@149 A B ~@26 C@2 ~ D ~@2 E ~@50>".pickRestart({
  A: "~@8 e6@3 c#6@2 a#5@3", B: "a5@3 g#5@2 f5@3 e5@3 d#5@2 c#5@3", C: "[~ e5@9 ~@6]/2", D: "e5@3 ~", E: "e5 ~@3",
})).s("gm_overdriven_guitar").gain(0.5)

// other · piano
const piano = note(`<
  ~@135 A B C D E B F G H@2 I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE ~@9 AF@2 AG AH@2 AI AJ AK AL@2 ~@36 AM@4
  AN@4 AO ~@2
>`.pickRestart({
  A: "e3@3 a3@3 e3@2 a#3@3 a3@2 [a3,b3] g3@2", B: "f3@3 a3@3 f3@2 a#3@3 a3@2 [a3,b3] f3@2",
  C: "f#3@3 a3@3 b3@2 c4@3 d4 d4@3 d4", D: "d4@2 g3 f#3 g3@2 d4 f#3", E: "e3@3 a3@3 e3@2 a#3@3 a3@2 [a3,b3] e3@2",
  F: "f#3@3 a3@3 b3@2 c4@4 d4@3 d4", G: "d4@4 g3@2 f#3@2 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2",
  H: "[d4 a#3@7 d6@16 d5@4 c5@4]/2", I: "g5@5 c#5 d5 f#5 a5 [f#5,g5] d5 [b4,e5] g5 [e5,f#5] c#5 [b4,d5]",
  J: "f#5 [d5,e5] c5 [b4,c5] e5 [c5,d5] b4 [c5,e5] b5@2 f#5@2 d5@2 b4@2", // Dsus2 Cmaj7 Csus2 C
  K: "[d4,g4]@2 [d4,g4]@2 [d4,g4]@2 [d4,g4]@2 a4@2 e5 d5 [a4,b4] b4 d5 b4", // G5 Asus2
  L: "[d5,f#5] e5 d5 e5 a4 b4 d5 b4 c#5 b4 a#4 b4 a#4 a4 g4 e4", M: "a4 g4 ~ [g4,a4] g4 ~ e4 g4 a5@3 f#5@2 d#5@3",
  N: "d5@3 c#5@2 a#4@3 a4@3 g#4@2 f#4@3", O: "[a4,e5]@6 g5 b5 d6 [b5,c6] a5!2 c6 [a5,b5] g5!2",
  P: "b5 a5 g5 f#5 a5 [f#5,g5] d#5!2 g5 [a5,b5] g5 f#5 a5 [f#5,g5] e5!2", // Gmaj7 Asus2 Gmaj7
  Q: "g5 [e5,f#5] d5!2 f#5 [d5,e5] c5 e5 g5 f#5 e5 d5 f#5 e5 d5 [c5,c#5]", // Esus2 Dsus2 C#maj7
  R: "e5 d5 c5 b4 d5 [b4,c5] a4 b4 e5 b4 d5 b4 c#5 b4 a4 g4", S: "a4@6 b3 d4 f#4 d4 f4 c#4 e4 c4 d#4 b3",
  T: "d4 a#3 c#4 a3 c4 g#3 b3 g3 a#3 f#3 a#3 f#3 a3 f3 g#3 e3", U: "a3 g3 e3 d3 e3@4 e3 g3 ~ b3 a#3 d4 ~ f4",
  V: "e4 g4 ~ b4 a#4 d5 ~ e5 e5@4 ~@4", W: "~@8 c#5 a#4 f#4 c#5 a#4 f#4 c#5 a#4",
  X: "c#5 a#4 f#4 c#5 a#4 f#4 c#5 a#4 d5 b4 g4 d5 b4 g4 d5 b4", Y: "d5 b4 g4 d5 b4 g4 d5 b4 e5 b4 g#4 e5 b4 g#4 e5 b4",
  Z: "e5 b4 g#4 e5 b4 g#4 e5 b4 e5 c#5 a4 e5 c#5 a4 e5 c#5", AA: "e5 c#5 a4 e5 c#5 a4 e5 c#5 f#3@3 b3@3 f#3@2",
  AB: "c4@3 b3@2 [b3,c4] f#3@2 g3@3 b3@3 g3@2", AC: "c4@3 b3@2 [b3,c4] g3@2 g#3@3 b3@3 c#4@2",
  AD: "d4@3 e4 e4@3 e4 e4@4 a3@2 g#3@2", AE: "[a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@2 ~@6 [f2,c3,f3]@2",
  AF: "[~@2 c5@18 c5@3 a#4 c5@2 b4@6]/2", AG: "e5@2 e5@4 e5 d5", AH: "[c5@6 [a#4,d5] b5@3 a#5 a5 g5 f5 g5 b5]/2",
  AI: "g5 [g5,a#5] [d5,f5] [f5,g5] b5 [f5,g5] d5 [c5,d5] d5 f5 d5 c5 a#4@2 a#4@2", // Gm Dm Fsus2 Csus2
  AJ: "c5@2 [a#4,d5]@2 [c5,e5]!2 [b4,d5] g4", AK: "[a#4,d5]@2 [c5,e5]@2 [c5,e5] [b4,d5] g4@2 [b4,d5]@2 g4@2 f4@4",
  AL: "[g4@4 g3 ~@2 [e2,b2,e3,g#3]@3 ~@6]/2", // E
  AM: "[~@12 e3@3 a3@3 e3@2 a#3@3 a3@2 [a3,b3] g3@2 f3@3 a3@3 f3@2 a#3@3 a3@2 [a3,b3] f3@2 f#3@3 a3@3 b3@2 c4@3 d4 d4@3 d4 d4@4]/4", // Asus2
  AN: "[g3@2 f#3@2 g3@4 d4@2 f#3@2 e3@3 a3@3 e3@2 a#3@3 a3@2 [a3,b3] e3@2 f3@3 a3@3 f3@2 a#3@3 a3@2 [a3,b3] f3@2 f#3@3 a3@3 b3@2 c4@4 d4@3 d4 d4@4]/4", // Asus2
  AO: "g3@2 f#3@2 [g2,d3,g3]@3 [f#2,c#3,f#3]@3 [f2,c3,f3]@2 ~@4", // G5 F#5 F5
})).s("gm_piano").gain(0.51)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A B C B D@2 C B E F G F H F G F I J K J L J K J M N O P ~@3 Q R Q S Q T U V W X Y Z AA X AA AB AC AD AC AE AC AD AC AE
  Q W Q R AF AG AH AI AH J K J L J K J M N F G F H F G F I Q R Q S Q T U V W X Y Z AA X AA AB AC AD AC AE AC AD AC AE Q
  W Q R AF AG AH AI AH J K J L J K J M N F G F H F G F I Q R Q W AJ AK AL AM AJ AK AL AM AN AO AP AQ AR AO AP AQ AS AT
  AU AV AS AT AU AV AW AX AY AZ BA AX AY AZ BB BC F G F H F G F I J K J L J K J M BD BE@7 BF@8 BG@6 BH BI BJ BI BK BL BM
  BN BO BL BM BL BP BQ BR BS BT BU BV BW BX BU BV BW BY BZ CA
>`.pickRestart({
  A: "~@3 e1 f1 e1 ~@2", B: "~@3 e1 f1 e1 ~ e1", C: "f1 e1 g1@2 f1 e1 ~@2", D: "[f1 e1 a#1@2 f#1 e1@6 e1 f1 e1 ~ e1]/2",
  E: "e1 f1 e1@2 e1 f1 e1@2", F: "e1@2 e1@2 e1!2 e1@2 e1@2 f1@2 e1@4", G: "e1 g1 e1 a#1 e1 f1 e1@2",
  H: "e1 a#1 e1 g1 e1 f1 e1@2", I: "e1 g1 ~ g1 ~ f#1 ~ f1", J: "e1@2 f1@2 e1@4 e1@2 e1@2 e1!2 e1@2",
  K: "e1 f1 e1@2 e1 g1 e1 a#1", L: "e1 f1 e1@2 e1 a#1 e1 g1", M: "e1 f1 e1@2 e1 g1 ~ g1", N: "~ f#1 ~ f1 e1 f1 e1@2",
  O: "e1@2 e1@2 e1!2 e1@2 e1@2 f1@2 ~@2 f1@2", P: "e1 ~@3", Q: "e1@2 e2@2 e1!4 a1@2 e1 a#1@2 e1 e2@2",
  R: "e1@2 e1@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f#1@2", S: "e1@2 e1@2 e1 e1@2 e1 e1@2 e1 g1@2 e1 g1@2",
  T: "e1@2 e1@2 e1 e1@2 e1 e1@2 e1 a1@2 e1 a1@2", U: "e1@2 e2@2 e1 a1@3 a#1@3 a1@2 b1 a1 g1",
  V: "g1@2 g1@2 g1 g1@2 g1 g1@2 g1 f#1@2 f#1 f1@2", W: "e1@2 e1@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2",
  X: "e1@2 e2@2 e1 e1@2 e1 e1@2 e1 g1@2 e1 g1@2", Y: "e1@2 e2@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f#1@2",
  Z: "e1@2 e1@2 e1@3 e1 g1@3 f#1@3 f1@2", AA: "e1@2 e2@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2",
  AB: "e1@2 e1@2 e1 e1@3 g1@3 f#1@3 f1@2", AC: "f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 g1@2 f#1 g1@2",
  AD: "f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 a1@2 f#1 a1@2", AE: "f#1@2 f#1@2 f#1 f#1@3 a1@3 g#1@3 g1@2", AF: "b1!4 ~@4",
  AG: "e2@2 ~ e2 ~ e2 f2 a1", AH: "b1@2 c2@2 c2@4 e2 f2 e2 d2 e2 f2 e2 d2", AI: "a1@2 ~ a1 ~ e2 f2 a1",
  AJ: "e1@2 e2@2 e1!2 e1@2 e2@2 e1!2 e1@2 e2@2", AK: "f1@2 c2@2 f1!2 f1@2 c2@2 f1!2 f1@2 c2@2",
  AL: "f#1@2 c#2@2 f#1!2 f#1@2 c#2@2 f#1!2 f#1@2 c#2@2", AM: "g1@2 d2@2 g1!2 g1@2 g1@3 f#1@3 f1@2",
  AN: "~@8 e1@2 e2@2 e1 e1@2 e1", AO: "e1@2 e1 f1@2 e1 f1@2 e1@2 e2@2 e1 e1@2 e1",
  AP: "e1@2 e1 g1@2 e1 g1@2 e1@2 e2@2 e1 e1@2 e1", AQ: "e1@2 e1 f1@2 e1 f1@2 e1@2 e2@2 e1 e1@3",
  AR: "g1@3 f#1@3 f1@2 e1@2 e2@2 e1 e1@2 e1", AS: "g1@3 f#1@3 f1@2 e1@2 ~@6", AT: "~@2 e1 f1@2 e1 f1@2 ~@8",
  AU: "~@2 e1 g1@2 e1 g1@2 ~@8", AV: "~@2 e1 f1@2 e1 f1@2 e1@2 ~@6", AW: "g1@3 f#1@3 f1@2 f#1@2 c#2@2 f#1!2 f#1@2",
  AX: "c#2@2 f#1!2 f#1@2 c#2@2 g1@2 d2@2 g1!2 g1@2", AY: "d2@2 g1!2 g1@2 d2@2 g#1@2 d#2@2 g#1!2 g#1@2",
  AZ: "d#2@2 g#1!2 g#1@2 d#2@2 a1@2 e2@2 a1!2 a1@2", BA: "a1@3 g#1@3 g1@2 f#1@2 c#2@2 f#1!2 f#1@2",
  BB: "a1@3 g#1@3 g1@2 ~@6 f1@2", BC: "~@4 e1 f1 e1@2", BD: "~ f#1 ~ f1 e1@2 ~@2",
  BE: "[~@4 e1@2 e1@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2 e1@2 e2@2 e1 e1@2 e1 e1@2 e1 g1@2 e1 g1@2 e1@2 e2@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f#1@2 e1@2 e1@2 e1@3 e1 g1@3 f#1@3 f1@2 e1@2 e2@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2 e1@2 e2@2 e1 e1@2 e1 e1@2 e1 g1@2 e1 g1@2 e1@2 e2@2 e1 e1@2 e1 e1@2 e1 f1]/7",
  BF: "[~ e1 f1@2 e1@2 e1@2 e1 e1@3 g1@3 f#1@3 f1@2 f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 g1@2 f#1 g1@2 f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 a1@2 f#1 a1@2 f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 g1@2 f#1 g1@2 f#1@2 f#1@2 f#1 f#1@3 a1@3 g#1@3 g1@2 f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 g1@2 f#1 g1@2 f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 a1@2 f#1 a1@2 f#1@2 f#1@2 f#1 f#1@2 f#1 f#1@2 f#1 g1]/8",
  BG: "[~ f#1 g1@2 f#1@2 f#1@2 f#1 f#1@3 a1@3 g#1@3 g1@2 e1@2 e2@2 e1!4 a1@2 e1 a#1@2 e1 e2@2 e1@2 e1@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2 e1@2 e2@2 e1!4 a1@2 e1 a#1@2 e1 e2@2 e1@2 e1@2 e1 e1@2 e1 e1@2 e1 f1@2 e1 f#1@2 b1@2 b1@2 b1@2 b1@2 ~@4]/6",
  BH: "~@2 e2@2 ~ e2 ~ e2", BI: "f2@2 a1@2 b1@2 c2@2 c2@4 e2 f2 e2 d2", BJ: "e2 f2 e2 d2 d2@4 ~@2 e2@2 ~@2 e2@2",
  BK: "e2 f2 e2 d2 e1@2 f1@2 e1@4 e1@2 e1@2", BL: "e1!2 e1@2 e1@2 f1@2 e1@4 e1@2 g1@2", BM: "e1 a#1 e1 f1 e1@2 e1!2",
  BN: "e1!2 e1@2 e1@2 f1@2 e1@4 e1@2 a#1@2", BO: "e1 g1 e1 f1 e1@2 e1!2", BP: "~ g1 ~ f#1 ~ f1 e1 f1",
  BQ: "e1@4 e1@2 e1@2 e1!2 e1@2 e1@2 f1@2", BR: "~ f1 e1 ~@3 e1!2", BS: "e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2 e1@2 e1@2",
  BT: "e1 e1@2 e1 e1@2 e1 g1@2 e1 g1@2 e1@2 e2@2", BU: "e1!2 e1@2 e2@2 e1!2 e1@2 e2@2 f1@2 c2@2",
  BV: "f1!2 f1@2 c2@2 f1!2 f1@2 c2@2 f#1@2 c#2@2", BW: "f#1!2 f#1@2 c#2@2 f#1!2 f#1@2 c2@2 g1@2 d2@2",
  BX: "g1!2 g1@2 g1@3 f#1@3 f1@2 e1@2 e2@2", BY: "g1!2 g1@2 g1@3 f#1@3 f1@2 e1@2 e1@2",
  BZ: "e1 e1@2 e1 e1@2 e1 f1@2 e1 f1@2 e1@2 ~@2", CA: "~@2 e1!2 e2@2 e2@6 ~@4",
})).s("gm_electric_bass_pick").gain(0.5)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A B A B A B A C D E F D G D H D ~ I J ~@3 K@2 L M L N K ~ O L@2 N L@3 N L@3 N P@4 K N@2 K ~ Q R ~@2 S T U V W X W
  I G D Y Z AA E J D J AB L@2 AC N@3 ~ L@3 N L@3 AD L@3 AE P@3 AF N@2 L N ~ Q R ~@2 S T U V W X W I G D Y Z AA E AG D J
  L M L@2 P@7 AH AI AJ@3 N AJ@2 AK AL AM@3 AN AO AP M AQ P@6 AR AS H D Y Z AA D AT D J D E AU AV F J G D H AW AX@2 AY AZ
  AX@2 BA BB P@7 BC BD BE AY BF S BG BH BI BJ BK BL BM BN BK BL BK BO BP BQ BR BS P@7 BT BU BV
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x ~@2 x ~@3 x!2", B: "~@2 x ~@3 x!2 ~@2 x ~@5", C: "~ x ~ x ~ x ~@2", D: "x!2", E: "x ~@3 x ~@2 x",
  F: "x ~ x!2 ~@4 x ~@7", G: "~ x ~@2 x ~@3", H: "~ x", I: "~@2 x ~@3 x!2 ~@2 x ~@3 x ~", J: "x",
  K: "x ~@4 x ~@2 x ~@4 x!2 ~", L: "x ~@4 x!2 ~ x ~@2 x ~ x ~@2", M: "x ~@4 x!2 ~ x ~@7", N: "x ~@4 x!2 ~ x ~@4 x!2 ~",
  O: "x ~@4 x ~@2 x ~@2 x ~ x ~@2", P: "x!16", Q: "~@6 x ~@4 x!2 ~ x ~", R: "~@3 x!2 ~ x ~@2 x ~ x ~ x ~ x",
  S: "~@10 x ~@3 x!2", T: "~@7 x ~@2 x ~@3 x!2", U: "~@2 x ~@7 x ~@2 x ~ x", V: "~@2 x ~@3 x!2 ~@2 x ~@4 x",
  W: "x ~ x ~@7 x ~@2 x ~ x", X: "~@2 x ~@4 x!2 ~ x ~@4 x", Y: "x ~@5 x ~@3 x!2 ~@4", Z: "x ~@5 x ~ x ~ x!2 ~@2 x ~",
  AA: "x ~ x!2 ~@2 x ~ x ~ x!2 ~@4", AB: "x ~@4 x!2 ~ x ~@4 x ~@2", AC: "x!12 ~ x!2 ~",
  AD: "x ~@4 x!2 ~ x ~@2 x ~@2 x ~", AE: "x ~@4 x ~@2 x ~@7", AF: "x!9 ~@7", AG: "~@2 x ~@2 x ~@2",
  AH: "x!5 ~@3 x ~@2 x ~@2 x ~", AI: "~@8 x ~@4 x!2 ~", AJ: "x ~@2 x ~ x ~@2 x ~@4 x!2 ~", AK: "x ~@2 x ~ x ~@10",
  AL: "~@8 x ~@3 x!2 ~@2", AM: "x ~@2 x ~ x ~@2 x ~@3 x!2 ~@2", AN: "x ~@3 x ~@3 x ~@3 x!2 ~@2",
  AO: "x ~@2 x ~ x ~@2 x!8", AP: "x!6 ~@2 x ~@4 x!2 ~", AQ: "x ~@2 x ~@2 x ~ x!8", AR: "x!13 ~ x ~",
  AS: "x ~@2 x ~@2 x ~@7 x ~", AT: "x ~@4 x ~@2", AU: "~@2 x!2 ~@4 x ~@5 x ~", AV: "x ~ x!2 ~@2 x ~ x ~ x!2 ~@2 x ~",
  AW: "~@4 x ~@4 x!2 ~ x ~@2 x", AX: "~ x ~@2 x ~@4 x!2 ~ x ~@2 x", AY: "~ x ~@2 x ~@4 x!2 ~ x ~@3",
  AZ: "~ x!2 ~ x ~@4 x!2 ~ x ~@2 x", BA: "~ x ~@10 x ~@2 x", BB: "~@2 x ~ x!12", BC: "x!3 ~ x ~@4 x!2 ~ x ~@2 x",
  BD: "~ x ~@2 x!12", BE: "x!2 ~@2 x ~@4 x!2 ~ x ~@2 x", BF: "~ x!2 ~@13", BG: "~@2 x ~@4 x!2 ~ x ~@2 x ~ x",
  BH: "~ x ~ x ~@10 x!2", BI: "~@2 x!2 ~@2 x!2 ~@8", BJ: "~@7 x", BK: "~ x ~ x ~@2 x ~@4 x!2 ~ x ~",
  BL: "~@3 x!2 ~ x ~@7 x ~", BM: "~ x ~ x ~@2 x ~@3 x!2 ~@2 x ~", BN: "~@2 x!2 ~@2 x ~@7 x ~", BO: "~ x ~ x ~@2 x ~",
  BP: "~ x ~ x", BQ: "~ x!2 ~@3 x ~", BR: "~ x!2 ~ x ~@2 x ~ x ~@2 x ~@3", BS: "x!2 ~@2 x ~@7 x!4",
  BT: "x!3 ~ x ~@2 x ~@2 x ~ x!4", BU: "x!12 ~@4", BV: "~@2 x!2 ~@12",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  A ~@3 B ~@3 C D@7 E F@3 G F H F I J K ~@4 L@3 M L@3 N L@15 O L@4 P D@2 Q R D@7 K S F@5 T F L@8 U L@7 V L@3 M L@3 W L@4
  X D@2 Y R D@7 K S F@4 Z AA F L@2 M L@5 AB L@3 V AC L@6 AD AE L@6 V AC L@2 AF AG L@3 ~ AH F@5 AI F L F@5 AJ AK I V AL
  L@6 AM AL L@3 AN@3 AO AP L@3 AQ D@2 AR AS AT D@7 A AU AV L AW L@3 AX L@3 AY AZ BA
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@4 x!2 ~@2", C: "~@2 x!2", D: "x!4", E: "x ~@6 x", F: "~ x ~ x", G: "~@4 x ~@7 x ~ x!2",
  H: "~@2 x ~@2 x ~@2", I: "~@2 x ~@2 x ~ x", J: "~ x ~ x!2 ~ x ~", K: "x!3 ~", L: "~ x ~ x ~ x ~ x",
  M: "~@2 x ~@3 x ~@3 x ~@2 x!3", N: "x ~ x!2 ~ x!2 ~ x ~ x!2 ~ x!3", O: "~ x ~ x ~ x ~ x!3 ~ x ~ x!3", P: "x!4 ~@4",
  Q: "x ~@3 x ~@3 x ~ x!6", R: "x", S: "~@3 x ~@2 x ~", T: "~@2 x!2 ~@2 x ~", U: "x!5 ~ x!4 ~ x!2 ~ x ~",
// … 59 more lines

More by Metallica