Strudelify

Alte Kameraden

Carl Teike

KeyD♭ majorTempo118 bpm
0:00/0:00
// Alte Kameraden — Carl Teike
// 118 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(118/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · tuba
const bass = note(`<
  A B C@2 D E F@2 G H C@2 D I J K L M C@2 D E F@2 G H C@2 D I J K L N O P Q R S T U V W X Y Z AA AB AC AD O P Q R S T U
  V W X Y Z AA AB AC AE AF@2 AG AH AI AJ AI W AG AK AL AM AN W AH W AO AF AG AH AI AJ AI W AG AK AL AM AN W AH W AO W AI
  AH AP W@2 AH AQ W AI AH AP AR AS AT AU W AI AH AP W@2 AH AQ W AI AH AP AR AS AT AU
>`.pickRestart({
  A: "db2 ~@7 db2 ~@7", B: "ab2 ~@3 eb2 ~@3 ab1 ~ gb2 ~ f2 ~ eb2 ~", C: "db2 ~@3 ab1 ~@3 db2 ~@3 ab1 ~@3",
  D: "db2 ~@3 ab1 ~@3 db2 ~@3 f2 ~@3", E: "eb2 ~@2 ab1 g1 ~@2 ab1 c2 ~@3 c2 ~@2 eb2",
  F: "ab2 ~@3 ab1 ~@3 ab2 ~@3 ab1 ~@3", G: "ab2 ~@3 eb2 ~@3 c2 ~@3 ab1 ~@3",
  H: "db2 ~@2 ab2 g2 ~@2 ab2 bb2 ~@2 ab2 f2 ~@2 eb2", I: "eb2 ~@3 d2 ~@2 eb2 f2 ~@2 eb2 c2 ~@2 ab1",
  J: "bb2 ~@3 eb2 ~@3 bb2 ~@3 eb2 ~@3", K: "ab2 ~@3 c3 ~@3 eb3 ~@3 ab3 ~@3", L: "eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2 ~@3",
  M: "ab2@3 ~ eb3 db3 c3 bb2 ab2 ~ gb2 ~ f2 ~ eb2 ~", N: "ab2@3 ~ eb3 db3 c3 bb2 ab2@3 ~ ab2 ~@2 ab2",
  O: "ab2 ~ gb2 ~ f2 ~ eb2 ~", P: "d2@2 ~ eb2 f2@2 ~ eb2 ab1@2 ~@2 ab2@2 ~ ab2", Q: "ab2 ~ f2 ~ eb2 ~ db2 ~",
  R: "c2@2 ~ db2 eb2@2 ~ db2 ab1@2 ~@2 ab1 ~@2 ab1", S: "eb2 ~@3 ab1@5 ~@3 ab1 ~@2 ab1",
  T: "f2 ~@3 ab1@5 ~@3 ab1 ~@2 ab1", U: "ab2 ~@2 g2 gb2 ~@2 f2 eb2 ~@2 db2 c2 ~@2 bb1",
  V: "ab1 ~ ab1 bb1 c2 ~ bb1 ~ ab1 ~ gb1 ~ f1 ~ eb1 ~", W: "db2 ~@3 db2 ~@3 db2 ~@3 db2 ~@3",
  X: "ab1 ~@3 ab1 ~@3 ab1@4 ~@4", Y: "gb1 ~@3 gb1 ~@3 gb1 ~@3 bb1 ~@3", Z: "db2 ~@3 db2 ~@3 db2 ~@3 ab1@2 ~@2",
  AA: "db2 ~@3 db2 ~@3 f2 ~@3 db2 ~@3", AB: "gb2 ~@3 gb2 ~@3 gb2@2 ~@6", AC: "gb2 ~@3 gb2 ~@3 db2 ~@7",
  AD: "ab1 ~@3 ab1 ~@3 db2 ~@3 ab2 ~@2 ab2", AE: "ab1 ~@3 ab1 ~@3 db2 ~@3 db2@4", AF: "gb2 ~@3 db2 ~@3 gb2 ~@3 db2 ~@3",
  AG: "gb2 ~@3 db2 ~@3 bb1 ~@3 ab1 ~@3", AH: "gb2 ~@3 gb2 ~@3 gb2 ~@3 gb2 ~@3", AI: "db2 ~@3 f2 ~@3 ab2 ~@3 db3 ~@3",
  AJ: "f2 ~@3 db2 ~@3 f2 ~@3 db2 ~@3", AK: "gb2 ~@3 gb2 ~@3 gb2 ~@3 bb2 ~@3", AL: "gb2 ~@3 gb2 ~@3 gb2 ~@3 db2 ~@3",
  AM: "gb2 ~@3 db3 ~@3 bb2 ~@3 gb2 ~@3", AN: "b2 ~@3 b2 ~@3 b2 ~@3 b2 ~@3",
  AO: "gb2 ~ gb2!2 [gb2,db3] ~ [gb2,bb2] ~ gb2 ~@7", AP: "gb2 ~@3 bb2 ~@3 db3 ~@3 gb2 ~@3",
  AQ: "gb2 ~@3 gb2 ~@3 gb2@3 ~@5", AR: "b2 ~@3 b2 ~@3 b2 ~@3 gb2 ~@3", AS: "db2 ~@3 db2 ~@3 db2@2 ~@6",
  AT: "db3 ~@3 b2 ~@3 bb2 ~@3 ab2 ~@3", AU: "gb2 ~ gb2 ~ db2 ~ bb1 ~ gb1@3 ~@5",
})).s("gm_tuba").gain(0.41).pan(0.3)

// chords · french horn · "FR.HORN"
const french_horn = note(`<
  A B C D E F G H I J C D K L M N O P Q R S T U V W X Q R S Y Z AA O AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ AU AV AW AX AY AZ
  BA BB BC BD BE BF BG BH BI BK BL BM BN BO BP BQ BR BS BL BM BN BO BT BU BV BW BL BM BN BO BP BQ BR BS BL BM BN BO BT
  BU BV BW
>`.pickRestart({
  A: "[db3,f3,ab3,db4] ~@7 [db3,f3,ab3,db4] ~@7", // Db
  B: "[eb3,ab3,c4] ~ [eb3,ab3,c4]!3 ~ [eb3,ab3,c4] ~ [ab2,eb3,ab3,c4] ~ gb3 ~ f3 ~ eb3 ~", // Ab
  C: "[db3,f4] ~ [db4,f4,ab4] ~ [ab2,f4] ~ [db4,f4,ab4] ~ [db3,f4] ~ [db4,f4,ab4]!2 [ab2,db4,f4,ab4] e4 [db4,f4,ab4] gb4", // Db
  D: "[db3,ab4] ~ [db4,f4,ab4] ~ [ab2,ab4] ~ [db4,f4,ab4] ~ [db3,ab4] ~ [db4,f4,ab4]!2 [ab2,db4,f4,ab4] g4 [db4,f4,ab4] c5", // Db5 Db Ab Db Db5 Db
  E: "[db3,db5] ~ [db4,f4,ab4] ~ [ab2,c5] ~ [db4,f4,ab4] ~ [db3,bb4] ~ [db4,f4,ab4]!2 [f3,db4,f4,g4,ab4] ~ [db4,f4,ab4] ab4", // Db Ab Db Gb Db
  F: "eb3 ~ [c4,eb4,gb4] ab2 g2 ~ [c4,eb4,gb4] ab2 c3 ~ [c4,eb4,gb4]!2 [c3,c4,eb4,gb4] ~ [c4,eb4,gb4] eb3, c5@5 ~@3", // Cdim
  G: "[ab3,eb4] ~ [eb4,gb4] ~ [ab2,eb4] ~ [c4,eb4,gb4] ~ [ab3,eb4] ~ [c4,eb4,gb4]!2 [ab2,c4,eb4,gb4] d4 [c4,eb4,gb4] f4", // Ab5 Ebm Ab5 Cdim Ab5 Cdim Ab7 Cdim
  H: "[ab3,gb4] ~ [c4,eb4,gb4] ~ [ab2,gb4] ~ [c4,eb4,gb4] ~ [ab3,gb4] ~ [c4,eb4,gb4]!2 [ab2,c4,eb4,gb4] f4 [c4,eb4,gb4] ab4", // Ab7 Cdim Ab7 Cdim Ab7 Cdim Ab7 Cdim
  I: "[ab3,c5] ~ [c4,eb4,gb4] ~ [eb3,bb4] ~ [c4,eb4,gb4] ~ [c3,ab4] ~ [c4,eb4,gb4]!2 [ab2,c4,d4,eb4,gb4] ~ [c4,eb4,gb4] eb4", // Ab Cdim Eb5 Cdim Fm Cdim Ab7 Cdim
  J: "f4@2 [db4,f4,ab4] ab3 g3 ~ [db4,f4,ab4] ab3 bb3 ~ [db4,f4,ab4] [ab3,db4,f4,ab4] [f3,db4,f4,ab4] ~ [db4,f4,ab4] eb3, db3 ~@15", // Db
  K: "[db3,db5] ~ [db4,f4,ab4] ~ [ab2,c5] ~ [db4,f4,ab4] ~ [db3,bb4] ~ [db4,f4,ab4]!2 [f3,db4,f4,ab4] ~ [db4,f4,ab4] db4", // Db Ab Db Gb Db
  L: "eb4@2 [c4,eb4,gb4] ~ d3 ~ [c4,gb4] eb3 f3 ~ [c4,eb4,gb4] [eb3,c4,eb4,gb4] [c3,c4,eb4,gb4] ~ [c4,eb4,gb4] [ab2,bb4,c5,db5], eb3 ~@15", // Cdim Dbmaj7
  M: "[bb3,d5,eb5] ~ [bb3,eb4,g4] ~ [eb3,eb4] d4 [bb3,eb4,g4] g4 [bb3,bb4] ~ [bb3,eb4,g4]!2 [eb3,bb3,eb4,g4] ~ [bb3,eb4,g4] [bb4,c5,db5]", // Ebmaj7 Eb Bb Eb Bbm
  N: "[ab3,d5,eb5] ~ [c4,eb4,ab4] ~ [c4,eb4] d4 [c4,eb4,ab4] ab4 [eb4,c5] ~ [c4,eb4,ab4]!3 ~ [c4,eb4,ab4] ~", // Ab Cm Ab Cm Ab
  O: "[eb3,eb4] d4 [bb3,eb4,g4] e4 [eb3,f4] e4 [bb3,eb4,f4,g4] gb4 [eb3,g4] ~ [bb3,eb4,g4]!2 [eb3,bb3,eb4,g4] ~ [bb3,eb4,g4] ~", // Eb Ebsus2 Eb
  P: "[ab3,ab4]@2 [c4,eb4,ab4]!3 db4 [c4,eb4,ab4] bb3 [ab3,c4,eb4,ab4] ~ gb3 ~ f3 ~ eb3 ~", // Ab
  Q: "f4@2 [db4,f4,ab4] ~ ab2 ~ [db4,f4,ab4] ~ db4@2 [db4,f4,ab4]!2 [ab2,db4,f4,ab4] ~ [db4,f4,ab4] ~, db3 ~@5 eb4@2 db3 ~ bb3@2 ab3@2 f3@2", // Db
  R: "db3 ~ [db4,f4,ab4] ~ ab2 ~ [db4,f4,ab4] ~ db3 ~ [db4,f4,ab4]!2 [ab2,db4,f4,ab4] ~ [db4,f4,ab4] ~, ~@3 ab2 ~ f3 ab3 ~", // Db
  S: "f4@2 [db4,f4,ab4] ~ ab2 ~ [db4,f4,ab4] ~ c4@2 [db4,f4,ab4]!2 [f3,db4,f4,ab4] ~ [db4,f4,ab4] ~, db3 ~@7 db3 ~@3 eb4@2 ~@2", // Db
  T: "gb4@2 [c4,eb4,gb4] ab2 g2 ~ [c4,eb4,gb4] ab2 c3 ~ [c4,eb4,gb4]!2 [c3,c4,eb4,gb4] ~ [c4,eb4,gb4] eb3, eb3 ~@15", // Cdim
  U: "gb4@2 [eb4,gb4] ~ ab2 ~ [c4,eb4,gb4] ~ c4@2 [c4,eb4,gb4]!2 [ab2,c4,eb4,gb4] ~ [c4,eb4,gb4] ~, ab3 ~@7 ab3 ~ ab3@2 gb3@2 eb3@2", // Ebm Cdim Ab7 Cdim
  V: "ab3 ~ [c4,eb4,gb4] ~ ab2 ~ [c4,eb4,gb4] ~ c3@2 [c4,eb4,gb4]!2 [ab2,c4,eb4,gb4] ~ [c4,eb4,gb4] ~, c3@4 ~@2 ab2@2 ab3 ~ eb3@2 ab3@2 ~@2", // Cdim Ab7 Cdim
  W: "eb4@2 [c4,eb4,gb4] ~ eb3 ~ [c4,eb4,gb4] ~ g3@2 [c4,eb4,gb4]!2 [ab2,c4,eb4,gb4] ~ [c4,eb4,gb4] ~, ab3 ~@5 ab3@2 c3 ~ ab3@2 bb3@2 ~@2", // Cdim Ab7 Cdim
  X: "db4@2 [db4,f4,ab4] ab3 g3 ~ [db4,f4,ab4] ab3 bb3 ~ [db4,f4,ab4] [ab3,db4,f4,ab4] [f3,db4,f4,ab4] ~ [db4,f4,ab4] eb3, db3 ~@15", // Db
  Y: "eb4@2 [c4,eb4,gb4] ~ d3 ~ [c4,gb4] eb3 f3 ~ [c4,eb4,gb4] [eb3,c4,eb4,gb4] [c3,c4,eb4,gb4] ~ [c4,eb4,gb4] ab2, eb3 ~@15", // Cdim
  Z: "bb3 ~ [bb3,eb4,g4] a3 bb3@2 [bb3,eb4,g4] ~ bb3 ~ [bb3,eb4,g4]!2 [eb3,bb3,eb4,g4] ~ [bb3,eb4,g4] ~, ~@4 eb3 ~ c4@2 db4@7 ~", // Eb
  AA: "ab3 ~ [c4,eb4,ab4] g3 ab3@2 [c4,eb4,ab4] ~ c4@2 [c4,eb4,ab4]!3 ~ [c4,eb4,ab4] ~, ~@4 c4 ~ bb3@2 eb4 ~@7", // Ab
  AB: "[ab3,ab4]@2 [c4,eb4,ab4]!3 db4 [c4,eb4,ab4] bb3 [c4,eb4,ab4] ~@3 [ab2,ab4]@2 ~ [ab2,ab4], ~@4 ab3 ~@3", // Ab
  AC: "[ab2,ab4]@2 [c4,eb4,gb4,ab4] ~ [gb3,gb4]@2 [c4,eb4,gb4,ab4] ~ [f3,f4]@2 [c4,eb4,gb4,ab4] ~ [eb3,eb4]@2 [c4,eb4,gb4,ab4] ~", // Ab Ab7 Gb Ab7 F Ab7 Eb Ab7
  AD: "[d3,d4]@2 [c4,eb4,gb4,ab4] [eb3,c4,eb4,gb4,ab4] [c4,eb4,gb4,ab4] ~ [c4,eb4,gb4,ab4] [eb3,eb4] [c4,eb4,gb4,ab4] ~ [c4,eb4,gb4,ab4] ~ [c4,eb4,gb4,ab4] ~ [c4,eb4,gb4,ab4] [ab2,ab4], ~@2 [f3,f4] ~ [ab2,ab3] ~ ab2 ~", // D Ab7 Eb Ab7 Ab F Ab
  AE: "[ab2,ab4]@2 [db4,f4,ab4] ~ [f3,f4]@2 [db4,f4,ab4] ~ [eb3,eb4]@2 [db4,f4,ab4] ~ [db3,db4]@2 [db4,f4,ab4] ~", // Ab Db F Db Eb Db
  AF: "[c3,c4]@2 [db4,f4,ab4] [db3,db4,f4,ab4] [db4,f4,ab4] ~ [db4,f4,ab4] [db3,db4] [db4,f4,ab4] ~ [db4,f4,ab4] ~ [ab2,ab3,db4,f4,ab4] ~ [db4,f4,ab4] [ab2,ab3], ~@2 [eb3,eb4] ~ [ab2,ab3] ~@3", // C Db Ab Eb Ab
  AG: "[eb3,eb4] ~ [c4,eb4,gb4,ab4]!3 ~ [c4,eb4,gb4,ab4] ~@5 [ab2,ab3] ~@2 [ab2,ab3], ~@4 [ab2,ab3]@5 ~@7", // Eb Ab7 Ab
  AH: "[f3,f4] ~ [db4,f4,ab4]!3 ~ [db4,f4,ab4] ~@5 [ab2,ab3] ~@2 [ab2,ab3], ~@4 [ab2,ab3]@5 ~@7", // F Db Ab
  AI: "[ab3,ab4] ~@2 [g3,g4] [gb3,gb4] ~@2 [f3,f4] [eb3,eb4] ~@2 [db3,db4] [c3,c4] ~ [c4,eb4,gb4,ab4] [bb2,bb3,c4,eb4,gb4,ab4]", // Ab G Gb F Eb Db C Ab7
  AJ: "[ab2,ab3,c4,eb4,gb4,ab4] ~ [ab2,ab3] [bb2,bb3] [c3,c4] ~ [bb2,bb3] ~ [ab2,ab3] ~ [gb2,gb3] ~ [f2,f3] ~ [eb2,eb3] ~, ~@8 [c4,eb4,gb4]@5 ~@3", // Ab7 Ab Bb C Bb Ab Gb F …
  AK: "db3 ~ [ab3,db4,f4] ~ db3 ~ [ab3,db4,f4] ~ db3 ~ [ab3,db4,f4] ~ db3 ~ [ab3,db4,f4] ~", // Db
  AL: "ab2 ~ [ab3,c4,eb4,gb4]!2 [ab2,ab3,c4,eb4,gb4] ~ [ab3,c4,eb4,gb4] ~ ab3@2 ab3 bb3 c4 db4 eb4 f4, ~@2 [ab2,c4,eb4,gb4] ~", // Ab7
  AM: "gb4@2 [gb3,bb3,eb4] ~ gb2 ~ [gb3,bb3,eb4] ~ gb2 ~ [gb3,bb3,eb4] ~ bb2 ~ [gb3,bb3,eb4] ~, gb2 ~@15", // Ebm
  AN: "db3 ~ [f3,ab3,db4]!2 [db3,f3,ab3,db4] ~ [f3,ab3,db4] ~ [f3,ab3,db4]@2 ~@2 [ab3,c4,eb4,gb4]@4, ~@8 db3 ~@3 ab2@2 ~@2", // Db Ab7
  AO: "db3 ~ [ab3,db4,f4] ~ db3 ~ [ab3,db4,f4] ~ f3 ~ [ab3,db4,f4] ~ db3 ~ [ab3,db4,f4] ~", // Db
  AP: "gb3 ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4] ~ gb3@2 gb3 ab3 bb3 c4 db4 d4, ~@2 [bb3,eb4] ~", // Ebm Eb5
  AQ: "[gb3,bb3,eb4] ~ [gb3,bb3,eb4]!3 ~ [gb3,bb3,eb4] ~ [db3,f3,ab3,db4] ~@3 [f3,ab3,db4] ~@3", // Ebm Db
  AR: "[ab2,ab3,c4,eb4,gb4] ~@3 [ab2,ab3,c4,eb4,gb4] ~@3 [ab3,db4,f4]@3 ~ [ab2,ab4]@2 ~ [ab2,ab4], ~@8 db3 ~@7", // Ab7 Db Ab
  AS: "[ab2,ab3,c4,eb4,gb4] ~@3 [ab2,ab3,c4,eb4,gb4] ~@3 [ab3,db4,f4]@3 ~ db3@4, ~@8 db3 ~@7", // Ab7 Db
  AT: "gb3 ~ [db3,gb3,bb3] ~ db3 ~ [db3,gb3,bb3] ~ gb3 ~ [db3,gb3,bb3] ~ db4@2 [db3,gb3,bb3] db4, ~@12 db3 ~@3", // Gb
  AU: "db4@2 [db3,gb3,bb3] ~ eb4@2 [db3,gb3,bb3] ~ f4@2 [db3,gb3,bb3] ~ gb4@2 [db3,gb3,bb3] ~, gb3 ~@3 db3 ~@3 gb3 ~@3 db3 ~@3", // Gb
  AV: "gb3 ~ [db3,gb3,bb3] ~ db3 ~ [db3,gb3,bb3] ~ bb2 ~ [db3,gb3,bb3] ~ ab4@2 [db3,gb3,bb3] gb4, bb4@10 ~@2 ab2 ~@3", // Gb
  AW: "gb4@2 [db3,gb3,bb3] ~ a3@2 [db3,gb3,bb3] ~ gb3 ~ [db3,gb3,bb3] ~ gb3 ~ [db3,gb3,bb3] ~, gb3 ~@3 gb3 ~@3 eb4@4 db4@4", // Gb
  AX: "f3@2 [db3,f3,ab3,b3] ~ f3 ~ [db3,f3,ab3,b3] ~ ab3 ~ [db3,f3,ab3,b3] ~ db4 ~ [db3,f3,ab3,b3] db4, db3 ~@15", // Db7
  AY: "db4@2 [db3,f3,ab3,b3] ~ eb4@2 [db3,f3,ab3,b3] ~ f4@2 [db3,f3,ab3,b3] ~ gb4@2 [db3,f3,ab3,b3] ~, f3 ~@3 db3 ~@3 f3 ~@3 db3 ~@3", // Db7
  AZ: "db3 ~ [db3,f3,ab3,b3] ~ f3 ~ [db3,f3,ab3,b3] ~ ab3 ~ [db3,f3,ab3,b3] ~ gb4@2 [db3,f3,ab3,b3] gb4, ab4@10 ~@2 db4 ~@3", // Db7
  BA: "f4@2 [db3,f3,ab3,b3] ~ g3@2 [db3,f3,ab3,b3] ~ db3 ~ [db3,f3,ab3,b3] ~ db3 ~ [db3,f3,ab3,b3] ~, db3 ~@3 db3 ~@3 eb4@4 db4@4", // Db7
  BB: "bb3@2 [bb3,db4,gb4]!2 [db3,bb3,db4,gb4] ~ [bb3,db4,gb4] ~ [bb2,bb3,db4,gb4] ~ [bb3,db4,gb4] ~ [ab2,bb3,db4,gb4] ~ [bb3,db4,gb4] db4, gb3 ~@15", // Gb
  BC: "db4@2 [bb3,db4,gb4] ~ b3@2 [bb3,db4,gb4] ~ bb3@2 [bb3,db4,gb4] ~ ab3@2 [bb3,db4,gb4] ~, gb3 ~@3 gb3 ~@3 gb3 ~@3 bb3 ~@3", // Gb
  BD: "gb3@2 [bb3,db4,gb4] db3 [eb3,gb3] ~ [bb3,db4,gb4] f3 gb3 ~ [bb3,db4,gb4] ~ db3 ~ [bb3,db4,gb4] ~", // Gb Ebm Gb
  BE: "gb3 ~ [bb3,db4,gb4] ~ db4 ~ [bb3,db4,gb4] ~ bb3 ~ [bb3,db4,gb4] ~ gb3 ~ [bb3,db4,gb4] ~", // Gb
  BF: "[eb3,b3] ~ [ab3,b3,eb4] g3 [ab3,b3] ~ [ab3,b3,eb4] b3 eb4@2 [ab3,b3,eb4] ~ b3 ~ [ab3,b3,eb4] ~, ~@8 b3 ~@7", // Abm
  BG: "db3 ~ [f3,ab3,db4] ~ [db3,ab3] ~ [f3,ab3,db4] ~ db4@2 [f3,ab3,db4] ~ db3 ~ [f3,ab3,db4] ~, ~@6 eb4@2 db3 ~@7", // Db Db5 Db
  BH: "gb3 ~ [gb3,bb3,db4] ~ gb3 ~ [eb3,gb3,bb3,db4] ~ gb3 ~ [gb3,bb3,db4] ~ gb3 ~ [gb3,bb3,db4] ~, ~@8 db3@7 ~", // Gb Ebm7 Gb
  BI: "db3 ~ [c3,f3,ab3,db4] ~ db3 ~ [f3,ab3,db4] ~ bb3@2 [f3,ab3,db4] ~ ab3@2 [f3,ab3,db4] ~, ~@8 db3 ~@3 db3 ~@3", // Dbmaj7 Db
  BJ: "gb3 ~ [gb3,bb3,db4]!2 [db3,gb3,bb3,db4] ~ [bb2,gb3,bb3,db4] ~ [gb3,bb3,db4] ~@3 db4@2 ~ db4", // Gb
  BK: "gb3 ~ [gb3,bb3,db4]!2 [db3,gb3,bb3,db4] ~ [bb2,gb3,bb3,db4] ~ [gb3,bb3,db4] ~@7", // Gb
  BL: "db3 ~ [ab3,db4,f4] ~ db3 ~ [ab3,db4,f4] eb3 f3@2 [ab3,db4,f4] gb3 ab3@2 [ab3,db4,f4] bb3, ~@8 db3 ~@3 db3 ~@3", // Db
  BM: "db3 ~ [ab3,db4,f4] ~ f3 ~ [ab3,db4,f4] ~ ab3 ~ [ab3,db4,f4]!3 ~ [ab3,db4,f4] ~, b3 ~", // Db
  BN: "gb3 ~ [bb3,db4,gb4] ~ db3@2 [bb3,db4,gb4] eb3 f3@2 [bb3,db4,gb4] gb3 ab3@2 [bb3,db4,gb4] a3, ~@4 gb3 ~@3 gb3 ~@3 gb3 ~@3", // Gb
  BO: "bb3@2 [bb3,db4,gb4] ~ bb3 ~ [bb3,db4,gb4] ~ db4 ~ [bb3,db4,gb4]!2 [gb3,bb3,db4,gb4] ~ [bb3,db4,gb4] ~, gb3 ~@15", // Gb
  BP: "db3 ~ [ab3,db4,f4] eb3 f3@2 [ab3,db4,f4] gb3 ab3@2 [ab3,db4,f4] bb3 b3@2 [ab3,db4,f4] gb4, ~@4 db3 ~@3 db3 ~@3 db3 ~@3", // Db
  BQ: "f4@2 [ab3,db4,f4] ~ db3 ~ [ab3,db4,eb4,f4] ~ [db3,b3] ~ [ab3,db4,f4]!2 [db3,f3,ab3,db4,f4] ~ [eb3,ab3,db4,f4] ~, db3 ~@15", // Db Db7 Db
  BR: "db3@2 [bb3,db4,gb4] eb3 f3@2 [bb3,db4,gb4] gb3 ab3@2 [bb3,db4,gb4] f3 gb3 ~ [bb3,db4,eb4,gb4] ~, gb3 ~@3 gb3 ~@3 gb3 ~@7", // Gb Ebm7
  BS: "db4@2 [bb3,db4,gb4] ~ gb3 ~ [bb3,c4,db4,gb4] ~ gb3@2 [bb3,db4,gb4]!3 ~ [gb3,bb3,db4,gb4] ~, gb3 ~@7 eb4 ~@7", // Gb
  BT: "eb3@2 [b3,eb4,ab4] g3 ab3@2 [b3,eb4,ab4] bb3 b3 ~ [b3,eb4,ab4] g3 ab3@2 [b3,eb4,ab4] eb4, b3 ~@3 b3 ~@7 gb3 ~@3", // Abm
  BU: "db4@2 [bb3,db4,gb4] ~ db3 ~ [bb3,db4,gb4,bb4] ~ [db3,gb4]@2 [bb3,db4,gb4]!3 ~ [gb3,bb3,db4,gb4] ~, db3 ~@15", // Gb Gb5 Gb
  BV: "db4 ~ [ab3,db4,f4] ~ b3 ~ [ab3,db4,f4] ~ bb3 ~ [ab3,db4,f4] ~ ab3 ~ [ab3,db4,f4] ~", // Db
  BW: "gb3 ~ [gb3,bb3,db4,gb4]!2 [db3,gb3,bb3,db4,gb4] ~ [bb2,gb3,bb3,db4,gb4] ~ [gb2,gb3,bb3,db4,gb4]@3 ~@5", // Gb
})).s("gm_french_horn").gain(0.52)

// other · trumpet
const trumpet = note("<A B ~@38 C D ~@14 C D ~@7 E F ~@11 G ~@15 G ~@36>".pickRestart({
  A: "[ab4,db5] ~@7 [ab4,db5] ~@7", B: "[ab4,c5] ~ [ab4,c5]!3 ~ [ab4,c5] ~ [ab4,c5] ~@7",
  C: "ab4 ~@2 g4 gb4 ~@2 f4 eb4 ~@2 db4 c4 ~@2 bb3", D: "ab3 ~ ab3 bb3 c4 ~ bb3 ~ ab3 ~ gb3 ~ f3 ~ eb3 ~",
  E: "~@12 db4 eb4 e4 f4", F: "gb4 ~@15", G: "eb3 ~@2 g3 ab3 ~@2 b3 eb4@5 ~@3",
})).s("gm_trumpet").gain(0.54).pan(0.8)

// other · piccolo
const piccolo = note(`<
  A B ~@8 C D E F G H I J ~@8 C D E F G H K L M N O P Q R S T U V W X U V Y Z M N O P Q R S T U V W X U V Y AA AB ~ AC ~
  AD ~ AE ~ AF AG AH AI AJ AK AL AM AN ~ AC ~ AD ~ AE ~ AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AO AP AQ AR
  AW AX AY AZ AO AP AQ AR AS AT AU AV AO AP AQ AR AW AX AY AZ
>`.pickRestart({
  A: "db7 ~@3 ab6 g6 ab6 db7 f7 ~@3 db7 c7 db7 f7", B: "ab7 ~ ab7!3 ~ ab7 ~ ab7 ~@7",
  C: "f7 ~@3 f7 ~@3 f7 ~@3 f7 e7 f7 gb7", D: "ab7 ~@3 ab7 ~@3 ab7 ~@3 ab7 g7 ab7 c8",
  E: "db8 ~@3 c8 ~@3 bb7 ~@2 ab7 f7 ~@2 db7", F: "eb7 ~@14 [bb5,c6,db6]",
  G: "[d6,eb6] ~@3 eb5 d5 eb5 g5 bb5 ~@3 g5 ~@2 [bb5,c6,db6]", H: "[d6,eb6] ~@3 eb5 d5 eb5 ab5 c6 ~@3 ab5 ~@3",
  I: "eb5 d5 eb5 e5 f5 e5 f5 gb5 g5 ~@3 eb5 ~@3", J: "ab5@9 ~@7", K: "eb7 d7 eb7 e7 f7 e7 f7 gb7 g7 ~@3 eb7 ~@3",
  L: "ab7@9 ~@7", M: "~@2 [ab6,c7] ~@3 [ab6,c7] ~@3 [ab6,c7] ~@3 [ab6,c7] ~",
  N: "~@2 [ab6,c7]!3 ~ [ab6,c7] ~ [ab6,c7] ~ [ab6,c7] ~ [ab6,c7] ~ [ab6,c7] ~", // Ab
  O: "~@2 [ab6,db7] ~@3 [ab6,db7] ~@3 [ab6,db7] ~@3 [ab6,db7] ~", // Db5
  P: "~@2 [ab6,db7]!3 ~ [ab6,db7] ~ [ab6,db7] ~ [ab6,db7] ~ [ab6,db7] ~ [ab6,db7] ~", // Db5
  Q: "~@3 g6 ab6 c7 eb7 bb7 ab7 ~@7", R: "~@3 g6 ab6 db7 f7 bb7 ab7 ~@7",
  S: "[ab5,ab6] [g5,g6] [ab5,ab6] [bb5,bb6] [c6,c7] [b5,b6] [c6,c7] [db6,db7] [eb6,eb7] [d6,d7] [eb6,eb7] [f6,f7] [gb6,gb7] [f6,f7] [gb6,gb7] [g6,g7]", // Ab G Ab Bb C B C Db …
  T: "[ab6,ab7] ~@7 [c6,c7] [c6,db6,c7,db7]!6 ~", U: "[db5,f5]!3 ~ [db5,f5]!3 ~ [db5,f5]!3 ~ [db5,f5]!4",
  V: "[eb5,gb5] ~ [eb5,gb5]!3 ~ [eb5,gb5] ~ [eb5,gb5] ~@7", W: "[bb4,db5]!3 ~ [bb4,db5]!3 ~ [bb4,db5]!3 ~ [bb4,db5]!4",
  X: "[db5,f5] ~ [db5,f5]!3 ~ [db5,f5] ~ [db5,f5] ~ g6 ab6 a6 bb6 b6 c7", Y: "~@4 bb6 f6 gb6 g6 ab6 ~ db7 f7 ab7 ~@3",
  Z: "gb7 f7 gb7 ~ gb7 bb6 c7 ~ db7 ~@7", AA: "gb7 f7 gb7 ~ gb7 bb6 c7 ~ db7 ~@3 db7 eb7 e7 f7", AB: "gb7 ~@15",
  AC: "[db6,db7] ~ [db6,db7] ~ [db6,db7] ~ [db6,db7] ~ [gb6,gb7]@2 ~ [db6,db7] [db6,db7]@2 ~@2", // Db Gb Db
  AD: "[db6,db7] ~ [db6,db7] ~ [db6,db7] ~ [db6,db7] ~ [f6,f7]@2 ~ [db6,db7] [db6,db7]@2 ~@2", // Db F Db
  AE: "[db6,db7] ~ [db6,db7] ~ [db6,db7] ~ [db6,db7] ~ [ab6,ab7]@2 ~ [db6,db7] [db6,db7]@2 ~@2", // Db Ab Db
  AF: "[db6,db7] ~ [db6,db7]!3 ~ [db6,db7] ~ [gb6,gb7]@2 ~@2 [db6,db7]@2 ~ db7", AG: "db7 ~@3 eb7 ~@3 f7 ~@3 gb7 ~@3",
  AH: "bb7@10 ~@2 bb7 ~@2 bb7", AI: "bb7 ~ gb7 ~ f7 ~ gb7 ~ ab7@4 gb7@4", AJ: "eb7@9 ~@3 [eb6,eb7] ~@2 [d6,d7]",
  AK: "[db6,db7] ~@9 [f6,f7] ~ [ab6,ab7] ~ [eb7,eb8] ~", AL: "[db7,db8] ~@9 [bb6,bb7] ~ [gb6,gb7] ~ [eb6,eb7] ~",
  AM: "[db6,db7] ~ [c6,c7] ~ [db6,db7] ~ [f6,f7] ~ [bb6,bb7] ~@3 [ab6,ab7] ~@3", AN: "[gb6,gb7] ~@15",
  AO: "b6 ~@3 b6 ~@3 b6 ~@3 b6 ~@3", AP: "b6@2 ~ f6 ab6@3 ~", AQ: "bb6 ~@3 bb6 ~@3 bb6 ~@3 bb6 ~@3",
  AR: "bb6@4 ~@2 db6@2 gb6@5 ~@3", AS: "f6@3 ~ ab6@2 ~@2 b6@2 ~@2 gb7@3 ~", AT: "f7@2 ~ f7!2 ~@2 f7 f7@4 ~@4",
  AU: "db6 ~@3 gb6 ~@3 bb6 ~@3 eb7 ~@3", AV: "db7@2 ~ db7!2 ~@2 db7 db7@3 ~@5", AW: "eb6 ~@3 ab6 ~@3 b6 ~@3 eb7 ~@3",
  AX: "db7@2 ~ bb7!2 ~@2 gb7!2 ~ gb7 [gb7,ab7] f7 ~ eb7 ~", AY: "db7 ~@3 d7 ~@3 eb7 ~@3 f7@2 ~@2",
  AZ: "gb7 ~ gb7!3 ~ gb7 ~ gb7 ~@7",
})).s("gm_piccolo").gain(0.21).pan(0.7)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note(`<
  ~@2 A B C D E F G H I B J K L M N O A B C D E F G H I B J K L M N O P Q R S T U V D W X Y Z AA AB AC AD P Q R S T U V
  D W X Y Z AA AB AC AD ~@2 AE ~@5 AF AG AH AI AJ AK@2 AL AM ~ AE ~@5 AF AG AH AI AJ AK@2 AL AM AN AO AP AQ AR AS AT AU
  AN AO AP AQ AV AW AX AY AN AO AP AQ AR AS AT AU AN AO AP AQ AV AW AX AY
>`.pickRestart({
  A: "f7 ~@3 f7 ~@3 f7 ~@7", B: "ab7 ~@3 ab7 ~@3 ab7 ~@7", C: "db8 ~@3 c8 ~@3 bb7 ~@2 ab7 g7 ~@2 ab7", D: "c8 ~@15",
  E: "eb7 ~@3 eb7 ~@3 eb7 ~@3 eb7 ~ eb7 f7", F: "gb7 ~@3 gb7 ~@3 gb7 ~@7", G: "~@4 bb7 ~@3 ab7 ~@2 eb7 ~@3 eb7",
  H: "f7 ~@15", I: "f7 ~@3 f7 ~@3 f7 ~@3 f7 e7 f7 gb7", J: "~@4 c8 ~@3 bb7 ~@2 ab7 f7 ~@3", K: "eb7 ~@14 [c8,db8]",
  L: "[d8,eb8] ~@3 eb7 d7 eb7 g7 bb7 ~@3 g7 ~@2 [c8,db8]", M: "[d8,eb8] ~@3 eb7 d7 eb7 ab7 c8 ~@3 ab7 ~@3",
  N: "eb7 d7 eb7 e7 f7 e7 f7 gb7 g7 ~@3 eb7 ~@3", O: "ab7 ~@15", P: "~@2 c8 ~@3 c8 ~@3 c8 ~@3 c8 ~",
  Q: "~@2 c8!3 ~ c8 ~ c8 ~ c8 ~ c8 ~ c8 ~", R: "~@2 db8 ~@3 db8 ~@3 db8 ~@3 db8 ~",
  S: "~@2 db8!3 ~ db8 ~ db8 ~ db8 ~ db8 ~ db8 ~", T: "~@2 c8!3 ~ c8 ~ c8 ~@7", U: "~@2 db8!3 ~ db8 ~ db8 ~@7",
  V: "c8 ~@5 c8!3 ~@5 c8!2", W: "db8 c8 db8 ~ db8 c8 db8 ~ db8 c8 db8 ~ db8 c8 db8 eb8", X: "db8 ~ c8!3 ~ c8 ~ c8 ~@7",
  Y: "bb7 a7 bb7 ~ bb7 a7 bb7 ~ bb7 a7 bb7 ~ bb7 a7 bb7 c8", Z: "bb7 ~ ab7!3 ~ ab7 ~ ab7 ~@7",
  AA: "db8 c8 db8 ~ db8 c8 db8 ~ db8 c8 db8 ~ db8 c8 db8 d8", AB: "eb8 ~ bb7!3 ~ bb7 ~ bb7 ~@7",
  AC: "bb7 ~@3 bb7 ~@3 ab7 ~@3 ab7 ~@3", AD: "c8 ~@3 c8 ~@3 db8 ~@7", AE: "~@8 gb7 ~@7",
  AF: "~@8 gb7 ~@2 db7!2 ~@2 db7", AG: "db7 ~@3 eb7 ~@3 f7 ~@3 gb7 ~@3", AH: "bb7 ~@11 bb7 ~@2 bb7",
  AI: "bb7 ~ gb7 ~ f7 ~ gb7 ~ ab7 ~@3 gb7 ~@3", AJ: "eb7 ~@11 eb7 ~@2 d7", AK: "db7 ~ db7 ~ db7 ~ db7 ~ db7 ~@7",
  AL: "db7 ~ c7 ~ db7 ~ f7 ~ bb7 ~@3 ab7 ~@3", AM: "gb7 ~@15", AN: "b7 ~@3 b7 ~@3 b7 ~@3 b7 ~@3",
  AO: "b7 ~@5 f7 ~ ab7 ~@7", AP: "bb7 ~@3 bb7 ~@3 bb7 ~@3 bb7 ~@3", AQ: "bb7 ~@5 db7 ~ gb7 ~@7",
  AR: "f7 ~@3 ab7 ~@3 b7 ~@3 gb8 ~@3", AS: "f8 ~@2 f8!2 ~@2 f8!2 ~@7", AT: "db7 ~@3 gb7 ~@3 bb7 ~@3 eb8 ~@3",
  AU: "db8 ~@2 db8!2 ~@2 db8!2 ~@7", AV: "eb7 ~@3 ab7 ~@3 b7 ~@3 eb8 ~@3",
  AW: "db8 ~@2 bb7!2 ~@2 gb7!2 ~ gb7 ~ f7 ~ eb7 ~", AX: "db7 ~@3 d7 ~@3 eb7 ~@3 f7 ~@3",
  AY: "gb7 ~ gb7!3 ~ gb7 ~ gb7 ~@7",
})).s("gm_glockenspiel").gain(0.21).pan(0.2)

// other · glockenspiel · "GLOCKENSPL" · soft notes
const glockenspiel_soft = note(`<
  ~@6 A ~ B ~@3 C D@2 ~@7 A ~ B ~@3 C D@2 ~@37 E ~ F ~ F ~ G ~@9 E ~ F ~ F ~ G ~@40
>`.pickRestart({
  A: "~@13 d7 ~@2", B: "~@12 d7 ~@3", C: "~@15 db7", D: "~@15 bb7", E: "db7 ~ db7!3 ~ db7 ~@4 db7!2 ~@3",
  F: "db7 ~ db7!3 ~ db7 ~ f7 ~@2 db7!2 ~@3", G: "db7 ~ db7!3 ~ db7 ~@9",
})).s("gm_glockenspiel").gain(0.12).pan(0.2)

// chords · french horn · "FR.HORN"
const french_horn_2 = note(`<
// … 69 more lines