Strudelify
KeyC majorTempo111 bpm
0:00/0:00
// Layla — Derek and the Dominos
// 111 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 15, 4/4 at bar 15, 2/4 at bar 30, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 203 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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.

// bass · electric bass finger
const bass = note(`<
  ~@5 A@7 B@6 C D@8 E@8 F@8 B@6 C D@8 G@32 H I J@8 K@2 L@8 M@8 N@5 O@2 P@2 Q@2 R S T U V@2 W X Y@2 Z@2 AA@2 W X Y@2 Z@2
  AA@2 W X Y@2 Z@2 AB@2 O@2 P@2 Q@2 R S W X Y@2 Z@2 AA@2 T U V@2 W X Y@2 T U V@2 W X Y@2 T U V@2 AC@6 ~@2
>`.pickRestart({
  A: "[~@8 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@4]/7",
  B: "[~@5 a#1@3 c2@9 c2@3 c#2@18 e2@3 f#2@3 g#2@24 c#2@12 c2@6 d2@6 e2@24 f#1@6 a1@3 a#1@3 b1@6 c#2@3 d#2@3 e2@4]/6",
  C: "~ f#2@4 e2@3 a1@12 f#1@4",
  D: "[~@2 a1@3 a#1@3 b1@4 ~ c#2@4 b1@3 e2@12 a1@12 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@4]/8",
  E: "[~@5 a1@3 a#1@9 a#1@3 c2@9 c2@3 c#2@18 e2@3 f#2@3 g#2@24 c#2@12 c2@6 d2@6 e2@24 f#1@6 a1@3 a#1@3 b1@6 c#2@3 d#2@3 e2@4 ~ f#2@4 e2@3 a1@12 f#1@6 a1@3 a#1@3 b1@4]/8",
  F: "[~ c#2@4 b1@3 e2@12 a1@12 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@4]/8",
  G: "[~@5 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@9 a1@3 a#1@9 a#1@3 c2@9 c2@3 d2@9 d2@3 d2@4]/8",
  H: "~@5 a1@3 a#1@9 a#1@3 c2@4", I: "~@5 c2@3 c2@16",
  J: "[~@6 g1@3 ~ c2@23 g1@3 c2@23 d2@3 ~ e2@19 g2@6 ~ f1@46 g1@6 c2@26 e1@19 ~ g1@5]/8",
  K: "[~ f1@39 e2 ~ d2 c2@2 ~@2 d2]/2", L: "[~@2 c2@2 ~ a#1@51 c2@51 c2@25 ~ e1@19 g1@6 f1@34]/8",
  M: "[~@4 e2 d2 ~ c2@3 d2@3 c2@3 a#1@50 c2@50 c2@25 e1@18 g1@6 f1@27]/8",
  N: "[~@10 e2 ~ d2 c2@3 d2@3 c2@3 a#1@49 c2@36 ~ c2@6 b1@6]/5", O: "[a1@3 a1!2 e1 a1 d2@3 d2 d2@3 a1 d2]/2",
  P: "[g1@3 g1!2 a1 b1 c2@3 c2 c2@3 b1@2]/2", Q: "[a1@3 e1 a1 b1 c2 d2@3 a1 d2@4 f1]/2", R: "g1@3 g1 g1@3 g1",
  S: "g1@3 g1 a1 g1 e2 d2", T: "c2@7 d2", U: "e2@3 g2", V: "[f1@7 g1]/2", W: "c2", X: "e1@3 g1",
  Y: "[f1@36 e2 ~ d2 c2@3 d2@3 c2@3]/2", Z: "a#1/2", AA: "c2/2", AB: "[c2@6 c2 b1]/2", AC: "[~ a#1@53 c2@71 ~@19]/6",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · overdriven guitar
const overdriven_guitar = note("<~ A B@8 C@3 ~@7 D@7 E@2 ~@7 F@8 ~@7 D@7 G@8 H@8 I@8 J@8 K@3 ~@110>".pickRestart({
  A: "~@11 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]", // D5 C5 A#5 Dm
  B: "[~@2 g2@2 ~ c3@6 a2@3 g2@2 ~ [d3,a3]@15 ~@3 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@14 ~@4 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~ [d3,a3]@13 ~@5 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@14 ~@4 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3], ~@5 g3@10 ~@38 [c3,g3]@10 ~@38 g3@10 ~@38 g3@11 ~@32]/8", // D5 C5 A#5 Dm D5 C5 A#5 Dm …
  C: "[~@2 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@14 ~@4 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~@8, ~@5 [c3,g3]@10 ~@38 g3@10 ~@9]/3", // D5 C5 A#5 Dm C5
  D: "[~@23 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3], ~@41 g3@9 ~@39 g3@11 ~@37 [c3,g3]@10 ~@21]/7", // D5 C5 A#5 Dm D5 C5 A#5 Dm …
  E: "[~@2 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@6 ~@16, ~@17 g3@15 ~@16]/2", // C5 A#5 Dm
  F: "[~@11 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@6 ~@4, ~@29 g3@9 ~@39 g3@11 ~@37 [c3,g3]@10 ~@38 g3@15 ~@4]/8", // D5 C5 A#5 Dm D5 C5 A#5 Dm …
  G: "[~@2 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~ [d3,a3]@18 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 [d3,a3]@18 ~@3 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3], ~@17 g3@10 ~@38 g3@9 ~@39 g3@11 ~@68, ~@122 g2 ~@38 [c3,g3]@10 ~@21]/8", // C5 A#5 Dm D5 C5 A#5 Dm D5 …
  H: "[~@2 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~ [d3,a3]@6 ~@12 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~ [d3,a3]@18 [d3,a3], ~@17 g3@11 ~@37 g3@11 ~@37 [c3,g3]@10 ~@38 g3@10 ~@21]/8", // C5 A#5 Dm D5 C5 A#5 Dm D5 …
  I: "[~@2 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~ [d3,a3]@18 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3], ~@17 g3@11 ~@37 [c3,g3]@10 ~@38 g3@11 ~@37 g3@11 ~@20]/8", // C5 A#5 Dm D5 C5 A#5 Dm D5 …
  J: "[~@2 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2@2 ~ [d3,a3]@18 [d3,a3]@3 [c3,g3] ~@2 [a#2,f3]@6 [a2,f3]@3 g2 ~@2 c3@6 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3]@3 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@8 a2@3 g2 ~@2 [d3,a3]@18 [d3,a3], ~@17 [c3,g3]@10 ~@38 g3@10 ~@38 g3@11 ~@37 [c3,g3]@10 ~@21]/8", // C5 A#5 Dm D5 C5 A#5 Dm D5 …
  K: "[~@2 [c3,g3]@3 [a#2,f3]@6 [a2,f3]@3 g2 ~@11 g2@6 [c3,g3]@25 ~@15, ~@17 g3@14 ~@41, ~@17 c3@8 ~@47, ~@23 a2@6 ~@43]/3", // C5 A#5 Dm C5
})).s("gm_overdriven_guitar").gain(0.45)

// other · distortion guitar
const distortion_guitar = note("<A@7 B@6 ~@7 C@8 ~@7 D@7 E@2 ~@7 C@16 F@6 G@8 C@8 H@4 ~@110>".pickRestart({
  A: "[~@23 [a2,a3]@2 ~ [d3,d4]@2 ~@2 [c3,c4]@2 [d3,d4]@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 ~@2 [c3,c4]@2 [d3,d4]@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 ~@2 [c3,c4]@2 [d3,d4]@36 ~@3 [a2,a3], ~@25 [c3,c4]@2 ~ [f3,f4]@2 ~@46 [f3,f4]@2 ~@46 [f3,f4]@2 ~@42, ~@29 [d3,d4]@2 ~@42 [c3,c4]@2 ~@2 [d3,d4]@2 ~@42 [c3,c4]@2 ~@2 [d3,d4]@2 ~@41]/7", // A D C D A D C D …
  B: "[~@2 [d3,d4]@2 ~@2 [c3,c4]@2 [d3,d4]@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 ~@2 [c3,c4]@2 [d3,d4]@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 ~@2 [c3,c4]@2 [d3,d4]@36 ~@4, ~ [c3,c4]@2 ~ [f3,f4]@2 ~@46 [f3,f4]@2 ~@46 [f3,f4]@2 ~@42, ~@5 [d3,d4]@2 ~@42 [c3,c4]@2 ~@2 [d3,d4]@2 ~@42 [c3,c4]@2 ~@2 [d3,d4]@2 ~@41]/6", // D C D A D C D A …
  C: "[~@11 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@28, ~@13 [c3,c4]@2 ~@2 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@29, ~@18 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@28]/8", // A D F A D F A D …
  D: "[~@23 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3], ~@25 [c3,c4]@2 ~@2 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@36 ~@5, ~@30 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@40]/7", // A D F A D F A D …
  E: "[~@2 [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@4, ~ [c3,c4]@2 ~@2 [d3,d4]@2 d3@36 ~@5, ~@3 [c3,c4] ~@20]/2", // D F C D C
  F: "[~@11 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@28, ~@13 [c3,c4]@2 ~@2 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@29, ~@18 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@28]/6", // A D F A D F A D …
  G: "[~@11 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~ [c3,c4]@2 [d3,d4]@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 ~@3 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@28, ~@13 [c3,c4]@2 ~@2 [d3,d4]@2 ~@42 [c3,c4]@2 ~@2 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@36 ~@10 [d3,d4]@2 d3@29, ~@66 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@41 [c3,c4]@2 ~@3 [c3,c4]@2 ~@28]/8", // A D F C D A D F …
  H: "[~@11 [a2,a3]@2 ~ [d3,d4]@2 [f3,f4] ~@3 d4@36 [c3,g3]@25 ~@15, ~@13 [c3,c4]@2 ~@2 [d3,d4]@2 d3@36 ~@41, ~@9 [c3,c4] ~@38]/4", // A D F C5 C D C
})).s("gm_distortion_guitar").gain(0.4).pan(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@5 A@8 ~@7 B@8 C ~@6 D@8 E ~@7 F@8 G@8 H@8 I@8 G@8 J@3 ~@109>".pickRestart({
  A: "[~@11 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@3 ~@4]/8", // Dm C Dm C Dm C Dm C …
  B: "[~@8 [a2,a3,e4]@12 ~@3 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4], ~@4 [c3,c4]@5 ~@87]/8", // A5 Dm C Dm C Dm C Dm …
  C: "~@2 [e3,c4]@3 [f3,d4]@3 ~@16", // C Dm
  D: "[~@20 [a2,c3,a3,c4,e4]@12 ~@3 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]]/8", // Am Dm C Dm C Dm C Dm …
  E: "~@2 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@3 ~@4", // Dm C Dm C Dm
  F: "[~@8 [a2,c3,a3,c4,e4]@12 ~@3 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]]/8", // Am Dm C Dm C Dm C Dm …
  G: "[~@2 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]]/8", // C Dm C Dm C Dm C Dm …
  H: "[~@2 [e3,c4]@3 [f3,d4]@6 ~@12 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]]/8", // C Dm C Dm C Dm C Dm …
  I: "[~@2 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@6 ~@12 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]@3 [e3,c4]@3 [f3,d4]@12 ~@6 [a3,f4]@3 [g3,e4]@3 [f3,d4]@6 [e3,c4]@3 [f3,d4]@3 [g3,e4]@6 [f3,d4]]/8", // C Dm C Dm C Dm C Dm …
  J: "[~@2 [e3,c4]@3 ~@25 g2@3 ~ c3@22 ~ g2@3 ~@12, ~@5 [f3,c4]@55 ~@12]/3", // C F5
})).s("gm_electric_guitar_clean").gain(0.17)

// chords · electric guitar muted
const electric_guitar_muted = note("<~@12 A B C@7 ~@7 D E F@6 ~@7 A B C@7 ~@151>".pickRestart({
  A: "~@10 [g#3,c#4,e4] ~", B: "~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4] ~@2 [g#3,c#4,e4] ~@2 [g#3,b3,d#4] ~",
  C: "[~@2 [g#3,b3,d#4]@2 ~@4 [g#3,b3,d#4]@2 ~@3 [g#3,b3,d#4] [g#3,b3,d#4]@4 ~@2 [e3,g#3,c#4]@12 [a#3,e4]@6 [d3,c4]@6 [e3,e4,g#4]@6 [e3,d4]@12 [e3,e4,g#4]@2 ~ [e3,e4,g#4] ~@2 [f#3,a3,c#4,f#4]@12 ~@6 g#3@2 ~ e3 ~@2 [e2,e3,b3,e4,g#4]@12 [a3,c#4,e4,g4]@12 [f#3,a3,f#4]@12 [b2,f#3,b3,d#4]@12 [e3,b3,e4,g#4]@12 ~@16, ~@32 [c4,g4]@4 ~@2 [a3,f#4]@4 ~@8 [b3,g#4]@10 ~@7 [e3,e4,g#4]@2 ~@11 [b2,b3,d#4,f#4]@12 ~@76, ~@85 f#3@2 ~ f#3@2 ~ c#3@2 ~@75]/7", // G#m C#m A#dim D7 E E7 E F#m …
  D: "~@4 [g#3,c#4,e4] ~@2 [g#3,c#4,e4] ~@2 [g#3,c#4,e4] ~", // C#m
  E: "~ [g#3,c#4,e4] ~@2 [g#3,b3,d#4] ~@2 [g#3,b3,d#4] ~@2 [g#3,b3,d#4] ~", // C#m G#m
  F: "[~ [g#3,b3,d#4] [g#3,b3,d#4]@4 ~@2 [e3,g#3,c#4]@12 [a#3,e4]@6 [d3,c4]@6 [e3,e4,g#4]@6 [e3,d4]@12 [e3,e4,g#4]@2 ~ [e3,e4,g#4] ~@2 [f#3,a3,c#4,f#4]@12 ~@6 g#3@2 ~ e3 ~@2 [e2,e3,b3,e4,g#4]@12 [a3,c#4,e4,g4]@12 [f#3,a3,f#4]@12 [b2,f#3,b3,d#4]@12 [e3,b3,e4,g#4]@12 ~@4, ~@20 [c4,g4]@4 ~@2 [a3,f#4]@4 ~@8 [b3,g#4]@10 ~@7 [e3,e4,g#4]@2 ~@11 [b2,b3,d#4,f#4]@12 ~@64, ~@73 f#3@2 ~ f#3@2 ~ c#3@2 ~@63]/6", // G#m C#m A#dim D7 E E7 E F#m …
})).s("gm_electric_guitar_muted").gain(0.26)

// chords · percussive organ
const percussive_organ = note("<~@16 A@5 ~@11 B@5 ~@10 A@5 ~@151>".pickRestart({
  A: "[~@5 [f#4,a4,c#5]@3 [b4,d#5,f#5]@3 [b4,e5,g#5]@3 [c#5,e5,a5]@3 [e4,a4,c#5]@3 [f#4,b4,d#5]@3 [b4,e5,g#5]@3 [a4,c5,e5]@3 ~]/5", // F#m B E A B E Am
  B: "[~@2 [f#4,a4,c#5]@3 [b4,d#5,f#5]@3 [b4,e5,g#5]@3 [c#5,e5,a5]@3 [e4,a4,c#5]@3 [f#4,b4,d#5]@3 [b4,e5,g#5]@3 [a4,c5,e5]@3 ~@4]/5", // F#m B E A B E Am
})).s("gm_percussive_organ").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@105 A@7 B@5 C@8 D@2 E@4 F@2 G H F@2 G H I@2 J@2 F@2 G H I@2 J@2 F@2 G H I@2 J@2 K@2 D@2 E@4 F@2 G H I@2 L@2 F@2 G H
  F@2 G H F@2 G H F@2 G H F@2 G M N O P@5 ~
>`.pickRestart({
  A: "[~@7 d4@6 ~@16 e4@6 ~@16 c4@9 ~@16 c4@9 ~@17 c4 ~@18 f4@9 ~@22 f3 ~@11 d3@4, ~@7 g4@28 ~@10 e4@10 ~@15 e4@10 ~@12 c4@9 ~@16 c4@11 ~@15 f3@9 ~@16, ~@7 e4@22 ~@13 g3@11 ~@14 g3@11 ~@11 a3@12 ~@13 a3@12 ~@13 d3@12 ~@17, ~@13 c4@13 g3@6 ~@3 c3@14 ~@12 c3@14 ~@20 f4@9 ~@42 g#3@9 ~@13, ~@19 a3@9 ~@10 e3@12 ~@14 e3@12 ~@10 f3@14 ~@11 f3@14 ~@11 a#2@14 ~@11 a#2@7]/7",
  B: "[~@9 f3 ~@18 c4@3 d4@3 e4@6 ~@19 c4@9 ~@15 c4@9 ~@16 c4@9 f3@3, f3@9 ~@9 c3@13 ~@12 c3@13 ~@12 c3@13 ~@12 c3@13 ~@14, ~@3 g#3@9 ~@9 e3@12 ~@7 e4@6 ~@3 g3@10 ~@15 g3@10 ~@15 g3@10 ~@11, ~@24 g3@10 c4@9 ~@3 e3@12 ~@13 e3@12 ~@13 e3@12 ~@12, ~@52 e4@9 ~@16 e4@9 ~@16 e4@9 ~@9]/5",
  C: "[~@13 c4 ~@17 f4@9 ~@22 f3 ~@23 f3 ~@17 c4@3 d4@3 g4@6 ~@13 e4@3 c4@6 ~@6 [c4,e4]@10 ~@2 c4@3 d4@3 e4@3 e4@9 d4 ~@2 d4@9 c4@6, a3@12 ~@10 f3@13 ~@11 a#2@13 ~@12 a#2@13 ~@11 c3@13 ~@12 c3@13 ~@59, ~@4 c4@9 ~@12 a3@12 ~@13 d3@12 ~@12 d3@12 ~@37 e3@12 ~@9 a3@8 ~@40, ~@7 f4@9 ~@12 c4@10 ~@15 f3@9 ~@15 f3@9 ~@12 e3@12 c4@9 ~@7 g3@10 ~@2 b3@9 ~@45, ~@56 g#3@9 ~@15 g#3@9 ~@12 g3@10 ~@6 e4@6 ~@9 [e4,g4]@9 ~@51]/8", // C Em
  D: "[b3@10 ~@2 b3@3 c4@3 d4@2 ~ d4@9 c4 ~@2 c4@9 b3@6]/2",
  E: "[a3@9 a3 ~@2 a3@3 g3@3 a3@2 ~ d4@9 a3@2 ~ a3@9 e4 ~@2 e4@9 d4 ~@2 d4@9 c4 ~@2 c4@9 b3@2 ~ b3@9 f3@6]/4",
  F: "~@5 c4@3, c3@13 ~@11, ~@3 e3@11 ~@10, ~@3 g3@5 ~@4, ~@3 e4@3 ~@2",
  G: "~@15 c4 ~@8, f3@13 ~@11, ~@3 a3@11 ~@10, ~@2 c4@3 ~@3, ~@3 f4@3 ~@2",
  H: "~@3 f4@3 ~@2, f3@13 ~@11, ~@3 a3@11 ~@10, ~@3 c4@5 ~@4",
  I: "~@15 f3 ~@8, a#2@13 ~@11, ~@3 d3@11 ~@10, ~@2 f3@3 ~@3, ~@3 g#3@3 ~@2",
  J: "[~@3 c4 d4 g4@2 ~@6 c4@3, c3@13 ~@11 c3@13 ~@11, ~@3 e3@11 ~ c4@9 ~@3 e3@11 ~@10, ~@6 g3@10 ~@5 e4@6 ~@3 g3@10 ~@8, ~@11 e4@3 ~@2]/2",
  K: "[~ e4@8 ~@3 c4@3 d4@3 e4@3 e4@9 d4 ~@2 d4@9 c4@6, [a3,c4]@3 ~@13]/2", // Am
  L: "[~@3 c4 d4 g4@2 ~@6 c4@3, c3@12 ~@12 c3@13 ~@11, ~@3 e3@11 ~ c4@9 ~@3 e3@11 ~@10, ~@6 g3@10 ~@5 e4@6 ~@3 g3@10 ~@8, ~@11 e4@3 ~@2]/2",
  M: "~@3 f4@3 ~@2, f3@13 ~@11, ~ a3@4 ~@3, ~@3 c4@5 ~@4",
  N: "~@17 f3 ~@6, ~ a#2@14 ~@9, ~ d3@3 ~@2, ~@7 f3@10 ~@7, ~@5 g#3@5 ~@2",
  O: "~@20 f3 ~@3, ~@2 a#2@15 ~@7, ~@6 d3@13 ~@5, ~@9 f3@11 ~@4, ~@13 g#3@11",
  P: "[~@21 f4@3 g4@7 ~@14 c4@60 ~@15, ~@6 c3@15 ~@14 c3@71 ~@14, ~@5 e3@7 c4@5 ~@4 g3@32 ~@7, ~@14 g3@12 ~@12 e3@67 ~@15, ~@17 e4@11 ~@3 e4@7 ~@82]/5",
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.3)

// chords · piano
const piano = note(`<
  ~@93 A@2 B@5 C D@4 E@5 F@3 G@2 H@8 I@2 J@2 K@4 L M N@2 O P Q@2 R S T@2 U V W@2 X Y Z@2 U V W@2 X Y AA@2 AB@2 J@2 K@4 U
  V W@2 X Y Z@2 AC M N@2 AD AE AF@2 AC M N@2 AD AE AF@2 AC M AG@2 AH@8
>`.pickRestart({
  A: "[~@12 [c3,e3,g3]@10 [c3,e3,g3]@3 ~ [c3,e3,g3]@6 [c2,c3,e3,g3]@7 [e2,c3,e3,g3]@9, ~@3 c2@5 ~@4]/2", // C
  B: "[~ [e2,c3,e3,g3]@3 [e2,c3,e3,g3]@6 [e2,c3,e3,g3]@7 [c3,f3,a3] ~@2 [c3,f3,a3] ~@3 [c3,f3,a3,f4] ~@2 [c3,f3,a3,f4]@10 e4 ~@2 [c3,f3,a3] ~@2 [c3,f3,a3] ~@2 [c3,f3,a3] ~@3 [c3,f3,a3] ~@2 d4@6 ~@4 [f2,c3,f3,a3]@6 [c2,c3,e3,g3]@10 c2@10 ~@3 [c3,e3,g3]@3 [e2,c3,e3,g3]@10 e2@3 e2@6 ~ [c3,e3,g3]@3 [c3,e3,g3]@2, ~@17 f2@10 f2@16 f2@6 ~ [f2,d4]@3 [f2,c3,f3,a3]@10 ~@16 [c3,e3,g3]@13 ~@13 [c3,e3,g3]@10 ~@5, ~@17 g4@7 ~@16 e4@10 ~@10 c4@8 ~@21 c2@6 ~@20 e2@5]/5", // C F C Dm F C
  C: "~ [c3,f3,a3] ~@3 [c3,f3,a3] ~@2 [c3,f3,a3,f4] ~@2 [f2,f4]@10 [f2,e4]@3, ~ g4@6 ~@17, ~ f2@3 ~ f2@3 f2@3 [c3,f3,a3]@13", // F Fmaj7 F
  D: "[~@3 [c3,f3,a3] ~@2 [c3,f3,a3] ~@3 [c3,f3,a3] ~@2 [c3,f3,a3,d4]@6 [c3,a3]@6 ~ [c3,a3] ~@2 g#3@15 ~@7 d4@4 ~@16 g#3@6 g3@13 g3@3 [g3,d4]@3, e4@10 ~@9 [f3,c4]@9 ~ [d3,f3]@42 ~@6 [c3,e3]@19, ~@3 f2@3 f2@3 ~ [f2,d4]@3 f2@16 [a#1,a#2]@35 a#2@6 ~ [a#2,d3]@10 ~@15, ~@45 g#3@26 ~@25, ~@48 c4@5 ~@2 e4@6 d4@6 c4@7 ~@22]/4", // F Dm7 F G5 F5 Dm C Dm …
  E: "[[g3,e4]@6 ~ c3@19 ~@6 g3@3 [c2,c3,e3,g3]@9 ~ c2@9 ~@3 [c3,e3,g3]@3 ~ [e2,c3,e3,g3]@9 e2@3 e2@6 ~ [c3,e3,g3]@3 [c3,e3,g3]@3 g2@3 f2@3 [f2,f4]@3 [f2,c3,f3,a3,f4]@9 ~ [c3,f3,a3]@3 [c3,f3,a3]@3 f2@3 f2@3 [f2,d4]@3, ~@7 c2@28 ~@19 d2@6 ~@20 g2@6 ~@19 f2@6 ~@9, ~@7 g3@25 ~@54 g4@6 ~@13 e4 ~@2 e4@9 ~@3, ~@7 e3@22 e3@6 ~@85, ~@26 c3@9 ~@10 [c3,e3,g3]@12 ~@13 [c3,e3,g3]@9 ~@7 [c3,f3,a3]@8 ~@17 [c3,f3,a3]@8 ~]/5", // C F Dm C F
  F: "[~ [c3,f3,a3,d4]@6 [c3,a3]@6 [c3,a3]@3 [a#2,g#3]@9 ~ a#2@3 ~@3 [f3,g#3]@3 c4@3 [a#2,d3,f3,g#3,d4]@3 e4@6 ~@7 c4@3 [a#2,f3,g#3]@6 [a#2,g3]@3 [c3,e3,g3]@6, ~ f2@15 d3@15 ~@4 d3 ~@5 [d3,f3]@12 ~@4 d3@8 ~@7, ~@7 [f3,c4]@9 a#1@25 ~@7 d4@6 ~@18, ~@16 f3@12 ~ a#2@9 ~@3 a#2@9 ~ a#2@6 ~@15, ~@26 g#3@6 ~@9 g#3@15 ~@16]/3", // Dm7 F A#7 Fm A#7 D# C Dm …
  G: "[~@4 c4@3 d4@3 e4@6 [c3,e3]@3 e3@9 [c3,e3]@6 ~@7 g3@3 [c2,c3,e3,g3]@4, ~@4 [c3,e3,g3]@12 c4@19 ~@3 e3@6 ~@4, ~@16 g3@12 g3@3 ~@4 c3@9 ~@4]/2", // C
  H: "[~@5 c2@9 ~@4 [c3,e3,g3]@3 [e2,c3,e3,g3]@9 e2@3 e2@6 [c3,e3,g3]@3 [c3,e3,g3]@3 g2@3 f2@3 ~ f2@3 [f2,c3,f3,a3,f4]@9 [c3,f3,a3]@3 [c3,f3,a3]@3 f2@3 f2@3 f2@3 [c3,f3,a3,d4]@6 [c3,a3]@6 [c3,a3]@3 [a#2,g#3]@9 ~ a#2@3 ~@3 [f3,g#3]@3 [d3,c4]@3 [a#2,d3,f3,g#3] ~@2 e4@6 ~@6 c4@3 [a#2,f3,g#3]@6 [a#2,g3]@3 [c3,e3,g3]@9 c4@3 d4@3 e4@6 ~ [c3,e3]@3 e3@9 [c3,e3,g3]@3 [e3,c4]@6 [b2,b3]@6, ~@5 [c3,e3,g3]@12 ~@13 [c3,e3,g3]@9 g2@6 [c3,f3,a3]@8 ~@11 f2@6 [c3,f3,a3]@8 ~ f2@15 a#1@24 ~ a#2@9 a#2@6 ~@18 [c3,e3,g3]@12 ~@16 [c3,g3]@3 ~@9, ~@15 d2@6 ~@24 g4@6 ~ f4 ~@11 e4 ~@2 e4@9 d4 ~@8 [f3,c4]@9 d3@14 ~@11 g#3@15 ~@31 g3@12 ~@15, ~@94 f3@12 ~ a#2@9 ~@3 [d3,f3]@12 ~@3 d3@8 ~@44 [e3,g3]@3 ~@3, ~@104 g#3@6 ~@6 d4@3 ~@6 d4@6 ~@34 c4@15 ~@12]/8", // C F Dm7 F A#7 Fm D7 A#7 …
  I: "[[c4,e4]@8 ~ [c4,e4]@3 [c4,e4]@3 [d4,f4]@3 [e4,g4] ~@2 [e4,g4]@7 ~@2 [d4,f4] ~@2 [a3,f4]@7 ~@2 [a3,c4,e4]@6, a3@5 a3@2 d4@3 ~ d4@5, ~@18 c4@5 ~@25, ~@7 a3 ~@8]/2", // C Dm Em Dm Am
  J: "[[g3,b3,d4]@7 ~@2 [b3,d4]@3 [b3,d4] ~@2 [c4,e4] ~@2 [d4,f4]@3 [d4,f4]@3 ~@6 [c4,e4]@3 [g3,c4,e4]@7 ~@2 [f3,b3,d4]@6, ~@3 g3@5 ~@8, ~@7 c4@3 ~@6]/2", // G Bm C Dm C Bdim
  K: "[a3@9 a3 ~@2 a3@3 c4@3 d4@2 ~ d4@8 ~ a3 ~@2 a3@9 [c4,c5] ~@11 [b3,b4] ~@2 [b3,b4]@8 ~ [a3,a4] ~@2 [g3,a3,a4]@9 [g3,g4] ~@2 [g3,b3,d4,g4]@15, e3 ~@3, c4@5 ~@2 [d3,f#3]@7 ~@18, ~@7 a3 ~@7 [g3,c4,d4,c5]@8 [b3,d4]@4 ~@5]/4", // C B A Gsus2 G D Gsus4 Bm
  L: "[c3,e3,g3]@9 [c3,e3,g3]@9 [c3,e3,g3]@4 ~@2, c2@3 c2", // C
  M: "[e2,c3,e3,g3]@3 [e2,c3,e3,g3] [e2,c3,e3,g3]@2 [e2,c3,e3,g3]@2", // C
  N: "[f2@3 f2@3 f2@3 [f2,f4]@9 e4 ~@2 [c3,f3,a3] ~@2 f2@3 f2@3 f2@3 d4@6 ~@3 [c3,f3,a3]@4 ~@2, [c3,f3,a3]@8 ~ [c3,f3,a3]@11 ~ e4@8 ~ d4 ~@8 c4@7 ~@2, g4@6 f4 ~@11 f2@6 [c3,f3,a3]@8 ~ [f2,c3,f3,a3]@9 f2@6]/2", // F
  O: "[c3,e3,g3]@7 ~@2 c2@9 ~@3 [c3,e3,g3]@3, c2@3 [c3,e3,g3]@4 ~, ~@3 c2", // C
  P: "[c3,e3,g3]@7 ~@2 e2@3 e2@6 [c3,e3,g3]@3 [c3,e3,g3]@3, e2@3 [c3,e3,g3]@3 e2@2", // C
  Q: "[f2@3 f2@3 f2@3 [f2,c3,f3,a3,f4]@9 [c3,f3,a3]@3 [c3,f3,a3]@3 f2@3 f2@3 f2@3 [c3,f3,a3,d4]@6 [c3,a3]@6 [c3,a3] ~@2, [c3,f3,a3,g4]@6 f4 ~@11 f2@6 [c3,f3,a3]@7 ~@2 f2@15, ~@18 e4 ~@2 e4@9 d4 ~@8 [f3,c4]@9]/2", // F Dm7 F F5
  R: "[a#2,g#3]@3 a#2 ~ g#3 c4 [g#3,d4], a#1@3 d3, [d3,f3] a#2, ~@3 g#3@2 f3@3", // A#7 G#dim Dm
  S: "e4@2 ~@2 c4 g#3 ~ g3, g#3@5 ~@3, [d3,f3] ~, a#2@3 a#2@2 [a#2,d3]@3, ~ d4 ~@2", // Dm A#
  T: "[g3@3 g3 d4 e4@2 [c3,e3,g3,c4]@6 ~@2 g3, [c3,e3]@7 ~@6 c3@3, ~@7 e3]/2", // C
  U: "[c3,e3,g3]@7 ~@2 c2@9 ~@3 [c3,e3,g3]@3, c2@3 [c3,e3,g3]@4 ~, ~@3 d2", // C
  V: "[c3,e3,g3]@7 ~@2 e2@3 e2@6 [c3,e3,g3]@3 [c3,e3,g3]@3, e2@3 [c3,e3,g3]@3 g2@2", // C
  W: "[g2@3 f2@3 f2@3 [f2,c3,f3,a3,f4]@9 [c3,f3,a3]@3 [c3,f3,a3]@3 f2@3 f2@3 f2@3 [c3,f3,a3]@4 ~@2 [c3,a3]@6 [c3,a3]@3, [c3,f3,a3,g4]@6 f4 ~@11 f2@6 [c3,f3,a3]@7 ~@2 f2@15, ~@18 e4 ~@2 e4@9 d4 ~@2 d4@6 [f3,c4]@9]/2", // F F5
  X: "[a#2,g#3]@9 a#2@3 ~@3 [f3,g#3]@3 c4@3 [a#2,d3,f3,g#3] ~@2, a#1, d3@14 ~@4 d3 ~@5, f3@4 a#2@3 ~, ~@3 g#3@2 ~@2 d4", // A#7 Fm A#7
  Y: "e4@2 ~@2 c4 [a#2,d3,f3,g#3]@2 [a#2,g3], g#3@5 ~@3, [d3,f3] ~, a#2@3 a#2@2 ~@3, ~ d4 ~@2", // A#7 D# Dm
  Z: "[[c3,e3,g3]@3 c4 d4 e4@2 [c3,e3,g3] [e3,g3]@3 [c3,e3,g3]@2 ~@2 g3, ~@3 [c3,e3,g3]@4 c4@6 c3@3, ~@7 e3]/2", // C Em C
  AA: "[[c3,e3,g3]@3 c4 d4 e4@2 [c3,e3,g3] [e3,g3]@3 [c3,e3,g3] [e3,c4]@2 [b2,b3]@2, ~@3 [c3,e3,g3]@4 c4@5 [c3,g3] ~ [e3,g3] ~]/2", // C Em C B C C5 Em
  AB: "[[c4,e4]@7 ~@2 [c4,e4]@3 [c4,e4]@3 [d4,f4]@3 [e4,g4] ~@2 [e4,g4]@7 ~@2 [d4,f4] ~@2 [a3,f4]@7 ~@2 [a3,c4,e4]@6, a3@5 a3@2 d4@3 ~ d4@5, ~@18 c4@5 ~@25, ~@7 a3 ~@8]/2", // C Dm Em Dm Am
  AC: "[c2,c3,e3,g3]@9 [c2,c3,e3,g3]@9 [c3,e3,g3]@4 ~@2, ~@3 c2", // C
  AD: "[c2,c3,e3,g3]@3 c2@3 ~ [c3,e3,g3], ~@3 [c3,e3,g3]@4 ~, ~@3 c2", // C
  AE: "[e2,e3,g3]@3 e2 e2@2 [c3,e3,g3]!2, c3@7 ~@2 [c3,e3,g3]@9 e2@6", // Em C
  AF: "[f2@3 f2@3 f2@3 [f2,c3,f3,a3,f4]@9 [c3,f3,a3]@3 [c3,f3,a3]@3 f2@3 f2@3 f2@3 [c3,f3,a3,d4]@6 [c3,a3] ~@2 [c3,f3,a3] ~@2 [c3,f3,a3] ~@2, [c3,f3,a3]@8 ~@10 f2@6 [c3,f3,a3]@7 ~@2 f2@15, g4@6 f4 ~@11 e4 ~@2 e4@9 d4 ~@8 c4@9, ~@39 f3@2 ~@7]/2", // F Dm7 F
  AG: "[f2@3 f2@3 f2@3 [f2,f4]@9 e4 ~@2 [c3,f3,a3] ~@2 f2@3 f2@3 f2@3 d4@6 ~@3 [f2,c3,f3,a3]@6, [c3,f3,a3]@8 ~ [c3,f3,a3]@11 ~ e4@8 ~ d4 ~@8 c4@8 ~, g4@6 f4 ~@11 f2@6 [c3,f3,a3]@8 ~ [f2,c3,f3,a3]@9 ~@6]/2", // F
  AH: "[~@26 [e4,c5]@7 ~@7 c4@4 a#2@7 a#2@3 c3@14 ~ f4@3 ~@21 c4@88 ~@11, ~ [a#2,d3,f3,g#3]@25 g#3@17 ~ g#3@3 ~@7 g3@18 g4@4 g3@14 g3@92 ~@10, ~@17 f4@6 a#4@7 ~@3 [d4,a#4]@7 ~@32 c4@7 e4@7 ~@106, ~@20 g#4@6 [d3,f3]@14 ~@4 d3@11 ~@14 c3@14 c3@99 ~@10, ~@26 a#2@10 ~ a#2@5 ~@12 [e3,c4]@18 e3@14 e3@96 ~@10]/8", // C A#7 Gm Dm C
})).s("gm_piano").gain(0.7).pan(0.7)

// other · synth strings 1
const synth_strings_1 = note("<~@64 A@8 B@7 C@7 D@7 ~@110>".pickRestart({
  A: "[~@10 d6@9 d6@9 d6@15 d6@9 d6@15 d6@9 d6@15 d6@5]/8",
  B: "[~@8 d6@30 d6@18 d6@3 c6@6 a5@14 ~ d6@3 c6@3 c6@12 c6@6 d6@18 d6@18 d6@12 e6@9 g6@7]/7",
  C: "[~@2 f6@6 d6@6 d6@21 a6@6 f6@6 c6@6 d6@9 d6@15 a6@4 ~ g6@7 e6@6 c6@6 d6@27 d6@3 e6@6 f6@6 a6@9 d7@16]/7",
  D: "[~@2 a6@9 g6@6 e6@6 c6@6 d6@3 d6@12 d6@12 d6@12 d6@33 a5@3 d6@12 d6@3 c6@3 a#5@41 ~@5]/7",
})).s("gm_synth_strings_1").gain(0.35).pan(0.7)

// other · alto sax
const alto_sax = note(`<
  ~@13 A B@3 C@2 D@3 E@2 F@2 G@4 H@2 I@3 J@2 K@2 L@3 M@2 A B@3 C@2 D@3 E@2 F@2 N@4 E@2 F@2 O@3 ~@135
>`.pickRestart({
  A: "~@2 g#4 ~ g#4!2 ~ g#4@4 g#4@2 ~ f#4@2 ~ e4@2 ~ f#4@4",
  B: "[g4 g#4@2 ~@20 f#4@2 ~ g#4 ~ g#4!2 ~@2 f#4@2 ~ e4@2 ~ f#4@3 e4 ~@2 e4@17 ~@10 b3]/3",
  C: "[c#4@2 e4 ~@2 c#4 ~@2 e4@6 f#4 ~@2 e4 ~@2 f#4 g#4@7 ~ f#4 ~@2 e4@6 ~@9 c#4]/2",
  D: "[~@2 e4 ~@2 c#4 ~@2 g#4 ~@2 g#4 ~@2 g#4 ~ f#4@4 e4@12 g4 a4@11 a4 ~ g4 f4@9 ~@11 f4 g4 ~@2 f4]/3",
  E: "[~@2 g4 ~@2 f4@2 ~ g4 g#4 a4@10 a4 ~ g4 f4@6 ~@14 f4 g4 ~@2 f4]/2",
  F: "[~@2 g4 ~@2 f4@3 g4 g#4 a4@4 a4@6 a4 ~ g4 f4@18 ~@2 f4 g4 ~@2 f4]/2",
  G: "[~@2 g4 ~@2 f4@2 ~ f#4 g#4 a4 g4 ~@2 f4 ~ g4 ~ f4@10 ~ [f4,a4,d5]@24 ~@9 g#4 ~ g#4!2 ~ g#4@4 g#4@2 ~ f#4@2 ~ e4@2 ~ f#4@4 g4 g#4@2 ~@9]/4", // Dm
  H: "[~@11 f#4@2 ~ g#4 ~ g#4!2 ~@2 f#4@2 ~ e4@2 ~ f#4@3 e4 ~@2 e4@16]/2",
  I: "[~@11 b3 c#4@2 e4 ~@2 c#4 ~@2 e4@6 f#4 ~@2 e4 ~@2 f#4 g#4@7 ~ f#4 ~@2 e4@6 ~@9 c#4 ~@2 e4 ~@2 c#4 ~@2 g#4 ~@2 g#4]/3",
  J: "[~@2 g#4 ~ f#4@4 e4@12 g4 a4@11 a4 ~ g4 f4@9 ~@4]/2",
  K: "[~@7 f4 g4 ~@2 f4 ~@2 g4 ~@2 f4@2 ~ g4 g#4 a4@10 a4 ~ g4 f4@6 ~@7]/2",
  L: "[~@7 f4 g4 ~@2 f4 ~@2 g4 ~@2 f4@3 g4 g#4 a4@4 a4@6 a4 ~ g4 f4@18 ~@2 f4 g4 ~@2 f4 ~@2 g4 ~@2 f4@2 ~ f#4 g#4 a4 g4]/3",
  M: "[~@2 f4 ~ g4 ~@2 f4@10 [f4,a4,d5]@24 ~@7]/2", // Dm
  N: "[~@2 g4 ~@2 f4@2 ~ f#4 g#4 a4 g4 ~@2 f4 ~ g4 ~ f4@10 ~ [f4,a4,d5]@24 ~@3 g4 a4@11 a4 ~ g4 f4@9 ~@11 f4 g4 ~@2 f4]/4", // Dm
  O: "[~@2 g4 ~@2 f4@2 ~ f#4 g#4 a4 g4 ~@2 f4 ~ g4 ~ f4@10 ~ [f4,a4,d5]@24 ~@19]/3", // Dm
})).s("gm_alto_sax").gain(0.78)

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

// drums · snare
const snare = s("sd").struct(`<
// … 106 more lines