Strudelify

Diamond Girl

Seals & Crofts

KeyA minorTempo137 bpm
0:00/0:00
// Diamond Girl — Seals & Crofts
// 136.5 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 138 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136.5/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 · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~@3 A B@2 C@2 B@2 D@2 C@6 E@2 ~@21 F@2 G@3 H@2 I@3 J@6 K@3 ~@21 L@2 M N@5 O P@2 Q@4 R S@5 T@4 U V W X@7 Y@2 Z@5 AA
  AB@4 AC@7 AD@3
>`.pickRestart({
  A: "~@5 [g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5]@3", B: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 g4@2 [a4,c5,e5]@2]/2",
  C: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 [g4,a4,c5,e5]@2 [g4,a4,c5,e5]@2]/2", // Bm7 D C Am7
  D: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 [g4,a4,c5,e5]@2 g4@2]/2", // Bm7 D C Am7
  E: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 ~@4]/2", F: "[~@3 [g#3,b3,d4,e4]@4 ~]/2",
  G: "[~@6 a3@4 [a3,d4,f#4]@3 [g3,c4,e4]@9 ~@2]/3", H: "[~@5 [a3,d4,f#4]@9 [g3,c4,e4]@15 ~@19]/2",
  I: "[~@5 [a3,d4,f#4]@8 [g3,c4,e4]@39 ~@20]/3", // D C
  J: "[~@4 [g4,a4,c5,e5]@6 g4@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 g4@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 g4@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@11]/6", // Am7 Bm7 D C Am7 Bm7 D C …
  K: "[~@4 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@22 ~@13]/3", // Am7 Bm7 D C
  L: "[~@5 [g#3,b3,d4,e4]@23 ~@6 e4@6 c5@3 ~ a4 ~@3, ~@43 f#4@2 ~@3]/2", M: "~ a3 ~@2 a3@11 [a3,d4,f#4]@9",
  N: "[[g3,c4,e4]@26 ~@12 [a3,d4,f#4]@9 [g3,c4,e4]@26 ~@12 [a3,d4,f#4]@9 [g3,c4,e4]@26]/5", O: "[e3,g3,c4]@23 ~",
  P: "[~@23 [a3,c4,e4,g4]@12 ~@4 [a3,c4,e4,g4]@3 ~@6]/2", // Am7
  Q: "[~@10 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@14 [a3,c4,e4,g4]@9 ~@6 a4@9 [a3,c4,e4,g4]@9 ~@2 [c4,e4,g4]@12 ~@5 [a3,c4,e4,g4]@3 ~@8, ~@15 [a3,c4,e4]@4 ~@13]/4", // Am7 C Am7 Am
  R: "~@2 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@6 ~@7", // Am7
  S: "[~@7 [a3,c4,e4,g4]@9 e4@3 e4@11 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@15 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@14 [a3,c4,e4,g4]@9 ~@3 a4@31, ~@8 [a3,c4,g4]@7 ~@45]/5", // Am7
  T: "[~@27 [f4,a4]@12 [g4,b4,d5]@18 [g4,b4,d5]@5 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 ~@22, ~@16 c5@23 ~@57]/4", // F G Am7
  U: "~@2 [g4,a4,c5,e5]@5 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@11", V: "~ [a3,d4,f#4]@9 [g3,c4,e4]@14",
  W: "[g4,a4,c5,e5]!2 [f#4,a4,b4,d5]@2", // Am7 Bm7
  X: "[[a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@8 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@11 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@11 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@4]/7", // D C Am7 Bm7 D C Am7 Bm7 …
  Y: "[~ [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5]@6]/2", // Am7 Bm7 D C Am7
  Z: "[[g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5] ~ [g4,a4,c5,e5]@4 [g4,a4,c5,e5]@6 [f#4,g4,b4,d5] [f#4,g4,b4,d5]@5 [f#4,g4,b4,d5]@6 [e4,f4,a4,c5] [e4,f4,a4,c5]@4 [e4,f4,a4,c5]@6 [e4,g4,c5] ~ [e4,g4,c5]@4 [e4,g4,c5]@5 [d4,f4,a4,c5] [d4,f4,a4,c5]@4 [d4,f4,a4,c5]@6 ~@2 a3@6 [a3,c4,e4,g4]@8 a3@3 a3@3, ~@19 [c4,e4,g4]]/5", // Am7 Bm7 D C Am7 Gmaj7 Fmaj7 C …
  AA: "a3@3 ~@2 a3@2 a3, ~@5 [c4,e4,g4]@3", // C
  AB: "[a3@2 [a3,c4,e4]@12 a3@6 a3@3 [c4,e4,g4]@3 a4@9 [a3,c4,e4,g4]@8 a3@3 a3@9 ~@10 [a3,c4,e4,g4]@2 a3@3 a3@9 ~@11 a3@3 a3@3, ~@14 [c4,e4,g4]@9 a3@9 ~@64]/4", // Am C Am7 C
  AC: "[[a3,c4,e4]@12 ~@6 a3@3 a3@2 [a3,c4,e4,g4]@9 [c4,e4,g4]@6 ~@3 a3@3 a3@3 a3@6 [a3,c4,e4,g4]@9 a3@2 a3@3 a3@9 ~@6 a3@6 a3@3 a3@3 [a3,c4,e4]@11 a3@6 a3@3 [c4,e4,g4]@3 a4@9 [a3,c4,e4,g4]@9 a3@3 a3@9 ~@10 a3 a3@3 a3@7, ~@12 [g3,b3,d4,f4]@9 ~@11 a3@3 ~@27 [c4,e4,g4]@6 ~@14 [c4,e4,g4]@9 ~@14 [c4,e4,g4]@9 a3@9 ~@34 [c4,e4,g4]@3 ~@8]/7", // Am Am7 C Am7 Am C Am7 G7 …
  AD: "[~@13 a3@3 a3@3 [a3,c4,e4]@12 ~@6 a3@3 a3@3 [a3,c4,e4,g4]@8 [c4,e4,g4]@6 ~@15, ~@31 [b3,d4,f4]@9 ~@11 a3@3 ~@18]/3", // Am Am7 C Bdim
})).s("gm_acoustic_guitar_nylon").gain(0.33)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A@4 B@8 C@6 D@2 E@8 F@8 G@2 H I J K@2 L@8 M@8 N@6 O P Q R@8 S@2 T U V@3 W X@6 Y@7 Z AA AB@8 AC AD AE@7 AF@2 AG@5 AH
  AI@8 AJ@4 Z AK
>`.pickRestart({
  A: "[a1,a2]/4", B: "[~@4 d2@3 a1@13 d2@3 a1@13 d2@3 a1@13 d2@3 a1@9]/8", C: "[a2@4 d2@3 a1@5 e2@2 g2@2]/2",
  D: "[a2@4 d2@3 a1@9]/2",
  E: "[[a2,e3,a3]@6 [g3,c4]@3 ~@3 a2@6 a2@3 a2@9 a2@6 a2@6 a2@3 b2@2 e2@6 e2@6 e2@6 e2@3 e2@3 e2@6 e2@6 e2@6 e2@3 e2@3 a2@6 a2@6 a2@6 a2@3 a2@9 a2@6 a2@5 a2@3 b2@3 e2@6 e2@6 e2@6 e2@3 e2@9 e2@6 e2@6 e2@6 g2@2, ~@2 a2@2 ~@3 [c3,g3]@9 ~@48, ~@3 [e3,a3]@4 ~@57]/8", // A5 C5 A5
  F: "[~@4 g2@6 g2@6 g2@3 g2@9 g2@6 g2@5 g2@6 a2@6 a2@6 a2@6 a2@3 a2@9 a2@6 a2@6 a2@6 g2@6 g2@6 g2@6 g2@3 g2@9 g2@5 g2@6 g2@6 a2@6 a2@6 a2@6 a2@3 a2@9 b1@6 c2@6 c#2@6 d2@4]/8",
  G: "[~@2 e2@6 f2@6 d2@3 g1@6 g2@2 d2@6 g2@6 d2@6 c2@5]/2", H: "~ c2@6 a#1@6 a#1@3 a1@6 a1@2",
  I: "~ b1@6 c2@6 c2@6 d2@5", J: "~ e2@6 f2@6 f#2@3 g2@5 d2@3", K: "[g1@2 d2@2 g2 d2 e2@8 ~@2]/2",
  L: "[~@18 a1@12 a2@9 a2@26 a1@12 a2@9 a2@27 a1@12 a2@8 a2@39 ~@20]/8",
  M: "[~@4 e2@6 g2@6 a2@12 d2@9 a1@15 e2@6 g2@6 a2@12 d2@9 a1@15 e2@6 g2@6 a2@12 d2@9 a1@15 e2@6 g2@6 a2@12 d2@9 a1@11]/8",
  N: "[~@21 [g3,c4]@3 ~@3 a2@6 a2@3 a2@9 a2@6 a2@6 a2@3 b2@3 e2@6 e2@5 e2@6 e2@3 e2@9 e2@6 e2@6 e2@6 a2@6 a2@6 a2@5 a2@3 a2@9 a2@5, ~@7 a2@2 ~@39, ~@8 e3@5 ~@35, ~@12 a3@6 [g3,c4]@13 ~@41]/6", // C5
  O: "~ a2@6 a2@3 a2@3 e2@6 e2@5", P: "~ e2@6 e2@3 e2@8 e2@6", Q: "e2!2 g2!2",
  R: "[g2@6 g2@3 g2@9 g2@5 g2@6 g2@6 a2@6 a2@6 a2@6 a2@3 a2@9 a2@6 a2@5 a2@3 b2@3 g2@6 g2@6 g2@6 g2@3 g2@9 g2@6 g2@6 g2@6 a2@5 a2@6 a2@6 a2@3 a2@9 b1@6 c2@6 c#2@5 d2@6 e2@6 f2@4]/8",
  S: "[~@2 d2@3 g1@6 g2@3 d2@6 g2@5 d2@3 g2@3 c2@6 c2@6 a#1@5]/2", T: "~ a#1@3 a1@6 a1@3 b1@5 c2@6", U: "c#2 d2 e2 f2",
  V: "[f#2@3 g2@5 d2@3 g1@6 d2@6 g2@4 d2 ~ e2@23 ~@20]/3", W: "~@4 a1@11 a2@9",
  X: "[a2@26 a1@12 a2@9 a2@38 a2@9 a2@50]/6",
  Y: "[~@23 a1@6 e1@6 g1@5 a1@3 a1@9 e1@6 g1@6 a1@3 a1@3 a1@6 e1@5 g1@6 a1@3 a1@9 e1@6 g1@6 a1@3 a1@8 e1@6 g1@6 a1@3 a1@9 e1@6 g1@5 a1@3 a1@8]/7",
  Z: "~ e1@6 g1@6 a1@3 a1@8", AA: "~ e1@5 g1@6 a1@3 a1@9",
  AB: "[e1@6 g1@6 a1@3 a1@8 e1@6 g1@6 a1@3 a1@9 e1@6 g1@5 a1@3 a1@9 e1@6 g1@6 a1@3 a1@9 e1@5 g1@6 a1@3 a1@9 e1@6 g1@6 a1@5 a1@35 ~ e2@5 g2@6 a2@9 ~@2]/8",
  AC: "~ d2@9 a1@14", AD: "e2 g2 a2@2",
  AE: "[d2@9 a1@14 e2@6 g2@6 a2@9 ~@3 d2@8 a1@15 e2@6 g2@6 a2@11 d2@9 a1@15 e2@6 g2@5 a2@9 ~@3 d2@9 a1@15 e2@4]/7",
  AF: "[~ g2@6 a2@12 d2@9 a1@14 e2@6]/2",
  AG: "[g2@6 a2@9 ~@3 d2@9 a1@14 a2 ~ a2@4 a2@6 g2 g2@4 ~ g2@6 f2 f2@4 f2@6 e2 ~ e2@4 e2@6 d2 d2@4 ~ d2@6 a1@6 e1@5 g1@6 a1@3]/5",
  AH: "a1@3 e1@2 g1@2 a1",
  AI: "[a1@8 e1@6 g1@6 a1@3 a1@9 e1@6 g1@5 a1@3 a1@9 e1@6 g1@6 a1@3 a1@9 e1@5 g1@6 a1@3 a1@9 e1@6 g1@6 a1@3 a1@8 e1@6 g1@6 a1@3 a1@9 e1@6 g1@5 a1@3 a1@9 e1@6 g1@6 a1@3 a1@5]/8",
  AJ: "[~@4 e1@5 g1@6 a1@3 a1@9 e1@6 g1@6 a1@3 a1@8 e1@6 g1@6 a1@3 a1@9 e1@6 g1@5 a1@3 a1@8]/4",
  AK: "~ e1@5 g1@6 a1@3 a1@3 ~@6",
})).s("gm_electric_bass_finger").gain(0.34)

// chords · piano
const piano = note(`<
  A@4 B@16 C@2 D@2 E@4 F@4 G@7 H@4 I@3 J@2 K@3 ~ L@6 M@2 N@2 O@4 P@3 Q@4 R@4 S@6 T U@5 V W@2 X@4 Y Z@5 AA@4 ~ AB ~ AC
  AD@2 AE@2 AF@2 AG@2 AH@5 AI AJ@4 AK@7 AL@3
>`.pickRestart({
  A: "[a1,a2]/4", B: "[~@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 ~@4]/2", C: "[[e4,a4]@2 [g4,c5] [e4,a4]@4 [c4,g4]@9]/2",
  D: "[[g3,b3]@5 [d4,g4]@6 [d4,g4]@3 b3@3 [d4,g4]@30 ~]/2", // G G5
  E: "[~@5 [a4,c5]@3 g4@3 [a4,c5]@9 [g4,b4]@26 [g3,b3]@12 [d4,g4]@3 b3@3 [d4,g4]@3 [g3,b3,e4]@27 f3@2]/4", // Am G G5 Em
  F: "[~ [g3,b3,d4]@12 [g3,c4,e4]@21 ~@11 [g3,c4,e4]@6 c5@3 [c4,e4,a4]@9 [c4,e4,g4]@3 [g3,c4,e4]@15 ~@12 f3@3]/4", // G C Am C
  G: "[[g3,b3,d4]@12 [g3,c4,e4]@21 ~@11 [e3,g3,c4]@18 d4@3 [e3,g3,c4]@9 [a3,a4]@6 [a3,a4]@6 [a3,a4]@6 [a3,c4,f4]@12 ~@6 [a3,c4,f4]@3 [b3,d4,g4]@15 ~@2 g3@3 [b3,d4,g4]@6 [g3,c4,e4]@12 [e3,g3,a#3,d4]@9 [e3,g3,a3,d4]@8]/7", // G C A F G C Em7b5 Em7
  H: "[~ [g3,a3,c#4]@6 [g3,a3,c#4]@3 [g3,a3,c#4]@6 c#4@3 [c4,f4,a4]@12 [f3,a3,c4]@9 [g3,b3]@14 [b3,d4,g4]@12 [g#3,b3,d4,e4]@24 ~@6]/4", // A7 F G E7
  I: "[g4 d4 d#4 d4 c4 d4 a3@4 [a3,d4,f#4]@3 [g3,c4,e4]@9 ~@2]/3", J: "[~@5 [a3,d4,f#4]@9 [g3,c4,e4]@15 ~@19]/2",
  K: "[~@5 [a3,d4,f#4]@8 [g3,c4,e4]@39 ~@20]/3", L: "[~@4 [a3,d4,f#4]@9 [g3,c4,e4]@15 ~@20]/2",
  M: "[~@4 [a3,d4,f#4]@9 [g3,c4,e4]@22 ~@10 [g3,c4]@3]/2", N: "[a3@6 [g3,c4]@13 ~@5, e3@5 ~@11]/2",
  O: "[~@2 [d4,g4]@3 b3@3 [d4,g4]@3 [g3,b3,e4]@26 ~ c4@6 [a4,c5]@3 g4@3 ~@5 [g4,b4]@3 [c4,e4,g4]@26 ~ [g3,b3]@11, ~@50 [a4,c5]@9 ~@37]/4", // G5 Em Am G C G Am
  P: "[~ [d4,g4]@3 b3@3 [d4,g4]@3 b3@3 b3@17 a3@3 a#3@3 f3@3 [g3,b3,d4]@12 [g3,c4,e4]@21, ~@10 [g3,e4]@21 ~@41]/3", // G5 G C
  Q: "[~@17 [g4,c5]@3 [e4,a4]@9 [d4,g4]@3 [a3,d4]@9 c4@3 [e3,a3]@9 ~@6 [g3,b3,d4]@11 ~ c4@7 [g3,b3,d4]@8 ~@10, ~@58 f3@4 ~@8 [g3,e4]@7 ~@19]/4", // C5 A5 G5 D5 A5 G C
  R: "[~@10 [e3,g3,c4]@11 c4@6 d4@3 [c4,e4,a4]@15 [a3,a4]@9 [a3,a4]@2 [a3,c4,f4]@12 [f3,a3,c4]@6 [f3,a3,c4]@3 [b3,d4,g4]@15 ~@2 g3@2]/4", // C Am A F G
  S: "[~ [b3,d4,g4]@3 g3@3 [g3,c4,e4]@12 [e3,g3,a#3,d4]@9 [e3,g3,a3,d4]@9 c#4@2 [c#4,e4,g4,a4]@6 a3@6 a3@3 [a3,c4,f4]@12 [f3,a3,c4]@9 [b3,d4,g4]@14 [b3,d4,g4]@12 [g#3,b3,d4,e4]@23 ~@6 e4@6 c5@3 ~ a4 ~@3, ~@139 f#4@2 ~@3]/6", // G C Em7b5 Em7 A7 F G E7
  T: "~@4 a3@11 [a3,d4,f#4]@9", // D
  U: "[[g3,c4,e4]@26 ~@12 [a3,d4,f#4]@9 [g3,c4,e4]@26 ~@12 [a3,d4,f#4]@9 [g3,c4,e4]@26]/5", V: "[e3,g3,c4]@23 ~",
  W: "[~@23 [a3,c4,e4,g4]@12 e5 a5@3 [a3,c4,e4,g4,a5]@3 ~@6, ~@23 a5@6 ~@19]/2", // Am7
  X: "[~@10 e5@3 d5@3 c5@3 [a3,c4,e4,g4]@14 ~@6 e5@3 ~@6 a4@9 [a3,c4,e4,g4]@9 ~@2 [c4,e4,g4]@12 ~@5 [a3,c4,e4,g4]@3 ~@8, ~@10 [a3,c4,e4,g4]@9 d5@20 ~@57, ~@11 [a3,c4,e4,g4]@3 ~ [a3,c4,e4]@4 ~@13]/4", // Am7 C Am7 Am
  Y: "~@2 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@6 ~@7", // Am7
  Z: "[~@7 [a3,c4,e4,g4]@9 e4@3 e4@11 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@15 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@14 [a3,c4,e4,g4]@9 ~@3 a4@31, ~@8 [a3,c4,g4]@7 ~@45]/5", // Am7
  AA: "[~@27 [f4,a4]@12 [g4,b4,d5]@18 [g4,b4,d5]@5 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 ~@22, ~@16 c5@23 ~@57]/4", // F G Am7
  AB: "~ [a3,d4,f#4]@9 [g3,c4,e4]@14", AC: "[a3,d4,f#4]@3 [g3,c4,e4]@5", AD: "[~@23 [a3,d4,f#4]@8 [g3,c4,e4]@15 ~@2]/2",
  AE: "[~@7 [a3,d4,f#4]@3 [g3,c4,e4]@5 ~]/2", AF: "[~@20 [a3,d4,f#4]@9 [g3,c4,e4]@15 ~@4]/2",
  AG: "[~@19 [a3,d4,f#4]@9 [g3,c4,e4]@15 ~@5]/2", // D C
  AH: "[~@18 [a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5] ~ [g4,a4,c5,e5]@4 [g4,a4,c5,e5]@6 [f#4,g4,b4,d5] [f#4,g4,b4,d5]@5 [f#4,g4,b4,d5]@6 [e4,f4,a4,c5] [e4,f4,a4,c5]@4 [e4,f4,a4,c5]@6 [e4,g4,c5] ~ [e4,g4,c5]@4 [e4,g4,c5]@5 [d4,f4,a4,c5] [d4,f4,a4,c5]@4 [d4,f4,a4,c5]@6 ~@2 a3@6 ~@4 e5 a5@3 [a3,g5]@3 a3@3, ~@53 [a3,c4,e4,g4]@4 [c4,e4,g4]@3, ~@106 e3@5 g3@6 ~@3]/5", // D C Am7 Gmaj7 Fmaj7 C Dm7 A7 …
  AI: "a3@3 e3@2 e5 d5 [a3,c5], ~@5 [c4,e4,g4]@3, ~@5 [g3,a3]@2 ~", // Am C Gsus2
  AJ: "[a3@2 ~@6 e3@6 [g3,a3]@6 [a3,e5]@3 [c4,e4,g4,c5]@3 ~@12 g3@5 a3@3 ~@3 a5@6 e3@6 e5 a5@3 [a3,c4,e4,g4,a5]@2 a3@3 a3@9 e3@5 d5@3 c5@3 a3@3 a3@3, ~@2 [a3,c4,e4]@12 [c4,e4,g4]@9 a3@9 e3@6 ~@58, ~@26 a4@9 [a3,c4,e4,g4]@9 ~@2 a3@9 ~@6 g3@6 ~@17 g3@6 ~@6]/4", // Gsus2 A5 C Am7 Am C Am7
  AK: "[~@6 e3@6 ~@6 a3@3 [a3,e5]@2 ~@9 a3@3 g3@6 a3@3 a3@3 a3@6 ~@4 e5 ~ a5@3 [a3,g5]@2 a3@3 a3@9 e3@6 e5@3 d5@3 [a3,c5]@3 a3@3 ~@6 e3@5 [g3,a3]@6 [a3,e5]@3 [c4,e4,g4,c5]@3 ~@12 g3@6 a3@3 ~@2 a5@6 e3@6 e5 ~ a5@3 a3 a3@3 a3@7, [a3,c4,e4]@12 [g3,b3,d4,f4]@9 ~@2 [a3,c4,e4,g4]@9 [c4,e4,g4]@6 ~@15 [a3,c4,e4,g4]@9 [c4,e4,g4]@6 ~@14 [c4,e4,g4]@9 ~@14 [c4,e4,g4]@9 ~@3 a4@9 [a3,c4,e4,g4]@9 ~@3 a3@9 ~@5 g3@6 ~@10, ~@29 e3@6 ~@18 e3@6 g3@6 ~@17 [g3,a3]@6 ~@6 [a3,c4,e4]@11 ~@9 a3@9 e3@6 ~@28 [c4,e4,g4,a5]@3 ~@8]/7", // A5 A7 Am Gsus2 A5 C Am G7 …
  AL: "[~@2 e3@6 d5@3 c5@2 a3@3 a3@3 ~@6 e3@6 ~@6 a3@3 [a3,e5]@3 ~@8 a3@3 g3@6 a3@3 a3@3 ~@6, ~@8 g3@6 ~@5 [a3,c4,e4]@12 [g3,b3,d4,f4]@9 ~@3 [a3,c4,e4,g4]@8 [c4,e4,g4]@6 ~@15, ~@49 e3@6 ~@17]/3", // A5 Am G7 Am7 C
})).s("gm_piano").gain(0.47)

// other · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note("<~@42 A@3 B@2 C@4 ~@33 D E F G H I ~ J K L M@4 N O@3 P@2 Q@3 ~@31>".pickRestart({
  A: "[~@3 d#5 e5 g5 d5@3 c5@3 a4@6 ~@6]/3", B: "[~@2 d5 ~ e5 g5@4 ~ a5 g5@3 a5@24 ~ d5@6 ~@3, ~@19 d#5 ~@4]/2",
  C: "[~@3 c5 ~ c6@4 d5 ~ b5@4 c5 ~ a5@24 ~@5 d5@6 d5@6 d5@6 d5@3 c5@12 a4@3 g4@3 a4@8 ~@3]/4",
  D: "~@15 d#5@3 d5@4 c5 ~", E: "d5 ~@5", F: "~@11 d5 e5 ~ c6@4 d5 b5@4 ~", G: "c5 a5@23", H: "~@7 d5@5 d5@6 d5@6",
  I: "c5@3 a4@20 ~", J: "~@11 a4@6 ~@7", K: "~@5 c4@3 d4@3 d4", L: "~ d4@5 d4 ~ c4 a3@12 ~@3",
  M: "[~@6 d4 e4 ~ g4 e4 ~ a4@3 a4 g4 ~ a4@8 a4@6 a4@6 c5@17 ~ d5@3 d#5@5 d5@3 c5@3 d5@6 c5@6 c5@14]/4",
  N: "~ c5@2 a4@6 a4@6 c5@8 ~", O: "[d5@3 ~@20 c5@3 a4@6 a4@6 a4@3 a4@3 e4@3 c4@3 c4@15 ~@7]/3",
  P: "[~@4 e4@3 g4@3 c5@3 c5@3 c5@6 d5@5 d5@3 c5@3 c5@6 ~@3 d5@3 d5@3]/2",
  Q: "[c5@3 d5@3 c5@3 d5@6 ~@5 [a4,a5]@41 ~@11]/3", // A
})).s("gm_overdriven_guitar").gain(0.31)

// chords · epiano2 · "El Piano"
const epiano2 = note(`<
  ~@3 A B@2 C@2 B@2 D@2 C@6 E@2 F@2 G@2 H@4 I@4 J@7 K@4 L@3 M@2 N@3 O@6 P@3 Q@2 R@4 S@3 T@4 U@4 V@6 W X@5 Y Z@2 AA@4 AB
  AC@5 AD@4 AE AF AG AH@7 AI@2 AJ@5 AK AL@4 AM@7 AN@3
>`.pickRestart({
  A: "~@5 [g4,a4,c5,e5]@3 ~ [g4,a4,c5,e5]@3", B: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 g4@2 [a4,c5,e5]@2]/2",
  C: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 [g4,a4,c5,e5]@2 [g4,a4,c5,e5]@2]/2", // Bm7 D C Am7
  D: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 [g4,a4,c5,e5]@2 g4@2]/2", // Bm7 D C Am7
  E: "[[f#4,a4,b4,d5]@4 [a3,d4,f#4]@3 [g3,c4,e4]@5 ~@4]/2", F: "[[e4,a4]@2 [g4,c5] [e4,a4]@4 [c4,g4]@9]/2",
  G: "[[g3,b3]@5 [d4,g4]@6 [d4,g4]@3 b3@3 [d4,g4]@30 ~]/2", // G G5
  H: "[~@5 [a4,c5]@3 g4@3 [a4,c5]@9 [g4,b4]@26 [g3,b3]@12 [d4,g4]@3 b3@3 [d4,g4]@3 [g3,b3,e4]@27 f3@2]/4", // Am G G5 Em
  I: "[~ [g3,b3,d4]@12 [g3,c4,e4]@21 ~@11 [g3,c4,e4]@6 c5@3 [c4,e4,a4]@9 [c4,e4,g4]@3 [g3,c4,e4]@15 ~@12 f3@3]/4", // G C Am C
  J: "[[g3,b3,d4]@12 [g3,c4,e4]@21 ~@11 [e3,g3,c4]@18 d4@3 [e3,g3,c4]@9 [a3,a4]@6 [a3,a4]@6 [a3,a4]@6 [a3,c4,f4]@12 ~@6 [a3,c4,f4]@3 [b3,d4,g4]@15 ~@2 g3@3 [b3,d4,g4]@6 [g3,c4,e4]@12 [e3,g3,a#3,d4]@9 [e3,g3,a3,d4]@8]/7", // G C A F G C Em7b5 Em7
  K: "[~ [g3,a3,c#4]@6 [g3,a3,c#4]@3 [g3,a3,c#4]@6 c#4@3 [c4,f4,a4]@12 [f3,a3,c4]@9 [g3,b3]@14 [b3,d4,g4]@12 [g#3,b3,d4,e4]@24 ~@6]/4", // A7 F G E7
  L: "[g4 d4 d#4 d4 c4 d4 a3@4 [a3,d4,f#4]@3 [g3,c4,e4]@9 ~@2]/3", M: "[~@5 [a3,d4,f#4]@9 [g3,c4,e4]@15 ~@19]/2",
  N: "[~@5 [a3,d4,f#4]@8 [g3,c4,e4]@39 ~@20]/3", // D C
  O: "[~@4 [g4,a4,c5,e5]@6 g4@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 g4@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 g4@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@11]/6", // Am7 Bm7 D C Am7 Bm7 D C …
  P: "[~@4 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@22 ~@10 [g3,c4]@3]/3", // Am7 Bm7 D C C5
  Q: "[a3@6 [g3,c4]@13 ~@5, e3@5 ~@11]/2", // C5
  R: "[~@2 [d4,g4]@3 b3@3 [d4,g4]@3 [g3,b3,e4]@26 ~ c4@6 [a4,c5]@3 g4@3 ~@5 [g4,b4]@3 [c4,e4,g4]@26 ~ [g3,b3]@11, ~@50 [a4,c5]@9 ~@37]/4", // G5 Em Am G C G Am
  S: "[~ [d4,g4]@3 b3@3 [d4,g4]@3 b3@3 b3@17 a3@3 a#3@3 f3@3 [g3,b3,d4]@12 [g3,c4,e4]@21, ~@10 [g3,e4]@21 ~@41]/3", // G5 G C
  T: "[~@17 [g4,c5]@3 [e4,a4]@9 [d4,g4]@3 [a3,d4]@9 c4@3 [e3,a3]@9 ~@6 [g3,b3,d4]@11 ~ c4@7 [g3,b3,d4]@8 ~@10, ~@58 f3@4 ~@8 [g3,e4]@7 ~@19]/4", // C5 A5 G5 D5 A5 G C
  U: "[~@10 [e3,g3,c4]@11 c4@6 d4@3 [c4,e4,a4]@15 [a3,a4]@9 [a3,a4]@2 [a3,c4,f4]@12 [f3,a3,c4]@6 [f3,a3,c4]@3 [b3,d4,g4]@15 ~@2 g3@2]/4", // C Am A F G
  V: "[~ [b3,d4,g4]@3 g3@3 [g3,c4,e4]@12 [e3,g3,a#3,d4]@9 [e3,g3,a3,d4]@9 c#4@2 [c#4,e4,g4,a4]@6 a3@6 a3@3 [a3,c4,f4]@12 [f3,a3,c4]@9 [b3,d4,g4]@14 [b3,d4,g4]@12 [g#3,b3,d4,e4]@23 ~@6 e4@6 c5@3 ~ a4 ~@3, ~@139 f#4@2 ~@3]/6", // G C Em7b5 Em7 A7 F G E7
  W: "~@4 a3@11 [a3,d4,f#4]@9", // D
  X: "[[g3,c4,e4]@26 ~@12 [a3,d4,f#4]@9 [g3,c4,e4]@26 ~@12 [a3,d4,f#4]@9 [g3,c4,e4]@26]/5", Y: "[e3,g3,c4]@23 ~",
  Z: "[~@23 [a3,c4,e4,g4]@12 e5 a5@3 [a3,c4,e4,g4,a5]@3 ~@6, ~@23 a5@6 ~@19]/2", // Am7
  AA: "[~@10 e5@3 d5@3 c5@3 [a3,c4,e4,g4]@14 ~@6 e5@3 ~@6 a4@9 [a3,c4,e4,g4]@9 ~@2 [c4,e4,g4]@12 ~@5 [a3,c4,e4,g4]@3 ~@8, ~@10 [a3,c4,e4,g4]@9 d5@20 ~@57, ~@11 [a3,c4,e4,g4]@3 ~ [a3,c4,e4]@4 ~@13]/4", // Am7 C Am7 Am
  AB: "~@2 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@6 ~@7", // Am7
  AC: "[~@7 [a3,c4,e4,g4]@9 e4@3 e4@11 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@15 [a3,c4,e4,g4]@9 [a3,c4,e4,g4]@14 [a3,c4,e4,g4]@9 ~@3 a4@31, ~@8 [a3,c4,g4]@7 ~@45]/5", // Am7
  AD: "[~@27 [f4,a4]@12 [g4,b4,d5]@18 [g4,b4,d5]@5 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 ~@22, ~@16 c5@23 ~@57]/4", // F G Am7
  AE: "~@2 [g4,a4,c5,e5]@5 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@11", AF: "~ [a3,d4,f#4]@9 [g3,c4,e4]@14",
  AG: "[g4,a4,c5,e5]!2 [f#4,a4,b4,d5]@2", // Am7 Bm7
  AH: "[[a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@8 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@11 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@6 [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@11 [a3,d4,f#4]@9 [g3,c4,e4]@15 [g4,a4,c5,e5]@4]/7", // D C Am7 Bm7 D C Am7 Bm7 …
  AI: "[~ [g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5]@6]/2", // Am7 Bm7 D C Am7
  AJ: "[[g4,a4,c5,e5]@6 [f#4,a4,b4,d5]@12 [a3,d4,f#4]@9 [g3,c4,e4]@14 [g4,a4,c5,e5] ~ [g4,a4,c5,e5]@4 [g4,a4,c5,e5]@6 [f#4,g4,b4,d5] [f#4,g4,b4,d5]@5 [f#4,g4,b4,d5]@6 [e4,f4,a4,c5] [e4,f4,a4,c5]@4 [e4,f4,a4,c5]@6 [e4,g4,c5] ~ [e4,g4,c5]@4 [e4,g4,c5]@5 [d4,f4,a4,c5] [d4,f4,a4,c5]@4 [d4,f4,a4,c5]@6 ~@2 a3@6 ~@4 e5 a5@3 [a3,g5]@3 a3@3, ~@53 [a3,c4,e4,g4]@4 [c4,e4,g4]@3, ~@106 e3@5 g3@6 ~@3]/5", // Am7 Bm7 D C Am7 Gmaj7 Fmaj7 C …
  AK: "a3@3 e3@2 e5 d5 [a3,c5], ~@5 [c4,e4,g4]@3, ~@5 [g3,a3]@2 ~", // Am C Gsus2
  AL: "[a3@2 ~@6 e3@6 [g3,a3]@6 [a3,e5]@3 [c4,e4,g4,c5]@3 ~@12 g3@5 a3@3 ~@3 a5@6 e3@6 e5 a5@3 [a3,c4,e4,g4,a5]@2 a3@3 a3@9 e3@5 d5@3 c5@3 a3@3 a3@3, ~@2 [a3,c4,e4]@12 [c4,e4,g4]@9 a3@9 e3@6 ~@58, ~@26 a4@9 [a3,c4,e4,g4]@9 ~@2 a3@9 ~@6 g3@6 ~@17 g3@6 ~@6]/4", // Gsus2 A5 C Am7 Am C Am7
  AM: "[~@6 e3@6 ~@6 a3@3 [a3,e5]@2 ~@9 a3@3 g3@6 a3@3 a3@3 a3@6 ~@4 e5 ~ a5@3 [a3,g5]@2 a3@3 a3@9 e3@6 e5@3 d5@3 [a3,c5]@3 a3@3 ~@6 e3@5 [g3,a3]@6 [a3,e5]@3 [c4,e4,g4,c5]@3 ~@12 g3@6 a3@3 ~@2 a5@6 e3@6 e5 ~ a5@3 a3 a3@3 a3@7, [a3,c4,e4]@12 [g3,b3,d4,f4]@9 ~@2 [a3,c4,e4,g4]@9 [c4,e4,g4]@6 ~@15 [a3,c4,e4,g4]@9 [c4,e4,g4]@6 ~@14 [c4,e4,g4]@9 ~@14 [c4,e4,g4]@9 ~@3 a4@9 [a3,c4,e4,g4]@9 ~@3 a3@9 ~@5 g3@6 ~@10, ~@29 e3@6 ~@18 e3@6 g3@6 ~@17 [g3,a3]@6 ~@6 [a3,c4,e4]@11 ~@9 a3@9 e3@6 ~@28 [c4,e4,g4,a5]@3 ~@8]/7", // A5 A7 Am Gsus2 A5 C Am G7 …
  AN: "[~@2 e3@6 d5@3 c5@2 a3@3 a3@3 ~@6 e3@6 ~@6 a3@3 [a3,e5]@3 ~@8 a3@3 g3@6 a3@3 a3@3 ~@6, ~@8 g3@6 ~@5 [a3,c4,e4]@12 [g3,b3,d4,f4]@9 ~@3 [a3,c4,e4,g4]@8 [c4,e4,g4]@6 ~@15, ~@49 e3@6 ~@17]/3", // A5 Am G7 Am7 C
})).s("gm_epiano2").gain(0.34)

// drums · kick
const kick = s("bd").struct("<[x ~@10 x ~@12] [~ x ~@9 x ~@12]!3 ~@38 [~@3 x] ~@39 [~@5 x ~@18] ~@55>").gain(0.29)

// drums · rim
const rim = s("rim").struct("<~@3 A B@7 ~@8 C ~@31 D ~@7 E ~@78>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x", D: "x", E: "~ x ~",
})).gain(0.29)

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

// drums · low tom
const low_tom = s("lt").struct("<~@42 A ~@38 B C ~@7 D E ~@30 F ~@12 G ~@2>".pickRestart({
  A: "~@2 x!8 ~@2", B: "~@15 x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@18", D: "~@6 x!6", E: "x", F: "~ x ~@4", G: "~@5 x",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 B C@7 ~ C D C D ~ D E F G H I@3 J K@3 L M@3 N O@3 P@4 Q ~@2 R S T S U V W U X U X ~ Y U ~ Z M@2 O@2 AA P AB G H
  I@2 K@2 L M N O P AB G AC ~@2 W AD AE AF AG B C ~@14 AH AE AI AJ AK AL ~ AM F ~ AN AO AP AQ ~ AR AS ~@17
>`.pickRestart({
  A: "~@7 x ~@11 x ~@4", B: "~@7 x ~@10 x ~@5", C: "~ x ~ x", D: "~@2 x!2 ~@8", E: "~ x ~@2", F: "~@2 x", G: "x!4",
  H: "x ~@5 x ~@5 x ~@5 x ~@4 x", I: "~@5 x ~@5 x ~@5 x ~@5 x", J: "~@5 x ~@5 x ~@4 x ~@5 x ~",
  K: "~@2 x ~@2 x ~@2 x ~@2 x", L: "~@4 x ~@5 x ~@4 x ~@5 x ~@2", M: "~ x ~ x ~ x ~ x",
  N: "~@3 x ~@4 x ~@5 x ~@5 x ~@3", O: "~ x ~@2 x ~@2 x ~@2 x ~", P: "~ x ~@5 x ~@5 x ~@5 x ~@4", Q: "x!2 ~@2",
  R: "x ~@22 x", S: "~@11 x ~@11 x", T: "~@23 x", U: "~@11 x", V: "~@5 x ~@5 x", W: "~@5 x ~@6", X: "~@10 x ~@10 x!2 ~",
// … 48 more lines

More by Seals & Crofts