Strudelify

The Klezmer Blues

J.L.

KeyE♭ majorTempo264 bpm
0:00/0:00
// The Klezmer Blues — J.L.
// 264 bpm, 2/2, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: ch 1 "B♭ Clarinet" named as a reed, played on clarinet (its pizzicato strings patch is not one); ch 4 "Trombone" named as a brass, played on trombone (its acoustic bass patch is not one); ch 5 "Accordion" named as an organ, played on accordion (its contrabass patch is not one); ch 6 "Guitar Lead" named as a guitar, played on overdriven guitar (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5915188; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 211 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(264/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 · tremolo strings
const tremolo_strings = note("<~@147 A B C@2 D E F G H I J K L M N O P Q R S T E U V ~@5 W X Y ~@32>".pickRestart({
  A: "bb4@2 c5@2 db5 ~@3 db5@2 c5@2 bb4 ~@3", B: "bb4@2 c5 ~@3 db5@4 c5 ~ bb4@4", C: "[bb4@4 c5 ~ gb4@14 ~@12]/2",
  D: "~@2 c4 eb4 db4 f4 eb4 gb4", E: "a4@2 c5 ~@3 db5@6 eb5@4", F: "c5@6 c5 db5", G: "bb4",
  H: "gb4@4 bb4 ~ c5@4 bb4 ~ gb4@4", I: "gb4@2 bb4 ~@3 c5@6 gb4@4", J: "f4@4 g4 ~ bb4@4 g4 ~ f4@4",
  K: "f4@2 g4 ~@3 bb4@6 f4@4", L: "g4@4 bb4 ~@3 g4@4 e4 ~@3", M: "c4@6 d4 eb4 e4@8", N: "f4@4 f5@3 ~ f5@3 ~ f5@3 ~",
  O: "f5 eb5 db5 ~ db5@2 ~@2 db5 ~@7", P: "db5@3 ~ db5@3 ~ db5@3 ~ db5@3 ~", Q: "db5 c5 bb4 ~ bb4@2 ~@2 bb4 ~@5 db5 ~",
  R: "~@2 db5 ~@3 db5 ~ db5@4 f5@4", S: "e5 db5 c5 ~ c5@2 ~@2 db5 ~@7", T: "~@2 c4 eb4 f4 g4 a4 c5",
  U: "db5@6 c5@6 bb4@3 ~", V: "db5@2 c5 ~@3 bb4@6 ~@4", W: "a4!2", X: "bb4@2 bb4 ~@3 db5@4 f5@2 db5 ~@3",
  Y: "bb4@3 ~@13",
})).s("gm_tremolo_strings").gain(0.51)

// bass · acoustic bass
const bass = note(`<
  ~@44 A@5 B C D E F G H I J K L M N O P Q R S J T U V W X J Y L Z O AA AB AC J AD J T U V W X J Y L Z O AA P Q R S J T
  U V W X J Y L Z O AA AB AC J AD AE AF AG@2 AH AI AJ AK L Z O AA P Q R S J T U V W X J Y L Z O AA AB AC J AD J T U V W
  X J Y L Z O AA P Q R S J T U V W X J Y L Z O AA AB AC AL AM ~@2 AN@5 AO@8 ~ AP@2 AQ ~@6 AR@5 AS@2
>`.pickRestart({
  A: "[~@3 bb1@7 ~ bb1@7 ~ bb1]/5", B: "c3 bb2 ab2 gb2", C: "f2@2 f2 ~ eb2@2 ~@2 db2@4 c2@4", D: "bb1 ~ f2 ~",
  E: "bb2 ~ bb2 b2", F: "c3 ~ gb2 ~", G: "e2 ~ gb2 ~", H: "f2 ~ c2 ~", I: "ab1 ~ f1 ~", J: "bb1 ~ f1 ~",
  K: "bb1!2 c2 d2", L: "eb2 ~ bb1 ~", M: "eb2 ~ gb2 ~", N: "f2 ~ db2 ~", O: "bb1 ~ db2 ~", P: "c2 ~ g1 ~",
  Q: "c2 ~ e2 ~", R: "f2@6 gb2 f2 eb2@6 f2 eb2", S: "db2@6 eb2 db2 c2@6 db2 c2", T: "bb1 ~ gb1 b1", U: "c2 ~ gb1 ~",
  V: "c2 ~ gb1!2", W: "f1 ~ c2 ~", X: "f2 ~ f1 a1", Y: "bb1 b1 c2 d2", Z: "gb1 ~ bb1 c2", AA: "f2 ~ bb1 db2",
  AB: "c2 ~ c2 ~", AC: "db2 ~ f1 ~", AD: "bb1@3 ~ f1@2 ~@2 gb1@2 ~@2 a1@4",
  AE: "bb4@2 c5@2 db5 ~@3 db5@2 c5@2 bb4 ~@3, bb1 ~ f1 ~",
  AF: "bb4@2 c5 ~@7 c5 ~ [b1,bb4]@4, bb1@2 ~ db5@2 ~@3, ~@2 gb1 ~", // Bmaj7
  AG: "[[c2,bb4]@4 c5 ~@3 gb1@4 ~@4 c2@4 ~@4 gb1@4 gb1@4, ~@3 gb4@7 ~@6]/2", AH: "f1@2 c4 eb4 db4 f4 eb4 gb4, ~@2 c2 ~",
  AI: "a4@2 c5 ~@5 f1@4 [a1,eb5]@4, f2@2 ~ db5@3 ~@2", AJ: "bb1@2 ~@2 f1@2 c5 db5, c5@3 ~", AK: "bb1 b1 c2 d2, bb4",
  AL: "bb1 ~@3 f1@2 ~@2", AM: "bb1", AN: "[~@3 eb2@77]/5", AO: "[~@2 bb1@21 c2@9]/8", AP: "[~@8 db2@13 ~@11]/2",
  AQ: "~@3 c2@13", AR: "[~ bb4@26 bb4@26 bb4@26 ~, ~ bb1@79]/5", AS: "[~@13 bb1@13 ~@6]/2",
})).s("gm_acoustic_bass").gain(0.64)

// other · trombone
const trombone = note(`<
  ~@123 A B C D E F G H ~@16 I@2 J@2 K@2 L M A B C D E F G H N@2 O@2 P@2 Q R ~@5 S T U ~@25 V@5 ~@2
>`.pickRestart({
  A: "gb3@4 bb3 ~ c4@6 ~@4", B: "~@2 eb4@4 c4@2 bb3 ~@3 gb3@4", C: "f3@4 g3 ~ bb3@6 ~@4",
  D: "~@2 db4@4 bb3@2 g3 ~@3 f3@4", E: "~@2 c4@6 e4@3 ~ c4@3 ~", F: "c4@6 d4 eb4 e4@8",
  G: "f4@12 [eb4,e4,f4] [a3,bb3,b3,c4,db4,d4] [eb3,e3,f3,gb3,g3,ab3] [a2,bb2,b2,c3,db3,d3]",
  H: "[gb2,g2,ab2] ~@15, f2@3 ~", I: "[db4@9 f4 db4 bb3 ~ f3@2 ~]/2", J: "gb3@4 ~@2 gb3 ~@5 c4@4",
  K: "[eb4@9 f4 eb4 c4 ~ a3@2 ~]/2", L: "f3@4 ~@2 f3 ~@5 bb3@4", M: "db4@4 ~@2 db4 ~ bb3@2 ~@2 f3@4",
  N: "f4@4 ~@2 f4 ~@5 f4@2 ~@2", O: "c4@3 e4@3 gb4@2", P: "[e4 f4@23 f4@2 eb4 ~@3 c4@2]/2",
  Q: "bb3@2 c4@2 db4 ~@3 db4@2 eb4@2 f4 ~@3",
  R: "c4@2 db4@2 c4@2 bb3@2 [a3,bb3] [gb3,g3,ab3] [eb3,e3,f3] [c3,db3,d3] bb2@4, ~@12 b2 ~@3", S: "f4!2",
  T: "db4@2 db4 ~@3 db4@4 f4@2 db4 ~@3", U: "bb3@3 ~@13", V: "[~ bb3@26 bb3@26 bb3@26 ~]/5",
})).s("gm_trombone").gain(0.8)

// chords · accordion
const accordion = note(`<
  ~@35 A@6 ~@2 B C B C B C ~@5 D ~@3 E F@2 G@2 ~@7 D ~@3 E ~@5 H I J ~@32 K@2 L@2 M@2 N O P@2 K@2 Q@2 R@2 K@2 L@2 M@2 N
  O S T U@2 V W@2 X K@2 L@2 M@2 N O P@2 K@2 Q@2 R@2 K@2 L@2 M@2 N O ~@5 H I Y ~@2 Z@5 AA@8 AB@4 ~@6 AC@5 ~@2
>`.pickRestart({
  A: "[~@5 [f3,ab3,c4,eb4,f4,a4,db5]@35 [f2,c3,f3,eb4,f4,a4,c5]@53 ~@3]/6", // F7
  B: "[bb2,bb3]@3 ~ [db3,db4]@3 ~ [f3,f4] ~ [bb3,bb4]@4 [f3,f4] ~", // Bb Db F Bb F
  C: "[eb3,eb4]@4 [gb3,gb4] ~ [bb3,bb4]@4 [c4,c5] ~ [bb3,bb4]@4", D: "eb5 e5@2 ~ eb5 e5@2 ~ c5@8",
  E: "c5 db5@2 ~ c5 db5@2 ~ bb4@8", F: "[eb4@6 c4 eb4 gb4@4 eb4@4, [eb3,gb3,bb3]]/2",
  G: "[[db4,f4]@3 ~ bb3@4, f3, bb3 ~, ~@3 db4@5]/2", H: "[db3,f3,a3,eb4,a4,db5] [f2,c3,f3,eb4,f4,a4,c5]",
  I: "[db4,f4,bb4]@2 [db4,g4,bb4] ~ [db3,f3] ~@3 f2@4 [db4,g4,bb4]@4, bb2@4 ~@2 [db4,g4,bb4]@6 [db3,f3] ~@3", // Bbm Gdim Db Gdim Db
  J: "[bb2,db4,f4,bb4]@3 ~ f2@2 ~@2 gb2@2 ~@2 [a2,c4,eb4,f4,a4]@4", // Bbm F7
  K: "[[bb2,db4]@4 [f3,bb3] ~@3 f2@4 [f3,bb3] ~@3 bb2@4 [f3,bb3] ~@3 f2@4 [f3,bb3] ~@3, [f4,bb4], ~ db4@2 db4@2 db4@2 db4]/2", // Bbm Bb5
  L: "[[c3,e4]@4 [gb3,bb3,c4] ~@3 gb2@4 [gb3,bb3,c4] ~@3 c3@4 [gb3,bb3,c4] ~@3 gb2@4 [gb3,bb3,c4] ~@3, [gb4,bb4], ~ e4@2 e4@2 e4@2 e4]/2", // C Cm7b5 Gb
  M: "[[f2,eb4]@4 [f3,a3,c4] ~@3 c3@4 [f3,a3,c4] ~@3 f2@4 [f3,a3,c4] ~@3 c3@4 [f3,a3,c4] ~@3, [f4,a4], ~ eb4@2 eb4@2 eb4@2 eb4]/2", // F7 F
  N: "[bb2,db4]@4 [f3,bb3] ~@3 f2@4 [f3,bb3] ~@3, [f4,bb4], ~ db4@2 db4", // Bbm Bb5
  O: "bb2@2 [bb3,d4,f4,ab4] ~ b2@2 [b3,d4,f4,ab4] ~ c3@2 [c4,d4,f4,ab4] ~ d3@2 [d4,f4,ab4] ~", // Bb7 Bdim Dm7b5 Ddim
  P: "[[eb3,eb4]@4 [gb3,bb3] ~@3 bb2@4 [gb3,bb3] ~@3 eb3@4 [gb3,bb3] ~@3 bb2@4 [gb3,bb3] ~@3, [gb4,bb4], ~ eb4@2 eb4@2 eb4@2 eb4]/2", // Eb Gb
  Q: "[[c3,e4]@4 [g3,bb3,c4] ~@3 g2@4 [g3,bb3,c4] ~@3 c3@4 [g3,bb3,c4] ~@3 g2@4 [g3,bb3,c4] ~@3, [g4,bb4], ~ e4@2 e4@2 e4@2 e4]/2", // C C7 Gm
  R: "[[f2,eb4]@4 [f3,a3,c4] ~@3 eb3@4 [f3,a3,c4] ~@3 db3@4 [f3,a3,c4] ~@3 c3@4 [f3,a3,c4] ~@3, [f4,a4], ~ eb4@2 eb4@2 eb4@2 eb4]/2", // F7 F
  S: "eb3@4 [gb3,bb3,eb4] ~ bb4@2 c5@2 ~@2 [gb3,bb3,eb4] ~ db5@2, ~@2 gb4 ~ bb2@2 ~@2, ~@5 eb5@2 ~", // Ebm
  T: "c5@2 c5 [c5,db5] [gb3,bb3,eb4] ~@3 [bb2,gb4]@4 [gb3,bb3,eb4] ~@3, eb3 bb4 ~ db5", // Dbmaj7 Ebm
  U: "[bb4 ~@3 [f3,bb3,db4] ~ bb4 ~ [f2,db5]@4 [f3,bb3,db4,bb4] ~@5 c5 [c5,db5] [f3,bb3,db4] ~@7 [f3,bb3,db4] ~@3, bb2 ~@3 bb2 ~ f2 ~, ~ db5@2 ~@4 db5@2 ~ bb4@3 db5@3]/2", // Bbm Db Bbm Dbmaj7 Bbm
  V: "c3@4 [gb3,bb3,c4,e4,c5] db5@2 ~ [gb2,db5]@4 [gb3,bb3,c4,e4,c5] ~@3", // Gb7 Gb5 Gb7
  W: "[db3@4 [f3,a3,db4,eb4,c5] db5@2 ~ [f2,db5]@4 [f3,a3,c4,eb4,c5] ~@3 bb2@4 [f3,bb3,db4] ~@3 f2@4 [f3,bb3,db4] ~@3, ~@7 bb4@7 ~@2]/2", // F7 Db F7 Bbm
  X: "[bb2,db4,f4,bb4]@2 [db4,f4,bb4] ~ f2@2 [db4,f4,bb4] ~ gb2@2 ~@2 [a2,c4,eb4,f4,a4]@4", // Bbm F7
  Y: "[bb2,db4,f4,bb4]@3 ~@13", Z: "[~@3 [eb3,gb3,bb3,c4,eb4,gb4]@77]/5",
  AA: "[~@2 [bb2,f3,bb3,db4,g4,bb4]@21 [gb3,bb3,c4,e4]@9]/8", // Gm7b5 Gb7
  AB: "[~@24 [db3,f3]@13 ~@14 [c3,f3]@13, ~@11 [a3,db4,eb4,f4]@26 [a3,c4,eb4,f4]@26 ~]/4", // Db F5 Aaug F7
  AC: "[~ [bb2,f3,bb3,db4,g4,bb4]@79]/5", // Gm7b5
})).s("gm_accordion").gain(0.64)

// chords · accordion · soft notes
const accordion_soft = note("<A@5 B@6 C@8 D@8 E@8 ~@176>".pickRestart({
  A: "[~@11 [bb2,f3,g3,bb3,db4,f4]@69]/5", B: "[~@5 [c3,gb3,bb3,c4,e4,gb4]@27]/6",
  C: "[~ [f2,c3,a3,c4,eb4,gb4]@21 [bb2,f3,g3,bb3,db4,f4]@10]/8", // F7 Gm7b5
  D: "[~@3 [bb2,f3,ab3,bb3,d4,f4]@42 [eb3,gb3,bb3,c4,eb4,gb4]@83]/8", // Bb7 Cm7b5
  E: "[~ [bb2,f3,g3,bb3,db4,f4]@84 ~ [c3,g3,bb3,c4,e4,g4]@42]/8", // Gm7b5 C7
})).s("gm_accordion").gain(0.32)

// other · overdriven guitar · "Guitar Lead"
const overdriven_guitar = note(`<
  ~@6 A@2 B@4 ~@5 C@2 D@2 E ~@3 F@4 ~ G H ~@11 I J I J I J ~@16 K L ~@13 M N O P Q R ~ S T U V W X Y Z AA AB AC@2 AD
  ~@29 AE AF ~@16 P Q R ~ S T U V W X Y Z AA AB AC@2 AG AH@2 ~ AI AJ@2 ~@6 M N O ~@5 AK@3 ~@2 AL AM AN ~@2 AO@4 ~@6 AP@2
  AQ AR@2 ~@2
>`.pickRestart({
  A: "[~@10 g5@21 ~]/2", B: "[~@4 c5@3 g5@3 e5@16 c5 db5 c5 ~ b4 c5@21 ~@12]/4", C: "[~@14 c5@15 c5@3]/2",
  D: "[db5@3 c5@5 c5@2 ~ c5@2 bb4@16 d4@3, ~@5 db5 ~@10]/2", E: "~@2 f4@11 ~@3",
  F: "[~@2 eb5@21 c5@10 bb4@2 c5@2 bb4@2 f4@21 ~@4]/4", G: "~@3 f4@5", H: "~ bb4@11 ~@4",
  I: "bb3@3 ~ db4@3 ~ f4 ~ bb4@4 f4 ~", J: "eb4@4 gb4 ~ bb4@4 c5 ~ bb4@4", K: "~@3 a3 c4 ~ eb4 ~",
  L: "f4@3 ~ f4@3 ~ f4 [eb4,e4] ~@2 db4@4", M: "db5@6 eb5 db5 c5@6 db5 c5", N: "bb4 ~ f4@2 g4@2 bb4@4 f4@2 g4 ~@3",
  O: "bb4@3 ~@13", P: "~@2 f3!2 g3!2 bb3 g3", Q: "bb3 ~ g3 ~ bb3 ~ db4 ~", R: "c4@2 c4 [c4,db4] bb3 ~ gb3@10",
  S: "~@2 f3!2 a3 ~ c4@2", T: "c3@4 eb3@4 f3 ~ a3@6", U: "g3@12 g3@2 g3 [g3,ab3]", V: "f3",
  W: "[gb3,gb4]@4 [bb3,bb4] ~ [c4,c5]@6 ~@4", X: "[gb3,gb4]@4 [bb3,bb4] ~ [c4,c5]@6 [bb3,bb4]@4",
  Y: "[f3,f4]@4 [bb3,bb4] ~ [db4,db5]@6 ~@4", Z: "[f3,f4]@4 [bb3,bb4] ~ [db4,db5]@6 [bb3,bb4]@4",
  AA: "~@2 c4 b3 c4 db4 d4 eb4", AB: "e4@2 c4@2 bb3@2 g3@4 bb3 ~ c4@4", AC: "[f4@10 f4 gb4 eb4 f4 c4 db4]/2",
  AD: "bb3 ~@15", AE: "f5@3 ~ f5@3 ~ eb5@3 ~ eb5@3 ~", AF: "db5 eb5 ~ db5 c5@2 a4 ~@3 f4@4 ~@2",
  AG: "bb3 ~@3 e4 f4@2 ~ f4@3 ~ f4@3 ~", AH: "[f4@8 db4@2 f4 ~@3 e4@8 c4@10]/2", AI: "~@4 d4 eb4@2 ~ eb4@3 ~ eb4@3 ~",
  AJ: "[eb4@8 b3@2 eb4 ~@3 db4@8 bb3@10]/2", AK: "[~@8 eb5@21 eb5@2 bb4@2 ~ eb4@5 ~@9, ~@33 gb4@2 ~@13]/3",
  AL: "~@6 bb3 db4", AM: "f4@2 bb4@11 f4@2 ~", AN: "~@2 bb3@11 ~@3", AO: "[~@11 db4@26 c4@26 ~]/4",
  AP: "[~ [f3,bb3,db4]@26 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2]/2", // Bbm
  AQ: "[f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]", // Bbm
  AR: "[[f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2]/2", // Bbm
})).s("gm_overdriven_guitar").gain(0.64)

// chords · acoustic guitar steel · "Guitar Rythmn"
const acoustic_guitar_steel = note(`<
  ~@44 A@5 ~ B C D E@2 F@2 C G H@2 C@2 I@2 F@2 C D E@2 F@2 C G H@2 C@2 E J C K C D E@2 F@2 C G H@2 C@2 I@2 F@2 C D E@2
  F@2 C G H@2 C@2 E J C K C D E@2 F@2 C G H@2 C@2 I@2 F@2 C D E@2 F@2 C G H@2 C@2 E J C K C D E@2 F@2 C G H@2 C@2 I@2
  F@2 C D E@2 F@2 C G H@2 C@2 E J C L ~@2 M N O P Q R S T U V W X@2 Y@4 ~@6 Z@2 AA AB@2 ~@2
>`.pickRestart({
  A: "[~@3 [f3,bb3,db4]@7 ~ [f3,bb3,db4]@7 ~@2]/5", // Bbm
  B: "~@2 [f3,a3,db4]@2 [f3,a3,db4]@4 [f3,a3,c4]@3 ~ [eb3,f3,a3,c4]@4", // Faug F F7
  C: "[f3,bb3,db4]@4 [f3,bb3,db4] ~@3 [f3,bb3,db4]@4 [f3,bb3,db4] ~@3", // Bbm
  D: "[f3,bb3,db4]@4 [f3,bb3,db4] ~@3 [f3,bb3,db4]@4 [f3,b3,db4] ~@3", // Bbm Db7
  E: "[gb3,bb3,c4,e4]@4 [gb3,bb3,c4,e4] ~@3 [gb3,bb3,c4,e4]@4 [gb3,bb3,c4,e4] ~@3", // Gb7
  F: "[f3,a3,c4,eb4]@4 [f3,a3,c4,eb4] ~@3 [f3,a3,c4,eb4]@4 [f3,a3,c4,eb4] ~@3", // F7
  G: "[f3,ab3,bb3,d4]@4 [f3,ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4]@4 [f3,ab3,bb3,d4] ~@3", // Bb7
  H: "[gb3,bb3,eb4]@4 [gb3,bb3,eb4] ~@3 [gb3,bb3,eb4]@4 [gb3,bb3,eb4] ~@3", // Ebm
  I: "[g3,bb3,c4,e4]@4 [g3,bb3,c4,e4] ~@3 [g3,bb3,c4,e4]@4 [g3,bb3,c4,e4] ~@3", // C7
  J: "[f3,a3,db4,eb4]@4 [f3,a3,db4,eb4] ~@3 [f3,a3,c4,eb4]@4 [f3,a3,c4,eb4] ~@3", // Faug F7
  K: "[f3,bb3,db4]@3 ~ [f3,bb3,db4] ~@3 [f3,bb3,db4]@4 [f3,a3,c4,eb4]@4", L: "[f3,bb3,db4]@3 ~@13",
  M: "~@3 [gb3,bb3,eb4] ~ [gb3,bb3,eb4]!4 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!2", // Ebm
  N: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!4 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]", // Ebm
  O: "[gb3,bb3,eb4]!2 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!4 ~ [gb3,bb3,eb4]!2 ~ [gb3,bb3,eb4]", // Ebm
  P: "[gb3,bb3,eb4]!2 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!4 ~", // Ebm
  Q: "[gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!4", // Ebm
  R: "~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4]!2 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!3 ~", // Ebm Bbm
  S: "[f3,bb3,db4]!4 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!3", // Bbm
  T: "~ [f3,bb3,db4]!4 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!2", // Bbm
  U: "[f3,bb3,db4] ~ [f3,bb3,db4]!2 ~ [f3,bb3,db4]!4 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!2", // Bbm
  V: "[f3,bb3,db4] ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!4 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]", // Bbm
  W: "[f3,bb3,db4]!2 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4]!3 ~ [f3,bb3,db4] [gb3,bb3,c4,e4] ~ [gb3,bb3,c4,e4]!2", // Bbm Gb7
  X: "~ [gb3,bb3,c4,e4]!3 ~ [gb3,bb3,c4,e4]!2 ~ [gb3,bb3,c4,e4]!2 ~ [gb3,bb3,c4,e4]!2 ~ [gb3,bb3,c4,e4]!2", // Gb7
  Y: "[~ [gb3,bb3,c4,e4]!3 ~ [gb3,bb3,c4,e4]!2 ~ [gb3,bb3,c4,e4]!2 ~ [f3,a3,db4,eb4]@26 [f3,a3,c4,eb4]@26 ~]/4", // Gb7 Faug F7
  Z: "[~ [f3,bb3,db4]@26 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2]/2", // Bbm
  AA: "[f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4]", // Bbm
  AB: "[[f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2 [f3,bb3,db4] [f3,bb3,db4]@2 [f3,bb3,db4]@2]/2", // Bbm
})).s("gm_acoustic_guitar_steel").gain(0.4)

// other · violin
const violin = note(`<
  ~@6 A@2 ~@9 B@2 C ~@5 D@2 E ~@2 F G ~@11 H I H I H I ~@10 J K L M ~@2 N O ~@13 P Q R ~@17 S T U V W X@2 Y Z AA AB AC
  AD@2 M ~@16 AE AF@2 ~ AG AH@2 ~@10 S T U V W X@2 Y Z AA AB AC AD@2 M AI AJ AK@2 AL AM AN@2 ~@5 P Q R ~@5 AO@3 ~@2 AP
  AQ AR ~@2 AS@4 ~@13
>`.pickRestart({
  A: "[~@10 g6@21 ~]/2", B: "[~@14 c6@15 ~@3]/2", C: "~@5 db6 ~@2", D: "[~@2 eb6@21 ~@9]/2", E: "~ bb5@2 ~@13",
  F: "~@3 f4@5", G: "~ bb4@11 ~@4", H: "bb4@3 ~ db5@3 ~ f5 ~ bb5@4 f5 ~", I: "eb5@4 gb5 ~ bb5@4 c6 ~ bb5@4",
  J: "eb4@6 c4 eb4", K: "gb4 eb4", L: "f4@6 db4 ~", M: "bb3", N: "~@3 a4 c5 ~ eb5 ~",
  O: "f5@3 ~ f5@3 ~ f5 [eb5,e5] ~@2 db5@4", P: "db6@6 eb6 db6 c6@6 db6 c6", Q: "bb5 ~ f5@2 g5@2 bb5@4 f5@2 g5 ~@3",
  R: "bb5@3 ~@13", S: "f4@5 bb4@5 ~ d5@5", T: "e5@6 c5 ~", U: "bb4", V: "~@2 f5 gb5 eb5 f5 c5 db5",
  W: "a4@2 bb4@2 c5@2 db5@4 c5@2 db5 ~ c5@2", X: "db5@4 c5 ~ bb4@6 ~@4", Y: "[db5,gb5]@5 [eb5,bb5]@5 ~ [gb5,c6]@5",
  Z: "[bb5,eb6] [gb5,c6]", AA: "~ [f5,bb5]@2 [f5,c6]", AB: "[db5,g5]", AC: "~@4 c5 db5@2 ~ db5@3 ~ c5 ~@3",
  AD: "[~@4 c5 db5@2 ~ db5@3 ~ c5 ~ bb4@14 f4@2 db4@2]/2", AE: "~@4 e5 f5@2 ~ f5@3 ~ f5@3 ~",
  AF: "[f5@8 db5@2 f5 ~@3 e5@8 c5@10]/2", AG: "~@4 d5 eb5@2 ~ eb5@3 ~ eb5@3 ~",
  AH: "[eb5@8 b4@2 eb5 ~@3 db5@8 bb4@10]/2", AI: "f5@4 db5 ~@3 f5@4 db5 ~@3", AJ: "f5@3 ~ db5@8 db5@2 f5@2",
  AK: "[eb5 e5@2 ~ eb5 e5@2 ~ c5@16 ~@8]/2", AL: "eb5@4 c5 ~@3 eb5@4 c5 ~@3", AM: "eb5@3 ~ c5@8 c5@2 eb5@2",
  AN: "[c5 db5@2 ~ c5 db5@2 ~ bb4@16 ~@8]/2", AO: "[~@8 eb6@21 eb6@2 bb5@2 ~ eb5@5 ~@9, ~@33 gb5@2 ~@13]/3",
  AP: "~@6 bb4 db5", AQ: "f5@2 bb5@11 f5@2 ~", AR: "~@2 bb4@11 ~@3", AS: "[~@11 db5@26 c5@26 ~]/4",
})).s("gm_violin").gain(0.72)

// other · violin · soft notes
const violin_soft = note("<~@8 A@4 ~@6 B C@2 D ~@4 E@3 ~@175 F@5 ~@2>".pickRestart({
  A: "[~@4 c6@3 g6@3 e6@16 c6 db6 c6 ~ b5 c6@21 ~@12]/4", B: "~@13 c6@3", C: "[db6@3 c6@5 c6@2 ~ c6@2 bb5@16 d5@3]/2",
  D: "~@2 f5@11 ~@3", E: "[~@7 c6@11 ~ c6@2 bb5@2 f5@21 ~@4]/3", F: "[~ bb5@79]/5",
})).s("gm_violin").gain(0.4)

// other · cello · "Violoncello"
const cello = note(`<
  ~@51 A@2 B C D E F G ~@4 H@2 I J A@2 B C D E F G ~@56 K L@2 ~ M N@2 ~@9 A@2 B C D E F G O P Q R H@2 I J A@2 B C D E F
  G ~@5 S T U ~@2 V W X W@2 Y Z@2 AA Z AB AC@2 AD AE@2 AF ~@6 AG@5 ~@2
>`.pickRestart({
  A: "[f3@14 e3 f3]/2", B: "gb3", C: "gb3 e3", D: "f3@3 eb3", E: "c3 eb3", F: "db3@6 c3 db3", G: "d3", H: "g3/2",
  I: "f3@6 gb3 f3 eb3@6 f3 eb3", J: "db3@6 eb3 db3 c3@6 db3 c3", K: "~@4 e4 f4@2 ~ f4@3 ~ f4@3 ~",
  L: "[f4@8 db4@2 f4 ~@3 e4@8 c4@10]/2", M: "~@4 d4 eb4@2 ~ eb4@3 ~ eb4@3 ~", N: "[eb4@8 b3@2 eb4 ~@3 db4@8 bb3@10]/2",
  O: "eb4@6 c4 eb4", P: "gb4 eb4", Q: "f4@6 db4 ~", R: "bb3", S: "db4 c4", T: "bb3 ~@3 f3@2 ~@2", U: "bb2@3 ~@13",
  V: "~@3 eb3!13", W: "eb3!16", X: "eb3!12 ~ eb3!3", Y: "eb3!6 ~@2 bb2!8", Z: "bb2!16", AA: "bb2 ~ bb2!14",
  AB: "bb2!11 ~ c3!4", AC: "c3!16", AD: "c3!10 ~@6", AE: "[~@8 db3@13 ~@11]/2", AF: "~@3 c3@13", AG: "[~ bb2@79]/5",
})).s("gm_cello").gain(0.32)

stack(
// … 3 more lines