Strudelify

Wien Bleibt Wien

Last

KeyE♭ majorTempo120 bpm
0:00/0:00
// Wien Bleibt Wien — Last
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// chords · alto sax
const alto_sax = note(`<
  A B ~@20 C D E F ~@4 G H I J ~ K L M N ~@4 O L P Q R S T U V W ~@16 X Y Z AA G D E AB AC AD AE AA G D E AB
>`.pickRestart({
  A: "eb4@2 ~ d4 c4 ~ b3 ~ c4 ~ ab3@2 g3 ~ f3@2", B: "bb3@2 ~@2 d4@3 ~ eb4@3 ~@5",
  C: "g4@6 bb3@2 db4 ~ db4 ~ db4 ~ db4 ~", D: "c4@2 ~ f4!2 ~ f4 ~ gb4@5 ~ gb4@2", E: "g4 ~@7",
  F: "ab3@2 ~@2 bb3@3 ~ eb4@2 ~@6", G: "g4@5 ~ bb3@2 db4 ~ db4 ~ db4 ~ db4 ~", H: "c4@2 ~ f4!2 ~ f4 ~ gb4@4 ~@2 gb4@2",
  I: "g4 ~@15", J: "ab3@2 ~@2 bb3@2 ~@2 eb4 ~@7",
  K: "[ab3,c4,eb4]@4 [c4,eb4,ab4] ~ [ab3,c4,e4] ~ [ab3,c4,f4]@4 [c4,eb4,ab4]@4", L: "[bb3,db4,g4]@8 [eb4,g4,db5]@7 ~",
  M: "[g3,db4,eb4]@4 [db4,eb4,g4] ~ [g3,bb3,e4] ~ [bb3,db4,f4]@3 ~ [db4,eb4,g4]@3 ~", // Eb7 Edim Bbm Eb7
  N: "[ab3,c4,eb4]@8 [eb4,ab4,c5]@7 ~", // Ab
  O: "[ab3,c4,eb4]@4 [c4,eb4,ab4] ~ [ab3,c4,e4] ~ [ab3,c4,f4]@4 [c4,eb4,ab4]@3 ~, ~@12 ab3 ~@3", // Ab Abaug Fm Ab
  P: "[g3,db4,eb4]@4 [db4,eb4,g4] ~ [g3,bb3,e4] ~ [bb3,db4,f4]@3 ~ [db4,eb4,g4]@4", // Eb7 Edim Bbm Eb7
  Q: "[ab3,c4,eb4]@7 ~ [eb4,ab4,c5]@6 ~@2, bb3 ~@15", // Ab
  R: "[eb4,ab4,c5]@3 ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,g4,c5]@3 ~ [eb4,gb4,c5]@2 ~@2", // Ab Cm Cdim
  S: "[f4,a4,eb5]@5 ~ [c4,f4,a4] ~ [f4,bb4,db5]@3 ~ [db4,e4,ab4]@3 ~", // F7 F Bbm Dbm
  T: "[eb4,ab4,c5]@5 ~ [eb4,ab4] ~ [db4,g4,bb4]@2 ~@2 [g4,db5,eb5]@2 ~@2, ~@3 c4 ~@4", // Ab Ab5 Gdim Eb7
  U: "[c5,eb5,ab5]@2 ~@2 [db5,eb5,g5]@3 ~ [c5,ab5] ~ [c5,ab5]!2 [c5,ab5]@2 ~@2", // Ab Eb7 Fm
  V: "eb5@2 ~ d5 c5 ~ b4 ~ c5@2 ab4@2 g4 ~ f4@2", W: "bb4@2 ~@2 [ab4,d5]@3 ~ [g4,eb5]@3 ~@5",
  X: "[eb4,g4]@6 [b3,d4]@2 [c4,eb4] ~ [bb3,eb4] ~ [g3,bb3] ~ [eb3,g3] ~", // Eb Bm Cm Eb5 Gm Eb
  Y: "[d3,ab3]@3 [ab3,bb3]!2 ~ [ab3,bb3] ~ [ab3,bb3]@6 ~@2", // Ddim Absus2
  Z: "[d4,ab4]@5 ~ d4@2 eb4@2 d4@2 [ab3,c4] ~ [d3,ab3] ~, ~@6 b3 ~ c4 ~ bb3 ~@5", // Ddim Ab Ddim
  AA: "[eb3,g3]@2 ~ [g3,bb3]!2 ~ [g3,bb3] ~ [g3,bb3]@6 ~@2", AB: "ab3 ~ bb3 ~ eb4 ~@3",
  AC: "[eb4,g4]@5 ~ b3@2 [c4,eb4] ~ eb4@2 [g3,bb3] ~ [eb3,g3] ~, ~@6 d4 ~@3 bb3 ~@5", // Eb Cm Gm Eb
  AD: "[d3,ab3]@2 ~ [ab3,bb3]!2 ~ [ab3,bb3] ~ [ab3,bb3]@6 ~@2", // Ddim Absus2
  AE: "[d4,ab4]@5 ~ b3@2 [c4,eb4] ~ d4@2 [ab3,c4] ~ [d3,ab3] ~, ~@6 d4 ~@3 bb3 ~@5", // Ddim Cm Ab Ddim
})).s("gm_alto_sax").gain(0.35)

// bass · tuba
const bass = note(`<
  A B C D E F G H I J K L E F C H M N O P Q R S T U V W X Y R Z AA AB AC AD AE AF@2 AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS AT B AU AV E AW AX AY AZ BA BB D BC BD BE AY BF BG O BH BI BJ Z BK U BL G BM BN BO BP BQ U BL
>`.pickRestart({
  A: "[eb1,eb2]@2 ~@8 [f1,f2] ~ [g1,g2] ~ [ab1,ab2] ~", B: "[bb1,bb2] ~@3 [bb1,bb2]@2 ~@2 [eb2,eb3] ~@3 [eb2,eb3] ~@3",
  C: "[eb2,eb3] ~@3 [bb1,bb2] ~@3 [eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2", D: "[eb2,eb3] ~ [d2,d3] ~ [f2,f3] ~ [bb1,bb2] ~",
  E: "[d2,d3] ~ [bb1,bb2] ~ [d2,d3] ~ [bb1,bb2] ~", // D Bb D Bb
  F: "[f2,f3]@2 ~@2 [bb1,bb2]@2 ~@2 [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~ [bb1,bb2] ~", // F Bb Eb D C Bb
  G: "[eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2 [eb2,eb3]@2 ~@2 [bb1,bb2] ~@3", // Eb Bb Eb Bb
  H: "[eb2,eb3]@2 ~@2 [gb2,gb3]@2 ~@2 [f2,f3]@2 ~@2 [bb1,bb2] ~@3", // Eb Gb F Bb
  I: "[c2,c3]@2 ~@2 [f2,f3] ~@3 [bb1,bb2]@2 ~@2 [f2,f3]@2 ~@2, ~@12 [ab2,ab3] ~@3", // C F Bb F Ab
  J: "[f2,f3] ~@3 [f1,f2]@2 ~@2 [bb1,bb2] ~ [ab1,ab2] ~ [g1,g2] ~ [f1,f2] ~", // F Bb Ab G F
  K: "[eb1,eb2] ~@3 [bb1,bb2]@2 ~@2 [eb2,eb3] ~@3 [bb1,bb2]@2 ~@2", // Eb Bb Eb Bb
  L: "[eb2,eb3]@2 ~@2 [d2,d3]@2 ~@2 [f2,f3]@2 ~@2 [bb1,bb2] ~@3", M: "[c2,c3] ~ [f2,f3] ~ [bb1,bb2] ~ [f2,f3] ~",
  N: "[f2,f3] ~@3 [f1,f2]@2 ~@2 [bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2] ~@3", // F Bb
  O: "[eb2,eb3] ~ [bb1,bb2] ~ [eb2,eb3] ~ [bb1,bb2] ~", // Eb Bb Eb Bb
  P: "[f2,f3]@3 ~ [bb1,bb2]@3 ~ [bb2,bb3] ~ [ab2,ab3] ~ [f2,ab2,f3,ab3] ~ [d2,d3] ~", // F Bb Ab Fm D
  Q: "[f2,f3]@3 ~ [bb1,bb2]@3 ~ [f2,f3]@3 ~ [bb1,bb2]@2 ~@2", // F Bb F Bb
  R: "[eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2 [eb2,eb3] ~ [d2,eb2,d3,eb3] ~ [c2,c3] ~ [bb1,bb2] ~", // Eb Bb Eb Ebmaj7 C Bb
  S: "[eb2,eb3]@3 ~ [bb1,bb2]@2 ~@2 [eb2,eb3]@2 ~@2 [eb2,eb3]@2 ~@2", // Eb Bb Eb
  T: "[ab1,ab2]@2 ~@2 [ab1,ab2]@2 ~@2 [a1,a2] ~@3 [a1,a2]@2 ~@2", // Ab A
  U: "[bb1,bb2] ~ [eb2,eb3] [d2,d3] [c2,c3] ~ [bb1,bb2] ~ [ab1,ab2] ~ [g1,g2] ~ [f1,f2] ~ [eb1,eb2] ~", // Bb Eb D C Bb Ab G F …
  V: "[ab1,ab2] ~@3 [bb1,bb2] ~@3 [eb2,eb3]@2 ~@6", W: "[eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2 [eb2,eb3] ~@3 [bb1,bb2]@2 ~@2",
  X: "[f2,f3]@2 ~@2 [bb1,bb2]@3 ~ [bb2,bb3] ~ [ab2,ab3] ~ [f2,f3] ~ [d2,d3] ~", // F Bb Ab F D
  Y: "[f2,f3]@3 ~ [bb1,bb2]@3 ~ [f2,f3]@2 ~@2 [bb1,bb2] ~@3", Z: "[eb2,eb3] ~ [bb1,bb2] ~ [eb2,eb3] ~ [eb2,eb3] ~",
  AA: "[ab2,ab3]@2 ~@2 [ab2,ab3]@2 ~@2 [a2,a3]@2 ~@2 [a2,a3] ~@3", // Ab A
  AB: "[bb2,bb3] ~ [eb2,eb3] [d2,d3] [c2,c3] ~ [bb1,bb2] ~ [ab1,ab2] ~ [g1,bb1,g2,bb2] ~ [f1,f2] ~ [eb1,eb2] ~", // Bb Eb D C Bb Ab Gm F …
  AC: "[g1,ab1,g2,ab2] ~@3 [bb1,bb2] ~@3 [eb2,eb3] ~@7", AD: "[ab1,ab2] ~@3 [g1,g2] ~@3 [f1,f2] ~@3 [eb1,eb2] ~@3",
  AE: "[ab1,ab2] ~@3 [eb1,eb2] ~@3 [ab1,ab2]@2 ~@2 [eb1,eb2] ~@3", // Ab Eb Ab Eb
  AF: "[bb1,bb2] ~@3 [eb1,eb2] ~@3 [bb1,bb2] ~@3 [eb1,eb2] ~@3", // Bb Eb Bb Eb
  AG: "[ab1,ab2] ~@3 [eb1,eb2] ~@3 [ab1,ab2] ~@3 [eb1,eb2] ~@3", // Ab Eb Ab Eb
  AH: "[ab1,ab2] ~@3 [ab1,ab2] ~@3 [eb1,eb2] ~@3 [eb1,eb2] ~@3", // Ab Eb
  AI: "[bb1,bb2] ~@3 [bb1,bb2]@2 ~@2 [eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2", // Bb Eb Bb
  AJ: "[eb2,eb3] ~ [bb1,bb2] ~ [bb1,bb2] ~ [eb2,eb3] ~", // Eb Bb Eb
  AK: "[ab1,ab2]@2 ~@2 [ab1,ab2]@2 ~@2 [ab1,ab2] ~ [g1,g2] ~ [f1,f2] ~ [eb1,eb2] ~", // Ab G F Eb
  AL: "[ab1,ab2]@2 ~@2 [eb1,eb2] ~@3 [ab1,ab2]@2 ~@2 [eb1,eb2] ~@3", // Ab Eb Ab Eb
  AM: "[bb1,bb2]@2 ~@2 [eb1,eb2] ~@3 [bb1,bb2]@2 ~@2 [eb1,eb2] ~@3", // Bb Eb Bb Eb
  AN: "[bb1,bb2]@2 ~@2 [eb1,eb2] ~@3 [bb1,bb2]@2 ~@2 [eb1,eb2]@2 ~@2", // Bb Eb Bb Eb
  AO: "[ab1,ab2] ~ [eb1,eb2] ~ [ab1,ab2] ~ [eb1,eb2] ~", // Ab Eb Ab Eb
  AP: "[ab1,ab2]@2 ~@2 [ab1,ab2] ~@3 [ab1,ab2] ~@3 [a1,a2]@2 ~@2", // Ab A
  AQ: "[f1,f2] ~@3 [f1,f2]@2 ~@2 [bb1,bb2]@2 ~@2 [db2,db3]@2 ~@2", // F Bb Db
  AR: "[eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~", AS: "[ab1,ab2] ~@3 [eb1,eb2]@3 ~ [ab1,ab2] ~@3 [ab1,ab2] ~@3",
  AT: "[eb2,eb3]@2 ~@8 [f1,f2] ~ [g1,g2] ~ [ab1,ab2] ~", // Eb F G Ab
  AU: "[eb2,eb3] ~@3 [bb1,bb2]@2 ~@2 [eb2,eb3] ~@3 [bb1,bb2] ~@3", // Eb Bb Eb Bb
  AV: "[eb2,eb3]@2 ~@2 [d2,d3]@2 ~@2 [f2,f3] ~@3 [bb1,bb2] ~@3", // Eb D F Bb
  AW: "[f2,f3] ~@3 [bb1,bb2]@2 ~@2 [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~ [bb1,bb2] ~", // F Bb Eb D C Bb
  AX: "[eb2,eb3] ~@3 [bb1,bb2] ~@3 [eb2,eb3]@2 ~@2 [bb1,bb2] ~@3", AY: "[eb2,eb3] ~ [gb2,gb3] ~ [f2,f3] ~ [bb1,bb2] ~",
  AZ: "[c2,c3]@2 ~@2 [f2,f3]@2 ~@2 [bb1,bb2]@2 ~@2 [f2,f3]@3 ~", // C F Bb F
  BA: "[f1,f2]@2 ~@2 [f1,f2]@2 ~@2 [bb1,bb2] ~ [ab1,bb1,ab2,bb2] ~ [g1,bb1,g2,bb2] ~ [f1,f2] ~", // F Bb Absus2 Gm F
  BB: "[eb1,eb2] ~ [bb1,bb2] ~ [eb2,eb3] ~ [bb1,bb2] ~", BC: "[d2,d3] ~@3 [bb1,bb2] ~@3 [d2,d3] ~@3 [bb1,bb2]@2 ~@2",
  BD: "[f2,f3]@2 ~@2 [bb1,bb2] ~@3 [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~ [bb1,bb2] ~", // F Bb Eb D C Bb
  BE: "[eb2,eb3] ~@3 [bb1,bb2]@2 ~@2 [eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2", // Eb Bb Eb Bb
  BF: "[c2,c3]@2 ~@2 [f2,f3] ~@3 [bb1,bb2]@2 ~@2 [f2,f3]@2 ~@2", // C F Bb F
  BG: "[f1,f2] ~@3 [f1,f2]@3 ~ [bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2] ~@3", // F Bb
  BH: "[f2,f3]@2 ~@2 [bb1,bb2] ~@3 [bb2,bb3] ~ [ab2,ab3] ~ [f2,f3] ~ [d2,d3] ~", // F Bb Ab F D
  BI: "[f2,f3]@2 ~@2 [bb1,bb2]@2 ~@2 [f2,f3] ~@3 [bb1,bb2]@2 ~@2", // F Bb F Bb
  BJ: "[eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2 [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~ [bb1,bb2] ~", // Eb Bb Eb D C Bb
  BK: "[ab1,ab2] ~@3 [ab1,ab2] ~@3 [a1,a2] ~@3 [a1,a2] ~@3", BL: "[ab1,ab2] ~@3 [bb1,bb2] ~@3 [eb2,eb3] ~@7",
  BM: "[f2,f3]@2 ~@2 [bb1,bb2]@2 ~@2 [bb2,bb3] ~ [ab2,bb2,ab3,bb3] ~ [f2,f3] ~ [d2,d3] ~", // F Bb Absus2 F D
  BN: "[f2,f3]@2 ~@2 [bb1,bb2]@2 ~@2 [f2,f3] ~@3 [bb1,bb2] ~@3", // F Bb F Bb
  BO: "[eb2,eb3]@2 ~@2 [bb1,bb2] ~@3 [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~ [bb1,bb2] ~", // Eb Bb Eb D C Bb
  BP: "[eb2,eb3]@2 ~@2 [bb1,bb2]@2 ~@2 [eb2,eb3] ~@3 [eb2,eb3]@2 ~@2", // Eb Bb Eb
  BQ: "[ab1,ab2]@2 ~@2 [ab1,ab2] ~@3 [a1,a2]@2 ~@2 [a1,a2] ~@3", // Ab A
})).s("gm_tuba").gain(0.5)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I J K L M N K O I P Q R M S T U V W X Y Z S T U AA AB AC AD AE AF AG@2 AE AH AG AD AE AI AG AJ AK AL
  AM AN AO G AP E AQ G AR AS AT AU D E AQ AU AV I AW AX AY AZ BA BB BC AA AB Q R AZ S BD BC AA AB
>`.pickRestart({
  A: "[eb3,bb3,eb4,g4]@2 ~@8 [f3,f4]@2 [g3,g4] ~ [ab3,ab4]@2", // Eb F G Ab
  B: "[bb3,bb4] ~@3 [bb2,bb3]@3 ~ [eb3,bb3,eb4,g4] ~@3 [eb3,bb3,eb4,g4] ~@3", // Bb Eb
  C: "eb3 ~ [bb3,eb4,g4] ~@3 [b3,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb Baug Cm7 Eb
  D: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,d4,ab4] ~@3 [bb3,d4,ab4] ~", // Eb Bb7
  E: "~@2 [bb3,d4,f4] ~@3 [b3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb Bdim Bb
  F: "~@2 [bb3,d4,f4] ~@3 [d4,gb4,a4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Bb D Eb
  G: "~@2 [bb3,eb4,g4] ~@3 [b3,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb Baug Cm7 Eb
  H: "[g3,bb3,eb4]@3 ~ [gb3,a3,eb4]@3 ~ [f3,bb3,d4]@6 ~@2", // Eb Ebdim Bb
  I: "~@2 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // F7 Bb
  J: "~@2 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~ [f3,bb3,d4] ~@7", // F7 Bb
  K: "~@2 [g3,bb3,eb4] ~@3 [g3,b3,eb4] ~@3 [g3,bb3,c4,eb4] ~@3 [g3,bb3,eb4] ~", // Eb Gaug Cm7 Eb
  L: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [ab3,bb3,db4,d4] ~@3 [ab3,bb3,d4] ~", // Eb Bb7
  M: "~@2 [ab3,bb3,d4] ~@3 [ab3,b3,d4] ~@3 [ab3,bb3,d4] ~@3 [ab3,bb3,d4] ~", // Bb7 Abdim Bb7
  N: "~@2 [ab3,bb3,d4] ~@3 [gb3,a3,d4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Bb7 D Eb
  O: "[g3,bb3,eb4]@2 ~@2 [gb3,a3,eb4]@3 ~ [f3,bb3,d4]@7 ~", // Eb Ebdim Bb
  P: "[f3,a3,eb4]@2 ~@2 [f3,a3,eb4]@2 ~@2 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4]@2 ~@2", // F7 Bb
  Q: "~@2 [g3,bb3,eb4] ~@3 [g3,b3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,db4,eb4] ~", // Eb Gaug Eb Eb7
  R: "~@2 [ab3,bb3,d4] ~@3 [ab3,bb3,d4] ~@3 [ab3,bb3,d4] ~@3 [ab3,bb3,d4] ~", // Bb7
  S: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Eb
  T: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~", // Eb Eb7
  U: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~", V: "[g3,bb3,db4,eb4] ~@15",
  W: "[f3,ab3,c4,eb4] ~ [f3,ab3,bb3,d4] ~ [g3,bb3,eb4] ~@3", // Fm7 Bb7 Eb
  X: "~@2 [g3,bb3,eb4] ~@3 [g3,b3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Eb Gaug Eb
  Y: "~@2 [ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~", // Bb7
  Z: "~@2 [f3,ab3,bb3,d4] ~@3 [f3,ab3,b3,d4] ~@3 [f3,ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~", AA: "[g3,bb3,eb4] ~@15",
  AB: "[f3,ab3,c4,eb4] ~@3 [f3,ab3,bb3,d4] ~@3 [g3,bb3,eb4] ~@7", // Fm7 Bb7 Eb
  AC: "[c4,eb4,ab4] ~ [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  AD: "~@2 [c4,eb4,ab4] ~@3 [c4,e4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab Caug Ab
  AE: "~@2 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~", // Eb7
  AF: "~@2 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~@3 [db4,e4,g4] ~@3 [db4,eb4,g4] ~", // Eb7 Dbdim Eb7
  AG: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Ab
  AH: "~@2 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~@3 [db4,eb4,g4]@2", // Eb7
  AI: "~@2 [db4,eb4,g4] ~@3 [db4,e4,g4] ~@3 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~", // Eb7 Dbdim Eb7
  AJ: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,gb4,a4] ~", // Ab Cdim
  AK: "~@2 [c4,eb4,f4,a4] ~@3 [c4,eb4,f4,a4] ~@3 [db4,f4,bb4] ~@3 [db4,e4,ab4] ~", // F7 Bbm Dbm
  AL: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,gb4,ab4] ~@3 [db4,eb4,g4] ~@3 [db4,eb4,g4] ~", // Ab Ab7 Eb7
  AM: "[c4,eb4,ab4]@2 ~@2 [db4,eb4,g4]@2 ~@2 [c4,eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4] ~@3", // Ab Eb7 Ab
  AN: "[eb4,g4,bb4]@2 ~@8 [f3,f4,bb4] ~ [g3,g4] ~ [ab3,ab4]@2", // Eb Bb5 G Ab
  AO: "[bb3,bb4] ~@3 [bb2,bb3]@2 ~@2 [eb3,bb3,eb4,g4] ~@3 [eb3,g3,bb3,eb4]@2 ~@2", // Bb Eb
  AP: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,d4,ab4] ~@3 [bb3,d4,f4] ~", // Eb Bb7 Bb
  AQ: "~@2 [bb3,d4,f4] ~@3 [a3,d4,gb4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Bb D Eb
  AR: "[g3,bb3,eb4]@3 ~ [gb3,a3,c4,eb4]@3 ~ [f3,ab3,bb3,d4]@7 ~, ~@4 bb3 ~@11", // Eb Gbdim Bb7
  AS: "[f3,a3,eb4] ~ [f3,a3,db4,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // F7 Faug F7 Bb
  AT: "~@2 [f3,a3,d4,eb4] ~@3 [f3,a3,eb4] ~ [f3,ab3,bb3,d4] ~@7", // Dm F7 Bb7
  AU: "~@2 [bb3,eb4,g4] ~@3 [b3,eb4,g4] ~@3 [c4,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb Baug Cm Eb
  AV: "[g3,eb4,g4]@3 ~ [gb3,a3,eb4]@2 ~@2 [f3,ab3,bb3,d4]@6 ~@2, bb3 ~@15", // Cm Ebdim Bb7
  AW: "[f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~@3", // F7 Bb
  AX: "~@2 [g3,bb3,eb4] ~@3 [b3,db4,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Eb B Eb
  AY: "~@2 [ab3,bb3,d4] ~@3 [ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~", // Bb7
  AZ: "~@2 [f3,ab3,bb3,d4] ~@3 [ab3,b3,d4] ~@3 [f3,ab3,bb3,d4] ~@3 [f3,ab3,bb3,d4] ~", // Bb7 Abdim Bb7
  BA: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Eb Eb7 Eb
  BB: "~@2 [g3,bb3,db4,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~", // Eb7 Eb Eb7
  BC: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [a3,c4,eb4] ~@3 [a3,c4,eb4] ~", // Ab Adim
  BD: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~", // Eb Eb7
})).s("gm_acoustic_guitar_nylon").gain(0.35).pan(0.7)

// chords · trumpet
const trumpet = note(`<
  A B C D E F C G H I C J E F C G K L M N O P Q R S T U V W X Y R S Z AA ~@4 AB AC AD AE ~@4 AF AG AH AI AJ AK C AL E F
  C AM AN AO AP AQ E AR C AM AS AT AU N AV P Y AW S Z AX AY AZ BA BB BC S BD
>`.pickRestart({
  A: "eb5@2 ~ d5 c5 ~ b4 ~ c5 ~ ab4 ~ g4 ~ f4 ~", B: "bb4 ~@3 [ab4,d5]@2 ~@2 [g4,eb5]@2 ~@4 [g4,bb4]!2",
  C: "[g4,bb4] ~ [g4,bb4] ~@3 [g4,b4]!2 [g4,c5] ~ [g4,c5] ~@3 [g4,bb4]!2", // Gm G C5 Gm
  D: "[g4,bb4] ~ [g4,eb5] ~ [g4,d5] ~ [g4,c5] ~ [ab4,d5]@5 ~ [ab4,bb4]!2", // Gm Cm G5 C5 Abdim Absus2
  E: "[ab4,bb4] ~ [ab4,bb4] ~@3 [ab4,b4]!2 [ab4,c5] ~ [ab4,c5] ~@3 [ab4,bb4]!2", // Absus2 Abm Ab Absus2
  F: "[ab4,bb4] ~ [c5,ab5] ~ [bb4,g5] ~ [a4,gb5] ~ [bb4,g5]@4 ~@2 [g4,bb4]!2", // Absus2 Fm Eb D Eb Gm
  G: "[g4,bb4] ~ [g4,bb4,eb5] ~ [gb4,d5] ~ [gb4,c5] ~ [f4,d5]@4 ~@2 [a4,f5]!2", // Gm Eb D Gbdim Dm
  H: "[a4,f5]@2 [g4,eb5] ~@3 [g4,eb5]!2 eb5@2 [f4,d5]@2 ~@2 [f4,d5] [f4,bb4,d5], ~@8 g4 ~@7", // Dm Cm Dm Bb
  I: "[f4,bb4,d5] ~ [eb4,c5] ~ [f4,bb4,d5] ~ [eb4,c5] ~ [d4,bb4]@2 ~@4 [d4,bb4]!2", // Bb Cm Bb Cm Gm
  J: "[g4,bb4] ~ [g4,bb4,eb5] ~ [g4,bb4,d5] ~ [g4,c5] ~ [ab4,d5]@5 ~ [ab4,bb4]!2", // Gm Eb Gm C5 Abdim Absus2
  K: "[a4,f5]@2 [g4,eb5] ~@3 [g4,eb5]!2 [g4,eb5]@2 [f4,d5] ~@3 [f4,d5] [f4,bb4,d5]", // Dm Cm Dm Bb
  L: "[f4,bb4,d5] ~ [eb4,c5] ~ [f4,d5] ~ [eb4,c5] ~ [d4,bb4] ~ [d4,bb4] ~ [d4,bb4] ~@3", // Bb Cm Dm Cm Gm
  M: "[eb5,g5]@5 ~ [b4,d5]@2 [c5,eb5] ~ [bb4,eb5] ~ [g4,bb4] ~ [eb4,g4] ~", // Eb Bm Cm Eb5 Gm Eb
  N: "[d4,ab4]@2 ~ [ab4,bb4]!2 ~ [ab4,bb4] ~ [ab4,bb4]@6 ~@2", // Ddim Absus2
  O: "[d5,ab5]@5 ~ [b4,d5]@2 [c5,eb5] ~ [bb4,d5] ~ [ab4,c5] ~ [d4,ab4,bb4] ~", // Ddim Bm Cm Bb Ab Bb7
  P: "[eb4,g4]@2 ~ [g4,bb4]!2 ~ [g4,bb4] ~ [g4,bb4]@6 ~@2", // Eb Gm
  Q: "[eb5,g5]@4 ~@2 [g4,bb4]@2 [bb4,db5] ~ [bb4,db5] ~ [bb4,db5] ~ [bb4,db5] ~", // Eb Gm Bbm
  R: "[eb4,ab4,c5]@3 [ab4,c5,f5]!2 ~ [ab4,c5,f5] ~ [a4,c5,gb5]@5 ~ [a4,c5,gb5] ~", S: "[bb4,eb5,g5] ~@15",
  T: "[f4,ab4,c5] ~@3 [ab4,bb4,d5]@2 ~@2 [g4,bb4,eb5]@2 ~@6", // Fm Bb7 Eb
  U: "[eb5,g5]@5 ~ [b4,d5]@2 [c5,eb5] ~ [bb4,eb5] ~ [g4,bb4,eb5] ~ g4@2, ~@14 eb4 ~", // Eb Bm Cm Eb5 Eb
  V: "[d4,ab4]@2 ~ [ab4,bb4]!2 ~ [ab4,bb4] ~ [ab4,bb4]@6 ~@2, bb4 ~@15", // Ddim Absus2
  W: "[d5,ab5]@5 ~ d5@2 [c5,eb5] ~ [bb4,d5,eb5] ~ [ab4,c5] ~ [d4,gb4,bb4] ~, ~@6 b4 ~@7 ab4@2", // Ddim Cm Ebmaj7 Ab Daug
  X: "[eb4,g4]@2 ~ [g4,ab4,bb4] [g4,bb4] ~ [g4,bb4] ~ [g4,bb4]@6 ~@2", // Eb Gm
  Y: "[eb5,g5]@5 ~ g4@2 [bb4,db5] ~ [bb4,db5] ~ [bb4,db5] ~ [bb4,db5] ~, ~@6 bb4 ~@9", // Eb Bbm
  Z: "[f4,ab4,c5] ~@3 [ab4,bb4,d5]@2 ~@2 [g4,eb5] ~@7, ~@4 bb4 ~@3", AA: "[c5,eb5] ~@15, ab5 ~@7",
  AB: "[ab4,c5]@2 ~@2 [g4,c5] ~ [f4,c5] ~ [e4,c5]@2 ~@2 [f4,c5] ~ [ab4,c5] ~", // Ab C5 F5 C F5 Ab
  AC: "[g4,db5]@2 ~@2 [e4,db5]@2 ~ [f4,db5] [f4,db5]@7 ~", AD: "[g4,db5]@3 ~ [e4,db5]@2 ~ [f4,db5] [f4,db5]@6 ~@2",
  AE: "[f4,c5]@3 ~ [d4,b4]@2 ~ [eb4,c5] [eb4,c5]@7 ~", // F5 G Cm
  AF: "[eb4,ab4,c5]@3 ~ [eb4,ab4,c5] ~ [eb4,ab4,c5] ~ [eb4,g4,c5]@3 ~ [eb4,gb4,c5]@3 ~", // Ab Cm Cdim
  AG: "[f4,a4,eb5]@5 ~ [c4,f4,a4] ~ [f4,bb4,db5]@3 ~ [db4,e4,ab4]@3 ~", // F7 F Bbm Dbm
  AH: "[eb4,ab4,c5]@5 ~ [c4,eb4,ab4] ~ [db4,g4,bb4]@2 ~@2 [g4,db5,eb5]@2 ~@2", // Ab Gdim Eb7
// … 150 more lines

More by Last