Strudelify

Trashy Woman

Confederate Railroad

KeyA♭ majorTempo137 bpm
0:00/0:00
// Trashy Woman — Confederate Railroad
// 137 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 114 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · acoustic bass · "Acoustic Bs."
const bass = note(`<
  ~ A B C D A E C F G H I J K L M N O P Q R S P Q T U V I W K X Y Z A B C D A E C F G H I J K L M N O P Q R S P Q T U V
  I W K X Y Z AA AB C AC AD AE AF AG O AH AI AJ A E C F G H I J K L M N O P Q R S P Q T U V I W K X Y Z A B AK AL AM AN
  AO AP@2
>`.pickRestart({
  A: "ab2 ~ ab2 ~", B: "eb2@7 ~@5 eb2@7 ~@5", C: "ab2 ~ eb2 ~", D: "ab2@4 eb2@2 eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~@3",
  E: "eb2@7 ~@5 eb2@6 ~@6", F: "ab2@3 ~ ab2@2 f2@3 ~@3 eb2@3 ~@3 f2@3 ~@3", G: "ab2 ~@2 eb2 ~@2",
  H: "ab2@5 ~@5 c2 ~ db2@3 ~@3 d2@3 ~@3", I: "eb2@5 ~@7 bb1@5 ~@7", J: "eb2@5 ~@7 bb1@3 ~@3 c2@3 ~@3",
  K: "db2@5 ~@7 ab1@6 ~@6", L: "db2@6 ~@6 db2@5 ~@7", M: "ab2@6 ~@4 ab1@2 bb1@3 ~@3 c2@3 ~@3",
  N: "db2@7 ~@5 db1@3 ~@3 eb1@3 ~@3", O: "ab1@5 ~@7 ab1@5 ~@7", P: "eb2@5 ~@7 eb2@5 ~@7", Q: "ab2@5 ~@7 eb2@5 ~@7",
  R: "ab2@4 eb2@2 eb2@3 ~@3 f2@3 ~@3 g2@3 ~@3", S: "ab2@6 ~@6 ab2@4 ~@2 db2@3 ~@3",
  T: "ab2@6 ~@4 eb2@2 eb2@4 ~@2 f2@3 ~@3", U: "ab2@5 ~@7 eb2@6 ~@6", V: "ab2 ~ c2 ~ db2 ~ d2 ~",
  W: "eb2@4 bb1@2 bb1@4 ~@2 bb1@3 ~@3 c2@3 ~@3", X: "db1 ~ db1 ~", Y: "ab2@2 ~ gb2@2 ~ f2@2 ~ eb2@2 ~",
  Z: "db2@2 ~ f2@2 ~ gb2@2 ~ g2@2 ~", AA: "ab2@5 ~@7 ab2@6 ~@6", AB: "eb2 ~ eb2 ~",
  AC: "ab2@5 ~ bb1@5 ~ b1@4 ~@2 c2@4 ~@2", AD: "db2@4 ~ db2 ab1@6", AE: "db2@3 ~ db2@2 f1@4 ~@2 gb1@4 ~@2 g1@3 ~@3",
  AF: "ab1@5 ~ gb1@5 ~ f1@5 ~ eb1@5 ~", AG: "db1@5 ~ f1@5 ~ gb1@5 ~ g1@5 ~", AH: "eb1 ~ eb1 ~",
  AI: "ab1@6 ~@6 eb1@5 ~@7", AJ: "ab1@4 eb1 ~ eb1@4 ~@2 eb1@4 ~@2 eb1@4 ~@2", AK: "ab2@5 ~ ab1@5 ~ bb1@6 c2@5 ~",
  AL: "db2 f2 gb2 g2", AM: "ab2@5 ~ ab2@6 db2@6 d2@5 ~", AN: "eb2@9 ~@3 bb1@8 ~@4", AO: "ab2@6 ~@6 eb2@5 ~@7",
  AP: "[ab2@4 eb2@2 db2@4 ab1@33 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.54).pan(0.4)

// chords · piano · "Piano 2"
const piano = note(`<
  ~@5 A B C@4 D@2 E@2 F G H B I J K L M@2 N O P Q R@2 S T U V W X A B C@4 D@2 E@2 F G H B I Y K L M@2 Z O P Q AA@2 S T U
  V AB AC AD@2 AE AF AG AH AI@2 A B C@4 D@2 E@2 F G H B AJ@2 K L M@2 N O AK Q R@2 S T U V AL AM U V AN AO@2
>`.pickRestart({
  A: "[ab2,eb4,ab4,c5]@23 ~", B: "[eb4,g4,bb4]@7 ~, eb3@23 ~", C: "[[ab2,eb4,ab4,c5]@23 ~]/2",
  D: "[[eb4,g4,bb4]@43 ~@5, eb3@47 ~]/2", E: "[[f4,ab4,db5]@15 ~, db3]/2", F: "[eb4,ab4,c5]@7 ~, ab2@23 ~",
  G: "[f4,ab4,db5]@11 ~, db3", H: "[ab2,eb4,ab4]@23 ~, c5@7 ~", I: "[ab2,eb4,ab4,c5]",
  J: "~@3 [eb3,bb3,eb4]@2 ~ [eb3,bb3,eb4]@2 eb2 [bb3,eb4]@2 eb2, ~@4 eb2@4 ~@2 eb2@4 ~@4 eb3@3 ~@3", // Eb5
  K: "eb6@2 ab5 db6@2 ab5 [c6,eb6]@2 ab5 db6@2 eb5, [ab2,ab3]@5 ~, c6@2 ~@4 f6@2 ~@10 f6@3 ~@3, bb5 ~@11 bb5 ~@11", // Cm Ab
  L: "[bb5,eb6]@4 eb5 ~ [bb5,f6]@4 eb5@2 [bb5,eb6]@4 eb5@2 bb5@4 eb5@2, [eb2,eb3]@23 ~, ~@6 f6 ~", // Eb5 Bb5 Eb5 Eb
  M: "[eb6@4 ab5@2 db6@4 ab5 ~ eb6@4 ab5 ~ db6@4 ab5@2 eb6@4 ab5@2 [db6,f6]@4 ab5 ~ eb6@3 ~ ab3@2 [ab5,f6] ~@3 ab3@2, ab2@9 ~ ab2@30 ~@8, c6@2 ~@4 f6@2 ~@4 c6@2 ~@4 f6@2 ~@4 c6@2 ~@10 c6 ~@5 db6@4 ~@2, ab5 ~@3 ab3@6 ~@2 bb5 ~@5 ab3@6 bb5 ~@21 ab5 ~]/2", // Db
  N: "eb6@4 ab5 ~ db6@4 ab5 ~ eb6@4 ab5@2 db6@4 ab3@2, ab2@11 ~, c6@2 ~@4 f6@2 ~@4 bb5 ~@9 ab5 ~, bb5 ~@11 c6@2 ~@4 f6@2 ~@4",
  O: "[bb5,b5,c6] ~@3 ab5 ~ db6@4 ab5 ~ eb6@4 ab5@2 [db6,f6]@3 ~ eb5@2, ab2@20 ~@2 ab2 ~, eb6@4 ~@2 f6@2 ~@4 c6@2 ~@4 ab5 ~@5, ~@12 bb5 ~@3 ab3@5 ~@3", // Db
  P: "[ab5,eb6]@3 ~ eb5 ~ [bb5,eb6]@3 ~ eb5 ~ [ab5,eb6]@3 ~ eb5 ~ [g5,eb6]@3 ~ eb2@2, eb3@7 ~@9 eb3@5 ~@3, ~@4 eb2@5 ~ eb2@11 ~@3", // Ab5 Eb5 Ab5 Cm
  Q: "[ab5,ab6] ~@3 ab5 ~ [ab5,eb6,ab6]@3 ~ eb2@2 eb3 ~@3 eb3@2 [g5,eb6,g6]@4 [eb3,g5] ~, eb6@3 ~ eb3@5 ~ [eb6,g6]@6 ~@8, ~@10 g5@4 ~@2 g5 ~@7", // Ab Ab5 Cm Eb
  R: "[~@4 [db4,db6]@2 [eb6,ab6]@3 ~ ab5 ~ [ab5,db6,ab6]@2 ~@4 [eb6,ab6]@3 ~ ab5 ~ [ab5,db6,ab6]@3 ~ db6@2 eb6@2 ~@2 ab5 ~ [eb6,ab6]@3 ~ db4@2 db3@3 ~ ab3@2, db3@8 ~@2 db3@11 ~ db3@11 ~ db3@7 ~@7, ~@4 [ab5,ab6] ~ ab5 ~@9 db4@4 ~@8 db4@4 ~@8 db6@5 ~@3, ~@18 ab5 ~@9 ab6 ~ ab6 ~@9 ab6@7 ~]/2", // Db Ab5 Db5 Ab5 Db5 Ab5 Ab
  S: "ab3@3 ~ [bb5,eb6]@2 [c6,eb6]@2 ~@2 ab3@2 [bb5,eb6]@4 c6 ~ [bb5,eb6]@4 ab3@2, ~@4 ab2@5 ~@7 ab3@4 ~@4, ~@4 ab5 ~@5 ab5 ~ ab5 ~@9 c6 ~", // Eb5 Cm Eb5
  T: "[ab5,db6]@3 ~ db4@2 [gb5,db6]@3 ~@3 db4 ~@3 [db4,f5] ~ [gb5,db6] ~ [ab5,db6]@2 [db3,f5] ~, db3@9 ~ [db3,ab5,db6]@7 ~ db3@2 ~@4, ~@4 f5 ~@19", // Db5 Gb5 Db Gb5 Db5 Db Db5
  U: "~@4 [bb5,eb6] ~ [bb5,eb6]@2 c6 ~ ab5 ~ [ab5,bb5,eb6]@4 [ab3,c6] ~ [ab3,bb5,eb6]@2 c6@2 [ab3,bb5] ~, ~@4 ab2@4 ~@2 ab2@5 ~@9", // Eb5 Absus2 Ab Absus2
  V: "[eb3,bb5,eb6]@3 ~@3 [eb4,ab5,eb6]@3 ~ eb4 ~@3 eb5@2 ~@2 [ab5,eb6]@2 eb5 eb3 [eb5,g5] ~, ~@4 eb3@5 ~ [g5,eb6]@5 ~ eb4@4 ~@2 eb6@2, ~@3 eb3@2 ~", // Eb5 Ab5 Eb Cm
  W: "ab3@2 ~@2 [ab5,eb6]@2 ~@4 ab3 ~ [db6,ab6]@2 ~@2 ab3@2 [db6,ab6]@2 eb6 ~ ab3@2, ~@4 [ab2,ab6] ~@7 ab2@4 ~@8, ~@12 ab5 ~@5 ab5 ~@5", // Ab5 Db5 Ab
  X: "[db6,ab6]@2 eb6 ~ [bb5,eb6]@2 ~ eb3@3 [eb4,eb5,eb6] ~ [eb5,bb5,eb6]@4 ~@2 [eb5,bb5,eb6]@3 ~ [eb4,eb5,bb5,eb6]@2, ~@4 [ab3,eb5] ~ [eb5,bb5,eb6]@3 ~ bb5@2 eb3@9 ~@3", // Db5 Eb5 Eb Eb5 Ab5 Eb5
  Y: "~@4 [eb5,bb5,eb6] ~ [eb5,bb5,eb6]@3 ~ [eb5,bb5,eb6] ~ [eb5,bb5,eb6]@3 ~ [eb5,bb5,eb6] ~ [eb2,eb5,bb5,eb6]@4 [eb3,eb5,bb5,eb6] ~, eb3@7 ~, eb2@5 ~@3", // Eb5
  Z: "eb6@4 ab5 ~ db6@4 ab5 ~ eb6@4 ab5@2 db6@4 [ab3,ab5] ~, ab2@11 ~, c6@2 ~@4 f6@2 ~@4 bb5 ~@11, bb5 ~@11 c6@2 ~@4 f6@2 ~@4", // Ab
  AA: "[~@4 [db4,db6]@2 [eb6,ab6]@3 ~ ab5 ~ [ab5,db6,ab6]@3 ~@3 [eb6,ab6]@3 ~ ab5 ~ [ab5,db6,ab6]@3 ~ db6@2 eb6@2 ~@2 ab5 ~ [eb6,ab6]@3 ~ db4@2 db3@3 ~ ab3@2, db3@8 ~@2 db3@11 ~ db3@11 ~ db3@7 ~@7, ~@4 [ab5,ab6] ~ ab5 ~@9 db4@4 ~@8 db4@4 ~@8 db6@5 ~@3, ~@18 ab5 ~@9 ab6 ~ ab6 ~@9 ab6@7 ~]/2", // Db Ab5 Db5 Ab5 Db5 Ab5 Ab
  AB: "ab3@2 ~@2 [ab5,eb6]@2 ~@4 ab3@2 [db6,ab6]@2 ~@2 ab3@2 [db6,ab6]@2 eb6 ~ ab3@2, ~@4 [ab2,ab6] ~@7 ab2@4 ~@8, ~@12 ab5 ~@5 ab5 ~@5", // Ab5 Db5 Ab
  AC: "[eb6,ab6]@3 ~ ab5 ~ [eb6,ab6]@4 ~@2 [b7,c8] [g7,a7] [d7,e7,f7] c7 [a6,b6] [f6,g6] [d6,e6] [b5,c6] a5 [f5,g5] [d5,e5] c5", // Ab5 Cmaj7 Gsus2 Dm Asus2 Fsus2 Dsus2 Cmaj7 …
  AD: "[[db3,db4,ab4,db5]@4 db3@2 [db4,ab4,db5]@4 ~@2 [db4,ab4,db5]@3 ~@3 [db4,ab4,db5]@3 ~@3 [db4,ab4,db5]@3 ~@3 [db4,ab4,db5]@3 ~ db3@2 [db4,ab4,db5]@4 ~@2 [db4,ab4,db5]@4 db3@2, b4 ~@9 db3@4 ~@2 db3@4 ~@2 db3@5 ~ db3@4 ~@8 db3@4 ~@4]/2", // Db5
  AE: "~@4 [ab4,eb5]@2 [ab4,eb5]@3 ~@3 [eb4,ab4,eb5]@4 bb4 ~ [ab4,eb5]@4 [ab3,bb4] ~, ab2@4 ~ ab2@6 ~, ~@4 ab3@5 ~@7 ab3@4 ~@4, ~@6 eb4 ~@17", // Ab5 Absus2
  AF: "[ab4,db5]@2 ~@4 [ab4,db5]@3 ~@3 [gb4,db5]@2 ~@2 [db4,ab4,db5]@2 ~@4 [ab4,db5]@2, db3@8 ~@2 db3@9 ~@3 db3 ~, ~@4 db4@5 ~@15", // Db5 Gb5 Db5
  AG: "[ab3,ab4]@3 ~ [bb4,eb5]@2 ~@6 [ab4,eb5]@3 ~ [bb4,eb5] ~@5 [ab4,bb4,eb5] ~, eb5 ~@3 ab2@5 ~ ab3@5 ~ ab2@6 ab3@2, ~@4 ab4 ~@19", // Ab Eb5 Ab5 Eb5 Absus2
  AH: "~@4 [eb3,g4,eb5]@2 bb4@3 ~ eb4 ~ [g4,bb4,eb5]@3 ~ eb2@2 [g4,bb4,eb5]@4 eb3@2, ~@10 eb3@4 ~@8 eb4 ~", // Eb
  AI: "[~@6 [db5,ab5]@2 eb5@2 ab4 ~ [eb5,ab5]@3 ~@3 [db5,ab5]@2 eb5@2 ab4 ~ ab5 e5 ~@2 [eb3,eb4,bb4,eb5] ~ [eb3,eb4,bb4,eb5]@3 ~ [eb3,eb4,bb4,eb5] ~ [eb3,eb4,bb4,eb5]@3 ~ [eb3,eb4,bb4,eb5] ~ [eb3,eb4,bb4,eb5]@3 ~ [eb3,eb4,bb4,eb5]@2, ab2@8 ~@2 ab2@11 ~ ab2@5 ~@21, ~@4 ab3@4 ~@8 ab3@5 ~@3 [ab4,eb5]@2 ~@22]/2", // Db5 Ab5 Db5 Eb5 Ab5
  AJ: "[[ab5,c6]@4 c5@2 [ab5,c6]@4 c5 ~ [c5,c6]@3 ~ [db5,db6]@2 ab2@2 eb6@2 ab2@2 [ab5,eb6]@2 ~@2 [bb5,eb6]@2 eb5@2 bb5@2 eb5@2 [bb5,eb6]@2 eb5@2 [bb5,eb6]@2 eb5@2 ~@2 [eb2,eb5]@2, ab2@8 ~@2 ab2@7 ~@13 eb2@7 ~ eb2@7 ~@3, ~@4 ab3@6 ~@2 ab3@11 ~@3 eb3@6 ~@2 eb3@7 ~ eb3@6, ~@12 ab5 ~@7 eb5@7 ~ eb5 ~@3 eb6 ~@11 [bb5,eb6]@4]/2", // Ab C Db Ab5 Eb5 Eb Eb5
  AK: "[ab5,eb6]@3 ~ eb5 ~ [bb5,eb6]@3 ~ eb5 ~ [ab5,eb6]@3 ~ eb5 ~ [g5,eb6]@4 eb2@2, eb3@7 ~@9 eb3@5 ~@3, ~@4 eb2@5 ~ eb2@11 ~@3", // Ab5 Eb5 Ab5 Cm
  AL: "ab3@2 ~@2 [ab5,eb6]@2 ~@4 ab3@2 [ab2,ab6]@4 ab3@2 [db6,ab6]@2 eb6 ~ ab3@2, ~@4 [ab2,ab6] ~@7 db6@2 ~@10, ~@12 ab5 ~@5 ab5 ~@5", // Ab5 Ab Db5 Ab
  AM: "[db6,ab6]@2 eb6 ~ [ab5,eb6]@2 ~ eb3@3 [eb4,db5,eb6] ~ [db5,ab5,eb6]@4 ~@2 [db5,ab5,eb6]@3 ~ [eb4,db5,ab5,eb6]@2, ~@4 [ab3,db5] ~ [db5,ab5,eb6]@3 ~ ab5@2 eb3@9 ~@3", // Db5 Ab5 Eb7 Dbsus2 Db5 Dbsus2
  AN: "~@4 [ab4,eb5,ab5] ~ [ab4,eb5,ab5]@3 ~@3 [ab4,bb4,eb5]@4 ~@2 [bb4,eb5]@3 ~ ab2@2, ~@4 ab3@5 ~ ab2@8 ab4 ~@5, ~@16 ab3@5 ~@3", // Ab5 Absus2 Eb5
  AO: "[[ab4,eb5]@4 eb3@2 ~@4 [ab3,ab4,eb5,ab5]@33 ~@5, ab5@2 ~@4 ab2@37 ~@5]/2", // Ab5
})).s("gm_piano").gain(0.36).pan(0.6)

// chords · acoustic guitar steel · "Steel-str.Gt"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K L M N E N E L O P E F G H I J K L M N E N E L O P E F G H I J K L M N E N E L O P E F G H I J
  K L M N E N E L O E Q R S T U V W X E F G H I J K L M N E N E L O P E F G H I J K L M N E N E L O N E L E Y@2
>`.pickRestart({
  A: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@4 [eb3,ab3,eb4] ~ [eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3] ~", // Ab5
  B: "[eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [eb3,bb3] ~", // Eb5
  C: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4] ~", // Ab5 Eb5
  D: "[eb3,ab3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3] ~", // Ab5 Eb5
  E: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3] ~ [eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3,eb4] ~", // Ab5
  F: "[eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ bb3 ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [bb3,eb4] ~", // Eb5
  G: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3,eb4] ~", // Ab5 Eb5
  H: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4] ~", // Ab5 Eb5
  I: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3] ~ [eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ ab3 ~", // Ab5
  J: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@4 [eb3,ab3] ~ [eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@3 ~ [eb3,ab3,eb4] ~", // Ab5
  K: "[eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4] ~", // Eb5
  L: "[eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3,eb4] ~", // Eb5
  M: "[db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@4 [db3,ab3,db4] ~ [db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@3 ~@3", // Db5
  N: "[db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@3 ~ [db3,ab3,db4] ~ [db3,ab3,db4]@2 ~@4 [db3,ab3,db4]@3 ~ [db3,ab3,db4] ~", // Db5
  O: "[eb3,ab3,eb4]@2 ~@4 [eb3,ab3,eb4]@4 [eb3,ab3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3] ~", // Ab5 Eb5
  P: "[eb3,ab3,eb4]@2 ~@4 [eb3,bb3,eb4]@3 ~ [eb3,bb3,eb4] ~ [eb3,bb3,eb4]@2 ~@4 [eb3,bb3,eb4]@4 [bb3,eb4]@2", // Ab5 Eb5
  Q: "[db3,ab3,db4]@5 ~ [db3,ab3,db4]@3 ~ [db3,ab3,db4] ~ [db3,ab3,db4]@5 ~ [db3,ab3,db4]@3 ~ ab3 ~", // Db5
  R: "[db3,ab3,db4]@5 ~ [db3,ab3,db4]@3 ~ db3 ~ [db3,ab3,db4]@4 ~@2 [db3,ab3,db4]@3 ~ [db3,ab3,db4] ~", // Db5
  S: "[eb3,ab3,eb4]@5 ~ [eb3,ab3,eb4]@3 ~ ab3 ~ [eb3,ab3,eb4]@4 ~@2 [eb3,ab3,eb4]@3 ~ ab3 ~", // Ab5
  T: "[db3,ab3,db4]@5 ~ [db3,ab3,db4]@3 ~ ab3 ~ [db3,ab3,db4]@5 ~ [db3,ab3,db4]@3 ~ [db3,ab3,db4] ~", // Db5
  U: "[eb3,ab3,eb4]@5 ~ [eb3,ab3,eb4]@3 ~ [eb3,ab3,eb4] ~ [eb3,ab3,eb4]@5 ~ [eb3,ab3,eb4]@3 ~@3", // Ab5
  V: "[eb3,bb3,eb4]@5 ~ [eb3,bb3,eb4]@3 ~@3 [eb3,bb3,eb4]@5 ~ [eb3,bb3,eb4]@3 ~ [bb3,eb4] ~", // Eb5
  W: "[eb3,ab3,eb4]@5 ~ [eb3,ab3,eb4]@3 ~ [eb3,ab3] ~ [eb3,bb3,eb4]@5 ~ [eb3,bb3,eb4]@3 ~ [eb3,bb3,eb4] ~", // Ab5 Eb5
  X: "[eb3,ab3,eb4]@5 ~ [eb3,bb3,eb4]@3 ~ bb3 ~ [eb3,bb3,eb4]@5 ~ [eb3,bb3,eb4]@3 ~@3", // Ab5 Eb5
  Y: "[[eb3,ab3,eb4]@3 ~@7 [eb3,ab3,eb4]@34 ~@4]/2", // Ab5
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.3)

// chords · acoustic guitar steel · "Steel-str.Gt" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~ A@2 ~ A B C B@2 D B ~@2 E ~ B ~ B ~ A F B C B@2 D B ~@2 E ~ B ~ B ~ A F B C B@2 D B ~@2 E ~ B ~ B ~ A F B C B@2 D B
  ~@2 E ~ B ~ B ~ A B G H I J K L B M B C B@2 D B ~@2 E ~ B ~ B ~ A F B C B@2 D B ~@2 E ~ B ~ B ~ A ~ B ~ B ~@2
>`.pickRestart({
  A: "~@22 eb4 ~", B: "~@10 eb4 ~@13", C: "~@10 [eb3,eb4] ~@11 eb3 ~", D: "~@10 eb4 ~@11 [eb3,eb4] ~",
  E: "~@22 [ab3,db4] ~", F: "~@11 eb3", G: "~@22 [db3,db4] ~", H: "~@10 [ab3,db4] ~@13",
  I: "~@10 [eb3,eb4] ~@11 [eb3,eb4] ~", J: "~@10 [db3,db4] ~@13", K: "~@22 [eb3,ab3,eb4] ~",
  L: "~@10 [eb3,bb3,eb4] ~@11 eb3 ~", M: "~@10 [eb3,eb4] ~@11 [eb3,bb3,eb4] ~",
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.3)

// chords · electric guitar clean · "Clean Gt."
const electric_guitar_clean = note(`<
  ~ A@3 B C D E F G H@2 I J K L M N O P Q R@8 S@7 B C D E F G H@2 I J K L M N O P Q T@8 S@7 U S@7 B C D E F G H@2 V J K
  W X N O Y Q Z@8 S@7 AA AB@2 AC AD@2
>`.pickRestart({
  A: "[ab2 ~@2 f3@2 ~@3 ab2 f3@2 ~ bb2@2 ~ c3@2 ~@4 c3@2 ~ eb3@2 ~ f3@2 ab2 eb3@2 ~ f3@2 ab2, eb3@3 ~@3 eb3@3 ~@9 bb2@3 ~@2 ab2@2 ~ ab2@2 ~@4 ab2@2 ~@2, ~@4 ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@28]/3",
  B: "eb3@2 ~ [bb2,eb3]@2 ~ [bb2,eb3]@2 ~ [bb2,eb3]@2 eb2, ~@4 eb2@5 ~ eb2@5 ~ eb2@5 ~@3", // Eb5
  C: "[ab2,eb3]@2 ~@4 [ab2,f3]@2 ~@4 [ab2,eb3]@2 ~@4 [ab2,f3]@3 ~@3", // Ab5 Db Ab5 Db
  D: "[eb2,bb2]@2 ~@4 [eb2,c3]@3 ~@3 [eb2,bb2]@3 ~@3 c3@4 ab2@2, ~@9 eb2 ~@2", // Eb5 Cm Eb5
  E: "[ab2,eb3]@3 ~@3 [ab2,f3]@2 ~@4 [ab2,eb3]@2 ~@4 [ab2,f3]@2 ~@4", // Ab5 Db Ab5 Db
  F: "[ab2,eb3]@3 ~ [ab2,eb3] ~ [ab2,f3]@3 ~@3 [ab2,eb3]@2 ~@4 f3@4 ab2@2, ~@6 ab2 ~", // Ab5 Db Ab5
  G: "[ab2,eb3]@3 ~@3 [ab2,f3]@3 ~@3 [ab2,eb3]@3 ~@3 f3@4 ab2@2, ~@6 ab2 ~", // Ab5 Db Ab5
  H: "[[ab2,eb3]@3 ~@3 [ab2,f3]@3 ~@3 [ab2,eb3]@4 ab2 ~ [ab2,f3]@3 ~@3 bb2@3 ~@3 [eb2,c3]@2 ~@4 [eb2,bb2]@3 ~@3 [eb2,c3]@3 ~ eb2@2, ~@22 eb2@5 ~@21]/2", // Ab5 Db Ab5 Db Cm Eb5 Cm
  I: "[eb2,bb2]@3 ~ [eb2,bb2] ~ [eb2,c3]@3 ~@3 [eb2,bb2]@3 ~@3 [eb2,c3]@3 ~ db3@2", // Eb5 Cm Eb5 Cm
  J: "[db3,ab3]@2 ~@4 [db3,bb3]@2 ~@4 [db3,ab3]@3 ~@3 [db3,bb3]@3 ~ db3@2", // Db5 Gb Db5 Gb
  K: "[db3,ab3]@3 ~ [db3,ab3] ~ [db3,bb3]@2 ~@4 [db3,ab3]@3 ~@3 [db3,bb3]@2 ~@2 ab2@2", // Db5 Gb Db5 Gb
  L: "[ab2,eb3]@3 ~@3 [ab2,f3]@3 ~@3 [ab2,eb3]@3 ~@3 [ab2,f3]@4 db3@2", // Ab5 Db Ab5 Db
  M: "[db3,ab3]@3 ~@3 [db3,bb3]@2 ~@4 [db3,ab3]@3 ~@3 db3@4 ab2@2, ~@9 bb3 ~@2", // Db5 Gb Db5
  N: "[ab2,eb3]@3 ~@3 [ab2,f3]@3 ~@3 [ab2,eb3]@3 ~@3 [ab2,f3]@3 ~ eb2@2", // Ab5 Db Ab5 Db
  O: "[eb2,bb2]@3 ~ [eb2,bb2] ~ [eb2,c3]@3 ~@3 [eb2,bb2]@3 ~@3 [eb2,c3]@3 ~ ab2@2", // Eb5 Cm Eb5 Cm
  P: "[ab2,eb3]@3 ~@3 [ab2,f3]@2 ~@4 [ab2,eb3]@2 ~@4 [ab2,f3]@5 ~", // Ab5 Db Ab5 Db
  Q: "[ab2,eb3]@2 ~@2 [eb2,bb2]@2 [eb2,bb2]@3 ~@3 [eb2,bb2]@2 ~@4 [eb2,bb2]@3 ~@3", // Ab5 Eb5
  R: "[ab2@3 ~@3 f3@4 ~@2 eb3@4 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 eb3@4 ~@2 f3@4 ~@8 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@8 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@6 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@6 eb2@2 c3@4 db3@2, eb3@6 ~@54 eb3@7 ~@41 eb3@7 ~@17 eb3@6 ~@42 bb2@6 ~@6, ~@4 ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@4 ~@2 ab2@4 ~@2 ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@4 ~@2 ab2@5 ~ ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@4 ~@10]/8",
  S: "[ab3@4 ~@2 bb3@4 ~@2 ab3@4 ~@2 bb3@4 ~@2 ab3@4 ~@2 bb3@4 ~@2 ab3@4 ~@2 bb3@3 ~@3 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 ab3@4 ~@2 bb3@4 ~@2 ab3@4 ~@2 bb3@3 ~@9 f3@4 ~@6 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@8 c3@4 ~@2 eb3@4 ~@2 f3@4 ab2@2 eb3@4 ~@2 f3@4 ab2@2, ~@4 db3@4 ~@2 db3@5 ~ db3@5 ~ db3@5 ~ db3@5 ~ db3@5 ~ db3@6 ab2@4 ~@2 ab2@5 ~ ab2@5 ~ ab2@6 db3@4 ~@2 db3@5 ~ db3@5 ~ db3@6 ab2@4 ~@2 ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@28, ~@48 eb3@3 ~@3 eb3@3 ~@9 bb2@3 ~@2 ab2@2 ~ ab2@2 ~@4 ab2@2 ~@2]/7",
  T: "[ab2@3 ~@3 f3@4 ~@2 eb3@4 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 eb3@4 ~@2 f3@4 ~@8 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@8 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@6 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@6 eb2@2 c3@4 db3@2, eb3@6 ~@54 eb3@7 ~@41 eb3@7 ~@17 eb3@6 ~@42 bb2@6 ~@6, ~@4 ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@4 ~@2 ab2@4 ~@2 ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@4 ~@10]/8",
  U: "eb3@2 ~ f3@2 ab2 eb3@2 ~ f3@2 ab2, ~ ab2 ~@2 ab2 ~",
  V: "[eb2,bb2]@3 ~ [eb2,bb2] ~ [eb2,c3]@2 ~@4 [eb2,bb2]@3 ~@3 [eb2,c3]@2 ~@2 db3@2", // Eb5 Cm Eb5 Cm
  W: "[ab2,eb3]@3 ~@3 [ab2,f3]@3 ~@3 [ab2,eb3]@2 ~@4 [ab2,f3]@4 db3@2", // Ab5 Db Ab5 Db
  X: "[db3,ab3]@3 ~@3 [db3,bb3]@3 ~@3 [db3,ab3]@3 ~@3 db3@4 ab2@2, ~@9 bb3 ~@2", // Db5 Gb Db5
  Y: "[ab2,eb3]@3 ~@3 [ab2,f3]@2 ~@4 [ab2,eb3]@3 ~@3 [ab2,f3]@5 ~", // Ab5 Db Ab5 Db
  Z: "[ab2@3 ~@3 f3@4 ~@2 eb3@4 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 eb3@4 ~@2 f3@4 ~@8 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@8 f3@4 ~@2 eb3@4 ~@2 f3@4 ~@6 ab2@2 f3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@2 bb2@4 ~@2 c3@4 ~@6 eb2@2 c3@4 db3@2, eb3@6 ~@54 eb3@7 ~@41 eb3@7 ~@17 eb3@6 ~@42 bb2@6 ~@6, ~@4 ab2@4 ~@2 ab2@5 ~@7 eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@4 ~@2 ab2@4 ~@2 ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@5 ~ eb2@4 ~@10]/8",
  AA: "ab3@4 ~@2 bb3@4 ~@2 ab3@4 ~@2 bb3@3 ~ ab2@2, db3@2 ~@2 db3@5 ~ db3@5 ~ db3@7 ~",
  AB: "[ab2 ~@2 f3@2 ~@3 ab2 f3@2 ~ bb2@2 ~ c3@2 ~@4 c3@2 ab2, eb3 ~ eb3 ~@3 bb2 ~, ~@4 ab2@5 ~ ab2@5 ~@7 eb2@5 ~ eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@4]/2",
  AC: "ab2 ~@2 f3@2 ~@3 ab2 f3@2 eb2, eb3 ~ eb3 ~, ~@4 ab2@5 ~ ab2@5 ~@9",
  AD: "[[ab2,eb3,ab3]@3 ~@7 [ab2,eb3,ab3]@32 ~@6]/2", // Ab5
})).s("gm_electric_guitar_clean").gain(0.36)

// chords · overdriven guitar · "Overdrive Gt"
const overdriven_guitar = note(`<
  A B C D@2 ~@14 E F ~ G H I J ~ K L M@4 ~@4 N ~ O P ~@2 Q R@2 ~@3 S T U V W@2 H I J ~ K L M@4 X Y Z AA AB AC AD@2 AE AF
  AG AH ~@14 AI@2 W@2 H I J ~ K L M@4 X Y AJ AK X Y AL AM@2
>`.pickRestart({
  A: "~@11 eb4", B: "ab4@4 ab4@2 c5@3 ~@3 ab4@3 ~@3 gb4@3 ~ gb4@2",
  C: "eb4@4 eb4@2 db4@3 ~@3 b3@2 bb3@2 ab3@2 gb3@4 eb3@2", D: "[ab3@2 ~@4 ab3@29 ~@7 gb3@4 g3@2]/2",
  E: "~@12 eb4@6 b3@3 ~ ab3@2", F: "b3@3 ab3@2 eb3 gb3@3 g3@3", G: "~@11 ab4", H: "eb4@3 ~@2 ab4 eb4@3 ~@2 ab4",
  I: "eb4@4 b3@2 ab3@4 eb3@2 gb3@3 ~ gb3@2 g3@3 ~ g3@2", J: "ab3@11 ~",
  K: "[bb3,eb4]@3 ~ [bb3,eb4]@2 ~@6 [bb3,eb4]@3 ~ [bb3,eb4]@2 ~@6", L: "[eb4,g4]@2 ~@4 [bb3,eb4]@3 ~ [bb3,eb4]@12 ~@2",
  M: "[[db3,ab3]@18 eb3@3 ab3@2 ~ ab3@11 ~ ab3@12, ~@23 eb3@12 db3@13]/4", N: "ab3",
  O: "~@4 ab3@2 [gb3,b3]@2 ~@4 [gb3,b3]@4 [eb3,ab3]@2 ~@4 eb3 ~", P: "[gb3,b3]@2 ~@4 [eb3,ab3]@3 ~ [eb3,ab3]@9 ~@5",
  Q: "~@4 eb3 ~ [db4,gb4]@3 ~@3 [db4,gb4]@3 ~ [bb3,eb4]@2 ~@4 eb3@2", // Gb5 Eb5
  R: "[[db4,gb4]@3 ~@3 [c4,f4]@2 ~@4 [bb3,eb4]@2 ~@4 [bb3,eb4]@4 [ab3,db4]@26]/2", S: "ab3@8 eb3 gb3@2 g3",
  T: "eb3@3 ~", U: "b3@2 eb3 bb3@2 eb3 ab3@2 eb3 gb3@2 eb3", V: "bb3@2 ab3 gb3@2 eb3 gb3@2 eb3 gb3@2 g3",
  W: "[[eb3,ab3]@16 eb3@2 ab3@4 ~@2 bb2@23 ~, ~@22 eb3@25 ~]/2", X: "[eb3,ab3]@8 eb3 gb3@2 g3", Y: "[bb2,eb3]@23 ~",
  Z: "[ab3,db4]@2 eb4 ~@3 [ab3,db4]@2 eb4 ~@3 [ab3,db4]@2 eb4@2 ~@2 [ab3,db4]@2 eb4@2 ~@2", // Db5
  AA: "[ab3,db4] eb4 ~ [ab3,db4] eb4 ~ eb4 db4 b3 ab3@3", AB: "f4@4 ab4 ~ ab4@4 f4@2 b4@3 ~@3 ab4@4 ~@2",
  AC: "gb4@3 ~ db4@2 f4@4 db4@2 eb4@4 f4@2 b3@4 c4 ~", AD: "[eb4@3 ~@3 b3@3 ~@3 ab3@4 f3@2 eb3@4 b3@26]/2",
  AE: "~@4 eb4@2 [c5,eb5]@3 ~@3 [c5,eb5]@3 ~@3 [b4,d5]@3 ~@3", // Cm Bm
  AF: "[db4,gb4]@3 ~@3 [c4,f4]@4 ab3@2 [bb3,eb4]@4 [c4,f4]@2 [bb3,eb4]@5 ~", AG: "b3@3 ab3@2 eb3 b3@3 ab3@2 eb3",
  AH: "gb3@2 eb3 f3@2 eb3 eb3@2 f3 b2@2 ab2", AI: "gb4@2 eb4 gb4@2 eb4 gb4@2 eb4 gb4@2 eb4",
  AJ: "[ab3,db4]@2 eb4 ~@3 [ab3,db4]@2 eb4 ~@3 [ab3,db4]@2 eb4 ~@3 [ab3,db4]@2 eb4@2 ~@2", AK: "[ab3,db4]",
  AL: "~@2 b4 bb4@2 ab4 gb4@2 f4 d4@2 eb4", AM: "[eb4@4 ~@2 ab3@3 ~ ab3@33 ~@5, ~@2 db4 ~@21, ~@5 b3@2 ~@41]/2",
})).s("gm_overdriven_guitar").gain(0.44).pan(0.8)

// chords · contrabass
const contrabass = note(`<
  ~@3 A B C ~@21 D@3 ~@2 E F@2 G@2 ~@22 H@4 ~ E I@2 J@2 K@2 L M N O P@2 ~@2 Q R ~@2 S T U@3 V L W X Y ~@6 H@4 ~ E I@2 Z
  AA AB@2 AC@3
>`.pickRestart({
  A: "~@4 [ab4,c5] ~ [ab4,c5]@2", B: "ab4@4 bb4@2 ab4@3 ~@3 ab4@4 f4@2 ab4@3 ~ ab4@2", C: "[ab4,c5]@7 ~",
  D: "[[g4,bb4]@33 ~@3 [ab4,c5,eb5]@2 ~@4 [ab4,eb5]@4 [f4,ab4,db5]@25 ~, ~@36 bb4 ~@5 [bb4,c5]@2 ~@28]/3", // Gm Ab Ab5 Db Bbsus2
  E: "[f4,ab4,db5]", F: "[~@22 [g4,bb4,eb5]@25 ~]/2", G: "[[eb4,ab4,c5]@12 ~ [c4,eb4,ab4]@14 [g3,bb3,eb4]@21]/2",
  H: "[[g4,bb4]@33 ~@3 [ab4,c5,eb5]@2 ~@4 [ab4,eb5]@4 [f4,db5]@47 ~@3, ~@36 bb4 ~@5 [bb4,c5]@2 ~@2 ab4@50]/4", // Gm Ab Ab5 Db Bbsus2
  I: "[~@11 [g4,bb4,eb5]@13]/2", J: "[[eb4,ab4,c5]@12 ~ [c4,eb4,ab4]@35]/2", K: "[[ab4,db5]@23 ~]/2", L: "[ab4,c5]",
  M: "[f4,ab4]", N: "[c5,eb5]@16 ~@2 [b4,d5]@3 ~@3", O: "[bb4,db5]", P: "[c5@7 [bb4,eb5]@5, ab4@13 ~@11]/2",
  Q: "ab4@9 ~@3 ab4@4 bb4@2 c5@6", R: "[c5,eb5] [ab4,c5]", S: "eb4@6 bb4@6 g4@6 eb5@5 ~, g4@11 ~ bb4@12",
  T: "bb4 f5 eb5 bb5, db5@11 ~ g5@12", U: "[[f5,ab5]@7 [gb4,bb4]@4 ~]/3",
  V: "[db4,f4]@3 ~@3 [db4,f4]@3 ~@3 [db4,f4]@4 eb4@2 [bb3,db4]@6, ~@16 c4 ~@7", W: "[eb4,g4]@23 ~", X: "[eb4,ab4]",
  Y: "~ [bb3,eb4]@11", Z: "[eb4,ab4,c5] [c4,eb4,ab4]", AA: "[ab3,db4,f4]@23 ~",
  AB: "[[eb4,ab4,c5]@21 ~ [g4,bb4,eb5]@26]/2", AC: "[[eb4,ab4]@26 ~@8 [eb4,ab4]@33 ~@5]/3",
})).s("gm_contrabass").gain(0.36).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
// … 44 more lines