Strudelify

Carpe Diem Baby

Metallica

KeyG majorTempo76 bpm
0:00/0:00
// Carpe Diem Baby — Metallica
// 76 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 11, 4/4 at bar 11, 2/4 at bar 35, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Johan, guitar program 25.
setcpm(76/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 · overdriven guitar
const overdriven_guitar = note(`<
  ~@3 A B C B D E F@2 G H I H I J K L K M N O P O P O Q R@2 S T U V@2 W X Y Z Y Z AA AB AA AB AC AD AE AD AE AD AE AF AG
  AH@2 AI AJ AK AJ AK AJ AK AJ AK AJ AK AJ AL AM AL AM ~@2 AN AO AP B D E AQ@2 AR AS I H I J K L K M N O P O P O AT AU@2
  AV AW S T U AX AY AZ@2
>`.pickRestart({
  A: "e2@2 e2@2 [g4,b4]@3 e2 b2@2 d3 a2@2 d3 g2 d3", B: "e2@2 e2@2 [g4,b4]@3 e2 b2@2 d3 a2@2 d3 g2 e2",
  C: "g2@3 e2 [g4,b4]@3 e2 b2@2 d3 a2@2 d3 g2 d3", D: "g2@2 [e2,b2] ~ [e2,b2]@3 e2 b2@2 d3 a2@2 d3 g2 d3",
  E: "e2@2 [d4,g4,b4]@2 [d4,g4,b4]@3 e2 b2@2 d3 a2@2 d3 g2 e2", // G
  F: "[g2@2 e2 ~ e2@3 g2@3 ~ e2 e2@3 g2@3 e2 ~ e2@4 [d3,a3,d4]@2 e2@2 e2@2 [d3,a3,d4]@2]/2", // D5
  G: "[f3,c4,f4]@2 e2@2 e2@2 [d3,a3,d4]@2 [a2,d3,a3,d4]@4 [a2,d3,a3,d4]@3 [a2,d3,a3,d4]", // F5 D5
  H: "[c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 [d3,a3,d4]@2 e2@2 e2@2 [d3,a3,d4]@2", // F5 C5 D5
  I: "[f3,c4,f4]@2 e2@2 e2@2 e2@2 [a2,d3,a3,d4]@4 [a2,d3,a3,d4]@2 [a2,d3,a3,d4] [b2,e3,b3,e4]", // F5 D5 E5
  J: "[c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 b2 e3 g3@2 a#2 e3 g3@2", // F5 C5
  K: "g2 e3 g3@2 f#2 e3 g3@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@2", // E5
  L: "[e2,b2]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 b2 e3 g3@2 a#2 e3 g3@2", // E5
  M: "[e2,b2]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [a2,d3,a3,d4]@4 [a2,d3,a3,d4]@2 [a2,d3,a3,d4] [b2,e3,b3,e4]", // E5 D5 E5
  N: "[c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 c3@2 e3!2 e2!2 e3!2 e2!2", // F5 C5
  O: "e3!2 e2!2 e3!2 e2!2 ~@2 b3@2 ~@2 a3@2, ~@2 g3 f#3",
  P: "~@2 a3@2 ~ f3 [e3,a3]@2 e3!2 e2!2 e3!2 e2!2, f3@2 [e3,a3] ~@5", // A5
  Q: "~@2 a3@2 ~ f3 [e3,a3]@2 [a2,e3,a3]@4 [a2,e3,a3]@3 e2, f3@2 [e3,a3] ~@5", // A5
  R: "[[a2,e3,a3] ~ [a2,e3,a3]@3 [a2,e3,a3] [a2,e3,a3]@2 [c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@2 [d4,e4] e4@2 e4 ~@4 g2@2 g2@3 e2 [g4,b4]@3 e2, ~@9 d4@3 ~@4]/2", // A5 C Dsus2 G
  S: "b2@2 d3 a2@2 d3 g2 d3 e2@2 e2@2 [g4,b4]@3 e2", T: "b2@2 d3 a2@2 d3 g2 e2 g2@2 [e2,b2] ~ [e2,b2]@3 e2",
  U: "b2@2 d3 a2@2 d3 g2 d3 e2@2 [d4,g4,b4]@2 [d4,g4,b4]@3 e2", // G
  V: "[b2@2 d3 a2@2 d3 g2 e2 g2@2 e2 ~ e2@3 g2@3 ~ e2 e2@3 g2@9]/2",
  W: "[d3,a3,d4] e2!2 [d3,a3,d4] [f3,c4,f4] e2!2 [d3,a3,d4]", // D5 F5 D5
  X: "[a2,d3,a3,d4]@4 [a2,d3,a3,d4]@3 [a2,d3,a3,d4] [c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2", // D5 F5 C5
  Y: "[d3,a3,d4] e2!2 [d3,a3,d4] [f3,c4,f4] e2!3", // D5 F5
  Z: "[a2,d3,a3,d4]@4 [a2,d3,a3,d4]@2 [a2,d3,a3,d4] [b2,e3,b3,e4] [c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2", // D5 E5 F5 C5
  AA: "b2 e3 g3@2 a#2 e3 g3@2 g2 e3 g3@2 f#2 e3 g3@2", AB: "[e2,b2]!5 [e2,b2,e3]!3",
  AC: "[a2,d3,a3,d4]@4 [a2,d3,a3,d4]@2 [a2,d3,a3,d4] [b2,e3,b3,e4] [c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@2 c3@2", // D5 E5 F5 C5
  AD: "e3!2 e2!2 e3!2 e2!2 e3!2 e2!2 e3!2 e2!2",
  AE: "~@2 b3@2 ~@2 a3@2 ~@2 a3@2 ~ f3 [e3,a3]@2, g3@2 f#3@2 f3@2 [e3,a3] ~", // A5
  AF: "[a2,e3,a3]@4 [a2,e3,a3]@3 e2 [a2,e3,a3] ~ [a2,e3,a3]@3 [a2,e3,a3] [a2,e3,a3]@2", // A5
  AG: "[c3,e3,g3,c4,e4]@4 [c3,e3,g3,c4,e4]@2 [d4,e4] e4@2 e4 d4@4 g2@2", AH: "e2!2 g4@2 e2!2 g#4@2",
  AI: "e2@2 e2!2 [e3,e4]@2 e2!2 ~@2 e2!2 [e3,e4]@2 e2!2", // E
  AJ: "~@2 e2!2 [e3,e4]@2 e2!2 [d3,a3,d4] [a2,e3,a3]@3 [c3,g3,c4]@2 g2 f#2", // E D5 A5 C5
  AK: "e2 g2 e2@2 [e3,e4]@2 e2!2 ~@2 e2!2 [e3,e4]@2 e2!2", // E
  AL: "[b2,f#3,b3]@2 [b2,f#3,b3]@2 [c3,g3,c4]@2 [b2,f#3,b3]!2 ~@2 [b2,f#3,b3]!2 [c3,g3,c4]@2 [b2,f#3,b3]!2", // B5 C5 B5 C5 B5
  AM: "~@2 [b2,f#3,b3]!2 [c3,g3,c4]@2 [b2,f#3,b3]!2 [d3,a3,d4] [a2,e3,a3]@3 [c3,g3,c4]@2 g2 f#2", AN: "[e2,b2]@15 g3",
  AO: "[g3,b3,e4]@8 d3 e3 g3 a3!2 b3 d4 e4", AP: "e3@2 e2@2 [g4,b4]@3 e2 b2@2 d3 a2@2 d3 g2 d3",
  AQ: "[g2@2 e2 ~ e2@3 g2@3 e2 ~ e2 ~@2 g2@9 [e2,b2]@2 ~@6]/2", // E5
  AR: "~@8 [a2,d3,a3,d4]@4 [a2,d3,a3,d4]@2 [a2,d3,a3,d4] [b2,e3,b3,e4]", // D5 E5
  AS: "[c3,f3,c4,f4] ~ [g2,c3,g3,c4]@2 [g2,c3,g3,c4]@4 [d3,a3,d4]@2 e2@2 e2@2 [d3,a3,d4]@2", // F5 C5 D5
  AT: "~@2 a3@2 ~ f3 [e3,a3]@2 [a2,e3]@4 [a2,e3]@3 e2, f3@2 [e3,a3] ~@5", // A5
  AU: "[[a2,e3] ~ [a2,e3]@4 [a2,e3] ~ [c3,e3,g3,d4,e4]@4 e4@2 [d4,e4] e4@3 [d4,e4]@3 d4 b3@2 [a2,e3]@4 [a2,e3]@3 e2]/2", // A5 C Dsus2 A5
  AV: "[a2,e3] ~ [a2,e3] [a2,e3]@2 [a2,e3] e2@2 [f2,c3]@4 [f2,c3]@4", // A5 F5
  AW: "[f2,c3,f3] f2!3 [f2,c3,f3]@2 f2@2 g2@3 e2 [g4,b4]@3 e2", // F5 G
  AX: "b2@2 d3 a2@2 d3 g2 e2 [b2,f#3,b3]@4 [a#2,f3,a#3]@4", AY: "[g2,d3,g3]@2 [f#2,b2,f#3]@2 [e3,e4] e2 [e3,e4] e2",
  AZ: "[[e3,e4]@2 e2@2 [e3,e4]@2 e2@2 e2@2 e2!2 [e3,e4]@2 e2 e2@3 ~@14]/2", // E
})).s("gm_overdriven_guitar").gain(0.4).pan(0.2)

// chords · overdriven guitar · "Johan"
const overdriven_guitar_2 = note(`<
  ~@6 A ~ A B@2 C D E D E F G H G ~ I J K J K J L ~@3 M ~ N@2 ~ O ~ P ~ P Q ~ Q ~@2 R S R S R S ~@2 T@2 ~@21 A ~ A U@2
  ~@2 E D E F G H G ~ I J K J K J L ~@3 V ~ M ~ M ~@3
>`.pickRestart({
  A: "~@15 d3", B: "[~@2 b2 ~ b2@20 ~@8]/2", C: "~@8 e4@7 e4", D: "[d3,a3,d4,e4] ~ d4@2 d4@2 d4@2 ~@8",
  E: "~@8 e4@7 [d3,a3,d4]", F: "[d3,a3,d4,e4] ~ d4@2 d4@2 d4@2 f#3@4 f3@4", G: "d3 c#3 ~@2", H: "~@2 f#3 f3",
  I: "~@8 g3!2 ~@2 g3!2 ~@2", J: "g3!2 ~@2 g3!2 ~@2 e2@4 ~@4", K: "a2@4 ~@4 g3!2 ~@2 g3!2 ~@2", L: "a2 ~@3",
  M: "~@7 d3 ~@8", N: "[~@7 d3 ~@2 b2 ~ b2@20]/2", O: "e4@7 e4 [d3,a3,d4,e4] ~ d4@2 d4@2 d4@2",
  P: "e4@7 [d3,a3,d4] [d3,a3,d4,e4] ~ d4@2 d4@2 d4@2", Q: "f#3 f3 d3 c#3", R: "g3!2 ~@2 g3!2 ~@2 g3!2 ~@2 g3!2 ~@2",
  S: "e2 ~ a2 ~", T: "~ b4 ~ c5", U: "[~ b2@5 ~@2]/2", V: "~@2 c3 ~@3 c3@2 ~@8",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.8)

// other · overdriven guitar · "Berglund"
const overdriven_guitar_3 = note(`<
  ~@2 A ~@31 B C ~ C ~ C ~@20 D@2 E@2 F@3 G H@2 I J K L M N O ~@27 P@2 Q R S@2
>`.pickRestart({
  A: "~@8 [e3,g3]!2 e2!2 ~@4", B: "~@3 d4", C: "d4@5 d4 d4@2",
  D: "[~@2 f#3 [b3,e4] [g4,b4]@2 e4 e4@3 d4 e4 [g4,b4]@2 e4 e4@3 [d4,g4] e4 [g4,b4]@2 e4 [d4,g4] a4 d4@2 d4!2 e4 e4@2]/2", // E5 G G5 G G5
  E: "[[d4,g4] e4!3 [g4,b4]@2 e4@3 ~ d4 e4 g4@2 a4 g4@3 e4 d4 [g4,b4]@2 e4 d4 [g4,b4] ~ d4 ~ a4 e4 a4@2]/2", // G5 G
  F: "[[a4,c#5] [g4,b4] e3@2 g#3@4 e3@2 g#3@2 b3@6 e3@2 g#3@3 e3 g#3 ~ b3 ~ b3@6 e3 ~ g#3@4 e3@2 g#3@4 e3@2]/3", // A G
  G: "g#3@6 g#3@3 a3 g#3 a3 b3@4",
  H: "[b3@2 [b3,c4]!2 [b3,c4]@2 b3 b3@3 b3!2 [b3,c4]@2 b3 b3@3 b3!2 [b3,c4]@2 [b3,c4]!2 b3@2 b3@2 b3@2 b3@2]/2", // Cmaj7
  I: "[b3,d#4] [b3,c4] b3 [a3,b3] b3@2 [b3,d#4] [b3,e4] [b3,d#4] [b3,c#4] [b3,d#4]@2 [b3,f#4] [b3,g4] [b3,f#4]@2", // B Cmaj7 Asus2 B E5 B Bsus2 B …
  J: "[b3,f#4] [b3,g4] [b3,f#4] [b3,e4] [b3,f#4]@2 [b3,f#4] [b3,g4] a4 b4 a4!2 b4@2 b4@2", K: "e2!2 e5@2 e2!2 f#5@2",
  L: "e2!2 g5@2 e2!2 a5@2", M: "d6@8 d6@2 d6!2 d6@3 g5", N: "g5@4 e5@4 d4 e4 g4 a4!2 b4 d5 e5, a5 ~@15",
  O: "e5@2 ~@2 [g4,b4]@3 b3 ~@8", // G
  P: "[~@9 e2 [e4,a4]@2 [g4,b4]@2 e4 e4@3 d4 e4 [g4,b4]@2 e4 e4@3 d4 e4 [g4,b4]@2 d4 e4]/2", // A5 G
  Q: "[a4,c#5]@3 [g4,b4] [a4,c#5] ~ [a4,c#5]@2 a4 g4 e4@2 g4@2 a4 g4", R: "a4 d5!2 a4 [a4,c#5]@2 [a4,c#5]@2",
  S: "[[a4,c#5]@4 [a4,c#5]@4 a4@2 a4 g4 a4@2 a4 g4@3 ~@14]/2", // A
})).s("gm_overdriven_guitar").gain(0.45).pan(0)

// other · overdriven guitar · "Berglund" · soft notes · Em
const overdriven_guitar_soft = note(`<
  [~@8 [e3,g3]!2 e2!2 ~@4]
  [[e3,g3]!2 e2!2 ~@4 [e3,g3]!2 e2!2 ~@4]
  [[e3,g3]!2 e2!2 ~@12]
  ~@106
  [~@2 g3 ~@13]
>`).s("gm_overdriven_guitar").gain(0.2).pan(0)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B C B D E F G H G H I J K J L M N O P Q R S T U V W X Y Z AA AB AA AC AA AC AD AE AD AE AF AG AH AI AH AI AH AJ
  AK AL@2 AM AN AO AN AO AN AO AP AO AN AO AN AQ AR AQ AR AL@2 AS@2 AT AU AV AU AW@2 AX AY AZ G AZ I J K J L M N Q R Q R
  S T BA BB BC X W X BD BE BF@2
>`.pickRestart({
  A: "~@4 e2@3 e1 b1@2 d2 a1@2 d2 g1 d2", B: "e1@2 e1@2 e1@3 e1 b1@2 d2 a1@2 d2 g1 e1",
  C: "g1@2 e1@2 e1@3 e1 b1@2 d2 a1@2 d2 g1 d2", D: "g1@2 e1 ~ e1@2 e1@2 e1@2 e1@2 e1@2 e1@2", E: "e1!4 d2 e1!2 d2",
  F: "f2@2 e1@2 e1@2 e1@2 d2@2 d2@2 d2@2 ~ d2", G: "f2 ~ c2@2 c2@2 c2@2 d2@2 e1@2 e1@2 d2@2",
  H: "f2@2 e1@2 e1@2 e1@2 d2@2 d2@2 d2@2 ~ e2", I: "f2 ~ c2@2 c2@2 c2@2 b1@4 a#1@4", J: "g1@2 f#1@2 e1!4",
  K: "e1!4 b1@2 a#1@2", L: "e1@2 e1@2 e1@2 e1@2 d2@4 d2@3 e2", M: "f2 ~ c2@2 c2@2 c2@2 e1@4 e1@4",
  N: "e1@2 e1@2 e1!2 f#1!2", O: "a1!4 e1!4", P: "e1!6 f#1!2", Q: "a1!4 c2!4", R: "c2!4 e1!2 f#1!2",
  S: "a1@2 a1@2 a1@2 a1@2 a1@4 a1@3 a1", T: "a1 ~ a1@3 a1 a1@2 c2@4 c2@4",
  U: "c2@2 a1@2 g1@2 f#1@2 e1@2 e1@2 e1@2 ~ e1", V: "b1@2 d2 a1@2 d2 g1 d2 e1@2 e1@2 e1@2 e1!2",
  W: "b1@2 d2 a1@2 d2 g1 e1 g1@2 e1 ~ e1@2 ~ e1", X: "b1@2 d2 a1@2 d2 g1 d2 e1@2 e1@2 e1@2 ~ e1",
  Y: "b1@2 d2 a1@2 d2 g1 e1 e1@2 e1@2 e1@2 e1@2", Z: "e1", AA: "d2 e1!2 d2 f2 e1!3",
  AB: "d2@2 d2@2 d2@2 ~ d2 f2 ~ c2@2 c2@2 c2@2", AC: "d2@2 d2@2 d2@2 ~ e2 f2 ~ c2@2 c2@2 c2@2", AD: "b1 a#1 g1 f#1",
  AE: "e1!8", AF: "d2@4 d2@3 e2 f2 ~ c2@2 c2@2 c2@2", AG: "e1!4", AH: "e1!2 f#1!2 a1!4", AI: "c2!8",
  AJ: "a1@4 a1@3 a1!2 ~ a1@3 a1 a1@2", AK: "c2@2 c2@2 c2 a1 g1 f#1", AL: "e1!2 ~@2 e1!2 ~@2",
  AM: "e1@2 e1!2 e2@2 e1!2 ~@2 e1!2 e2@2 e1!2", AN: "~@2 e1!2 e2@2 e1!2 d2 a1@3 c2@2 g1 f#1",
  AO: "e1 g1 e1@2 e2@2 e1!2 ~@2 e1!2 e2@2 e1!2", AP: "~@2 e1!2 e2@2 e1!2 d2 a1@3 c2@2 g1 ~",
  AQ: "b1@2 b1!2 c2@2 b1!2 ~@2 b1!2 c2@2 b1!2", AR: "~@2 b1!2 c2@2 b1!2 d2 a1@3 c2@2 g1 f#1",
  AS: "[e1@24 d2 e2 g2 a2!2 b2 d3 e3]/2", AT: "e1@2 e1@2 e1@2 ~ e1 b1@2 d2 a1@2 d2 g1 d2",
  AU: "e1@2 e1@2 e1@2 ~ e1 b1@2 d2 a1@2 d2 g1 e1", AV: "g1@2 e1 ~ e1@2 ~ e1 b1@2 d2 a1@2 d2 g1 d2",
  AW: "[e1@2 e1@2 e1@2 e1@2 e1@16 e1 ~@7]/2", AX: "~@8 d2@2 d2@2 d2@2 d2 e2", AY: "f2 ~ c2@2 c2@4 d2@2 e1@2 e1@2 d2@2",
  AZ: "f2@2 e1@2 e1@2 e1@2 d2@2 d2@2 d2@2 d2 e2", BA: "c2!4 a1@2 a1@2", BB: "a1 ~ a1 a1@3 e1@2 f1@4 f1@4",
  BC: "f1@2 f1@2 f1@2 f1@2 e1@2 e1@2 e1@2 ~ e1", BD: "b1@2 d2 a1@2 d2 g1 e1 b1@4 a#1@4", BE: "g1@2 f#1@2 e2 e1 e2 e1",
  BF: "[e2@2 e1@2 e2@2 e1@2 e1@2 e1!2 e2@2 e1 e1@2 ~@15]/2",
})).s("gm_electric_bass_finger").gain(0.4)

// other · overdriven guitar
const overdriven_guitar_4 = note("<~@2 A ~@31 B C D C D C D ~@23 E@3 F G@3 ~ H I J K L ~@33>".pickRestart({
  A: "~@4 [e3,g3]!2 e2!2 ~@4 [e3,g3]!2 e2!2", B: "~@3 e4", C: "e4@5 f#4 ~@2", D: "d4@7 e4 c4@8",
  E: "[~@2 b3@2 e4@2 b3@2 ~@2 b3@2 e4@6 g#3@2 b3@3 g#3 b3 ~ e4 ~ e4@6 g#3 ~ b3@4 ~@2 b3@4 ~@2]/3",
  F: "b3@6 b3@3 c#4 b3 c#4 e4@4", G: "[e4 d#4@17 ~@6]/3", H: "e2!2 d5@2 e2!2 e5@2", I: "e2!2 f5@2 e2!2 g5@2",
  J: "a5@8 a5@2 a5!2 a5@3 ~", K: "~@8 a3 b3 d4 e4!2 f#4 a4 b4", L: "b4@2 ~@2 [g4,b4]@3 ~@9",
})).s("gm_overdriven_guitar").gain(0.45).pan(1)

// other · overdriven guitar · soft notes · Em
const overdriven_guitar_soft_2 = note("<[~@4 [e3,g3]!2 e2!2 ~@4 [e3,g3]!2 e2!2]!2 ~@108>")
  .s("gm_overdriven_guitar").gain(0.15).pan(1)

// other · alto sax
const alto_sax = note("<~@14 A B@2 ~@22 C D@2 ~@5 E F E F ~@30 G H ~@2 I J@2 K@2 L@2 ~ M@4 ~ N O N P ~@8>".pickRestart({
  A: "~@5 a3 b3@2", B: "[~@2 b3@2 b3@3 c4 a3@2 a3 g3 a3@2 b3 c4@2 c4 c4@4 b3 f#3@9, ~@8 b3 ~@23]/2",
  C: "~@2 a3@2 b3@4 ~@2 b3@2 b3@3 c4", D: "[a3@2 a3 g3 a3@2 b3 c4@2 c4 c4@4 b3 f#3@9 ~@8, b3 ~@31]/2",
  E: "~@2 b3 b3@2 b3@2 e4@3 e4 e4@2 e4@2 d4", F: "b3 ~@3", G: "~@5 b2!2 a2", H: "~ b2!2 a2 ~@4", I: "~@10 b3!2 b3@4",
  J: "[~ d4@2 b3 d4@4 ~@2 d4 b3 d4@2 b3 d4@2 b3 d4@4 b3 f#3 f#3@8]/2", K: "[~@10 b3 b3@2 b3@2 c4@2 b3@7 ~@8]/2",
  L: "[~@10 b3 b3@2 b3@2 c4@2 d4@4 b3@2 c4 a3@8, ~@24 b3 ~@7]/2",
  M: "[~@10 b3 b3@2 b3@2 e4@3 e4 e4@2 e4@2 d4 b3@4 ~@4]/2", N: "~@7 d4", O: "d4@2 d4@2 d4@2 d4 d4@9",
  P: "d4@2 d4 d4@2 e4 b3@2 c4 c4@3 ~@4",
})).s("gm_alto_sax").gain(0.32).pan(0.2)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@21 A@2 B@4 C ~@18 D E D E D F ~@40 A@2 B@4 G ~@11>".pickRestart({
  A: "[~ [e3,e4,g4]@2 [e3,e4]]/2", B: "[f4 e4 [e3,e4,g4]@4 [e3,e4]@2, a3 ~@3]/2", C: "f4 e4 ~@2, a3 ~", D: "[e3,e4,g4]",
  E: "[e3,e4]@2 f4 e4, ~ a3", F: "[e3,e4]@2 [f3,f4] [e3,e4]", G: "[f3,f4] [e3,e4] ~@2",
})).s("gm_string_ensemble_1").gain(0.32)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
// … 51 more lines

More by Metallica