Strudelify

12th Street Rag

Euday l. Bowman

KeyE♭ majorTempo200 bpm
0:00/0:00
// 12th Street Rag — Euday l. Bowman
// 200 bpm, 2/2, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Flute" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "B♭ Clarinet" named as a reed, played on clarinet (its tremolo strings patch is not one); ch 8 "Horn in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 9 "Trombone" named as a brass, played on trombone (its cello patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5860188; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(200/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 · flute
const flute = note(`<
  A ~ B C D E@2 F D E@2 F D E@2 F G H I B D E@2 F D E@2 F J K L M N O P@2 ~@3 Q ~@3 R ~@3 Q G H S@2 ~@3 Q ~@3 R T@2 U V
  W@2 X@2 A ~ Y Z AA AB AA F AA AB AA F AA AB AA F G H I B D E@2 F D E@2 F J K L M N O P@2
>`.pickRestart({
  A: "bb5@2 a5@2 bb5@2 c6@2 bb5 ~@7", B: "ab5@3 ~@13", C: "~ ab5", D: "eb6 d6 c6 eb6 d6 c6 eb6 d6",
  E: "[c6 eb6 d6 c6 eb6 d6 c6 eb6@2 d6 c6 eb6 d6 c6 eb6 d6]/2", F: "c6 ~@7", G: "g5 f5", H: "a5 g5", I: "f5@3 ~@13",
  J: "eb5@2 g5@2 bb5@2 eb6@5 ~ eb5@4", K: "db5@2 g5@2 bb5@2 eb6@5 ~ eb5@4", L: "c5@2 eb5@2 ab5@2 c6@5 ~ c5@4",
  M: "b4@2 eb5@2 gb5@2 b5@5 ~ b4@4", N: "g5@4 c5 g5 eb5 c5", O: "c5 ~ g5@2 gb5@2 g5@2 d6 ~ bb5@2 a5@2 bb5@2",
  P: "[eb5@19 ~@5 bb5 [c6,d6] eb6 ~@5]/2", Q: "f5 gb5 g5 ab5 bb5 ab5 g5 f5", R: "eb5 g5 ab5 a5 bb5 ab5 g5 f5",
  S: "[bb5,c6]!16", T: "g5@11 ~ g5@4", U: "~ eb5 f5 gb5@2 f5 eb5@2", V: "g5", W: "~@4 g5 ~ f5@4 g5 ~ f5@4",
  X: "[eb6@20 ~@4 eb6@3 ~@5]/2", Y: "bb5!2 b5!2 c6!2 db6!2", Z: "d6@3 ~ f5 ~ bb5@4 f5 ~ bb5@2 f5 ~",
  AA: "bb5 b5 c6 bb5 b5 c6 bb5 b5", AB: "c6 bb5 b5 c6@2 bb5 c6 b5",
})).s("gm_flute").gain(0.45)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B C D E F@2 G E F@2 G E F@2 G H I J K E F@2 G E F@2 G L M N O P H Q@2 ~@3 R ~@3 S ~@3 R H I T@2 ~@3 R ~@3 S U V W X
  Y@2 Z@2 A B AA AB AC AD AC AE AC AD AC AE AC AD AC AE H I J K E F@2 G E F@2 G L M N O P H Q@2
>`.pickRestart({
  A: "bb4@2 a4@2 bb4@2 c5@2 bb4 ~@7", B: "bb3@2 a3@2 bb3@2 c4@2 bb3 ~@7", C: "bb3@3 ~@13", D: "~ bb4",
  E: "eb4 d4 c4 eb4 d4 c4 eb4 d4", F: "[c4 eb4 d4 c4 eb4 d4 c4 eb4@2 d4 c4 eb4 d4 c4 eb4 d4]/2", G: "c4 ~@7",
  H: "g4 f4", I: "a4 g4", J: "bb4@3 ~@13", K: "d4@3 ~@13", L: "eb4 g4 bb4 eb5@3 eb5@2", M: "db5 g4 bb4 eb5@3 eb5@2",
  N: "c5 eb4 ab4 c5@3 c5@2", O: "b4 eb4 gb4 b4@3 b4@2", P: "bb3@4 c4 g4 eb4 c4",
  Q: "[eb4@20 ~@4 bb4 [c5,d5] eb5 ~@5]/2", R: "f4 gb4 g4 ab4 bb4 ab4 g4 f4", S: "eb4 g4 ab4 a4 bb4 ab4 g4 f4",
  T: "[bb4@9 bb4 c5 bb4 c5 bb4 c5 bb4]/2", U: "eb4@3 eb4", V: "d4@3 d4", W: "~ eb4 f4 gb4@2 f4 eb4@2", X: "g4",
  Y: "~@4 g4 ~ f4@4 g4 ~ f4@4", Z: "[eb4@20 ~@4 eb4@3 ~@5]/2", AA: "bb3!2 b3!2 c4!2 db4!2",
  AB: "d4@3 ~ f4 ~ bb4@4 f4 ~ bb4@2 f4 ~", AC: "bb4 b4 c5 bb4 b4 c5 bb4 b4", AD: "c5 bb4 b4 c5@2 bb4 c5 b4",
  AE: "c5 ~@7",
})).s("gm_alto_sax").gain(0.4)

// other · trumpet · "B♭ Cornet 1"
const trumpet = note(`<
  ~ A B C ~@3 D ~@3 E ~@3 D F G H@2 ~@3 D ~@3 E I@2 J K L F M@2 N O P Q P R N S N O P Q F G T@2 N O P Q P R N S U V W K
  X@2 M@2 ~ A Y Z S ~@2 D ~@3 E ~@3 D F G H@2 ~@3 D ~@3 E I@2 J K L F M@2
>`.pickRestart({
  A: "bb4@2 a4@2 bb4@2 c5@2 bb4 ~@7", B: "bb4@3 ~@13", C: "~ f5", D: "~@4 f5 ~ b4@4 b4 ~ bb4@4",
  E: "~@4 eb5 ~ c5@4 b4 ~ bb4@4", F: "g5 f5", G: "a5 g5", H: "f5@3 ~@13", I: "eb5@4 bb4 ~ eb5@4 bb4 ~ eb5@4",
  J: "ab5@4 eb5 ~ ab5@4 eb5 ~ ab5@4", K: "eb5", L: "bb4@4 c5 g5 eb5 c5", M: "[eb5@20 ~@4 eb5@3 ~@5]/2",
  N: "eb5@2 g5 d5@2 bb4 c5@2", O: "bb4 ~ bb4@4 eb5@2", P: "f5@2 ab5 c5@2 a4 bb4 ~", Q: "d5@3 ~@13",
  R: "bb4 ~ bb4@4 f5@2", S: "eb5@3 ~@13", T: "[d5@9 bb4 c5 bb4 c5 bb4 c5 bb4]/2", U: "bb4@3 bb4", V: "b4@3 b4",
  W: "~ eb5 f5 gb5@2 f5 eb5@2", X: "~@4 g5 ~ f5@4 g5 ~ f5@4", Y: "bb4!2 b4!2 c5!2 db5!2",
  Z: "d5@3 ~ f5 ~ bb4@4 f5 ~ bb4@4",
})).s("gm_trumpet").gain(0.45)

// other · viola · "B♭ Cornet 2"
const viola = note(`<
  ~ A B C D E@2 F G H@2 I D E@2 F J K L@2 D E@2 F G H@2 I M@2 N O P Q R@2 S T U V U W S X S T U V J K Y@2 S T U V U W S
  X Z@2 AA X AB AC AD@2 ~ A AE AF AG AH@2 F D AH@2 AI D AH@2 F J K L@2 D E@2 F G H@2 I M@2 N O P Q R@2
>`.pickRestart({
  A: "[bb3,bb4]@2 [a3,a4]@2 [bb3,bb4]@2 [c4,c5]@2 [bb3,bb4] ~@7", B: "[d4,f4,bb4]@3 ~@13", C: "~ [d4,f4,d5]", D: "g4!8",
  E: "[g4!7 ab4@2 ab4!7]/2", F: "~@4 d5 ~ ab4@4 ab4 ~ ab4@4, ab4@3 ~@5", G: "ab4!8", H: "[ab4!7 g4@2 g4!7]/2",
  I: "~@4 bb4 ~ g4@4 g4 ~ g4@4, g4@3 ~@5", J: "[g4,eb5] [f4,d5]", K: "[a4,c5] [g4,eb5]", L: "[ab4,d5]@3 ~@13",
  M: "[eb4,g4]@4 [g4,bb4] ~ [eb4,g4]@4 bb4@2 [eb4,g4]@4, ~@10 g4 ~@5", // Eb Gm Eb
  N: "[ab4,c5]@4 [c5,eb5] ~ [ab4,c5]@4 eb5@2 [ab4,c5]@4, ~@10 c5 ~@5", O: "a4", P: "bb4@4 c5 [g4,g5] [eb4,eb5] [c4,c5]",
  Q: "[c5,eb5] [bb4,d5]", R: "[[g4,bb4]@20 ~@4 [g4,bb4]@3 ~@5]/2", S: "bb4@2 g4 bb4@2 g4 g4@2", T: "g4 ~ g4@4 bb4@2",
  U: "d5@2 f5 ab4@2 e4 f4 ~", V: "[f4,ab4], bb4@3 ~@13", W: "f4 ~ f4@4 d5@2", X: "[g4,bb4]",
  Y: "[bb4@9 bb4 c5 bb4 c5 bb4 c5 bb4]/2", Z: "g4@3 g4", AA: "~ [eb4,eb5] [f4,f5] [gb4,gb5]@2 [f4,f5] [eb4,eb5]@2",
  AB: "~@4 [c4,eb4,g4] ~ [c4,eb4,f4]@4 [c4,eb4,g4] ~ [c4,eb4,f4]@4", // Cm F7 Cm F7
  AC: "~@4 [bb3,d4,g4] ~ [bb3,d4,f4]@4 [bb3,d4,g4] ~ [bb3,d4,f4]@4", AD: "[[g3,bb3,bb4]@20 ~@4 [g3,bb3,bb4]@3 ~@5]/2",
  AE: "[bb3,bb4]!2 [b3,b4]!2 [c4,c5]!2 [db4,db5]!2", AF: "[d4,d5]@3 ~ [f4,d5] ~ [ab4,bb4]@4 [f4,d5] ~ [f4,bb4]@2 f4 ~",
  AG: "[g4,bb4] g4!7", AH: "[g4!3 g4@2 g4!2 ab4@2 ab4!7]/2", AI: "~@4 bb4 ~ g4@4 g4 ~ g4@4, ab4",
})).s("gm_viola").gain(0.45)

// other · brass section · "Horn in F"
const brass_section = note(`<
  ~ A B C ~@3 D ~@3 E ~@3 D F G H@2 ~@3 D ~@3 E I@2 J K L M N@2 O P Q R Q S O T O P Q R F G U@2 O P Q R Q S O T V W X Y
  Z AA N@2 ~ A AB AC T ~@2 D ~@3 E ~@3 D F G H@2 ~@3 D ~@3 E I@2 J K L M N@2
>`.pickRestart({
  A: "bb3@2 a3@2 bb3@2 c4@2 bb3 ~@7", B: "d4@3 ~@13", C: "~ bb4", D: "~@4 bb4 ~ f4@4 f4 ~ f4@4",
  E: "~@4 g4 ~ eb4@4 eb4 ~ eb4@4", F: "g4 f4", G: "a4 g4", H: "ab4@3 ~@13", I: "g4@4 g4 ~ g4@4 g4 ~ g4@4",
  J: "c5@4 c5 ~ c5@4 c5 ~ c5@4", K: "b4", L: "bb4@4 c5 g4 eb4 c4", M: "c5 bb4", N: "[g4@20 ~@4 g4@3 ~@5]/2",
  O: "g4@2 eb4 g4@2 eb4 eb4@2", P: "eb4 ~ eb4@4 gb4@2", Q: "bb4@2 bb4 f4@2 db4 d4 ~", R: "f4@3 ~@13",
  S: "d4 ~ d4@4 bb4@2", T: "g4@3 ~@13", U: "[f4@9 bb4 c5 bb4 c5 bb4 c5 bb4]/2", V: "eb4@3 eb4", W: "d4@3 d4",
  X: "~ eb4 f4 gb4@2 f4 eb4@2", Y: "g4", Z: "~@4 a4 ~ a4@4 a4 ~ a4@4", AA: "~@4 ab4 ~ ab4@4 ab4 ~ ab4@4",
  AB: "bb3!2 b3!2 c4!2 db4!2", AC: "d4@3 ~ bb4 ~ f4@4 bb4 ~ d4@4",
})).s("gm_brass_section").gain(0.45)

// other · trombone
const trombone = note(`<
  A B C D E@4 F@4 E@4 G H I J E@4 F@4 K L M N O P Q R S T U V U W S X S T U Y G H Z AA S T U V U W S X AB AC AD AE AF AG
  AH AI AJ B AK AL E@4 F@4 E@4 G H I J E@4 F@4 K L M N O P Q AM
>`.pickRestart({
  A: "eb3@3 ~@9 eb3@4", B: "[bb2,bb3]@3 ~@9 [bb2,bb3]@4",
  C: "[bb2,bb3] ~ [bb2,bb3]@4 [bb2,bb3] ~ [c3,c4]@4 [db3,db4]@4", D: "[d3,d4]@3 ~ bb2@4 c3@4 d3@4",
  E: "[g3@20 g3@4 g3@2 gb3@2 g3@2 ~@22 [d4,f4] ~ [ab3,b3]@4 [ab3,b3] ~ [bb3,d4]@4, ~@15 ab3@12 ~@5]/4", // Dm Abm Bb
  F: "[ab3@20 ab3@4 ab3@2 bb3@2 ab3@2 ~@22 [bb3,eb4] ~ [g3,c4]@4 [g3,b3] ~ [g3,bb3]@4, ~@15 g3@12 ~@5]/4", // Eb5 C5 G Gm
  G: "[g3,c4,eb4] [f3,c4,eb4]", H: "[a3,c4,eb4] [g3,c4,eb4]", I: "bb3@3 ~ bb3@2 ab3@4 ab3@2 f3@4",
  J: "d3@3 ~ d3@2 c3@4 c3@2 bb2@4", K: "eb3@3 eb3", L: "g3@3 g3", M: "ab3@3 ab3", N: "a3@3 a3", O: "bb3!2", P: "c4 d4",
  Q: "eb4@3 ~ c4 ~ bb3@4 gb3 ~ g3@4", R: "eb4 d4 [c4,db4] b3 bb3 b3 [c4,db4] d4 eb4@3 ~@5", S: "[g3,bb3]",
  T: "[g3,bb3] ~ [g3,bb3]@4 [gb3,bb3]@2", U: "[ab3,bb3]", V: "bb3, ab3@3 ~@13",
  W: "[ab3,bb3] ~ [ab3,bb3]@4 [ab3,bb3]@2", X: "eb3, g3@3 ~@13", Y: "ab3, bb3@3 ~@13", Z: "bb3@4 c4 ~ d4@6 c4@4",
  AA: "bb3 ab3 g3 f3", AB: "[eb3,bb3,eb4]@3 [eb3,bb3,eb4]", AC: "[d3,b3,d4]@3 [d3,b3,d4]",
  AD: "~ eb3 f3 gb3@2 f3 eb3@2", AE: "g3 c3 d3 e3", AF: "e3 ~@3 g3 ~ f3@4 g3 ~ f3@4, ~ f3@5 ~@10",
  AG: "a3 ~@3 g3 ~ f3@4 g3 ~ f3@4, ~ bb3@15", AH: "eb4@4 c4 ~ bb3@4 g3@4 f3 ~, eb3", AI: "eb3@4 ~@4 [eb3,g3,bb3]@3 ~@5",
  AJ: "bb2@3 ~@9 bb2@4", AK: "[d3,d4]!2 [db3,db4]!2 [c3,c4]!2 [b2,b3]!2", AL: "[bb2,bb3]@3 ~ bb2@4 c3@4 d3@4",
  AM: "eb4 d4 [c4,db4] b3 bb3 [ab3,a3,b3] [gb3,g3,c4,db4] [e3,f3,d4] [eb3,eb4]@3 ~@5", // Dbmaj7 Abm Dm Eb
})).s("gm_trombone").gain(0.45)

// other · tremolo strings · "Euphonium"
const tremolo_strings = note(`<
  A B C D E@4 F@4 E@4 G H I J E@4 F@4 K L M N O P Q R S T U V U W S X S T U V G H Y Z S T U V U W S X L@2 AA AB AC AD AE
  AF B@2 AG AH E@4 F@4 E@4 G H I J E@4 F@4 K L M N O P Q R
>`.pickRestart({
  A: "eb3@3 ~@9 eb3@4", B: "bb2@3 ~@9 bb2@4", C: "bb2 ~ bb2@4 bb2 ~ c3@4 db3@4", D: "d3@3 ~ bb2@4 c3@4 d3@4",
  E: "[g3@20 g3@4 g3@2 gb3@2 g3@2 ab3@20 ~@2 bb3 ~ f3@4 f3 ~ f3@4]/4",
  F: "[ab3@20 ab3@4 ab3@2 bb3@2 ab3@2 g3@20 ~@2 g3 ~ eb3@4 eb3 ~ eb3@4]/4", G: "g3 f3", H: "a3 g3",
  I: "bb3@3 ~ bb3@2 ab3@4 ab3@2 f3@4", J: "d3@3 ~ d3@2 c3@4 c3@2 bb2@4", K: "eb3@3 eb3", L: "g3@3 g3", M: "ab3@3 ab3",
  N: "a3@3 a3", O: "bb3!2", P: "c4 d4", Q: "eb4@3 ~ c4 ~ bb3@4 gb3 ~ g3@4",
  R: "eb4 d4 [c4,db4] b3 bb3 b3 [c4,db4] d4 eb4@3 ~@5", S: "eb3", T: "eb3 ~ eb3@4 eb3@2", U: "d3", V: "d3@3 ~@13",
  W: "d3 ~ d3@4 d3@2", X: "eb3@3 ~@13", Y: "bb3@4 c4 ~ d4@6 c4@4", Z: "bb3 ab3 g3 f3", AA: "~ eb3 f3 gb3@2 f3 eb3@2",
  AB: "g3 c3 d3 e3", AC: "e3 f3@15", AD: "a3 bb3@15", AE: "eb4@4 c4 ~ bb3@4 g3@4 f3 ~", AF: "eb3@4 ~@4 eb3@3 ~@5",
  AG: "d3!2 db3!2 c3!2 b2!2", AH: "bb2@3 ~ bb2@4 c3@4 d3@4",
})).s("gm_tremolo_strings").gain(0.45)

// bass · tuba
const bass = note(`<
  A B C D E F G H G I J K E F G H L M N O E F G H G I J K P Q R S T U V W X Y G H G I J Z X Y G H L M AA AB X Y G H G I
  J Z AC AD AE AF AG AH AI AJ B@2 AK D E F G H G I J K E F G H L M N O E F G H G I J K P Q R S T U V AL
>`.pickRestart({
  A: "eb2@3 ~@9 eb2@4", B: "bb1@3 ~@9 bb1@4", C: "bb1 ~ bb1@4 bb1 ~ c2@4 db2@4", D: "d2@3 ~ bb1@4 c2@4 d2@4",
  E: "eb2 ~ g2 ~", F: "eb2@2 ~@2 bb1@2 eb2 e2", G: "f2 ~ bb1 ~", H: "f2 bb1 c2 d2", I: "f2 ~ f2 gb2", J: "g2 ~ bb1 ~",
  K: "eb2 bb1 c2 d2", L: "c2 ~ f2 ~", M: "c2 ~ c2 ~", N: "bb2@3 ~ bb2@2 ab2@4 ab2@2 f2@4",
  O: "d2@3 ~ d2@2 c2@4 c2@2 bb1@4", P: "eb2@3 eb2", Q: "db2@3 db2", R: "c2@3 c2", S: "b1@3 b1", T: "bb1 ~ bb1 ~",
  U: "c2!2 bb1!2", V: "eb2@3 ~ c3 ~ bb2@4 gb2 ~ g2@4", W: "eb2@4 bb1@4 eb2@3 ~ bb1@4", X: "eb2 ~ bb1 ~",
  Y: "eb2 ~ g2 gb2", Z: "eb2 ab2 g2 f2", AA: "bb2@4 c3 ~ d3@6 c3@4", AB: "bb2 ab2 g2 f2", AC: "eb2@6 eb2 ~",
  AD: "g2@6 g2 ~", AE: "c2!2", AF: "c2!2 d2 e2", AG: "f2 ~ f2 ~", AH: "bb1 ~ bb2 ~", AI: "eb3@4 c3 ~ bb2@4 g2@4 f2 ~",
  AJ: "eb2@4 ~@4 eb2@3 ~@5", AK: "d2!2 db2!2 c2!2 b1!2", AL: "eb2@4 bb1@4 eb2@3 ~@5",
})).s("gm_tuba").gain(0.45)

// chords · banjo
const banjo = note(`<
  A B C D E@2 F G F@2 H I H@2 F G J@2 K L E@2 F G F@2 H I M N O P Q R S T U V W X W@3 Y U V W X J@2 Z@2 U V W X W@3 Y AA
  AB AC AD AE W AF AG AH@2 AI AJ E@2 F G F@2 H I H@2 F G J@2 K L E@2 F G F@2 H I M N O P Q R S T
>`.pickRestart({
  A: "bb4@2 a4@2 bb4@2 c5@2 bb4 ~@7", B: "[d3,f3,ab3,bb3]@2 a3@2 bb3@2 c4@2 [d3,f3,ab3,bb3] ~@7",
  C: "[d3,f3,ab3,bb3]@3 ~@13", D: "~ [bb3,d4,f4,ab4,bb4]", E: "eb3 g3 bb3 c4 eb3 g3 bb3 c4",
  F: "f3 ab3 bb3 d4 f3 ab3 bb3 d4", G: "[d4,f4,ab4,bb4]@3 ~ f4 ~ b3@4 f4 ~ [d3,f3,ab3,bb3]@4",
  H: "eb3 g3 bb3 eb4 eb3 g3 bb3 eb4", I: "[eb4,g4,bb4]@3 ~ eb4 ~ c4@4 b3 ~ [eb3,g3,bb3]@4",
  J: "~ [f3,a3,eb4] ~ [f3,a3,eb4]", K: "[bb3,d4,f4,ab4,bb4]@3 ~@13", L: "[d3,f3,bb3,d4]@3 ~@13",
  M: "[g3,bb3,eb4]@4 bb3 ~ [g3,bb3,eb4]@4 bb3 ~ [g3,bb3,eb4]@4", // Eb
  N: "[g3,bb3,db4,eb4]@4 bb3 ~ [g3,bb3,db4,eb4]@4 bb3 ~ [g3,bb3,db4,eb4]@4", // Eb7
  O: "[ab3,c4,eb4]@4 c4 ~ [ab3,c4,eb4]@4 c4 ~ [ab3,c4,eb4]@4", P: "b3 [b3,gb4] [b3,gb4,a4] [b3,gb4,a4,b4]",
  Q: "~ [eb4,g4,bb4] ~ [eb4,g4,bb4]", R: "c4 eb4 g4 c5 d4 f4 ab4 bb4",
  S: "[eb3,g3,bb3,eb4]@3 ~ [c4,c5] ~ [bb3,bb4]@4 [gb3,gb4] ~ [g3,g4]@4", // Eb C Bb Gb G
  T: "[eb3,g3,bb3,eb4]@4 [d3,f3,ab3,bb3]@4 [eb3,g3,bb3,eb4]@3 ~@5", U: "~ [g3,bb3,eb4] ~ [g3,bb3,eb4]",
  V: "~ [g3,bb3,eb4] ~ [gb3,bb3,eb4]", W: "~ [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4]",
  X: "~@4 [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4]@4 [f3,ab3,bb3,d4] ~ [f3,ab3,bb3,d4]@4", // Bb7
  Y: "~@4 [g3,bb3,eb4] ~ [g3,bb3,eb4]@4 [g3,bb3,eb4] ~ [g3,bb3,eb4]@4", Z: "[ab3,bb3,d4,f4]!4",
  AA: "~ [g3,bb3,eb4]!2 ~", AB: "~ [f3,g3,b3,d4]!2 ~", AC: "~ eb4 f4 gb4@2 f4 eb4@2", AD: "[g3,bb3,eb4]!3 [g3,bb3,e4]",
  AE: "~ [f3,a3,c4,eb4] ~ [f3,a3,c4,eb4]", AF: "eb4@4 c4 ~ bb3@4 g3@4 f3 ~", AG: "eb3@4 ~@4 [eb3,g3,bb3,eb4]@3 ~@5",
  AH: "[f3,ab3,bb3,d4]@3 ~@13", AI: "[bb3,d4,f4,ab4,bb4] [b3,d4,f4,ab4,b4] [c4,f4,ab4,c5] [db4,f4,ab4,db5]",
  AJ: "[d4,f4,ab4,d5] ~ [bb3,d4,f4,ab4,bb4] ~", // Ddim Bb7
})).s("gm_banjo").gain(0.45)

// chords · piano · "Honky Tonk Piano"
const piano = note(`<
  A B C D E F G H G I J K E F G H L M N O E F G H G I J K P Q R S T U V@2 W X Y Z Y AA AB AC W X Y Z L M AD@2 W X Y Z Y
  AA AB AC AE AF AG AH AI AJ AK@2 AL AM AN AO E F G H G I J K E F G H L M N O E F G H G I J K P Q R S T U AP@2
>`.pickRestart({
  A: "[eb2,eb3,bb5]@2 a5@2 bb5@2 c6@2 bb5 ~@3 [eb2,eb3]@4", // Eb5 Eb
  B: "[bb1,bb2,d4,f4,ab4,bb4]@2 a4@2 bb4@2 c5@2 [d4,f4,ab4,bb4] ~@3 [bb1,bb2]@4", // Bb7 Bb
  C: "[bb1,bb2,bb4,bb5] ~ [bb1,bb2,bb4,bb5]@4 [bb1,bb2,bb4,bb5] ~ [c2,c3,c5,c6]@4 [db2,db3,db5,db6]@4", // Bb C Db
  D: "[d2,d3,d5,d6]@3 ~ [bb1,bb2]@4 [c2,c3]@4 [d2,d3]@4, ~ [bb4,d5,f5,ab5,bb5]", // D Bb C D Bb7
  E: "[eb2,eb3] [eb5,g5,bb5] [g2,g3] [eb5,g5,bb5]", // Eb G Eb
  F: "[eb2,eb3]@2 [eb5,g5,bb5]@2 [bb1,bb2]@2 [eb2,eb3] [e2,e3], ~@3 [eb5,g5,bb5]", // Eb Bb Eb E Eb
  G: "[f2,f3] [d5,f5,ab5,bb5] [bb1,bb2] [d5,f5,ab5,bb5]", // F Bb7 Bb Bb7
  H: "[f2,f3]@4 [d5,f5,ab5,bb5] ~@5 [d5,f5,ab5,bb5] ~ [d2,d3,d5,f5,ab5,bb5]@4, ~ [bb1,bb2] [c2,c3] ~, ~@3 [d5,f5,ab5,bb5]@2 ~@3", // F Bb7 Bb C Bb7
  I: "[f2,f3] [d5,f5,ab5,bb5] [f2,f3] [gb2,gb3,d5,f5,ab5,bb5]", J: "[g2,g3] [eb5,g5,bb5] [bb1,bb2] [eb5,g5,bb5]",
  K: "[eb2,eb3]@4 [eb5,g5,bb5] ~@5 [eb5,g5,bb5] ~ [d2,d3,eb5,g5,bb5]@4, ~ [bb1,bb2] [c2,c3] ~, ~@3 [eb5,g5,bb5]@2 ~@3", // Eb Ebmaj7 Bb C Eb
  L: "[c2,c3] [f3,a3,eb4] [f2,f3] [f3,a3,eb4], [a4,c5,eb5,g5] [a4,eb5,f5]", // C F7 F F7 Am7b5 F7
  M: "[c2,c3] [f3,a3,eb4] [c2,c3] [f3,a3,eb4], [c5,eb5,a5] [a4,c5,eb5,g5]", // C F7 C F7 Adim Am7b5
  N: "[bb2,bb3,bb4,d5,f5,ab5,bb5]@3 ~ [bb2,bb3,bb4,bb5]@2 [ab2,ab3,ab4,ab5]@4 [ab2,ab3,ab4,ab5]@2 [f2,f3,f4,f5]@4", // Bb7 Bb Ab F
  O: "[d2,d3,d4,f4,bb4,d5]@3 ~ [d2,d3,d4,d5]@2 [c2,c3,c4,c5]@4 [c2,c3,c4,c5]@2 [bb1,bb2,bb3,bb4]@4", // Bb D C Bb
  P: "[eb2,eb3,g4,bb4,eb5]@4 bb4 ~@5 bb4 ~ [eb2,eb3,g4,bb4,eb5]@4, ~ [g3,bb3,eb4]!2 ~, ~@3 [g4,bb4,eb5]@2 ~@3", // Eb
  Q: "[db2,db3,g4,bb4,db5,eb5]@4 bb4 ~@5 bb4 ~ [db2,db3,g4,bb4,db5,eb5]@4, ~ [g3,bb3,db4,eb4]!2 ~, ~@3 [g4,bb4,db5,eb5]@2 ~@3", // Eb7
  R: "[c2,c3,ab4,c5,eb5]@4 c5 ~@5 c5 ~ [c2,c3,ab4,c5,eb5]@4, ~ [ab3,c4,eb4]!2 ~, ~@3 [ab4,c5,eb5]@2 ~@3", // Ab
  S: "[b1,b2] [gb3,a3,eb4]!2 [b1,b2], [gb4,a4,b4,eb5]", T: "[bb1,bb2] [eb5,g5,bb5] [bb1,bb2] [eb5,g5,bb5]",
  U: "[c2,c3]@3 [b1,b2] [c2,c3]@3 [db2,db3] [d2,d3]@3 [bb1,bb2] [c2,c3]@3 [d2,d3], [a4,c5,eb5,g5] [ab4,bb4,d5,f5]", // C B C Db D Bb C D …
  V: "[[eb2,eb3]@3 ~ [c3,c4] ~ [bb2,bb3]@4 [gb2,gb3] ~ [g2,g3]@4 [eb2,eb3]@4 [bb1,bb2]@4 ~@3 eb6 [bb1,bb2]@4, [eb4,g4,bb4,eb5]@19 ~@5 [eb2,eb3,eb5]@4 ~@4, ~@25 g5@3 ~@4, ~@13 bb5 ~@2]/2", // Eb C Bb Gb G Eb Bb Eb
  W: "[eb2,eb3,g4,eb5]@2 g5 ~@2 g5 [g4,c5] g5, ~ [g3,bb3,eb4] [bb1,bb2] ~, ~@3 [g4,d5]@2 ~ [g3,bb3,eb4]@2", // Eb C5 Eb Bb G5 Eb
  X: "[g4,bb4] g5 [g4,eb5] g5 [g4,d5] g5 [gb4,c5] g5, [eb2,eb3] [g3,bb3,eb4] [g2,g3] [gb2,gb3]", // Gm Cm G5 Gbdim Eb G Gb
  Y: "[f2,f3,ab4,d5,f5]@2 ab5 ~@2 ab5 [ab4,bb4] ab5, ~ [f3,ab3,bb3,d4] [bb1,bb2] ~, ~@3 [ab4,c5]@2 ~ [f3,ab3,bb3,d4]@2", // Ddim Absus2 Bb7 Bb Ab Bb7
  Z: "[f2,f3] [f3,ab3,bb3,d4] [bb1,bb2] [f3,ab3,bb3,d4], [ab4,bb4]@15 ~", // F Bb7 Bb Bb7 Absus2
  AA: "[f2,f3,ab4,d5,f5]@2 ab5 ~@2 ab5 [ab4,bb4] ab5, ~ [f3,ab3,bb3,d4] [f2,f3] [gb2,gb3], ~@3 [ab4,c5]@2 ~@3", // Ddim Absus2 Bb7 F Gb Ab
  AB: "[g2,g3,g4,eb5]@2 g5 ~@2 g5 [g4,c5] g5, ~ [g3,bb3,eb4] [bb1,bb2] ~, ~@3 [g4,d5]@2 ~ [g3,bb3,eb4]@2", // Cm C5 Eb Bb G5 Eb
  AC: "[eb2,eb3] [g3,bb3,eb4] [bb1,bb2] [g3,bb3,eb4], [g4,bb4]@15 ~", // Eb Bb Eb Gm
  AD: "[[bb2,bb3]@4 [c3,c4]@2 [d3,d4]@5 ~ [c3,c4]@4 [bb2,bb3]@4 [ab2,ab3]@4 [g2,g3]@4 [f2,f3]@4, [ab4,bb4,d5,f5]@15 ~]/2", // Bb C D C Bb Ab G F …
  AE: "~ [g3,bb3,eb4]!2 [eb2,eb3,g4,bb4,eb5,g5], [eb2,eb3,g4,bb4,eb5,g5]@11 ~@5", // Eb
// … 74 more lines