Strudelify

Lone Digger for Jazz Combo

Caravan Palace Re

KeyB♭ majorTempo124 bpm
0:00/0:00
// Lone Digger for Jazz Combo — Caravan Palace Re
// 124 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5025157; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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.

// other · trombone · "Trombone 1"
const trombone = note(`<
  ~@9 A B C B D@2 C B E F G H I ~@4 J K L M N O N P Q R S D@2 C B A B C B D@2 C B T@2 ~@6 U J V W X N O N O ~@3 P Q R S
  D@2 C B Y@2 ~@9 Z AA Z AA Z AB ~@2 B C B AC@2 R S AD@2 C B AE AF ~@8
>`.pickRestart({
  A: "b3 c4 ab3 e3 f3 c4 db4 b3 c4 g3 ab3 f3@2 c3@3", B: "f2@2 ab3 ~ f2@2 ab3 ~ db3@2 db4 ~ db3@2 db4 ~",
  C: "bb2@2 bb3 ~ bb2@2 bb3 ~ c3@2 c4 ~ c3@2 c4 ~",
  D: "[bb3@4 ab3@2 g3@2 f3@2 e3@2 d3 c3 ~ f2@3 ab3 ~ f2@2 ab3 ~ db3@2 db4 ~ db3@2 db4 ~]/2",
  E: "bb2@2 f2@2 ab2@2 db3 c3 ~@8", F: "bb3@2 bb3 ab3 bb3!3 c4", G: "~ c4 bb3 ab3 bb3 ab3!3",
  H: "c4@2 bb3@2 bb3 ab3@2 bb3@3 bb3@2 bb3@2 c4@2", I: "~@2 e3 f3 f3@2 ab3@2 bb3@2 f3@2 eb3 f3@3",
  J: "bb4@2 bb4 ab4 bb4!3 c5", K: "~@2 b4@2 bb4 ab4@2 bb4@3 bb4@2 bb4@2 bb4@2", L: "~ c5 bb4 ab4 bb4!4",
  M: "~@2 e4 f4 f4@2 ab4@2 bb4@2 f4@2 eb4 f4@3", N: "~ c4 f4 c4 ~ f3 bb3 f3", O: "~ ab3 db4 ab3 ~ g3 c4 g3",
  P: "~@12 bb3 ab3 bb3 ab3", Q: "b3 c4 b3 bb3 ab3 f3 c3 f3 ab3 f3 ab3 f3 ab3 f3 ab3 f3",
  R: "bb3@2 bb3@2 eb4!2 ~ f3 c4!2 bb3 c4 bb3 c4 e4 ~", S: "f4@2 c4@2 [b3,c4] ab3 f3 ab3 db4!2 ~ f3 ab3 f3 ab3 f3",
  T: "[g3 bb3 db4 g3 eb4 d4 db4 c4 ~ gb4 g4 c4 gb4 g4@2 bb3@5 ~@12]/2", U: "~@7 c5", V: "~ c5 bb4 ab4 bb4 ab4!3",
  W: "~@2 c5@2 bb4@3 ab4 bb4@2 bb4@2 bb4@2 bb4@2", X: "~@2 e4 f4 f4@2 ab4@2 bb4@2 f4@2 e4 f4@3",
  Y: "[bb3@4 ab3@2 g3@2 f3@2 e3@2 d3 c3 ~ f2@3 ~@14]/2", Z: "ab4 f4 c4 ~ c4@2 ~@2 bb4 e4 f4 ~ db4@2 ~@2",
  AA: "eb4!2 db4 f4 ~ ab4 f4 db4 c4 e4 c4 g3 ~ g4 e4 c4", AB: "eb4!2 db4 f4 ~ ab4 f4 ~@9",
  AC: "[~ bb2@3 [ab2,ab3]@2 [g2,g3]@2 [f2,f3]@2 [e2,e3]@2 [d2,d3] [c2,c3] ~ f4@3 b3 bb3 ab3 f3 c3 f3 ab3 f3 ab3 f3 ab3 f3 ab3 f3, bb3 ~@7]/2", // Ab G F E D C
  AD: "[~ bb2@3 [ab2,ab3]@2 [g2,g3]@2 [f2,f3]@2 [e2,e3]@2 [d2,d3] [c2,c3] ~ f2@3 ab3 ~ f2@2 ab3 ~ db3@2 db4 ~ db3@2 db4 ~, bb3 ~@7]/2", // Ab G F E D C
  AE: "f4 db4 a3 c4 bb3 f3 ab3 g3 c3 f3 eb3 bb2 b2 bb2 ab2 f2", AF: "ab2 f2!2 ~@13",
})).s("gm_trombone").gain(0.35)

// other · trombone · "Trombone 1" · soft notes
const trombone_soft = note("<~@50 A B C D E F E G ~@26 H ~@8 I J K ~@16 L M L N O>".pickRestart({
  A: "~@4 bb3@2 ab3@2 bb3 ~ bb3 ~ bb3@2 c4 ~", B: "~@2 c4@2 bb3 ab3@2 bb3@3 ab3@2 ab3@2 ab3@2", C: "~ c4 bb3 ab3 bb3!4",
  D: "~@2 e4 f4 f4@2 ab4@2 bb4@2 f4@2 e4 f4@3", E: "~ f4 ~ bb3", F: "~ db4 ~ c4", G: "ab3@4 f3@2 bb3 ~", H: "f3!2 ~@6",
  I: "~@7 db4 c4 e4 c4 g3 ~ g4 e4 c4", J: "ab4 f4 c4 ~ c4@2 ~@2 bb4 e4 f4 ~ db4@2 ~@2",
  K: "b3 c4 ab3 e3 f3 c4 db4 b3 c4 g3 ab3 f3@2 c3@3", L: "f2@2 c4 ~ f2@2 c4 ~ db3@2 db4 ~ db3@2 db4 ~",
  M: "bb2@2 db4 ~ bb2@2 db4 ~ c3@2 c4 ~ c3@2 c4 ~", N: "db3@2 db4 ~@3 db4 ~ c3@2 c4 ~@3 c4 ~", O: "f2 ~",
})).s("gm_trombone").gain(0.2)

// chords · piano
const piano = note(`<
  A B C D E F G H ~ I J K J L@2 K M N ~@13 O P Q J K J R@2 K M I S T S U@2 T S V ~@8 W X Y Z W X Y Z AA AB AC AD J K J
  R@2 K M AE@2 AF AG AF AH AF AI AF AG AF AJ AK AL AK AM AN ~ I S AO S R@2 K J R@2 K M AP AQ AR AQ AR AQ AR AQ AS ~
>`.pickRestart({
  A: "~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,bb4,db5] ~ [f4,bb4,db5], f2 bb1, ~ f3 ~ bb2", // Fm Bbm
  B: "~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [e4,g4,c5] ~ [e4,g4,c5], db2 c2, ~ db3 ~ c3", // Db C
  C: "~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,bb4,db5] ~ [f4,bb4,db5], f2 bb1, ~ c3@3 ~ f2@3, ~ f3 ~ bb2", // Fm Bbm
  D: "~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [e4,g4,c5] ~ [e4,g4,c5], db2 c2, ~ ab2@3 ~ g2@3, ~ db3 ~ c3", // Db C
  E: "~ [c3,f4,ab4,c5] f3 [c3,f4,ab4,c5] ~ [f2,f4,bb4,db5] bb2 [f2,f4,bb4,db5], f2 bb1", // Fm Bbm
  F: "~ [ab2,f4,ab4,db5] db3 [ab2,f4,ab4,db5] ~ [g2,e4,g4,c5] c3 [g2,e4,g4,c5], db2 c2", // Db C
  G: "~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,bb4,db5] ~ [f4,bb4,db5], [f2,f3]!2 [bb1,bb2]!2", H: "[db2,db3] ~@3",
  I: "[b2,bb3] [c3,c4] [ab2,ab3] [e2,e3] [f2,f3] [c2,c3] [db2,db3] [b1,b2] [c2,c3] [g1,g2] [ab1,ab2] [f1,f2]@2 [c2,c3,e4,g4,bb4,c5,e5]@3", // Bmaj7 C Ab E F C Db B …
  J: "[f4,ab4,c5,f5] ~ [f3,ab3,c4,f4,ab4,c5] ~ [f1,f2]@2 [f3,ab3,c4] ~ [f4,ab4,db5]!2 [f3,ab3,db4] ~ [db2,db3]@2 [f4,ab4,db5]@2, [f1,f2]@2 ~@6 [db2,db3]@2 ~ [f4,ab4,db5]@3 [f3,ab3,db4] ~", // Fm F Fm Db F Db
  K: "[d4,ab4,bb4] ~ [d3,f3,bb3,d4,f4,bb4] ~ [bb1,bb2]@2 [d3,f3,bb3] ~ [e4,g4,bb4,c5]!2 [e3,g3,c4] ~@2 c5 [e4,g4,bb4,c5,e5]@2, [bb1,bb2]@2 ~@6 [c2,c3]@2 ~ [e4,g4,bb4,c5]@2 ~ [e3,g3,c4] ~, ~@6 [c2,c3] ~", // Bb7 Bb C7 C C7 Bb C C7 …
  L: "[bb3 [bb1,g4]@3 [ab1,ab2]@2 [g1,g2]@2 [f4,ab4,c5] ~ [g4,bb4,db5] ~ [d1,d2,f4,ab4,b4,d5] [c1,c2,e4,g4,bb4,e5] ~ [f1,f2,f4,ab4,c5,f5]@3 [db3,f3,ab3,f4,ab4,c5] ~ [f1,f2]@2 [db3,f3,ab3] ~ [f4,ab4,db5]!2 [f3,ab3,db4] ~ [db2,db3]@2 [f4,ab4,db5]@2, bb2@4 [f4,ab4] ~ [g4,bb4] ~ [f1,f2]@2 [e1,e2]@2 ~@12 [db2,db3]@2 ~ [f4,ab4,db5]@3 [f3,ab3,db4] ~]/2", // Eb Ab G Fm Gdim Ddim C7 Fm …
  M: "[f4,ab4,c5,f5] ~ [f3,ab3,c4,f4,ab4,c5] ~ [f1,f2]@2 [f3,ab3,c4] ~ [f4,ab4,db5,f5] [f4,ab4,bb4,eb5] [f3,ab3,db4] ~ [db2,db3]@2 [f4,ab4,db5]@2, [f1,f2]@2 ~@6 [db2,db3]@2 ~ [f4,db5]@3 [f3,ab3,db4] ~", // Fm F Fm Db Fm7 Db F Db
  N: "[f4,g4] [f4,bb4] [g4,db5] g4 [eb4,bb4,eb5] [a4,d5] [db3,eb4,ab4,bb4,db5] [c3,d4,g4,c5] ~ [a4,eb5,gb5] [bb4,e5,g5] [c4,bb4,c5] [a4,eb5,gb5] ~ [c2,c5]@2, bb2@2 f2@2 ab2@2 ~@7 [bb4,e5,g5]@3", // Fsus2 Bb5 Gdim Eb5 D5 Dbsus2 Csus2 Ebdim …
  O: "~@4 c3 ~@3", P: "f2@2 [f3,ab3,c4] ~ c2@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] ~ bb2@2 [f3,bb3,db4] ~",
  Q: "[db3,db5,f5,ab5,bb5]@4 [c3,c5,eb5,g5,bb5]@3 ~", // Bbm7 Cm7
  R: "[bb3 [bb1,g4]@3 [ab1,ab2]@2 [g1,g2]@2 [f4,ab4,c5] ~ [g4,bb4,db5] ~ [d1,d2,f4,ab4,b4,d5] [c1,c2,e4,g4,bb4,e5] ~ [f1,f2,f4,ab4,c5,f5]@3 [f3,ab3,c4,f4,ab4,c5] ~ [f1,f2]@2 [f3,ab3,c4] ~ [f4,ab4,db5]!2 [f3,ab3,db4] ~ [db2,db3]@2 [f4,ab4,db5]@2, bb2@4 [f4,ab4] ~ [g4,bb4] ~ [f1,f2]@2 [e1,e2]@2 ~@12 [db2,db3]@2 ~ [f4,ab4,db5]@3 [f3,ab3,db4] ~]/2", // Eb Ab G Fm Gdim Ddim C7 Fm …
  S: "[f4,ab4,c5,f5] f5 [ab4,c5,ab5]@2 [f1,f2,f5]@2 [f3,ab3,c4,ab5] f5 ~@2 [f3,ab3,db4] c5 [db2,db3]@2 [f3,ab3,db4] ~, [f1,f2]@2 [f3,ab3,c4] ~@5 [db2,db3]@2 ~@6, ~@9 b4@2 ~ bb4@4", // Fm Ab F Fm Db F Fm Db
  T: "[ab4,bb4,db5,f5] f5 [db3,f3,bb3,bb4,db5,ab5] ab5 [bb1,bb2,f5]@2 [db3,f3,bb3,ab5] f5 ~@2 [e3,g3,c4] c5 bb4 [e4,c5] [g4,bb4,c5,e5]@2, [bb1,bb2]@2 ~@6 [c2,c3]@2 ~@2 [c2,c3]@2 [e3,g3,c4] ~, ~@9 b4@2 ~@5", // Bbm7 Bb5 Bbm7 C C7 Bb C
  U: "[bb3 [bb1,g4]@3 [ab1,ab2]@2 [g1,g2]@2 [f4,ab4,c5] ~ [g4,bb4,db5] ~ [d1,d2,f4,ab4,b4,d5] [c1,c2,e4,g4,bb4,e5] ~ [f1,f2,f4,ab4,c5,f5]@2 f5 [ab4,c5,ab5]@2 [f1,f2,f5]@2 [f3,ab3,c4,ab5] f5 ~@2 [f3,ab3,db4] c5 [db2,db3]@2 [f3,ab3,db4] ~, bb2@4 [f4,ab4] ~ [g4,bb4] ~ [f1,f2]@2 [e1,e2]@2 ~@6 [f3,ab3,c4] ~@5 [db2,db3]@2 ~@6, ~@25 b4@2 ~ bb4@4]/2", // Eb Ab G Fm Gdim Ddim C7 Fm …
  V: "[f4,g4] [f4,bb4] [g4,db5] g4 [eb4,bb4,eb5] [a4,d5] [db3,eb4,ab4,bb4,db5] [c3,d4,g4,c5] ~ [a2,a4,eb5,gb5] [bb2,bb4,e5,g5] [c3,c4,bb4,c5] [a2,a4,eb5,gb5] ~ c5@2, bb2@2 f2@2 ab2@2 ~@7 [bb2,bb4,e5,g5]@3", // Fsus2 Bb5 Gdim Eb5 D5 Dbsus2 Csus2 Ebdim …
  W: "f2@2 [f3,ab3,c4,f5] f5 f2@2 [f3,ab3,c4,f5] f5 db3@2 [f3,bb3,db4,f5] f5 f2@2 [f3,bb3,db4,f5] f5", // Fm Bbm
  X: "db2@2 [db3,f3,b3,f5] f5 db2@2 [db3,f3,b3,f5] f5 c3@2 [e3,g3,c4,f5] f5 g2@2 [e3,g3,c4,f5] f5", // Db7 C
  Y: "f2@2 [f3,ab3,c4,f5] f5 c2@2 [f3,ab3,c4,f5] f5 bb2@2 [f3,bb3,db4,f5] f5 bb2@2 [f3,bb3,db4,f5] f5", // Fm Bbm
  Z: "db2@2 [db3,f3,b3] ~ b2@2 [db3,f3,b3] ~ c3@2 [eb3,g3,c4] ~ c3@2 [eb3,g3,c4] ~", // Db7 Cm
  AA: "[f3,ab3,c4,f4] [f3,bb3,db4,f4]", AB: "[db3,f3,ab3,db4] [d3,g3,b3,d4]", AC: "[db3,f3,bb3,db4] [ab2,db3,f3,ab3]",
  AD: "[g2,c3,e3,g3]@15 ~", // C
  AE: "[bb3 [bb1,g4]@3 [ab1,ab2]@2 [g1,g2]@2 [f4,ab4,c5] ~ [g4,bb4,db5] ~ [d1,d2,f4,ab4,b4,d5] [c1,c2,e4,g4,bb4,e5] ~ [f1,f2,f4,ab4,c5,f5]@3 [c4,f4,ab4,c5]@2 [f2,eb4]@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] f4 [bb2,ab4]@2 [f3,bb3,db4,f4] ab4, bb2@4 [f4,ab4] ~ [g4,bb4] ~ [f1,f2]@2 [e1,e2]@2 ~@6 [f1,f2] ~@3 f4@2 ~@8]/2", // Eb Ab G Fm Gdim Ddim C7 Fm …
  AF: "f3 c4 [f3,ab3,b3] ~ [b2,eb4]@2 [f3,ab3,b3] ~ c3@2 [g3,c4] ~ [c3,ab4]@2 [g3,c4,e4] ~, db3 f4 ~ f4 ~ e4 ~ f4", // Fdim B Fdim C5 Fm C
  AG: "ab4 f4 [f3,ab3,c4] c4 [f2,eb4]@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] f4 [bb2,ab4]@2 [f3,bb3,db4,f4] ab4, f2 ~@2 f4 ~@4", // Fm F7 Fm Bbm Bb7 Bbm
  AH: "[f4,ab4,c5,f5] ~ [c4,f4,ab4,c5]@2 [f2,eb4]@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] f4 [bb2,ab4]@2 [f3,bb3,db4,f4] ab4, f2@2 [f3,ab3] ~@3 f4@2 ~@8", // Fm F7 Fm Bbm Bb7 Bbm Fm
  AI: "ab4 f4 f3 c4 [f2,eb4]@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] f4 [bb2,ab4]@2 [f3,bb3,db4,f4] ab4, [f1,f2]!2 ~ f4 ~@4", // F7 Fm Bbm Bb7 Bbm F
  AJ: "[f1,f2,ab4,c5]@2 [f1,f2,c4,f4,ab4]@2 f2@2 [f3,ab3,c4] ~ bb2@2 [f1,f2]@2 [bb1,bb2]@2 [f3,bb3,db4] ~, ~@10 [f4,bb4] ~@3 [db2,db3]@2", // Fm F Bb Bbm Bb5 Db
  AK: "[db2,db3]@2 [f3,ab3,b3] ~ b2@2 [f3,ab3,b3] ~ [c2,c3]@2 [g3,c4,e4] ~ c3@2 [g3,c4,e4] ~", // Db Fdim C
  AL: "[f2,ab4,c5]@2 [c4,f4,ab4]@2 f2@2 [f3,ab3,c4] ~ bb2@2 [f1,f2]@2 [bb1,bb2]@2 [f3,bb3,db4] ~, ~@2 [f3,ab3] ~@7 [f4,bb4] ~@3 [db2,db3]@2", // Fm F Bb Bbm Fm Bb5 Db
  AM: "[f1,f2,ab4,c5]@2 [f1,f2,c4,f4,ab4]@2 f2@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4,f4,bb4] ~ bb2@2 [f3,bb3,db4] ~", // Fm Bbm
  AN: "db3@2 [f3,ab3,b3] ~ b2@2 [f3,ab3,b3] ~ c3@2 ~@6", // Fdim
  AO: "[ab4,bb4,db5,f5] f5 [d3,f3,bb3,bb4,db5,ab5] ab5 [bb1,bb2,f5]@2 [d3,f3,bb3,ab5] f5 ~@2 [e3,g3,c4] c5 bb4 [e4,c5] [g4,bb4,c5,e5]@2, [bb1,bb2]@2 ~@6 [c2,c3]@2 ~@2 [c2,c3]@2 [e3,g3,c4] ~, ~@9 b4@2 ~@5", // Bbm7 Bb7 Bb5 Bb7 C C7 Bb C
  AP: "db3@2 [db4,f4] ~ f2@2 [bb3,db4] ~ c3@2 [eb3,g3] ~ g2@2 [c3,eb3] ~", // Db Bbm Eb Cm
  AQ: "f2@2 [f3,ab3,c4] ~ f2@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] ~ bb2@2 [f3,bb3,db4] ~", // Fm Bbm
  AR: "db3@2 [f3,ab3,db4] ~ db3@2 [f3,ab3,db4] ~ c3@2 [e3,g3,c4] ~ c3@2 [e3,g3,c4] ~", // Db C
  AS: "db3@2 [f3,ab3,db4] ~@3 [f3,ab3,db4] ~ c3@2 [e3,g3,c4] ~@3 [e3,g3,c4] ~", // Db C
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@7 A@2 ~@9 B C B C B C B D E F G H E I ~@18 J K L M N O P Q ~@35 R S ~@21 T>".pickRestart({
  A: "[~@2 [f4,ab4,db5]@2 ~@2 [f4,ab4,db5]@2 ~@2 [f4,ab4,db5]@2 ~@4 [db2,db3]@4 [db2,db3,f4,ab4,db5]@2 [db2,db3]@2 [db2,db3]@2 [db2,db3]@2 [db2,db3] [db2,db3,ab5] [db2,db3,f5] [db2,db3,db5], ~ [db2,db3]!3 ~@4, ~@7 [f4,ab4,db5]@3 ~@6]/2", // Db Db5 Db
  B: "f2@2 [f3,ab3,c4] ~@3 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] ~@3 [f3,bb3,db4] ~", // Fm Bbm
  C: "db3@2 [f3,ab3,db4] ~@3 [f3,ab3,db4] ~ c3@2 [e3,g3,c4] ~@3 [e3,g3,c4] ~", D: "[f3,ab3,db4] [e3,g3,c4]",
  E: "f2@2 [f3,ab3,c4] ~ f2@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] ~ f2@2 [f3,bb3,db4] ~", // Fm Bbm
  F: "db2@2 [db3,f3,b3] ~ db2@2 [db3,f3,b3] ~ c3@2 [e3,g3,c4] ~ g2@2 [e3,g3,c4] ~", // Db7 C
  G: "f2@2 [f3,ab3,c4] ~ c2@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4] ~ bb2@2 [f3,bb3,db4] ~", // Fm Bbm
  H: "db2@2 [db3,f3,b3] ~ b2@2 [db3,f3,b3] ~ c3@2 [e3,g3,c4] ~ c3@2 [e3,g3,c4] ~", // Db7 C
  I: "db2@2 [db3,f3,b3] ~ db2@2 [db3,f3,b3] ~@3 [e3,g3,c4] ~ g2@2 [e3,g3,c4] ~", J: "[f3,ab3,c4] [e3,ab3,c4]",
  K: "[eb3,ab3,c4] [d3,ab3,c4]", L: "[db3,f3,ab3]!2", M: "[bb2,db3,f3,ab3]@2 [bb2,db3,f3] [c3,f3,bb3]",
  N: "[f2,ab3,c4,f4] [c3,ab3,c4,e4]", O: "[eb2,bb3,eb4,g4] [c3,bb3,d4,f4]", P: "[db2,ab3,c4,f4] [bb2,ab3,db4,f4]",
  Q: "[bb2,bb3,db4,f4,ab4]@2 [bb2,bb3,db4,f4] [bb2,bb3,c4,f4,bb4]", R: "~@10 [g3,c4,e4] ~ c3@2 [g3,c4,e4] ~",
  S: "[ab4,c5] ~ [c4,f4,ab4]@2 f2@2 [f3,ab3,c4] ~ bb2@2 [f3,bb3,db4,f4,bb4] ~ bb2@2 [f3,bb3,db4] ~, f2@2 [f3,ab3] ~@13", // Ab Fm Bbm Fm
  T: "[f1,f2,f4] ~", // F
})).s("gm_piano").gain(0.2)

// chords · acoustic guitar steel · "Acoustic Guitar [Tablature]"
const acoustic_guitar_steel = note(`<
  A B A B A B A ~@6 C@2 D E F ~@15 G H D H I@2 D H J K L K M@2 L K N ~@8 O@3 ~ O@3 ~@5 H D H I@2 D H P@2 Q R Q S Q R Q R
  Q T ~ T ~ T ~@3 U V U W@2 X Y Z@2 X E ~@10
>`.pickRestart({
  A: "~ [f4,ab4,c5] ~ [f4,ab4,c5] ~ [f4,bb4,db5] ~ [f4,bb4,db5]", // Fm Bbm
  B: "~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [e4,g4,c5] ~ [e4,g4,c5]", // Db C
  C: "[~ g3@3 [f3,ab3] ~ [g3,bb3] ~ [f3,ab3,c4] ~ [g3,bb3,db4] ~ [f3,b3,d4] [g3,bb3,e4] ~ [ab3,c4,f4]@3 [f3,ab3,c4] ~@5 [f3,ab3,db4] [f3,ab3,db4]@2 [f3,ab3,db4]@3 [f3,ab3,db4]@2]/2", // Fm Gm Fm Gdim Bdim Edim Fm Db
  D: "[db3,ab3] ~ [db3,f3,bb3] ~@5 [e3,g3,c4] [e3,g3,c4]@2 [e3,g3,bb3]@3 [g3,bb3,e4]@2", // Db5 Bbm C Edim
  E: "[ab3,c4,f4] ~ [f3,ab3,c4] ~@5 [ab3,db4,f4] [bb3,eb4] ~ [f3,db4]@3 [f3,ab3,db4]@2", // Fm Db Eb5 Db
  F: "g3 [f3,bb3] [g3,db4] g3 [bb3,eb4] [a3,d4] [bb3,db4] [g3,c4] ~ [eb4,gb4] [e4,g4] c4 [eb4,gb4] [e4,g4]@3", // Bb5 Gdim Eb5 D5 Bbm C5 Ebm Em …
  G: "[db4,f4,bb4]@4 [c4,eb4,g4]@3 ~", // Bbm Cm
  H: "[ab3,c4,f4] ~ [f3,ab3,c4] ~@5 [f3,ab3,db4] [f3,ab3,db4]@2 [f3,ab3,db4]@3 [f3,ab3,db4]@2", // Fm Db
  I: "[bb3 g3@3 [f3,ab3] ~ [g3,bb3] ~ [f3,ab3,c4] ~ [g3,bb3,db4] ~ [f3,b3,d4] [g3,bb3,e4] ~ [ab3,c4,f4]@3 [f3,ab3,c4] ~@5 [f3,ab3,db4] [f3,ab3,db4]@2 [f3,ab3,db4]@3 [f3,ab3,db4]@2]/2", // Fm Gm Fm Gdim Bdim Edim Fm Db
  J: "bb4 c5 ab4 e4 f4 c4 db4 b3 c4 g3 ab3 f3@2 g3@3", K: "[ab3,c4,f4]@2 [c4,ab4]@2 ~@5 b3@2 c4 bb3@4",
  L: "[bb3,db4,f4]@2 [db4,ab4]@2 ~@5 b3@2 c4 bb3@4", // Bbm Db5
  M: "[bb3 g3@3 [f3,ab3] ~ [g3,bb3] ~ [f3,ab3,c4] ~ [g3,bb3,db4] ~ [ab3,d4] [g3,bb3,e4] ~ [ab3,c4,f4]@3 [c4,ab4]@2 ~@5 b3@2 c4 bb3@4]/2", // Fm Gm Fm Gdim Abdim Edim Fm
  N: "g3 [f3,bb3] [g3,db4] g3 [bb3,eb4] [a3,d4] [ab3,bb3,db4] [g3,c4] ~ [eb4,gb4] [bb3,e4,g4] c4 [eb4,gb4] [e4,g4]@3", // Bb5 Gdim Eb5 D5 Bbm7 C5 Ebm Edim …
  O: "~@2 f5!2 ~@2 f5!2 ~@2 f5!2 ~@2 f5!2",
  P: "[g3 [f3,bb3] [g3,db4] g3 [bb3,eb4] [a3,d4] [bb3,db4] [g3,c4] ~ [eb4,gb4] [e4,g4] c4 [eb4,gb4] [e4,g4]@5 c4@2 eb4@2 f4@2 ~@3 f4 ab4@2 f4 ab4]/2", // Bb5 Gdim Eb5 D5 Bbm C5 Ebm Em …
  Q: "f3 c4 f4@2 eb4@2 f4@2 ~@2 e4@2 ab4@2 f4@2", R: "ab4 f4 f3 c4 eb4@2 f4@2 ~@3 f4 ab4@2 f4 ab4",
  S: "ab4 ~ f4@2 eb4@2 f4@2 ~@3 f4 ab4@2 f4 ab4", T: "[ab4,c5]@2 [c4,f4,ab4]@2 ~@6 [f4,bb4] ~@3 [f3,bb3,db4] ~",
  U: "[ab3,c4,f4] f4 [c4,ab4]@2 f4@2 ab4 f4 ~ b3@2 c4 bb3@4", // Fm
  V: "[bb3,db4,f4] f4 [db4,ab4] ab4 f4@2 ab4 f4 ~ b3@2 c4 bb3 c4 [bb3,e4]@2", // Bbm Db5 Bbdim
  W: "[bb3 g3@3 [f3,ab3] ~ [g3,bb3] ~ [f3,ab3,c4] ~ [g3,bb3,db4] ~ [ab3,d4] [g3,bb3,e4] ~ [ab3,c4,f4]@3 [f3,ab3,c4] ~@5 [f3,ab3,db4]!2 ~ [f3,ab3,db4]@3 [f3,ab3,db4]@2]/2", // Fm Gm Fm Gdim Abdim Edim Fm Db
  X: "[db3,ab3] ~ [db3,f3,bb3] ~@5 [e3,g3,c4]!2 ~ [e3,g3,bb3]@2 c4 [g3,bb3,e4]@2", // Db5 Bbm C Edim
  Y: "[ab3,c4,f4] ~ [f3,ab3,c4] ~@5 [f3,ab3,db4]!2 ~ [f3,ab3,db4]@3 [f3,ab3,db4]@2", // Fm Db
  Z: "[bb3 g3@3 [f3,ab3] ~ [g3,bb3] ~ [f3,ab3,c4] ~ [g3,bb3,db4] ~ [f3,ab3,d4] [g3,bb3,e4] ~ [ab3,c4,f4]@2 ~ [f3,ab3,c4] ~@5 [f3,ab3,db4]!2 ~ [f3,ab3,db4]@3 [f3,ab3,db4]@2]/2", // Fm Gm Fm Gdim Ddim Edim Fm Db
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · acoustic guitar steel · "Acoustic Guitar [Tablature]" · soft notes
const acoustic_guitar_steel_2 = note("<~@7 A@2 B C D C E ~@40 F G H I ~@36 J B ~@20 K>".pickRestart({
  A: "[~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5]@3 [f4,ab4,db5] ~@5]/2", // Db
  B: "bb4 c5 ab4 e4 f4 c4 db4 b3 c4 g3 ab3 f3@2 g3@3",
  C: "[ab3,c4,f4] ~ [f3,ab3,c4] ~@5 [f3,ab3,db4] [f3,ab3,db4]@2 [f3,ab3,db4]@3 [f3,ab3,db4]@2", // Fm Db
  D: "[db3,ab3] ~ [db3,f3,bb3] ~@5 [e3,g3,c4] [e3,g3,c4]@2 [e3,g3,bb3]@3 [g3,bb3,e4]@2", E: "bb3 ~@15",
  F: "[ab3,c4,f4] [ab3,c4,e4]", G: "[bb3,eb4,g4] [bb3,d4,f4]", H: "[ab3,c4,f4] [ab3,db4,f4]",
  I: "[db4,f4,ab4]@2 [bb3,db4,f4] [c4,f4,bb4]", J: "[ab4,c5] ~ [c4,f4,ab4]@2 ~@6 [f4,bb4] ~@3 [f3,bb3,db4] ~",
  K: "f4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.15)

// bass · electric bass finger · "Electric Bass [Tablature]"
const bass = note(`<
  ~@2 A B C B C D E F G H G I G H J K L M L M L M L N O P Q R O P Q S G H G I G H G F T U T I T U T V ~@8 W X W B Y Z Y
  Z ~@4 G H G I G H G AA@2 ~@16 F T U T I G H G I G H G AB AC AD AC AD AC AD AC AE ~
>`.pickRestart({
  A: "f2 bb1", B: "db2 c2", C: "~@5 f1 bb1 c2", D: "db2", E: "db2@4 db2@4 db2@2 db2@2 db2!4",
  F: "b2 c3 ab2 e2 f2 c2 db2 b1 c2 g2 ab2 f2@2 c2@3", G: "f2 ~ c2 ~@5 db2!2 ~ db2@3 db2@2",
  H: "bb1 ~ bb1 ~@5 c2!2 ~ c2@2 c2 e2@2", I: "bb2 bb2@3 ab2@2 g2@2 f2@2 e2@2 d2 c2 ~ f1",
  J: "f2 ~ c2 ~@5 f2 eb2 ~ db2@3 db2@2", K: "bb2@2 f2@2 ab2@2 db3 c3 ~ a2 bb2 c3 a2 bb2 c3@2",
  L: "f2@2 f3 ~@3 f3 ~ bb2@2 f3 ~@3 f3 ~", M: "db3@2 f3 ~@3 f3 ~ c3@2 e3 ~@3 e3 ~", N: "f3 e3",
  O: "f2@2 f3 ~ f2@2 f3 ~ bb2@2 f3 ~ f2@2 f3 ~", P: "db2@2 db3 ~ db2@2 db3 ~ c3@2 e3 ~ g2@2 e3 ~",
  Q: "f2@2 f3 ~ c2@2 f3 ~ bb2@2 f3 ~ bb2@2 f3 ~", R: "db2@2 db3 ~ b2@2 db3 ~ c3@2 e3 ~ c3@2 e3 ~", S: "db3@4 c3@3 ~",
  T: "f2@2 f3 ~ f2@2 f3 ~ db2@2 f3 ~ db2@2 f3 ~", U: "bb1@2 db3 ~ bb1@2 db3 ~ c2@2 e3 ~ c2@2 e3 ~",
  V: "bb2@2 f2@2 ab2@2 db3 c3 ~ a2 bb2 c3 a2 bb2@3", W: "f1 f2 bb1 bb2", X: "db2 db3 c2 c3", Y: "f2!4 bb1!4",
  Z: "db2!4 c2!4", AA: "[bb2 bb2@3 ab2@2 g2@2 f2@2 e2@2 d2 c2 ~ f1@3 ~@14]/2",
  AB: "db2@2 db3 ~ f1@2 bb2 ~ c2@2 eb2 ~ g1@2 c2 ~", AC: "f1@2 f2 ~ f1@2 f2 ~ bb1@2 f2 ~ bb1@2 f2 ~",
  AD: "db2@2 f2 ~ db2@2 f2 ~ c2@2 e2 ~ c2@2 e2 ~", AE: "db2@2 f2 ~@3 f2 ~ c2@2 e2 ~@3 e2 ~",
})).s("gm_electric_bass_finger").gain(0.64)

// bass · electric bass finger · "Electric Bass [Tablature]" · soft notes
const bass_soft = note("<~@50 A B C D E F G H ~@24 I ~ J ~@3 K L K L M N O ~@21 P>".pickRestart({
  A: "f2 e2", B: "eb2 d2", C: "db2!2", D: "bb1@2 bb1 c2", E: "f2 c3", F: "eb2 c3", G: "db2 bb2", H: "bb2@2 bb2 c3",
  I: "f3 ~ c3@2 ~@12", J: "f1!2 ~@6", K: "~@5 f1 bb1 db2", L: "db2 c2", M: "f1@2 f1@2 f2@2 f3 ~ bb2@2 f3 ~ bb2@2 f3 ~",
  N: "db3@2 f3 ~ b2@2 f3 ~ c3@2 g3 ~ c3@2 g3 ~", O: "f2@2 f3 ~ f2@2 f3 ~ bb2@2 f3 ~ bb2@2 f3 ~", P: "f1 ~",
})).s("gm_electric_bass_finger").gain(0.32)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A@7 B ~@2 C ~ C ~ C ~ A@7 ~ A@3 D A@3 ~ A@3 E A@3 B ~@2 C ~ C ~ C ~ A@8 ~@4 A@3 D A@3 ~ A@3 E A@3 E A B ~@8 A@3 E
  A@3 D A@3 ~@10
>`.pickRestart({
  A: "x!2", B: "~@11 x ~@4", C: "x", D: "x ~ x ~ x ~ x ~@2 x!2 ~ x ~ x ~", E: "x!8",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@18 A@3 B A@4 ~@24 A@3 B A@4 ~@30 C@7 ~@13 A@9>".pickRestart({
  A: "x!2", B: "x", C: "~ x ~ x ~ x ~ x",
})).gain(0.3)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[~ x ~ x ~ x ~ x]!4 [~ x ~ x ~@4] ~@112>").gain(0.2)

// … 47 more lines