Strudelify

Santa Monica

Everclear

KeyG majorTempo100 bpm
0:00/0:00
// Santa Monica — Everclear
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Guitar x's" named as a guitar, played on electric guitar clean (its breath noise patch is not one)
// note: duplicate parts dropped: ch 11 "Melody, Completely Revised" distortion guitar (copy of ch 12 "Melody 2 (Dubbed)" harpsichord)
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note("<A@3 B A@3 C D E A F A@3 G H I A J K L A M N O P Q N O P A@3 R ~@46>".pickRestart({
  A: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4]!2", B: "[g3,d4,g4,b4,d5,g5]@7 ~",
  C: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4] [e3,a3,d4]", // G5 Em7 Dsus2
  D: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@4 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [b3,e4,b4,e5,g#5] [b3,e4,b4,e5,g#5]@2 [g4,b4]@2", // D E G
  E: "[g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 ~@4 [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5] a3 [a3,e4,a4]@3 ~", // C A5
  F: "[g3,d4,g4,b4,d5,g5]@11 ~@5", G: "[g3,d4,g4]@2 [g3,d4,g4]@2 ~@4 [g3,d4,g4]@2 [g3,d4,g4]@2 [g3,d4,g4]@2 g2 e3",
  H: "[a3,d4,a4,d5,f#5]!2 ~@2 [a3,d4,a4,d5,f#5]!2 [b3,e4,b4,e5,g#5] ~", // D E
  I: "[g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2 ~@4 [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2 [a3,e4,a4]@2 [a3,e4,a4]!2", // C A5
  J: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 e2!2", K: "[a3,d4,a4,d5,f#5]!2 ~@2 [a3,d4,a4,d5,f#5]!2 [b3,e4,b4,e5,g#5] e2",
  L: "[g3,c4,g4,c5,e5]!2 ~@2 [g3,c4,g4,c5,e5]!2 [a3,e4,a4]!2", M: "[g3,d4,g4,b4,d5,g5]@15 ~",
  N: "[g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 ~@4 [g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] ~", // C D
  O: "[g3,d4,g4]@2 [g3,d4,g4]@2 ~@4 [g3,d4,g4]@2 [g3,d4,g4]@2 [b3,e4,b4,e5,g5]@2 [b3,e4,b4,e5,g5] [a3,d4,a4,d5,f#5]", // G5 Em D
  P: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@4 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5] [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2", // D C
  Q: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [a3,d4,a4,d5,f#5]!2", R: "[g3,d4,g4,b4,d5]@15 ~",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · electric guitar clean · "Guitar x's"
const electric_guitar_clean_2 = note(`<
  ~ A@2 ~@2 A ~ A B C D ~ A@4 E F A@2 E G H ~ I J K L I J K L@3 ~ M ~@19 N O P O I J K ~ N O P O ~@14
>`.pickRestart({
  A: "~@4 [g3,d4,g4]!4 ~@8", B: "~@4 [d4,a4,c5]@3 ~@9", C: "~@4 [c4,g4,c5]!4 ~@8", D: "~@4 [g3,d4,g4]@3 ~@9",
  E: "~@4 [g3,d4,g4]!4 ~@6 [e4,b4,e5]!2", F: "~@4 [c4,g4,c5]!2 [c4,c5] ~@9", G: "~@4 [c4,g4,c5]!3 ~@7 [a3,e4,a4]!2",
  H: "~@6 [g3,d4,g4]!2 ~@8", I: "~@4 [c4,g4,c5]!4 ~@6 [d4,a4,d5] ~", J: "~@4 [g3,d4,g4,b4]!4 ~@8",
  K: "~@4 [d4,a4,d5]!2 ~@10", L: "~@4 [g3,d4,g4]!2 ~ [g3,d4,g4] ~@8", M: "~@7 [g3,d4,g4] ~@8",
  N: "~@4 [c4,g4,c5]!3 ~@9", O: "~@4 [d4,g4,b4]!3 ~@9", P: "~@4 [c5,e5]!2 ~@10",
})).s("gm_electric_guitar_clean").gain(0.18)

// chords · electric guitar clean · "Guitar 2"
const electric_guitar_clean_3 = note(`<
  ~@11 A B@4 C D B@2 C E B F ~@11 G H I J K L M N G@4 K L G@2 ~@2 G O P Q R S T U V W P Q R S P Q G ~@7 X@2 ~@2
>`.pickRestart({
  A: "~@4 g5 d5 b4 g4", B: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4]!2",
  C: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@4 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [b3,e4,b4,e5,g#5] [b3,e4,b4,e5,g#5]@2 ~@2", // D E
  D: "[g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2 ~@3 [g4,c5,e5] [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5] a3 [a3,e4,a4]@3 ~", // C A5
  E: "[g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2 ~@3 [g4,c5,e5] [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5] a3 [a3,e4,a4]@2 ~@2", // C A5
  F: "[g3,d4,g4,b4,d5,g5]@15 ~", // G
  G: "[g3,d4,g4]@2 [g3,d4,g4]@2 d6 d6@2 ~ [g3,d4,g4,b4]@2 [g3,d4,g4]@2 [e3,d4,g4]@2 [e3,a3,d4,g4]@2", // G5 G G5 Em7
  H: "[g3,d4,g4,b4] [g3,d4,g4] ~@2 [g3,d4,g4] [g3,d4,g4,b4] [e3,d4,g4] [e3,a3,d4,g4]", // G G5 G Em7
  I: "[g3,d4,g4,b4]@2 [g3,d4,g4]@2 d6 d6@2 [g3,d4,g4] [g3,d4,g4,b4]@2 [g3,d4,g4]@2 [e3,d4,g4]@2 [e3,a3,d4,g4]@2", // G G5 G G5 Em7
  J: "[g3,d4,g4]!2 ~@2 [g3,d4,g4,b4] [g3,d4,g4] [e3,d4,g4] e3", // G5 G G5 Em7
  K: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5]@2 e5!4 [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [b3,e4] [b3,e4,b4,e5]@2 [g3,c4,g4,c5]@2", // D D5 E5 C5
  L: "[g3,c4,g4,c5] [g4,c5] [g3,c4,g4,c5]@2 b5 g6!2 g4 [g3,c4,g4,c5]@2 [g3,d4,g4] [a3,e4,a4] [a3,e4,a4]@2 [a3,e4,a4] [g3,d4,g4]", // C5 G5 A5 G5
  M: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4] [e3,a3,d4,g4]", N: "[g3,d4,g4]@3 d6@4 ~@5 a4@3 ~",
  O: "[g3,d4,g4]@11 ~ [a3,d4,a4,d5]@3 [g3,d4,g4,c5]", // G5 D5 Gsus4
  P: "[g3,c4,g4,c5]@2 [g3,c4,g4,c5]@2 ~@3 [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4,c5] [a3,d4,a4,d5] [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [d4,g4,b4]", // C5 D5 G
  Q: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@3 [g3,d4,g4,b4] [g3,d4,g4]@2 [g3,d4,g4] b3 [b3,e4,b4,e5,g#5]@2 [b3,e4,b4,e5,g#5] [a3,d4,a4,d5,f#5]", // G G5 E D
  R: "[a3,d4,a4,d5]@2 [a3,d4,a4,d5]@2 ~@2 a3 [a3,d4,a4,d5] [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4,c5] [d4,g4]", // D5 C5 G5
  S: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@3 d5 [g3,d4,g4]@2 [g3,d4,g4] [a3,e4,a4] [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [d4,g4]", // G G5 A5 D5 G5
  T: "[g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 ~@4 [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5] [a3,d4,a4,d5,f#5] [a3,d4,a4,d5,f#5]@2 ~ [d4,g4]", // C D G5
  U: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@4 [g3,d4,g4,b4]@2 [g3,d4,g4,b4] [b3,e4,b4,e5,g5] [b3,e4,b4,e5,g5]@2 [b3,e4,b4,e5,g5] [a3,d4,a4,d5,f#5]", // G Em D
  V: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@2 [b4,e5]@2 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5] [g3,c4,g4,c5,e5]@2 [d4,g4] g4", // D E5 D C G5
  W: "[g3,d4,g4]@11 ~ [a3,d4,a4,d5]@3 [a3,d4,g4,c5]", X: "[[g3,d4,g4]@15 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · distortion guitar · "Guitar 3"
const distortion_guitar = note(`<
  ~@15 A B C D E F G D H I J K L I J K D@3 M ~@20 I J K L I J K N O P Q R O P Q ~@11
>`.pickRestart({
  A: "[g3,d4,g4]@2 [g3,d4,g4]@2 ~@4 [g3,d4,g4]@2 [g3,d4,g4]@2 [g3,d4,g4]@2 g2 e3", // G5
  B: "[a3,d4,a4,d5,f#5]!2 ~@2 [a3,d4,a4,d5,f#5]!2 [b3,e4,b4,e5,g#5] ~", // D E
  C: "[g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2 ~@4 [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2 [a3,e4,a4]@2 [a3,e4,a4]!2", // C A5
  D: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4]!2", E: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 e2!2",
  F: "[a3,d4,a4,d5,f#5]!2 ~@2 [a3,d4,a4,d5,f#5]!2 [b3,e4,b4,e5,g#5] e2", // D E
  G: "[g3,c4,g4,c5,e5]!2 ~@2 [g3,c4,g4,c5,e5]!2 [a3,e4,a4]!2", H: "[g3,d4,g4,b4,d5,g5]@15 ~",
  I: "[g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 ~@4 [g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] ~", // C D
  J: "[g3,d4,g4]@2 [g3,d4,g4]@2 ~@4 [g3,d4,g4]@2 [g3,d4,g4]@2 [b3,e4,b4,e5,g5]@2 [b3,e4,b4,e5,g5] [a3,d4,a4,d5,f#5]", // G5 Em D
  K: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@4 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5] [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5]@2", // D C
  L: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [a3,d4,a4,d5,f#5]!2", M: "[g3,d4,g4,b4,d5]@15 ~", N: "[g3,d4,g4]@11 ~@5",
  O: "[g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 ~@4 [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5] [a3,d4,a4,d5,f#5] [a3,d4,a4,d5,f#5]@2 ~ [d4,g4]", // C D G5
  P: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@4 [g3,d4,g4,b4]@2 [g3,d4,g4,b4] [b3,e4,b4,e5,g5] [b3,e4,b4,e5,g5]@2 [b3,e4,b4,e5,g5] [a3,d4,a4,d5,f#5]", // G Em D
  Q: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@2 [b4,e5]@2 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5] [g3,c4,g4,c5,e5]@2 [d4,g4] g4", // D E5 D C G5
  R: "[g3,d4,g4]@2 [g3,d4,g4]@2 ~@4 [g3,g4]@2 [g3,g4] a3 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5]", // G5 G D C
})).s("gm_distortion_guitar").gain(0.46)

// other · electric guitar clean · "Guitar 4"
const electric_guitar_clean_4 = note(`<
  ~@43 A ~ B C D@4 ~@2 E F G@3 H I@2 ~ J K L M N O N P ~ Q ~ R ~ S ~ T@2 ~@2
>`.pickRestart({
  A: "~@6 a4 b4", B: "~@12 [d5,g5,b5]!4", C: "[d5,g5,b5]@2 [d5,g5,b5]@9 ~ g5@2 e5@2", D: "[g5@3 ~ e5@3 ~ d5@51 ~@5]/4",
  E: "~@8 d6 e6 g6 a6 g6 a6 a6@2", F: "b6@10 a6@2 g6 ~@3", G: "[c6@3 ~@9 [g4,g5]@35 ~]/3",
  H: "e6 d6 b5 a5 g5 e5 g5 a5 g5 e5 g5 a5 g5 e5 g5 a5", I: "[b5@19 ~@13]/2", J: "a6 b6@6 ~ a#6@3 ~ a6@3 ~",
  K: "g6@2 [g5,g6]!6 [g5,g6]@2 [g5,g6]!6", L: "[g5,g6]@2 [g5,g6]!6 [g5,g6]@2 [g5,g6]@2 [g5,g6]@2 [g5,g6]@2",
  M: "[g5,g6]@2 [g5,g6]@2 [g5,g6]!4 [g5,g6]@2 [g5,g6]@2 [g5,g6]!2 [g5,g6]@2", // G
  N: "[g5,g6]@2 [g5,g6]@2 [g5,g6]!6 [g5,g6]@2 [g5,g6]!4", // G
  O: "[g5,g6]@2 [g5,g6]@2 [g5,g6]!6 [g5,g6]@2 [g5,g6]@2 [g5,g6]@2", P: "[g5,g6]!2 [g5,g6]@2 g5@4 ~@8",
  Q: "~@2 g5@2 a#4 ~@3", R: "g5!2 g5@2 [d5,g5] [d5,g5]@3 [e4,a4]@2 ~@6", S: "~ g4 [a4,d5,g5]@2 ~@4",
  T: "[[g3,d4,g4]@15 ~]/2", // G5
})).s("gm_electric_guitar_clean").gain(0.46)

// chords · distortion guitar · "Guitar 5"
const distortion_guitar_2 = note(`<
  ~@24 A B C D A B C E F E G H I J K L M N O H@4 L M H@2 ~@2 H P Q R S T A B C U Q R S T Q R H ~@7 V@2 ~@2
>`.pickRestart({
  A: "[g3,d4,g4,c5,e5]@2 [g3,d4,g4,c5,e5]@2 ~@4 [g3,c4,g4,c5,e5]@2 [g3,c4,g4,c5,e5] [a3,d4,a4,d5,f#5] [a3,d4,a4,d5,f#5]@2 ~ [d4,g4]", // C D G5
  B: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@4 [g3,d4,g4,b4]@2 [g3,d4,g4,b4] [b3,e4,b4,e5,g5] [b3,e4,b4,e5,g5]@2 [b3,e4,b4,e5,g5] [a3,d4,a4,d5,f#5]", // G Em D
  C: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5]@2 ~@2 [b4,e5]@2 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5] [g3,c4,g4,c5,e5]@2 [d4,g4] g4", // D E5 D C G5
  D: "[g3,d4,g4]@2 [g3,d4,g4]@2 ~@4 [g3,g4]@2 [g3,g4] a3 [a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5,f#5] [g3,c4,g4,c5,e5]", // G5 G D C
  E: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4]!2", F: "[g3,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4]!2",
  G: "[g3,d5]@7 ~ b6@3 ~ g4@3 ~, [d4,g4,b4]@11 ~@5", // G5 G
  H: "[g3,d4,g4]@2 [g3,d4,g4]@2 d6 d6@2 ~ [g3,d4,g4,b4]@2 [g3,d4,g4]@2 [e3,d4,g4]@2 [e3,a3,d4,g4]@2", // G5 G G5 Em7
  I: "[g3,d4,g4,b4] [g3,d4,g4] ~@2 [g3,d4,g4] [g3,d4,g4,b4] [e3,d4,g4] [e3,a3,d4,g4]", // G G5 G Em7
  J: "[g3,d4,g4,b4]@2 [g3,d4,g4]@2 d6 d6@2 [g3,d4,g4] [g3,d4,g4,b4]@2 [g3,d4,g4]@2 [e3,d4,g4]@2 [e3,a3,d4,g4]@2", // G G5 G G5 Em7
  K: "[g3,d4,g4]!2 ~@2 [g3,d4,g4,b4] [g3,d4,g4] [e3,d4,g4] e3", // G5 G G5 Em7
  L: "[a3,d4,a4,d5,f#5]@2 [a3,d4,a4,d5]@2 e5!4 [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [b3,e4] [b3,e4,b4,e5]@2 [g3,c4,g4,c5]@2", // D D5 E5 C5
  M: "[g3,c4,g4,c5] [g4,c5] [g3,c4,g4,c5]@2 b5 g6!2 g4 [g3,c4,g4,c5]@2 [g3,d4,g4] [a3,e4,a4] [a3,e4,a4]@2 [a3,e4,a4] [g3,d4,g4]", // C5 G5 A5 G5
  N: "[g3,d4,g4]!2 ~@2 [g3,d4,g4]!2 [e3,d4,g4] [e3,a3,d4,g4]", O: "[g3,d4,g4]@3 d6@4 ~@5 a4@3 ~",
  P: "[g3,d4,g4]@11 ~ [a3,d4,a4,d5]@3 [g3,d4,g4,c5]", // G5 D5 Gsus4
  Q: "[g3,c4,g4,c5]@2 [g3,c4,g4,c5]@2 ~@3 [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4,c5] [a3,d4,a4,d5] [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [d4,g4,b4]", // C5 D5 G
  R: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@3 [g3,d4,g4,b4] [g3,d4,g4]@2 [g3,d4,g4] b3 [b3,e4,b4,e5,g#5]@2 [b3,e4,b4,e5,g#5] [a3,d4,a4,d5,f#5]", // G G5 E D
  S: "[a3,d4,a4,d5]@2 [a3,d4,a4,d5]@2 ~@2 a3 [a3,d4,a4,d5] [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [g3,c4,g4,c5] [g3,c4,g4,c5]@2 [g3,c4,g4,c5] [d4,g4]", // D5 C5 G5
  T: "[g3,d4,g4,b4]@2 [g3,d4,g4,b4]@2 ~@3 d5 [g3,d4,g4]@2 [g3,d4,g4] [a3,e4,a4] [a3,d4,a4,d5]@2 [a3,d4,a4,d5] [d4,g4]", // G G5 A5 D5 G5
  U: "[g3,d4,g4]@11 ~ [a3,d4,a4,d5]@3 [a3,d4,g4,c5]", V: "[[g3,d4,g4]@15 ~]/2",
})).s("gm_distortion_guitar").gain(0.38)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@11 A B@3 C D E B@2 D E B F G H I J G H I B@3 K B@4 L M B N B@4 L O B@2 L O B P Q R S T Q R S T Q R S T U R V B@8 W@2
  ~
>`.pickRestart({
  A: "~@4 c3 b2 a2 b2", B: "g2!2 ~@2 g2!2 e2!2", C: "g2@2 g2@2 ~@4 g2@2 g2@2 e2@2 e3 d3",
  D: "d3@2 d3@2 ~@4 d3@2 d3 e3 e3@2 e3@2", E: "c3@2 c3@2 ~@4 c3@2 c3 a2 a2@2 a2@2", F: "g2!4 c3 b2 a2 b2",
  G: "c3@2 c3@2 c3@2 c3@2 c3@2 c3 d3 d3@2 d3@2", H: "g2@2 g2@2 g2@2 g2@2 g2@2 g2 b2 e3@2 e3@2", I: "d3!6 c3!2",
  J: "g2@2 g2@2 g2@2 g2@2 g2@2 g2 b2 d3@2 d3@2", K: "g2@11 ~ e3@3 ~", L: "d3@2 d3@2 d3@2 d3@2 d3@2 d3 e3 e3@2 e3@2",
  M: "c3@2 c3@2 c3@2 c3@2 c3@2 c3 a2 a2@2 a2@2", N: "g2@2 g2@2 g2@4 g2@3 ~ e3@3 ~", O: "c3!6 a2!2",
  P: "g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 d3@3 c3", Q: "c3!6 d3!2", R: "g2@2 g2@2 g2!2 g2@2 g2@2 g2 b2 e3@2 e3@2",
  S: "d3@2 d3@2 d3@2 d3@2 d3@2 d3 c3 c3@2 c3 ~", T: "g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 d3!4",
  U: "c3@2 c3@2 c3!4 c3@2 c3@2 d3@2 d3@2", V: "d3@2 d3@2 d3!2 d3@2 d3@2 d3@2 c3@2 c3@2", W: "[g2@27 ~ g2@3 ~]/2",
})).s("gm_electric_bass_pick").gain(0.45)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@3 B ~@3 C ~@9 D ~@16 E ~@7 F ~@16 G ~@5>".pickRestart({
  A: "~@7 x", B: "~@10 x ~ x!3 ~", C: "~@12 x!4", D: "~@15 x", E: "~@14 x!2", F: "~@13 x!3", G: "~@3 x",
})).gain(0.5)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A B ~ C D ~ E ~ D F G ~ H ~@10 H ~@14 I ~@10 D ~@24 D ~ F H ~@3>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~@5 x ~@10", C: "~@7 x", D: "~@3 x ~@4", E: "~@3 x ~@3 x", F: "~@3 x!3 ~@2", G: "x ~@2 x!3 ~@2",
  H: "~ x ~@6", I: "~ x",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@9 B ~@22 B ~ C D ~@21>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@14 x!2", C: "~@10 x!3 ~@3", D: "~@7 x",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A ~@7 B ~@38 C ~@16 D E ~ F ~@2 G ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x ~@6", D: "~ x!3", E: "x!4", F: "~@7 x", G: "x",
})).gain(0.45)

// drums · high tom
const high_tom = s("ht").struct("<~@58 [~@5 x ~@2] ~@2 x ~@19>").gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@4 A ~@2 A@2 ~@3 A ~@3 A ~@5 A ~ A ~@5 A@2 ~@3 A ~@3 A ~@3 B@2 C ~ A ~@3 A@2 D A E A ~@3 F ~ G H I J K ~@10
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "x!2 ~@6", D: "~ x ~@3 x ~ x", E: "x!2", F: "~ x ~@2", G: "~@3 x ~@2 x ~", H: "x ~@9 x!6",
  I: "x!2 ~@10 x!4", J: "~@6 x!5 ~ x ~@3", K: "~@2 x!5 ~@9",
// … 17 more lines

More by Everclear