Strudelify

County Fair

Joe Walsh

KeyA minorTempo80 bpm
0:00/0:00
// County Fair — Joe Walsh
// 80 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: pitch bends are ignored
// note: duplicate parts dropped: ch 4 "Guitar" overdriven guitar (copy of ch 1 "Guitar" overdriven guitar)
// note: Full arrangement: all 137 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · "Guitar"
const overdriven_guitar = note(`<
  A B C D C D C E F G F H@2 ~@2 I J@2 K@2 ~@11 L ~@3 M F N F O P Q P R@4 ~ S ~ T ~ U ~ V W@2 X@2 ~ Y ~ Z ~ AA AB@4 AC AD
  AE AF@7 AG@2 ~@2 AH@2 AI@2 AJ ~@2 AK AL ~ AM AN@2 ~@7 AO@3 AP@6 AQ@7 AR@16 AS@2
>`.pickRestart({
  A: "[a2,c3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,d3,d4,f#4]@12 [a3,d4] ~@7", // Am A5 D D5
  B: "[a2,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,a3,c#4,e4,a4]@12 [e3,a3,c#4] ~@7", // Am A
  C: "[a2,c3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,d3,d4]@12 [a3,d4] ~@7", // Am A5 D5
  D: "[a2,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7", // Am A
  E: "[a2,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [a2,e3,a3,c#4]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2", // Am A A5
  F: "[a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7", // Am A5 D D5
  G: "[e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7, a2@11 ~@21", H: "[[a2,e3,c4]@43 ~@21]/2",
  I: "~@8 e4@3 ~ d4@8 e4@10 ~@2", J: "[e4@4 d4@4 e4@4 b3@12 ~@4 g3@11 ~ e4@3 ~ d4@8 e4@10 ~@2]/2",
  K: "[e4@2 d4@2 e4@2 b3@6 ~@2 g3@13 ~@5]/2", L: "e3@4 a3@4 b3@4 a3@9 ~@3 b3@4 ~@4", M: "b3@2 f#4 ~ e4 c#4@3 a3@6 ~@2",
  N: "[a2,e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7", // Am A
  O: "[a2,e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [a2,e3,a3,c#4]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2", // Am A A5
  P: "[a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7, c2@3 d2@5", // Am A5 D D5
  Q: "[e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7, [c2,a2]@3 a1@5", R: "[e3,a3,c4]/4",
  S: "~@7 [d3,d4]@9", T: "[a2,e4]", U: "~ [a2,e4]@3", V: "[d3,d4]",
  W: "[~@4 [a2,a3,c4]@4 ~@3 [a2,a3,c4]@4 [a2,a3]@17]/2", X: "[~ [a2,e4]@3]/2", Y: "[a#2,d4,a4]", Z: "g2",
  AA: "~@11 [a3,d4,a4] ~ [a3,d4,a4] ~ [a2,a3,e4]", // D5 A5
  AB: "[[a2,a3,c4]@8 ~@4 g3@3 f#3@6 ~@10 [a2,e3,a3,c4]@5 [a2,e3,a3,c4]@2 [a2,e3,a3,c4]@2 ~@21 [a2,a3,c4]@8 ~@4 [d3,a3,d4]@10 ~@5 [b2,g3,b3]@4 [a2,e3,a3,c4]@7 [a2,e3,a3,c4] ~@22 [a2,a3,c4]@6, ~@6 [d3,a3,d4]@5 ~@53]/4", // Am D5 Em Am D5
  AC: "~@6 [d3,f#3,a3,d4]@10 ~@9 [a2,e3,a3,c4]@5 [a2,e3,a3,c4]@2", AD: "[a2,e3,a3,c4]@2 ~@21 [a2,a3,c4]@8 ~",
  AE: "~@2 [d3,a3,d4]@10 ~@4 [b2,g3,d4]@2 [b2,g3,d4]@3 [a2,e3,a3,c4]@8 [a2,e3,a3,c4] ~@2", // D5 G Am
  AF: "[~@20 [a2,a3,e4]@7 e3 [a2,a3] ~@2 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 c4@7 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@11 [e3,a3,c#4] ~@7 [a2,a3,e4]@7 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@6 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@11 [e3,a3,c#4] ~@7 [a2,a3,e4]@7 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@6 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@11 [e3,a3,c#4] ~@7 [a2,a3,e4]@7 [a2,e3,a3] ~@3 [d2,a2,a3,d4,f#4]@10, ~@20 [c2,c4]@11 d2@19 [c2,a2]@11 ~ a1@19 [c2,c4]@11 d2@19 [c2,a2]@11 ~ a1@19 [c2,c4]@11 d2@19 [c2,a2]@11 ~ a1@19 [c2,c4]@11 ~@10, ~@25 [e3,a3,e4]@4 ~@83]/7", // A5 A D D5 Am A A5 D …
  AG: "[~ [a3,d4] ~@7 [a2,a3,c4,e4]@32 ~@23]/2", AH: "[~@17 e4@3 ~ d4@8 e4@10 ~@2 e4@4 d4@4 e4@4 b3@11]/2",
  AI: "[~@5 g3@11 ~ e4@3 ~ d4@8 e4@10 ~@2 e4@4 d4@4 e4@4 b3@11]/2", AJ: "~@5 g3@26 ~", AK: "~@9 g4@12 f#4@4 ~@4 e4@3",
  AL: "~ e4@4 c4@2 ~@2 e4@16 ~@7", AM: "~@9 [c2,g2,c3]@23", AN: "[~ [c2,c3]@6 ~@2 [b1,b2]@32 ~@23]/2",
  AO: "[~@11 g3@4 ~@4 e4@2 ~@6 a3@2 a3@2 g#3@2 g3@4 ~@4 [a2,c3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,d3,d4,f#4]@12 [a3,d4] ~@7 [a2,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,a3,c#4,e4,a4]@11]/3", // Am A5 D D5 Am A
  AP: "[~ [e3,a3,c#4] ~@7 [a2,c3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,d3,d4]@12 [a3,d4] ~@7 [a2,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@11]/2", // A Am A5 D5 Am A
  AQ: "[~ [a2,e3,a3,c#4]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [d2,a2,a3,d4,f#4]@11, ~@9 c2@12 d2@20 [c2,a2]@12 a1@20 c2@12 d2@20 [c2,a2]@12 a1@20 c2@12 d2@20 [c2,a2]@12 a1@20 c2@12 ~@11]/7", // A A5 Am A5 D D5 Am A …
  AR: "[~ [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [a2,a3,d4,f#4]@12 [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@7 [a2,a3,c4,e4]@8 [a2,e3,a3] ~@3 [d2,a2,a3,d4,f#4]@11, ~@9 [c2,a2]@12 a1@20 c2@12 d2@20 [c2,a2]@12 a1@20 c2@12 d2@20 [c2,a2]@12 a1@20 c2@12 d2@20 [c2,a2]@12 a1@20 c2@12 ~@11]/8", // D5 Am A Am A5 D D5 Am …
  AS: "[~ [a3,d4] ~@7 [e3,a3,c4,e4]@8 [e3,a3,c4] ~@3 [a2,e3,a3,c#4,a4]@12 [e3,a3,c#4] ~@30, ~@9 [c2,a2]@12 a1@20 ~@23]/2", // D5 Am A F
})).s("gm_overdriven_guitar").gain(0.4).pan(0.7)

// chords · harpsichord
const harpsichord = note("<~@11 A@8 B C B D ~@5 E@8 ~@43 F G@7 H@6 ~@2 I@5 J@5 ~@32>".pickRestart({
  A: "a3 b3 a3 b3 c4 e4 b3@2 b3 c4 b3 e4 c4 b3 c4 b3", B: "a3 b3 a3 b3 c4 e4 b3@2 b3 c4 b3 c4!2 b3 c4 b3",
  C: "b3 c4 d4 e4 d4 e4 c4@2 c4 e4 d4 e4 c4 d4 b3 d4",
  D: "~@4 [b3,e4]@3 e3@3 ~@2 [b3,e4]@4, e3 ~@3, ~ g#3@2 ~@2 g#3@2 ~", E: "~ e3 [g3,g4,b4]@6",
  F: "~@9 a3 ~ b3 ~ a3 ~ b3 ~ c4 ~ e4 ~ b3 ~@3 b3 ~ c4 ~ b3 ~ e4",
  G: "~ c4 ~ b3 ~ c4 ~ b3 ~ a3 ~ b3 ~ a3 ~ b3 ~ c4 ~ e4 ~ b3 ~@3 b3 ~ c4 ~ b3 ~ e4",
  H: "[~ c4 ~ b3 ~ c4 ~ b3 ~ a2@2 e3@2 a3@2 a2@2 ~@2 a2 ~ g3@7 ~ f#3@7 ~ e3@3 ~@2 b2@4 [f#3,c#4]@4 d4@4 [e4,e5]@8 d4@4 a3@4 b3@4 a2@4 e3@4 c4@4 g3@8 [c4,c5]@4 [f#3,b3]@4 [e3,c4]@4 ~@7 [e2,b2,e3,b3]@11 ~ [b2,b3]@4 [b2,b3]@8 a2@2 e3@2 a3@2 a2@2 ~@2 a2 ~ g3@7 ~ f#3@7 ~ e3@3 ~@24, ~@17 c4@4 ~@41 d5@10 ~@53 e3@12 ~@8 c4@4 ~@43, ~@125 e2@9 ~@58]/6", // F#5 E C B5 C E5 B
  I: "[~@9 [g2,e3,g3,c4,e4]@32 ~@4 e3@4 [g3,g4,b4]@24 ~@4 e3@4 [g4,b4]@4 [b3,g4]@19 ~@5 e3@4 [b3,g4,b4]@24 ~@23, ~@81 g3@24 ~@55]/5", // C G Em
  J: "[~@13 e3@4 [g3,g4,b4]@24 ~@4 e3@4 [g3,g4,b4]@24 ~@4 e3@4 [g3,g4,b4]@24 ~@4 e3@4 [g3,g4,b4]@24 ~@23]/5", // G
})).s("gm_harpsichord").gain(0.64)

// chords · harpsichord · soft notes
const harpsichord_soft = note("<~@28 A B A B A B A B ~@43 C D@7 E ~@8 F G F H F G F G ~@33>".pickRestart({
  A: "g3@5 ~@27", B: "g3 ~@3", C: "~@10 a3@2 b3@2 a3@2 b3@2 c4@2 e4@2 b3@3 ~ b3@2 c4@2 b3@2",
  D: "e4@2 c4@2 b3@2 c4@2 b3@2 a3@2 b3@2 a3@2 b3@2 c4@2 e4@2 b3@3 ~ b3@2 c4@2 b3@2", E: "e4 c4 b3 c4 b3 ~@11",
  F: "~@9 g3@5 ~@18", G: "~@9 g3@8 ~@15", H: "~@9 e4@8 [b3,d4]@4 [a3,c#4]@8 ~@3",
})).s("gm_harpsichord").gain(0.4)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@7 A B C D E@8 F G F H F G I G J F K L M L N F O ~@4 P C Q R@4 ~@2 S ~ S ~ S ~ S ~ T ~ T ~ T ~ T ~ U@4 V W X Y@4 Z@3
  AA@2 ~@2 AB@8 AC@3 AD@2 AE@4 AF@4 AG ~@6 AH AI@2 AJ@3 AK@2 AL@2 AM AN AO AP AQ@2 AM AN AO AP AR@2 AO AP AS@2
>`.pickRestart({
  A: "~@7 e1", B: "a1@3 a1 a1@3 e1", C: "a1@11 ~ a1@8 e1@4 g1@4 g#1@4", D: "a1@11 ~ a1@16 e1@3 ~", E: "a1/4", F: "a1",
  G: "b1", H: "e1!2", I: "c2@6 c2 ~", J: "a1@27 ~ a1@4", K: "d2 b1@3", L: "a1@31 ~", M: "~@20 b2 ~@3 c#3@6 ~@2",
  N: "d2@2 g1 a1@5", O: "d3@4 c#3@4 b2@4 a2@7 d2 e2@4 a1@7 ~", P: "a1@12 a1@19 ~", Q: "a1@11 ~ a1@12 ~@8", R: "a2/4",
  S: "a1@8 a1 ~@23", T: "a1@3 a1!2 ~@11",
  U: "[a1@8 ~@3 a1@4 a1@13 ~@2 a1@6 a1@2 a1@2 ~@21 a1@8 ~@3 a1@11 ~ g1@4 g#1@3 a1@10 ~@21 a1@6]/4",
  V: "~@5 a1@4 a1@13 ~@2 a1@6 a1@2", W: "a1@2 ~@21 a1@8 ~", X: "~@2 a1@4 a1@13 ~@2 a1 ~ a1 ~ a1@4 ~@3",
  Y: "[~ a1 ~ a1 ~ a1@7 g1@4 a1@4 a1@11 a1@19 a1@11 ~ a1@4 a3 a3@2 a3@2 a3@2 a3@2 g3@2 e3@2 d3@2 a1@11 a1@19 a1@11 ~ a1@4 ~]/4",
  Z: "[~@14 a1@11 a1@19 a1@11 ~ a1@4 ~ e2@2 g2@4 d2@4 c2@4 a1@11 a1@8 ~@2]/3", AA: "[~@9 a1@32 ~@23]/2",
  AB: "[~@9 a1@128 a2@32 b2@32 a2@32 e2@23]/8", AC: "[~@9 a2@32 b2@32 c2@23]/3", AD: "[~ c2@6 ~@2 b1@32 a2@23]/2",
  AE: "[~@9 a1@32 d2@8 b1@24 a1@31 ~@21 e2@3]/4",
  AF: "[~ a1@7 ~ a1@31 ~ d2@8 b1@4 a1@20 a1@28 d3@4 ~@4 c#3@4 ~@4 c#2@4 a2@4 e2@3]/4", AG: "~ a1@7 ~@24",
  AH: "~@25 a1@7", AI: "[~ e1@4 f#1@4 a1@12 a1@19 ~ a1@11 ~ a1@8 e1@3]/2",
  AJ: "[~ g1@4 g#1@4 a1@8 e1@4 a1@20 g1@8 e1@4 a1@8 e1@2 e1@2 g1@4 g#1@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@3]/3",
  AK: "[~ a2@4 a2@4 a2@4 a2@4 a2@4 a2@2 a2@2 e2@2 d2@2 e1@2 e1@2 g1@4 g#1@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@3]/2",
  AL: "[~ a2@4 a2@4 g2@4 g2@4 g2@4 a2@4 a2@2 a2@2 f1@2 f1@2 g#1@4 a1@4 a2@4 a2@4 ~@6 a2@2 a2@4 a2@3]/2",
  AM: "~ e2@2 g2@2 a2@4 g2@4 g2@4 ~@4 a2@4 ~@4 e2@3", AN: "~ g2@4 a2@4 a2@4 a2@4 ~@6 e2@2 a2@4 a2@3",
  AO: "~@5 a2@2 e2@2 g2@4 g2@4 ~@4 a2@4 ~@4 e2@3", AP: "~ g2@2 e2@2 a2@2 e2@2 a2@4 a2@4 ~@6 a2@2 a2@4 a2@3",
  AQ: "[~ e2@2 g2@2 a2@4 g2@4 g2@4 ~@4 a2@4 ~@4 a2@2 a2@2 g2@2 g2@2 e2@2 g2@2 a2@4 a2@4 ~@6 a2@2 a2@4 a2@3]/2",
  AR: "[~ e2@2 g2@2 a2@4 g2@4 g2@4 ~@4 a2@4 ~@4 a2@2 a2@2 g2@2 g2@2 e2@2 g2@2 a2@4 a2@4 ~@6 e2@2 a2@4 a2@3]/2",
  AS: "[~ e2@2 g2@2 a2@4 g2@4 g2@4 ~@4 a2@4 ~@4 a2@2 a2@2 g2@2 g2@2 e2@2 g2@2 ~@23]/2",
})).s("gm_fretless_bass").gain(0.8).pan(0.4)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note("<~@31 A ~@34 B ~@3 C ~@4 D E ~@19 F ~@2 G ~@37>".pickRestart({
  A: "d3@2 c#3@2 b2@2 a2@4 ~ c3 ~@4", B: "~@14 a1 ~ e1 ~ a1@4 ~@10", C: "~@8 a1 ~ e1 a1@4 ~@17", D: "~@15 c3",
  E: "a2 g2 e2 d2 c2 a1 ~@10", F: "~@3 a2@6 ~@23", G: "~@9 d3@8 b2@4 a2@8 ~@3",
})).s("gm_fretless_bass").gain(0.48).pan(0.4)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  A B C B A D A E A F A G H I H ~@4 J K J L J K M N ~ O@8 ~@6 P@4 ~@3 Q ~ Q ~ Q ~ Q ~ Q ~ Q ~ Q ~ Q ~@15 R S@2 T@2 ~@3
  U@3 V@4 ~ W X Y Z AA X AB@2 AC AD@2 AE@6 ~@25
>`.pickRestart({
  A: "[a3,c4,e4]@4 ~@2 [a3,d4,f#4]@7 ~@3", B: "[g3,c4,e4]@9 ~@3 [a3,e4,a4]@12 ~@8",
  C: "[a3,c4,e4]@4 ~@2 [a3,f#4,a4]@7 ~@3", D: "[g3,c4,e4]@9 ~@3 [a3,a4]@13 ~@7, ~@12 e4@9 ~@11",
  E: "[g3,e4,c5]@2 ~ [a3,e4,a4]@3 ~@2", F: "[g3,c4,e4]@9 ~@3 [a3,a4]@13 ~@7",
  G: "[a2,e3] ~ [a2,e3]@2 ~@2 [a2,e3]@2 e3@2 e4@2 [g3,g4]@9 ~@3 [g3,g4]@8", H: "a2 ~@3 a2@4 [e3,c4]@2 e4@2 [g3,g4]@20",
  I: "[a2,e3] ~@3 a2@4 e3@2 e4@2 [g3,g4]@9 ~@3 [g3,g4]@8, ~@2 e3 ~@13", J: "a2 e3 c4 b3@2 [c4,c5] [g3,g4]@2",
  K: "b2@2 f#3@2 d4@2 [e4,e5]@4 d4@2 b3@3 ~, ~@10 d5@5 ~", L: "[e2,b2]@7 e2 [e2,b2]@7 ~", M: "c3 g3 c4 d4@3 c3@2",
  N: "b2 f#3 e4 d4@3 b3@2", O: "~@2 b4@3 ~ d4@2", P: "[~@16 [c4,e4]@35 ~@13, ~@31 e3@72 ~@25, ~@31 a3@68 ~@29]/4",
  Q: "[a2,c3,e3] ~@3", R: "~@9 [a2,e3] ~ [a2,e3]@2 ~@2 [a2,e3]@2 e3@2 e4@2 [g3,g4]@9 ~@2",
  S: "[~ [g3,g4]@8 a2 ~@3 a2@4 [e3,c4]@2 e4@2 [g3,g4]@20 [a2,e3] ~@3 a2@4 e3@2 e4@2 [g3,g4]@9 ~@2, ~@45 e3@2 ~@17]/2", // G C G A5 G
  T: "[~ [g3,g4]@8 a2 ~@3 a2@4 [e3,c4]@2 e4@2 [g3,g4]@20 ~@23]/2", // G C G
  U: "[~@9 a2@4 e3@4 c4@4 g3@8 f#3@8 e3@4 b2@4 [f#3,c#4]@4 d4@4 [e4,e5]@8 d4@4 a3@4 b3@4 a2@4 e3@4 c4@4 g3@8 [c4,c5]@3, ~@21 g4@12 ~@28 d5@10 ~@25]/3", // F#5 E C
  V: "[~ [f#3,b3]@4 [e3,c4]@4 [e2,b2]@12 [e2,b2]@14 ~@6 a2@4 e3@4 c4@4 g3@8 f#3@8 e3@4 b2@4 [f#3,c#4]@4 d4@4 [e4,e5]@8 d4@4 a3@4 b3@4 a2@4 e3@4 c4@4 g3@8 c5@3, ~@53 g4@12 ~@28 d5@10 ~@25]/4", // B5 C E5 F#5 E
  W: "~ a4@10 ~@21", X: "~@17 b4@12 ~@3", Y: "~ d4@8 ~@8 [e4,b4]@4 [g4,b4]@8 ~@3", Z: "~ d4@8 g3@8 [b3,b4]@12 ~@3",
  AA: "~ d4@8 ~@23", AB: "~ d4@8 ~@8 b4@12 ~@3", AC: "~ d4@8 d4@4 ~@4 d4@4 ~@4 d4@4 ~@3",
  AD: "[~@9 [a3,e4]@8 ~@4 [a3,e4,f#4]@14 ~@6 [g3,c4,e4]@9 ~@3 [a3,a4]@11]/2", // A5 F#m7 C A
  AE: "[~@9 [a3,e4]@8 ~@4 [a3,f#4]@14 ~@6 [g3,e4,c5]@8 ~@4 [a3,a4]@11]/2", // A5 D C A
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.7)

// chords · electric guitar clean · "Clean Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  A B A B A B A B A B A ~@17 C D C D C D C D ~@60 E F G ~ E F E ~ H I J I J I J I K ~@24
>`.pickRestart({
  A: "~@8 [a3,e4,a4] ~@15 a4 ~@7", B: "~@8 [e4,a4,c5] ~@15 [e4,a4,c#5] ~@7", C: "g3 e3 ~@3 g3 ~@2",
  D: "f3 d3 ~@3 g3 ~@2", E: "~@9 g3@4 e3@4 ~@12 g3@3", F: "~@9 f3@4 d3@4 ~@12 g3@3", G: "~@29 g3@3",
  H: "~@17 [a3,e4,a4] ~@14", I: "~ a4 ~@15 [e4,a4,c5] ~@14", J: "~ [e4,a4,c#5] ~@15 [a3,e4,a4] ~@14",
  K: "~ [e4,a4,c#5] ~@30", // A
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.7)

// bass · lead 8 bass lead · "Bass lead"
const bass_2 = note("<~@11 A@8 ~@24 B@5 ~@89>".pickRestart({
  A: "a2/4", B: "[a4@13 ~@3]/5",
})).s("gm_lead_8_bass_lead").gain(0.4).pan(0.6)

// chords · piano
const piano = note(`<
  ~@15 A B A B ~@53 C@5 D@2 E@2 ~@2 F@2 G@2 ~@29 H I@2 J@2 K L K L K L K L K L K L K L K M
>`.pickRestart({
  A: "~@8 [e4,c5]@3 ~ [d4,b4]@5 ~@3 [e4,c5]@9 ~@3", B: "[e4,c5]@3 ~ [d4,b4]@2 ~@2 [e4,c5]@3 ~ [d4,g4]@7 ~@13",
  C: "[~@20 [g4,d5,g5]@8 ~@3 [a4,d5,f#5]@8 ~@11 [a4,e5,g5]@8 ~@4 [a4,e5,a5]@13 ~@6 [g4,d5,g5]@8 ~@3 [a4,d5,f#5]@8 ~@11 [a4,e5,g5]@8 ~@4 [a4,e5,a5]@13 ~@6 [g4,d5,g5]@8 ~@3 [a4,d5,f#5]@7]/5", // G5 D A7 A5 G5 D A7 A5 …
  D: "[~@12 [a4,e5,g5]@8 ~@4 [a4,e5,a5]@13 ~@6 [a4,e5,a5]@8 ~@7 [a4,e5,a5]@6]/2", E: "[~@9 [a4,e5,g5]@32 ~@23]/2",
  F: "[~@17 [e4,c5]@3 ~ [d4,b4]@5 ~@3 [e4,c5]@9 ~@3 [e4,c5]@3 ~ [d4,b4]@2 ~@2 [e4,c5]@3 ~ [d4,g4]@7 ~@4]/2", // C G C G C G5
  G: "[~@17 [e4,c5]@3 ~ [d4,b4]@5 ~@3 [e4,c5]@9 ~@3 [e4,c5]@3 ~ [d4,b4]@2 ~@2 [e4,c5]@3 ~ [d4,g4]@11]/2", // C G C G C G5
  H: "~@9 [g4,d5,g5]@8 ~@4 [a4,d5,f#5]@8 ~@3", // G5 D
  I: "[~@9 [a4,e5,g5]@8 ~@4 [a4,e5,a5]@14 ~@6 [g4,d5,g5]@8 ~@4 [a4,d5,f#5]@8 ~@3]/2", // A7 A5 G5 D
  J: "[~@9 [a4,e5,g5]@8 ~@4 [a4,e5,a5]@14 ~@6 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~]/2", // A7 A5 C5 G5
  K: "~ [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~@2 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 [a4,e5,a5]@2 ~@2 [a4,e5,a5]@2 ~@2 [a4,e5,a5]@2 ~", // G5 C5 A5
  L: "~ [a4,e5,a5]@2 ~@2 [a4,e5,a5]@2 ~@2 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 [c5,g5,c6]@2 ~@2 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~@2 [d5,g5,d6]@2 ~", // A5 C5 G5
  M: "~ [a4,e5,a5]@2 ~@2 [a4,e5,a5]@2 ~@25", // A5
})).s("gm_piano").gain(0.56).pan(0.7)

// chords · reed organ · "Organ"
const reed_organ = note("<~@40 A B C D@4 ~@25 E@8 ~@32 F@24 ~>".pickRestart({
  A: "[c3,e3,g3]@3 [d3,f#3]@5", B: "[c3,e3,g3]@3 [a2,e3]@5", C: "[c3,g3]@3 [d3,f#3]@5", D: "[c3,g3]/4",
  E: "[~@20 [c3,e3,g3]@11 [d3,f#3]@19 [c3,e3,g3]@11 ~ [a2,e3]@19 [c3,e3,g3]@11 [d3,f#3]@19 [c3,e3,g3]@11 ~ [a2,e3]@19 [c3,e3,g3]@11 [d3,f#3]@19 [c3,e3,g3]@11 ~ [a2,e3]@19 [c3,e3,g3]@11 [d3,f#3]@19 ~@23]/8", // C D C A5 C D C A5 …
  F: "[~@9 [c3,e3,g3]@12 [d3,f#3]@20 [c3,e3,g3]@12 [a2,e3]@20 [c3,e3,g3]@12 [d3,f#3]@20 [c3,e3,g3]@12 [a2,e3]@20 [c3,e3,g3]@12 [d3,f#3]@20 [c3,e3,g3]@12 [a2,e3]@20 [c3,e3,g3]@12 [d3,f#3]@20 [c3,e3,g3]@12 [a2,e3]@11]/8", // C D C A5 C D C A5 …
})).s("gm_reed_organ").gain(0.8).pan(0.4)

// other · distortion guitar · "Lead Guitar"
const distortion_guitar = note(`<
  ~@49 A B C ~ D ~ E ~ F G H ~ I ~ J ~ K L@2 M N O P Q@2 R S@3 T ~@21 U V W X Y ~@7 Z@2 AA@2 AB@2 AC@2 AD@2 AE@2 AF@2 ~
  AG AD@2 AE@2 AF@2 ~@3
>`.pickRestart({
  A: "d4 ~@3", B: "~@2 a3!2", C: "e4@5 c4@2 d4@2 ~@2 c4@9 ~@12", D: "d4@2 g4 d4@5 ~@8", E: "e4 ~@3",
  F: "e4 ~ g4 e4 d4 c4 a3 ~@9, ~ e4@2 ~@13", G: "~@8 e4 g4!2 d4!2 c4 a3 g3", H: "a3 ~@3",
  I: "e4!2 g4 e4 d4 c4 e4 ~@2 e4 ~@2 d4 ~ c4@2", J: "g3@3 ~@3 g3!2 g3@2 ~@2 g3@9 ~@11",
  K: "g4 ~ a4 ~ a4@2 ~@2 a4@2 ~ g4 ~ a4@6 b4@4 ~@9",
  L: "[~@18 g4@3 a#4 ~@3 a#4@11 ~@2 e4@2 a4@2 e4 ~ g4@7 ~@13, ~@37 g4@2 ~@25]/2", M: "~@13 g4@2 c5",
  N: "~@3 c5@9 ~ c5@3 ~ a4@4 ~ a4@4 c5@4 ~@2, ~@2 d5@2 ~@17 g4@2 ~@9", O: "~@23 e5@4 g5@2 e5@3",
  P: "g5@2 e5@4 g5@2 e5@4 g5@2 e5 d5 c5@2 a4@3 a4@8 ~@3",
  Q: "[~@9 g4@3 a#4@2 ~@2 d5@2 ~@2 d5@2 ~@2 d5@5 ~@2 d5@7 ~ c5@3 ~ a4@3 e4@2 g4@5 ~ a4@3 ~@7]/2",
  R: "~@17 a5@2 e5@2 ~ e5@2 g5@2 e5@3 ~ d5@2, ~@21 g5@3 ~@8",
  S: "[c5@2 d5@2 ~@4 d4@7 [e3,a3] ~ [e3,g3] ~ [e3,a3] ~@3 [a2,a3] ~@3 [c3,g3] ~ [g3,a3] a3@4 g3@2 e3@2 d3@2 c3@2 a2@4 [a2,a3]@2 [e3,e4]@2 ~ [e3,e4]@2 [a3,a4]@2 [d4,d5]@2 a4@2 d5@2 f#5@2 e5@6 a5@7 b5@3 ~ b5@3 ~ e5@2 c#5@2 f#5@2 c#5@6, ~@15 c4 ~@9 [a3,a4] ~@22]/3", // A5 Em A5 A C5 Gsus2 A E …
  T: "~@11 d4@8 ~@7 f4@6", U: "~@9 a5@5 ~@7 a5@4 ~@7",
  V: "~ c#4 b3 ~ g3@2 ~@3 b3@4 a4@2 ~@2 a3@2 ~@2 g3@8 ~@3, ~@3 a3@2 ~@27", W: "~@17 e3@2 f#3@2 a3@2 ~@2 b3@3 ~ a4@2 ~",
  X: "~@5 b3@3 ~ a4@2 ~@2 a3@3 ~ g4@2 ~@2 g3@3 ~ f#4@2 ~@2 f4@2 ~", Y: "~ e4@2 ~@29",
  Z: "[~ d4@4 a4@4 g4@28 ~@20 c#4@2 ~@2 d4@2 ~]/2", AA: "[~ d#4@2 ~@2 e4@2 ~@2 a4@48 ~@2 a3@2 c4@3]/2",
  AB: "[~ a3@4 e3@4 a3@30 ~@18 c#4@2 ~@2 d4@2 ~]/2", AC: "[~ d#4@2 ~@2 e4@2 ~@2 a4@48 c4@3 ~ c4@3]/2",
  AD: "[~ a3@4 e3@4 a3@32 ~@16 c4@3 ~ c4@3]/2", AE: "[~ a3@4 e3@4 g3@32 ~@16 c#4@2 ~@2 d4@2 ~]/2",
  AF: "[~ d#4@2 ~@2 e4@2 ~@2 c4@4 a3@46 ~@5]/2", AG: "~@25 c4@3 ~ c4@3",
})).s("gm_distortion_guitar").gain(0.4).pan(0)

// other · distortion guitar · "Lead Guitar" · soft notes
const distortion_guitar_soft = note("<~@49 A ~@3 B ~@3 C ~ D ~@19 E@4 ~@11 F G ~@6 H ~@34>".pickRestart({
  A: "~@3 d4@2 ~@3", B: "~@3 d4", C: "~@10 d4 c4 a3 ~@3", D: "~@3 a3", E: "[~@9 g4@94 ~@25]/4", F: "~ a4@8 a4@8 ~@15",
  G: "~ a4@8 ~@23", H: "~@9 [a3,c#4,a4,c#5]@4 ~@19",
})).s("gm_distortion_guitar").gain(0.16).pan(0)

// other · distortion guitar · "Lead Guitar"
const distortion_guitar_2 = note(`<
  ~@48 A ~ B ~@3 C ~@2 D E F ~ G@2 H ~ I J@2 K L M N O P Q@4 R S@4 ~@17 T U V W X ~@7 Y@2 Z@4 AA@6 AB@2 ~ AC@5 AB@2 ~@3
>`.pickRestart({
  A: "~@4 d4!4", B: "~@13 a3@3", C: "[c#3,e4]", D: "e4 ~ g4 e4 d4 c4 a3 ~@9, ~ e4@2 ~@13",
  E: "~@8 e4 g4!2 d4!2 c4 a3 g3", F: "a3 ~@3", G: "[~ e4!2 g4 e4 d4 c4 e4 ~@2 e4 ~@2 d4 ~ c4@2 ~@15]/2",
  H: "~ g3@3 ~@2 g3!2 ~ g3@2 ~@2 g3@9 ~@10", I: "~ g4 a4 ~ a4@2 ~@2 a4@2 ~@2 g4 a4@6 ~ b4@4 ~@8",
  J: "[~@18 g4@4 a#4 ~@3 a#4@11 g4@2 e4@2 a4@2 e4 ~ g4@7 ~@12]/2", K: "~@13 g4@2 c5",
  L: "~@2 d5@2 c5@9 c5@3 ~ a4@4 g4@2 a4@4 c5@4 ~", M: "~@23 e5@4 g5@2 e5@3",
// … 182 more lines

More by Joe Walsh