Strudelify
Obsession cover art

The Electric 80s

Obsession

Animotion

KeyG majorTempo115 bpm
0:00/0:00
// Obsession — Animotion
// 115 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "Pad 3 (polysynth)" pad poly (copy of ch 4 "Synth Brass 1" synth brass 1)
// note: Full arrangement: all 114 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@36 A B C D@2 E F G ~@3 H@2 ~@3 I ~@7 J@7 K@2 ~@11 L ~@11 M N O P Q R S T U V@3 W@4 X@5 Y
>`.pickRestart({
  A: "~@7 [c3,g3]@6 [d3,a3]@6 [c3,g3]@4 [d3,a3]@4 ~@5", B: "~@8 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@4",
  C: "~@8 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@4", // F5 G5 F5 G5
  D: "[~@8 [f3,c4]@6 [g3,d4]@6 [f3,c4]@4 [g3,d4]@15 ~ [c3,g3]@6 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@3]/2", // F5 G5 F5 G5 C5 D5 C5 D5
  E: "~@9 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@3", F: "~@9 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@3",
  G: "~@9 [f3,c4]@6 [g3,d4]@6 [f3,c4]@4 [g3,d4]@7", H: "[~@31 [c4,f4]@3 ~@3 [b3,e4]@3 ~@3 [a3,d4]@10 ~@11]/2",
  I: "[c4,f4]@3 ~@3 [b3,e4]@3 ~@23", // F5 E5
  J: "[~@14 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@12 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@12 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@12 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@10 ~@6 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@12 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@12 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@2]/7", // C5 D5 C5 D5 C5 D5 C5 D5 …
  K: "[~@14 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@8 ~@26]/2", L: "~@5 [c4,f4]@3 ~@3 [b3,e4]@3 ~@3 [a3,d4]@10 ~@5",
  M: "~@21 [c3,g3]@5 [d3,a3]@6", N: "~ [c3,g3]@4 [d3,a3]@4 ~@12 [c3,g3]@5 [d3,a3]@6",
  O: "~ [c3,g3]@4 [d3,a3]@4 ~@12 [f3,c4]@6 [g3,d4]@5", P: "~ [f3,c4]@4 [g3,d4]@4 ~@13 [f3,c4]@5 [g3,d4]@5",
  Q: "~@2 [f3,c4]@4 [g3,d4]@10 ~@6 [c3,g3]@5 [d3,a3]@5", R: "~ [c3,g3]@2 [d3,a3]@2 ~@6 [c3,g3]@3 [d3,a3]@2",
  S: "~ [c3,g3]@2 [d3,a3]@2 ~@6 [f3,c4]@3 [g3,d4]@2", T: "~@3 [f3,c4]@4 [g3,d4]@4 ~@12 [f3,c4]@5 [g3,d4]@4",
  U: "~@3 [f3,c4]@4 [g3,d4]@8 ~@8 [c3,g3]@5 [d3,a3]@4", // F5 G5 C5 D5
  V: "[~@3 [c3,g3]@4 [d3,a3]@4 ~@12 [c3,g3]@6 [d3,a3]@6 [c3,g3]@4 [d3,a3]@4 ~@13 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@12 [f3,c4]@5 [g3,d4]@3]/3", // C5 D5 C5 D5 C5 D5 F5 G5 …
  W: "[~@4 [f3,c4]@4 [g3,d4]@15 ~ [c3,g3]@6 [d3,a3]@6 [c3,g3]@4 [d3,a3]@4 ~@12 [c3,g3]@6 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@12 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@12 [f3,c4]@5 [g3,d4]@2]/4", // F5 G5 C5 D5 C5 D5 C5 D5 …
  X: "[~@5 [f3,c4]@4 [g3,d4]@8 ~@8 [c3,g3]@6 [d3,a3]@6 [c3,g3]@4 [d3,a3]@4 ~@13 [c3,g3]@5 [d3,a3]@6 ~ [c3,g3]@4 [d3,a3]@4 ~@12 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@12 [f3,c4]@5 [g3,d4]@6 ~ [f3,c4]@4 [g3,d4]@4 ~@12 [c3,g3]@6]/5", // F5 G5 C5 D5 C5 D5 C5 D5 …
  Y: "[d3,a3]@6 [c3,g3]@5 [d3,a3]@4 ~@17", // D5 C5 D5
})).s("gm_distortion_guitar").gain(0.32)

// bass · synth bass 2 · "Synth Bass2"
const bass = note(`<
  ~@4 A@2 B C A@2 B C D@4 E F G H I@3 J K L M@4 N O P Q@4 R S T U@4 V W X Y Z@4 AA AB AC@5 AD AE AF AG AD AE AF AG AD AE
  AF AH@4 AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS
  BT BU ~
>`.pickRestart({
  A: "d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2",
  B: "g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2",
  C: "g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~",
  D: "[~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~@2 g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~]/4",
  E: "a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2",
  F: "d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2",
  G: "d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2",
  H: "~ g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2",
  I: "[~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~@2 f2@2 g2@2 f2@2 g2@2 a2@2 g2@2]/3",
  J: "f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2",
  K: "a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2",
  L: "c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2",
  M: "[c2@2 d2@2 g1@2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 ~ c2@2 d2@2 e2@2]/4",
  N: "d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2",
  O: "g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2",
  P: "a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2",
  Q: "[d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 ~]/4",
  R: "e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2",
  S: "e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2",
  T: "a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~",
  U: "[a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2]/4",
  V: "~ a1@2 a2@2 ~ a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2",
  W: "d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2",
  X: "d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2",
  Y: "g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~@2 g2 ~ g1@2 g2@2 g2",
  Z: "[~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 ~ g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2]/4",
  AA: "g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2",
  AB: "c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2",
  AC: "[c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 ~ g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2]/5",
  AD: "g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2",
  AE: "g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2",
  AF: "d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2",
  AG: "d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2",
  AH: "[d2@2 c2@2 ~ d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~@2 d2 ~ d2 ~ d2 ~ d2 ~]/4",
  AI: "c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  AJ: "f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  AK: "g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AL: "c2@2 d2@2 c2@2 d2@2 e2@2 ~ d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2",
  AM: "~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2",
  AN: "~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2",
  AO: "~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~@2 d2 ~",
  AP: "d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AQ: "d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  AR: "g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  AS: "g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~@2 a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2",
  AT: "~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2",
  AU: "~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2",
  AV: "~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2",
  AW: "~ g2 ~@2 g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AX: "d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AY: "d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  AZ: "g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2",
  BA: "~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2",
  BB: "~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~ d2",
  BC: "~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~ g2",
  BD: "~ g2 ~ g2 ~ f2@2 g2@2 ~ f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2 ~",
  BE: "g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2 ~",
  BF: "d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2 ~",
  BG: "d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~@2 g2 ~ g2",
  BH: "~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~ g2",
  BI: "~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~ d2",
  BJ: "~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~ d2",
  BK: "~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 ~ e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2 ~",
  BL: "g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2 ~",
  BM: "g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2 ~",
  BN: "d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 d1@2 d2 ~ d2 ~ d2 ~",
  BO: "d2 ~@2 d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~ g2",
  BP: "~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~ g2",
  BQ: "~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~ d1@2 d2 ~ d2 ~ d2",
  BR: "~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 ~ c2@2 d2@2 d1@2 d2 ~ d2 ~",
  BS: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2 d2@2 c2@2 d2@2 e2@2 d2@2 c2@2 d2@2 g1@2 g2 ~ g2 ~",
  BT: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ f2@2 g2@2 f2@2 g2@2 a2@2 g2@2 f2@2 g2@2 g1@2 g2 ~ g2 ~",
  BU: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g1@2 g2@2 g2 ~ g2 ~ a1@2 a2@2 a2 ~ a2 ~@7",
})).s("gm_synth_bass_2").gain(0.4)

// bass · slap bass 1
const bass_2 = note(`<
  ~@36 A@3 B C@3 D E ~@3 F@2 ~@10 G@3 H G@3 I@7 J K L ~@15 M@4 N O P Q R S T U V W X@4 Y Z AA ~
>`.pickRestart({
  A: "[~@7 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~@2 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~ f1@2 g1@4 g2@2 ~@2 g2@2 g1@4 g2@3 ~@5]/3",
  B: "~@8 f1@2 g1@4 g2@2 ~@2 g2@2 g1@4 g2@3 ~@5",
  C: "[~@8 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~@2 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~ f1@2 g1@4 g2@2 ~@2 g2@2 g1@4 g2@3 ~@4]/3",
  D: "~@9 f1@2 g1@4 g2@2 ~@2 g2@2 g1@2 ~@2 g1@4 g2@2 ~", E: "~ a1@5 a2@2 ~@24",
  F: "[~@31 c2@2 ~@2 c2@2 ~@2 c2@4 ~@21]/2",
  G: "[~@14 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~ f1@2 g1@4 g2 ~@3 g2@2 g1@4 g2@2]/3",
  H: "~@14 f1@2 g1@4 g2 ~@3 g2@2 g1@4 g2@2",
  I: "[~@14 f1@2 g1@4 g2@3 ~ g2@2 g1@2 ~@2 g1@4 g2@2 ~@2 a1@4 a2@3 ~ c1@2 d1@4 d2 ~@3 d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~@2 f1@2 g1@4 g2@2 ~@2 g2@2 g1@4 g2@3 ~@13 f1@2 g1@4 g2@2 ~@2 g2@2 g1@3 ~ g1@4 g2@2 ~@2 a1@4 a2@2 ~@2 c1@2 d1@4 d2 ~@3 d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2 ~@4 d2@2 d1@4]/7",
  J: "d2@15 ~ f1@2 g1@4 g2@2 ~@2 g2@2 g1@4", K: "g2@3 ~@13 f1@2 g1@4 g2@2 ~@2 g2@2 g1@2 ~@2",
  L: "g1@2 g2 ~ a1@2 a2 ~@9",
  M: "[~@21 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~ f1@2 g1@4 g2@2 ~@2 g2@2 g1@4 g2@3 ~@14 f1@2 g1@4 g2@2 ~@2]/4",
  N: "g2 g1@2 g2 ~@7 c1 d1@2 d2 ~", O: "d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2@2 ~@2", P: "d2@2 d1@4 d2@15 ~ f1@2 g1@5 g2@2 ~",
  Q: "~ g2@2 g1@4 g2@3 ~@13 f1@2 g1@4 g2@2 ~", R: "~ g2@2 g1@2 ~@2 g1@4 g2@2 ~@2 a1@4 a2@2 ~@2 c1@2 d1@4 d2@2 ~",
  S: "~ d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2@2 ~", T: "~ d2@2 d1@4 d2@15 ~@2 f1@2 g1@4 g2@2",
  U: "~@2 g2@2 g1@4 g2@3 ~@13 f1@2 g1@4 g2@2", V: "~ g2 g1 ~ g1@2 g2 ~ a1@2 a2 ~ c1 d1@2 d2",
  W: "~@2 d2@2 d1@4 d2@15 ~ c1@2 d1@4 d2@2",
  X: "[~@3 d2@2 d1@4 d2@15 ~ f1@2 g1@4 g2@2 ~@2 g2@2 g1@4 g2@3 ~@13 f1@2 g1@4 g2@2 ~@2 g2@2 g1@2 ~@2 g1@4 g2@2 ~@2 a1@4 a2@2 ~@2 c1@2 d1@4 d2@2 ~@2 d2@2 d1@4 d2@15 ~@2 c1@2 d1@4]/4",
  Y: "d2@2 ~@2 d2@2 ~@3 d2@15 ~@2 f1@2 g1@4, ~@3 d1@3 ~@10", Z: "g2@2 ~@2 g2@2 g1@4 g2@3 ~@13 f1@2 g1@4",
  AA: "g2 ~ g2 g1 ~ g1@2 g2 ~ a1@2 a2 ~@4",
})).s("gm_slap_bass_1").gain(0.8)

// chords · synth brass 1
const synth_brass_1 = note("<~@4 A B C D A B C E F ~@55 G H I@3 J K L M ~@23 N O P Q R S T U V W@4 ~>".pickRestart({
  A: "[a4,d5,a5,d6]@5 ~@15 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@3", // D5 Am
  B: "[a4,c5,a5,c6]@3 ~@2 [a4,d5,a5,d6]@4 ~@15 [a4,d5,a5,d6]@4 ~@4", // Am D5
  C: "[a4,c5,a5,c6]@4 ~ [g4,b4,g5,b5]@3 ~@3 [g4,b4,g5,b5]@3 ~@2 [g4,b4,g5,b5]@14 ~@2", // Am G
  D: "[g4,b4,g5,b5]@4 ~ [f4,a4,f5,a5]@3 ~@3 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@3 ~@5", // G F Am
  E: "[g4,b4,g5,b5]@4 ~@2 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@3 ~@5", // G F Am
  F: "~ [a4,d5,a5,d6]@4 ~@27", G: "~@6 [a4,c5,a5,c6]@4 ~@4 [a4,d5,a5,d6]@5 ~@13",
  H: "~@2 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@2 [a4,d5,a5,d6]@4 ~@9", // Am D5
  I: "[~@7 [a4,d5,a5,d6]@4 ~@4 [a4,c5,a5,c6]@4 ~ [g4,b4,g5,b5]@3 ~@2 [g4,b4,g5,b5]@3 ~@3 [g4,b4,g5,b5]@14 ~@2 [g4,b4,g5,b5]@4 ~ [f4,a4,f5,a5]@3 ~@3 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@3 ~@5 [a4,d5,a5,d6]@5 ~@12]/3", // D5 Am G F Am D5
  J: "~@3 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@2 [a4,d5,a5,d6]@3 ~@9", // Am D5
  K: "~@8 [a4,d5,a5,d6]@3 ~@5 [a4,c5,a5,c6]@4 ~ [g4,b4,g5,b5]@3 ~@2 [g4,b4,g5,b5]@3 ~@3", // D5 Am G
  L: "[g4,b4,g5,b5]@14 ~@2 [g4,b4,g5,b5]@4 ~ [f4,a4,f5,a5]@3 ~@3 [f4,a4,f5,a5]@3 ~@2", // G F
  M: "[f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@3 ~@5 [a4,d5,a5,d6]@4 ~@12", N: "~@15 [a4,c5,a5,c6]@4 ~@4 [a4,d5,a5,d6]@5 ~@4",
  O: "~@11 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@2 [a4,d5,a5,d6]@4", // Am D5
  P: "~@16 [a4,d5,a5,d6]@4 ~@4 [a4,c5,a5,c6]@4 ~ [g4,b4,g5,b5]@3", // D5 Am G
  Q: "~@2 [g4,b4,g5,b5]@3 ~@3 [g4,b4,g5,b5]@14 ~@2 [g4,b4,g5,b5]@4 ~ [f4,a4,f5,a5]@3", // G F
  R: "~@3 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@3 ~@5 [a4,d5,a5,d6]@5 ~@3", // F Am D5
  S: "~@12 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@2 [a4,d5,a5,d6]@3", // Am D5
  T: "~@17 [a4,d5,a5,d6]@3 ~@5 [a4,c5,a5,c6]@4 ~ [g4,b4,g5,b5]@2", // D5 Am G
  U: "~@3 [g4,b4,g5,b5]@3 ~@3 [g4,b4,g5,b5]@14 ~@2 [g4,b4,g5,b5]@4 ~ [f4,a4,f5,a5]@2", // G F
  V: "~@4 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@4 ~@4 [a4,d5,a5,d6]@5 ~@2", // F Am D5
  W: "[~@13 [a4,c5,a5,c6]@3 ~@3 [a4,c5,a5,c6]@3 ~@4 [a4,c5,a5,c6]@3 ~ [a4,d5,a5,d6]@4 ~@16 [a4,d5,a5,d6]@4 ~@4 [a4,c5,a5,c6]@4 ~ [g4,b4,g5,b5]@3 ~@3 [g4,b4,g5,b5]@3 ~@2 [g4,b4,g5,b5]@14 ~@2 [g4,b4,g5,b5]@4 ~ [f4,a4,f5,a5]@3 ~@3 [f4,a4,f5,a5]@3 ~@2 [f4,a4,f5,a5]@4 ~@4 [a4,c5,a5,c6]@3 ~@5 [a4,d5,a5,d6]@5 ~]/4", // Am D5 Am G F Am D5
})).s("gm_synth_brass_1").gain(0.24)

// other · pad metallic · "Pad 6 (metallic)"
const pad_metallic = note("<~@20 A@8 ~@16 B@4 C@5 ~@23 D E F G H I J@3 ~@29>".pickRestart({
  A: "[~@7 f#5@7 d5@5 c5@20 f#5@7 d5@5 c5@20 f5@7 c5@5 ~ b4@20 f5@6 c5@5 ~ b4@20 f#5@7 d5@5 c5@20 f#5@7 d5@5 c5@20 ~ f5@6 c5@5 ~ b4@20 f5@7 c5@5 b4@11]/8",
  B: "[~@14 f#5@6 d5@5 ~ c5@20 f#5@6 d5@5 ~ c5@20 f5@7 c5@5 b4@20 f5@7 c5@5 b4@6]/4",
  C: "[~@15 f#5@6 d5@5 ~ c5@20 f#5@7 d5@5 c5@20 f5@7 c5@5 b4@20 f5@7 c5@5 b4@20 ~@17]/5", D: "~@20 f#5@7 d5@5",
  E: "c5@20 ~ f#5@6 d5@5", F: "~ c5@20 f5@7 c5@4", G: "~ b4@20 f5@7 c5@4", H: "~ b4@19 ~ f#5@7 d5@4",
  I: "~ c5@10 f#5@3 d5@2", J: "[~@2 c5@19 ~ f5@7 c5@5 b4@20 f5@7 c5@5 b4@18 ~@12]/3",
})).s("gm_pad_metallic").gain(0.32)

// other · distortion guitar
const distortion_guitar_2 = note("<~@44 A@2 ~@6 B@3 C@6 ~@22 D@2 E@3 F G@2 H I ~@21>".pickRestart({
  A: "[~@26 f#4@15 ~@23]/2", B: "[~@16 a3@5 ~ d4@4 ~@2 f#4@15 ~@5 a3@5 ~ d4@4 ~@2 f#4@15 ~@5 g3@3 ~@3 c4@5 ~ f4@4]/3",
  C: "[~@17 g3@4 ~@2 c4@3 ~@3 f4@15 ~@5 a3@4 ~@2 d4@3 ~@3 f#4@15 ~@5 a3@4 ~@2 d4@3 ~@3 f#4@15 ~@5 g3@4 ~@2 c4@3 ~@3 f4@15 ~@6 g3@4 ~@2 c4@3 ~@3 f4@15 ~@19]/6",
  D: "~@8 d4@3 ~@13 d4@3 ~@5", E: "~@9 d4@2 c4@2 a3@3 ~@9 d4@2 ~@5", F: "~@6 d4@2 ~@2 d4@2 c4@2 a3@3 ~@9 d4@2 ~@4",
  G: "~@10 d4@2 c4@2 a3@3 ~@9 d4@2 ~@4", H: "~@10 d4@2 c4@2 a3@3 ~@6 [c4,f4]@4 ~@2 [b3,e4]@3",
  I: "~@2 [c4,f4]@4 ~@3 [b3,e4]@5 ~@18", // F5 E5
})).s("gm_distortion_guitar").gain(0.55)

// other · guitar harmonics
const guitar_harmonics = note(`<
  ~@83
  [~@12 d3 ~ d3 ~@13 d3 ~ d3 ~]!2
  [~ d3 ~@27 d3 ~ d3]!3
  [~@30 d3 ~]
  [d3 ~ d3 ~@27 d3 ~]!2
  [d3 ~ d3 ~@29]
  ~@22
>`).s("gm_guitar_harmonics").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A@12 B@4 C@3 D@3 E F@3 G@4 H@4 I@3 J@4 K@3 L@4 M@3 N O@3 P@3 Q@12 R@3 S T@4 U@3 V@4 W@3 X@4 Y@4 Z@3 AA@4 AB@3 AC@4
  AD@2 AE ~
>`.pickRestart({
  A: "x ~@3 x!2 ~ x", B: "~ x ~@15 x ~@3 x ~@7 x ~@2", C: "~ x ~@7 x ~ x ~@3 x", D: "~@3 x ~@15 x ~@3 x ~@7 x",
// … 62 more lines