Strudelify
Cat's In The Cradle cover art

Verities & Balderdash

Cat's In The Cradle

Harry Chapin

KeyE♭ minorTempo78 bpm
0:00/0:00
// Cat's In The Cradle — Harry Chapin
// 78 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): d guitar.
setcpm(78/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 · fretless bass · "bass"
const bass = note(`<
  ~ A B@2 C ~@3 D E F G@3 H I@4 J K L M N O P Q R S T U V W X@6 Y Z AA AB@3 AC@2 AD@2 AE@2 AF@4 AG@2 AH@3 E AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU@2 ~@3
>`.pickRestart({
  A: "eb1@8 eb1@7 ~", B: "[eb1@7 ~ eb1@11 ~ eb2 db2 bb1 a1 ab1 ~ gb1 ~ eb1@3 ~]/2", C: "db1 ~ f1 ~ eb1@8 ~@4",
  D: "~@3 db2", E: "c2 bb1 ab1 gb1", F: "f1 eb1@2 gb2",
  G: "[f2@4 eb2@16 eb1@2 eb1@4 eb1 bb1 db2@2 db2@4 db2 eb2 gb2@5 bb1 db2 eb2 ab1@4]/3",
  H: "ab1@2 c2@2 eb2@4 eb2@3 bb1 db2@4",
  I: "[db2@2 ab1@2 gb2@4 f2@4 eb2@6 db2 ~ gb1@4 f1@4 eb1@8 eb1@8 eb1@8 eb1@7 c2 db2 bb1 c2 bb1]/4",
  J: "eb1@5 bb1 c2 bb1 eb1@7 f1", K: "gb1@6 gb1@2 ab1@7 bb1", L: "eb2@7 bb1 eb2@8", M: "gb2@3 ab2 ab2@3 db2",
  N: "eb2@7 ~ db2@4 c2@4", O: "bb1@4 ab1@3 f1 gb1@4 f1@4", P: "eb1@6 eb2 f2 gb2@4 f2@4", Q: "eb2@13 ab2 bb2 g2",
  R: "eb1@4 db2!2 gb2 ab2", S: "gb2@6 db2@2 ab2@4 c2 db2@3", T: "eb2@2 eb2@4 eb2 ~ db2@2 db2@4 eb2@2",
  U: "gb2@4 f2@3 db2 eb2@4 eb2 db2 bb1 ab1", V: "gb1 f1 eb1@2", W: "eb1@7 ~ eb1@7 ~",
  X: "[eb1@7 ~ eb1 bb1 c2 bb1 eb1@8 eb2@4 bb1 c2 bb1@2 eb1@7 f1 gb1@6 gb1@2 ab1@6 bb1 db2 eb2@7 ~ eb2@8 gb2@5 db2 eb2 gb2 ab2@6 db2@2 eb2@7 ~ db2@4]/6",
  Y: "c2@4 bb1@4 ab1@3 f1 gb1@4", Z: "f1@4 eb1@8 ab1 bb1@2 bb1", AA: "bb1 db2 eb2@2 eb1@2 eb1@2 eb1@4 db2@2 db2@2",
  AB: "[db2 f2@3 gb2@2 gb2@2 gb2@3 eb2 ab2@2 ab2 ab2@2 ab2 c2 db2 eb2@2 eb2 ~ eb2@3 eb2 db2@2 db2 db2@2 db2!2 eb2 gb2@4 f2@4 eb2@4]/3",
  AC: "[~ eb2 bb1 ab1 gb1@4 f1@4 eb1@8 b1@8 db2@4]/2",
  AD: "[bb1@4 eb1@7 ~ eb1@3 eb2@2 eb2 db2 bb1 b1@4 eb2@4 db2@3 db2]/2", AE: "[bb1@4 eb1@16 eb1@7 bb1 eb2@3 ~]/2",
  AF: "[bb1!4 eb1@6 ~ gb1 gb1@6 gb1@2 ab1@5 ab1 bb1 db2 eb2@16 eb1@8 gb1@6 ab1 bb1 ab1@4]/4",
  AG: "[~ db2@3 eb2@15 ~ db2@4 c2@4 bb1@4]/2", AH: "[ab1@3 f1 gb1@4 f1@4 eb1@7 f1 gb1@4 f1@3 ~ eb1@16 db2@4]/3",
  AI: "f1@4 eb1@7 f1 gb1@4", AJ: "f1@4 eb1@7 bb1 eb2@3 bb1", AK: "eb2@2 bb1@2 eb1@3 eb1 eb1@3 eb1 db2@3 ab1",
  AL: "db2@2 ab1@2 gb1@2 ~ gb1 gb1@3 gb1 ab1@2 ~ ab1", AM: "db2 eb2 gb2 db2 eb2@3 eb2 eb2@2 ~ eb2 db2@3 db2",
  AN: "db2@3 db2 gb2@4 f2@4 eb2@3 eb2", AO: "ab1 bb1 db2 bb1 gb2@4 f2@4 eb2@4",
  AP: "eb2@3 eb2 eb2@2 eb2@2 ab1 bb1 ~ db2 eb2@4", AQ: "eb2@3 ~ db2@2 ab1 db2@2 db2 ab1@2 gb1@2 ~ gb1",
  AR: "gb1@2 ~ gb1 ab1@2 ab1 ab1@2 db2 ab1@2 eb2@3 eb2", AS: "eb2@2 ~ eb2 db2@2 ab1 db2@2 db2 ab1@2 gb2@3 ~",
  AT: "f2@4 eb2@3 bb1 eb2 bb1 gb1 f1 gb1@4", AU: "[f1@4 eb1@15 ~@13]/2",
})).s("gm_fretless_bass").gain(0.72)

// chords · acoustic guitar steel · "ac guit"
const acoustic_guitar_steel = note(`<
  ~ A@3 B C@2 D@3 E F@5 G@4 H I J K@2 L M N O N P Q R@3 C@2 D@3 S@7 T@2 U@5 V@3 W@4 E X Y@6 Z AA AB AC AD@2 ~@3
>`.pickRestart({
  A: "[~ eb4@14 ~ [bb2,eb3,g3,bb3,eb4]@19 ~ eb5 db5 bb4 a4 ab4 ~ gb4 ~ eb4@3 ~, [eb2,bb2,eb3,g3,bb3]@15 eb2@20 ~@13]/3", // Eb
  B: "db4 ~ f4 ~ eb4@8 bb2@2 bb2@2, ~@3 [eb2,eb3,g3,bb3,eb4]", // Eb
  C: "[~@2 [eb2,bb2]@2 [gb2,db3,gb3,bb3,db4]@2 ~ [ab3,bb3,db4]@2 ~ db3@2 ~@7 eb3 [eb2,bb2,g3,bb3,eb4]@2 ~ [ab3,bb3,eb4]@2 ~ bb2@2 bb2@2 bb2@2, [eb3,g3,bb3,eb4]@2 ~ gb2@3 ab2@4 ~ eb2@3 [eb2,eb3,g3,bb3,eb4]@2, ~@6 db3@3 [gb3,bb3,db4]@3 ab3@5 bb3@3 ~@5 [g3,bb3,eb4]@3 ~@4, ~@7 eb3@2 ab3 ~ bb2@2 ~@3, ~@4 eb4 ~@3]/2", // Eb5 Gb Bbm7 Eb Absus2 Eb Gb Eb
  D: "[~@2 [eb2,bb2]@2 [gb2,db3,gb3,bb3,db4]@2 ~ [ab3,bb3,db4]@2 ~ db3@2 ~@7 eb3 [eb2,bb2,g3,bb3,eb4]@2 ~ [ab3,bb3,eb4]@2 ~ bb2@2 db4@2 ~@2 c4@2 ~@2 bb3@2 ~ ab3 ab3@2 ~ ab3 gb3@2 ~ ab3, [eb3,g3,bb3,eb4]@2 ~ gb2@3 ab2@4 ~ eb2@3 ~@10, ~@6 db3@3 [gb3,bb3,db4]@3 ab3@2 ab3@3 bb3@3 ~@5 [g3,bb3,eb4]@3 ~@3 ab3@3 ~ ab3@3 ~@10, ~@13 eb3@3 eb4@4 ~@10 db4@2 ~@2 db4@3 ~ db4@3 ~ db4@2 ~@2 db4@2, ~@9 ab3 ~ bb2@2 ~@11]/3", // Eb5 Gb Bbm7 Eb Absus2 Eb Gb Eb
  E: "f3@2 ~ ab3 ~@2 gb4 ~@4 eb3 gb3@2 ~ ab3, ~ db4 eb3@3 g3 ~@2, ~@7 f4@5 ~@4, ~@4 eb4@2 ~ db4, ~@9 bb3@3 ~@4",
  F: "[f3@2 ~ ab3 [bb2,eb3]@2 ~ eb3 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [ab3,bb3,eb4] [ab3,bb3,eb4]@2 [ab3,bb3,eb4]@2 [ab3,bb3,eb4] [g3,bb3,eb4]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3] [ab2,eb3,ab3,db4,eb4]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3,db4,eb4] [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] gb3 ~@2 gb3 f3 ~@2 f3 ~@2 gb3 g3, ~@2 db4@2 eb2@4 [eb2,bb2,eb3]@4 [eb2,bb2,eb3]@3 [eb2,bb2,eb3]@5 ~@50 db4@3 ~ db4@2 ~@4, ~@6 [bb2,eb3]@2 ~@12 [eb3,g3,bb3,eb4]@4 [eb3,g3,bb3,eb4]@4 ~@8 [bb3,db4,gb4]@4 [bb3,db4,gb4]@4 ~@8 [eb3,g3,bb3,eb4]@4 [eb3,g3,bb3,eb4]@4 ~@9 gb3@2 ~@2 f3@2 ~ eb3@4]/5", // Eb5 Eb Absus2 Eb Eb5 Db Db5 Dbsus4 …
  G: "[~@3 eb3 gb3 ~@2 gb3 f3 ~@2 f3 [eb2,bb2,eb3,g3,bb3,eb4]@8 ~ eb4@14 ~ [bb2,eb3,g3,bb3,eb4]@19 ~ bb2@2 bb2@2 ~@2 [eb2,bb2]@2, eb4@4 ~@2 db4@3 ~ db4@2 ~@52, ~ bb3@3 ~@56 [eb3,g3,bb3,eb4]@4, ~@2 g3@2 ~ gb3@2 ~@2 f3@2 ~@9 [eb2,bb2,eb3,g3,bb3]@15 eb2@20 ~ [eb2,eb3,g3,bb3,eb4]@5 ~@3]/4", // Eb Eb5 Eb
  H: "[gb2,db3,gb3,bb3,db4]@2 ~ [ab3,bb3,db4]@2 ~ db3@2 ~@7 eb3, ~ gb2@3 ab2@4, ~@2 db3@3 [gb3,bb3,db4]@3 ab3@5 bb3@3, ~@5 eb3@2 ab3, ~@3 eb4", // Gb Bbm7 Gb
  I: "[eb2,bb2,g3,bb3,eb4]@2 ~ [ab3,bb3,eb4]@2 ~ bb2@2 bb2@2 bb2@2 ~@2 [eb2,bb2]@2, ~@2 eb2@6 [eb2,eb3,g3,bb3,eb4]@5 ~@3, ~@2 bb2@3 [g3,bb3,eb4]@3 ~@4 [eb3,g3,bb3,eb4]@4", // Eb Absus2 Eb5 Eb
  J: "[gb2,db3,gb3,bb3,db4]@2 ~ [ab3,bb3,db4]@2 ~ db3@2 ~@7 eb3, ~ gb2@3 ab2@4, ~@2 db3@3 [gb3,bb3,db4]@3 ab3@2 ab3@3 bb3@3, ~@9 eb3@3 eb4@4, ~@7 ab3", // Gb Bbm7 Gb
  K: "[[eb2,bb2,g3,bb3,eb4]@2 ~ [ab3,bb3,eb4]@2 ~ bb2@2 db4@2 ~@2 c4@2 ~@2 bb3@2 ~ ab3 ab3@2 ~ ab3 gb3@2 ~ ab3 f3@2 ~ ab3, ~@2 eb2@6 ~@3 ab3@3 ~ ab3@3 ~@14, ~@2 bb2@3 [g3,bb3,eb4]@3 ~@2 db4@2 ~@2 db4@3 ~ db4@3 ~ db4@2 ~@2 db4@3 ~ db4@2]/2", // Eb Absus2 Eb
  L: "~@2 gb4 ~@4 eb3 gb3@2 ~ ab3 f3@2 ~ ab3, eb3@3 g3 ~@4, ~@3 f4@5 ~@8, ~@4 eb4@4 ~@2 db4@3 ~ db4@2, ~@5 bb3@3 ~@8",
  M: "[bb2,eb3]@2 ~ eb3 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [ab3,bb3,eb4] [ab3,bb3,eb4]@2 [ab3,bb3,eb4]@2 [ab3,bb3,eb4] [g3,bb3,eb4]@2, eb2@4 [eb2,bb2,eb3]@4 [eb2,bb2,eb3]@3 [eb2,bb2,eb3]@5, ~ [bb2,eb3] ~@6", // Eb5 Eb Absus2 Eb Eb5
  N: "[eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4], [eb3,g3,bb3,eb4]!2 ~@2", // Eb5 Db Db5 Dbsus4 Db Dbsus4 Eb
  O: "[gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3] [ab2,eb3,ab3,db4,eb4]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3,db4,eb4], [bb3,db4,gb4]!2 ~@2", // Gb5 Ab Ab5 Absus4 Ab Absus4 Gb
  P: "gb3 ~@2 gb3 f3 ~@2 f3 ~@2 gb3 ~@4 eb3, ~ gb3@2 ~@2 f3@2 ~ eb3@6 g3@2, ~@2 db4@3 ~ db4@2 ~@3 g3@2 bb3@3, ~@3 eb4",
  Q: "gb3 ~@2 gb3 f3 ~@2 f3 [eb2,bb2,eb3,g3,bb3,eb4]@8, ~ gb3@2 ~@2 f3@2 ~@9, ~@2 db4@3 ~ db4@2 ~@8", // Eb
  R: "[~ eb4@14 ~ [bb2,eb3,g3,bb3,eb4]@19 ~ [bb3,eb4]@5 ~@2 bb3 bb2@2 bb2@2, [eb2,bb2,eb3,g3,bb3]@15 eb2@20 eb2@7 eb4@2 ~@4, ~@9 [bb2,eb3,g3]@2 [eb2,eb3,g3,bb3,eb4]]/3", // Eb Eb5 Eb
  S: "[f3@2 ~ ab3 ~@2 gb4 ~@4 eb3 [ab3,bb3,eb4] [ab3,bb3,eb4]@2 [ab3,bb3,eb4]@2 [ab3,bb3,eb4] [g3,bb3,eb4]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3] [ab2,eb3,ab3,db4,eb4]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3,db4,eb4] [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] gb3 ~@2 gb3 f3 ~@2 f3 ~@2 gb3 ~@4 eb3 gb3 ~@2 gb3 f3 ~@2 f3 [eb2,bb2,eb3]@8 [b2,gb3,b3]@8 [db3,ab3,db4]@4, ~@2 db4@2 eb3@6 g3@2 [eb2,bb2,eb3]@3 [eb2,bb2,eb3]@5 ~@61 bb3@3 ~@28, ~@7 f4@5 ~@68 eb4@4 ~@2 db4@3 ~ db4@2 ~@20, ~@8 eb4@4 ~@24 [bb3,db4,gb4]@4 [bb3,db4,gb4]@4 ~@26 db4@3 ~ db4@2 ~@3 g3@3 g3@2 ~ gb3@2 ~@2 f3@2 ~@21, ~@9 bb3@3 ~@8 [eb3,g3,bb3,eb4]@4 [eb3,g3,bb3,eb4]@4 ~@24 [eb3,g3,bb3,eb4]@4 [eb3,g3,bb3,eb4]@4 ~@9 gb3@2 ~@2 f3@2 ~ eb3@7 ~@29]/7", // Absus2 Eb Eb5 Db Db5 Dbsus4 Db Dbsus4 …
  T: "[[bb2,f3,bb3]@4 [eb2,bb2,eb3]@6 [eb2,bb2,eb3,g3,bb3,eb4]@5 [eb2,bb2,eb3,g3,bb3,eb4]@2 [eb2,bb2,eb3,g3,bb3,eb4]!3 [b2,gb3,b3,eb4,gb4]@8 [db3,ab3,db4,f4,ab4]@4]/2", // Bb5 Eb5 Eb B Db
  U: "[[bb2,f3,bb3,d4,f4]@4 [eb2,bb2,eb3,g3,bb3,f4]@15 ~ [eb2,bb2,eb3,g3,bb3,f4]@16 bb2@2 bb2@2 ~@2 [eb2,bb2]@2 [gb2,db3,gb3,bb3,db4]@2 ~ [ab3,bb3,db4]@2 ~ db3@2 ~@7 eb3 [eb2,bb2,eb3,g3,bb3,eb4]@7 ~ [eb2,bb2,eb3,ab3,bb3,eb4]@8 bb2@2 bb2@2, ~@18 [eb2,eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2 ~ gb2@3 ab2@4 ~@8 [eb2,eb3,g3,bb3,eb4]@2, ~@46 db3@3 [gb3,bb3,db4]@3 ab3@5 bb3@3 ~@20, ~@27 eb3@2 ab3 ~@10, ~@14 eb4 ~@5]/5", // Bb Eb Eb5 Gb Bbm7 Eb Ebsus4 Eb …
  V: "[~@2 [eb2,bb2]@2 [gb2,db3,gb3,bb3,db4]@2 ~ [ab3,bb3,db4]@2 ~ db3@2 ~@7 eb3 [eb2,bb2,eb3,g3,bb3,eb4]@7 ~ [eb2,bb2,eb3,ab3,bb3,eb4]@8 db4@2 ~@2 c4@2 ~@2 bb3@2 ~ ab3, [eb3,g3,bb3,eb4]@2 ~ gb2@3 ab2@4 ~@14, ~@6 db3@3 [gb3,bb3,db4]@3 ab3@2 ab3@3 bb3@3 ~@28, ~@13 eb3@3 eb4@4 ~@18 db4@2 ~@2 db4@3 ~ db4@2, ~@18 ab3@2 ~@19 ab3@3 ~ ab3@3 ~@2]/3", // Eb5 Gb Bbm7 Eb Ebsus4 Eb Gb
  W: "[ab3@2 ~ ab3 gb3@2 ~ ab3 f3@2 ~ ab3 ~@2 gb4 ~@4 eb3 gb3@2 ~ ab3 f3@2 ~ ab3 [eb2,bb2,eb3,g3,bb3,eb4]@15 ~ db4@2 ~@2 c4@2 ~@2 bb3@2 ~ ab3 ab3@2 ~ ab3 gb3@2 ~ ab3, ~@2 db4@2 ~@2 db4@3 ~ db4@2 eb3@6 g3@2 ~@27 ab3@3 ~ ab3@3 ~@10, ~@15 f4@5 ~@44, ~@16 eb4@4 ~@2 db4@3 ~ db4@2 ~@18 db4@2 ~@2 db4@3 ~ db4@3 ~ db4@2 ~@2 db4@2, ~@17 bb3@3 ~@44]/4", // Eb
  X: "f3@2 ~ ab3 [eb2,bb2,eb3,g3,bb3,eb4]@3 ~ [eb2,bb2,eb3,g3,bb3,eb4]@3 ~ [eb2,bb2,eb3,ab3,bb3,eb4]@3 ~, ~ db4 ~@6", // Eb Ebsus4
  Y: "[[eb2,bb2,eb3,g3,bb3,eb4]@3 ~ [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3] [ab2,eb3,ab3,db4,eb4]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3,db4,eb4] [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] gb3 ~@2 gb3 f3 ~@2 f3 ~@2 gb3 ~@4 eb3 gb3 ~@2 gb3 f3 ~@2 f3 [eb2,bb2,eb3,g3,bb3,eb4]@8 [eb2,bb2,eb3,ab3,bb3,eb4]@8 [eb2,bb2]@2 [eb2,bb2]@2, ~@4 [eb3,g3,bb3,eb4]@4 [eb3,g3,bb3,eb4]@4 ~@8 [bb3,db4,gb4]@4 [bb3,db4,gb4]@4 ~@8 [eb3,g3,bb3,eb4]@4 [eb3,g3,bb3,eb4]@4 ~@9 gb3@2 ~@2 f3@2 ~ eb3@6 g3@2 ~ gb3@2 ~@2 f3@2 ~@17 [eb3,g3,bb3,eb4]@4, ~@54 db4@3 ~ db4@2 ~@3 g3@2 bb3@3 ~@28, ~@64 eb4@4 ~@2 db4@3 ~ db4@2 ~@20]/6", // Eb Eb5 Db Db5 Dbsus4 Db Dbsus4 Gb5 …
  Z: "[eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] [gb2,db3,gb3]@2 [gb2,db3,gb3]@2, [eb3,g3,bb3,eb4] ~@2 [bb3,db4,gb4]", // Eb5 Db Db5 Dbsus4 Db Dbsus4 Gb5 Eb …
  AA: "[gb2,db3,gb3]@2 [gb2,db3,gb3]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3] [ab2,eb3,ab3,db4,eb4]@2 [ab2,eb3,ab3,c4,eb4]@2 [ab2,eb3,ab3,db4,eb4] [eb2,bb2]@2 [eb2,bb2]@2, [bb3,db4,gb4] ~@2 [eb3,g3,bb3,eb4]", // Gb5 Ab Ab5 Absus4 Ab Absus4 Eb5 Gb …
  AB: "[eb2,bb2]@2 [eb2,bb2]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2] [db2,ab2,db3,ab3,db4,gb4]@2 [db2,ab2,db3,ab3,db4,f4]@2 [db2,ab2,db3,ab3,db4,gb4] gb3 ~@2 gb3, [eb3,g3,bb3,eb4]@4 ~@9 gb3@2 ~, ~@7 db4", // Eb5 Db Db5 Dbsus4 Db Dbsus4 Eb
  AC: "f3 ~@2 f3 ~@2 gb3 ~@4 eb3 gb3 ~@2 gb3, ~ f3@2 ~ eb3@6 g3@2 ~ gb3@2 ~, ~@2 db4@2 ~@3 g3@2 bb3@3 ~@4, ~@4 eb4@2 ~ db4",
  AD: "[f3 ~@2 f3 [eb2,bb2,eb3,g3,bb3,eb4]@16 ~@12, ~ f3@2 ~@29, ~ db4 ~@14]/2", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.64).pan(0.3)

// other · electric guitar jazz · "el guit"
const electric_guitar_jazz = note("<~ A B@2 C ~@12 D E F ~@12 A G@2 ~@39 H I@3>".pickRestart({
  A: "eb4@2 bb4@2 bb4@2 eb4 bb4 c5 bb4 ab4 eb4 ab4@2 bb3 eb4",
  B: "[f4@2 bb3 eb4@2 f4@2 bb3 db4 bb3 f4 bb3 eb4@8 eb5 db5 bb4 a4 ab4 ~ gb4 ~ eb4@3 ~]/2",
  C: "[ab3,db4] ~ [c4,f4] ~ [bb3,eb4]@8 ~@4", D: "~@4 eb4@2 bb4@2 bb4@2 eb4 bb4 c5 bb4 ab4 eb4",
  E: "ab4@2 bb3 eb4 f4@2 bb3 eb4@2 f4@2 bb3 db4 bb3 f4 bb3", F: "eb4 ~",
  G: "[f4@2 bb3 eb4@2 f4@2 bb3 db4 bb3 f4 bb3 eb4@16 ~@4]/2",
  H: "~@4 eb4@2 ~@2 bb4@3 ~ c5 bb4 ab4 eb4, ~@3 bb4 ~@4, ~@7 eb4@3 ~ eb4@2 ~@3",
  I: "[ab4@3 bb3 [eb4,f4]@2 bb3 eb4@2 f4@2 ~ bb3 db4 bb3 f4@2 ~ eb4@16 ~@14, ~@17 bb3@16 ~@15]/3", // Ebsus2
})).s("gm_electric_guitar_jazz").gain(0.56).pan(0.7)

// chords · overdriven guitar · "d guitar"
const overdriven_guitar = note("<~@63 A@2 B@3 C D E F G H ~@4>".pickRestart({
  A: "[~@7 eb3 ~@3 eb3 ~@3 bb3@2 ~@2 bb3 ~@3 gb3 ~@3 gb3 ~@4]/2",
  B: "[~@3 bb3 ~@3 eb3 ~@3 eb3 ~@3 bb3@2 ~@2 bb3 db4@4 db4@4 bb3@8 db4@4 db4@4 ~@4]/3",
  C: "~@6 [ab3,bb3,eb4]@4 [ab3,bb3,eb4]@2 ~@3 eb3", D: "~@3 eb3 ~@3 bb3@2 ~@2 bb3 ~@3 gb3",
  E: "~@3 gb3 ~@7 bb3 ~@3 eb3", F: "~@3 eb3 ~@3 bb3@2 ~@2 bb3 db4@4", G: "db4 bb3@2 db4", H: "db4 ~@3",
})).s("gm_overdriven_guitar").gain(0.64)

// other · pad metallic · "backs 1"
const pad_metallic = note(`<
  ~@8 A B C D ~@11 E F G H I J K L M ~@6 N O P Q@2 R S T@2 ~@12 U V W X Y@2 R S Z@2 AA AB AC AD AE ~@4
>`.pickRestart({
  A: "~@12 db5 c5 db5 c5", B: "db5@2 ~ c5 db5 bb4 ab4@3 ab4 ab4@2 ~@2 db5 eb5",
  C: "f5 eb5 db5@2 eb5@2 bb4 bb4@3 ~ db5!4 eb5", D: "f5 eb5 db5@2 eb5@10 ~@2", E: "~@9 db5!2 c5 db5@3 c5",
  F: "db5@2 bb4@2 db5 bb4 db5@2 ~ db5!2 eb5 f5 eb5 db5@2", G: "eb5@2 bb4@2 bb4@2 ~@3 db5!2 eb5 f5 eb5 db5@2",
  H: "eb5@11 ~@5", I: "bb4@2 bb4!2 bb4@2 bb4!2 ab4 ~ ab4 ab4@3 ~@2", J: "gb4!2 gb4@2 gb4!3 ab4 ~ ab4 ab4@3 ~@3",
  K: "bb4!4 bb4@2 bb4!2 ab4@2 ab4@2 ab4@2 ~@2", L: "~ ab4!3 ab4@2 bb4@4 ~@5 ab4", M: "ab4@2 ab4!2 ab4@2 ab4@2 bb4@7 ~",
  N: "~@11 eb5 f5 eb5 f5 eb5", O: "f5@3 eb5 f5 eb5 db5 db5@2 f5@2 ~ db5 ~ db5 eb5",
  P: "f5 eb5 db5@2 eb5@2 eb5@2 eb5@7 ~",
  Q: "[~@2 bb4!2 bb4@2 bb4!2 bb4@2 bb4!2 ab4 ~ ab4 ab4@3 ~@2 gb4!2 gb4@2 gb4!3 ab4 ~ ab4 ab4@2]/2",
  R: "~@4 bb4!4 bb4@2 bb4!2 ab4@2 ab4@2", S: "ab4@2 ~@3 ab4!3 ab4@2 bb4@4 ~@2",
  T: "[~@3 ab4 ab4@2 ab4!2 ab4@2 ab4@2 bb4@7 ~@13]/2", U: "~@12 db5 db5@2 c5",
  V: "db5 ~ db5 c5 db5@2 bb4 ab4@3 ~ db5 db5@2 db5@2", W: "f5 db5@2 eb5@5 ~@3 db5 db5@3 db5", X: "f5 db5@2 eb5@12 ~",
  Y: "[~@4 bb4@2 bb4!2 bb4@2 bb4!2 ab4 ~ ab4 ab4@3 ~@2 gb4!2 gb4@2 gb4!3 ab4 ~ ab4 ab4@2]/2",
  Z: "[~@3 ab4 ab4@2 ab4!2 ab4@2 ab4@2 bb4@7 ~@9 bb4@2 bb4!2]/2", AA: "bb4@2 bb4!2 ab4 ~ ab4 ab4@3 ~@2 gb4!2 gb4@2",
  AB: "gb4!3 ab4 ~ ab4 ab4@3 ~@3 bb4!4", AC: "bb4@2 bb4!2 ab4@2 ab4@2 ab4@2 ~@3 ab4!3",
  AD: "ab4@2 bb4@4 ~@5 ab4 ab4@2 ab4!2", AE: "ab4@2 ab4@2 bb4@7 ~@5",
})).s("gm_pad_metallic").gain(0.72).pan(0.6)

// other · pad metallic · "backs 2"
const pad_metallic_2 = note("<~@27 A B C D E ~@9 F@2 G@2 H@2 ~@16 F@2 G@2 I@2 J K@2 L M ~@4>".pickRestart({
  A: "eb5@2 eb5!2 eb5@2 eb5!2 f5@2 eb5 db5@3 ~@2", B: "db5!2 db5@2 db5 bb4 db5 eb5@2 eb5 eb5@3 ~@3", C: "eb5@8 db5@7 ~",
  D: "~ db5!2 eb5 f5 db5 eb5@6 ~@3 db5", E: "db5@2 db5 eb5 f5 eb5 db5@2 eb5@7 ~",
  F: "[~@4 eb5@2 eb5!2 eb5@2 eb5!2 f5@2 eb5 db5@3 ~@2 db5!2 db5@2 db5 bb4 db5 eb5@2 eb5 eb5@2]/2",
  G: "[~@4 eb5@8 db5@7 ~@2 db5!2 eb5 f5 db5 eb5@6]/2", H: "[~@3 db5 db5@2 db5 eb5 f5 eb5 db5@2 eb5@7 ~@13]/2",
  I: "[~@3 db5 db5@2 db5 eb5 f5 eb5 db5@2 eb5@7 ~@9 eb5@2 eb5!2]/2", J: "eb5@2 eb5!2 f5@2 eb5 db5@3 ~@2 db5!2 db5@2",
  K: "[db5 bb4 db5 eb5@2 eb5 eb5@3 ~@3 eb5@8 db5@7 ~@2 db5!2 eb5]/2", L: "f5 db5 eb5@6 ~@3 db5 db5@2 db5 eb5",
  M: "f5 eb5 db5@2 eb5@7 ~@5",
})).s("gm_pad_metallic").gain(0.64).pan(0.7)

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

// drums · rim
const rim = s("rim").struct("<A ~@18 B C@6 D ~@8 E@5 F ~@10 G E ~ E F G E@2 ~@19>".pickRestart({
  A: "x!4", B: "~@3 x", C: "~ x ~ x", D: "~ x ~@2", E: "x!2", F: "x", G: "~ x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@11 A B C@4 ~@9 D E@4 F ~@8 G B C@5 H B I ~@12 J B C K C@2 L C M C@2 I ~@4
>`.pickRestart({
  A: "~@11 x!3 ~@2", B: "~ x", C: "x!2", D: "~@7 x!3 ~@6", E: "~ x ~ x", F: "~ x ~@2", G: "~@6 x ~@4 x!2 ~@3",
  H: "x ~@7 x ~ x!2 ~@4", I: "x", J: "~@6 x ~@4 x!3 ~@2", K: "~ x ~@6 x ~@7", L: "x ~@3 x!6 ~ x ~@4", M: "x ~@8 x ~@6",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B@3 C ~@2 D B@6 E F B@3 E ~@2 G B@5 C A B@3 H I J K ~@2 L M N B O P B C ~@4 Q R S R T U R V R I ~@5
>`.pickRestart({
  A: "~@3 x!5", B: "x!8", C: "x!6 ~@2", D: "~@4 x!4", E: "x!4 ~@4", F: "~ x!7", G: "~@6 x!2", H: "x!6 ~ x",
  I: "x!2 ~ x!3 ~@2", J: "~@2 x!3 ~@3", K: "~@3 x!3 ~@2", L: "~@2 x!6", M: "x!7 ~", N: "x ~ x ~ x ~ x!2",
  O: "x!3 ~ x ~ x ~", P: "x ~ x!6", Q: "~@3 x!3 ~ x", R: "x!2 ~ x!3 ~ x", S: "x ~@2 x!3 ~ x", T: "x!2 ~@6", U: "~@7 x",
  V: "x!2 ~ x!2 ~@2 x",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@11 A B ~@13 C ~@13 D B ~@5 E B ~@13 F G ~@14>".pickRestart({
  A: "~@15 x", B: "x!3 ~@13", C: "~@11 x!5", D: "~@8 x ~@4 x ~ x", E: "~@13 x!3", F: "~@8 x ~@6 x", G: "x!4 ~@12",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~@3 B ~@10 C ~@3 D ~@9 A ~@3 B E C E F ~@8 B ~@4 E@2 G E H B E I E@2 F ~@4
>`.pickRestart({
  A: "~ x ~@2", B: "~@3 x", C: "x", D: "~ x", E: "~ x ~ x", F: "x!2 ~@2", G: "~ x ~@2 x ~@7 x ~@3", H: "~ x!3",
  I: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.64)

stack(
  bass, acoustic_guitar_steel, electric_guitar_jazz, overdriven_guitar, pad_metallic, pad_metallic_2, kick, rim, snare,
  hihat, low_tom, crash
)

More by Harry Chapin