Strudelify
KeyE♭ majorTempo160 bpm
0:00/0:00
// Fort Francis — Naoko Mitome & Chika Sekiga
// 160 bpm, 3/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/4 at bar 1, 4/4 at bar 21, 3/4 at bar 27, 4/4 at bar 87, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5534959; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/3)

// 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 · glockenspiel
const glockenspiel = note(`<
  ~@26 A B C D E@2 F ~@17 G H I J K L M N G H I J K L O P ~@25 Q R S T U@2 V ~@17 W X Y Z AA AB AC AD W X Y Z AA AB AE
  AF ~@5
>`.pickRestart({
  A: "c7 c7@2 ~@2 b6 b6@2 bb6 bb6@2 a6 a6@2 ~@2", B: "ab6@3 g6@2 gb6@3 ~@3 g6@3 ~@2",
  C: "ab6@3 ~@2 g6@3 gb6@3 f6@2 e6@3", D: "eb6@3 ~@5 d6@3 eb6@3 ~@2", E: "~@3 d6@2 eb6@3 f6@3 eb6@3 ~@2",
  F: "c6@5 ~@11", G: "c7@3 ~@2 b6@3 g6@3 c7@3 ~@2", H: "g6@3 ab6@2 g6@3 f6@3 eb6@2 d6@3",
  I: "eb6@3 ~@2 c6@3 d6@3 eb6@2 f6@3", J: "g6@3 ~@2 g6@5 ~@6", K: "db7@3 ~@2 c7@3 ab6@3 db7@3 ~@2",
  L: "ab6@3 a6@2 bb6@3 b6@3 c7@2 ab6@3", M: "db7@3 d7@2 c7@3 b6@3 bb6@2 a6@3", N: "ab6@3 ~@2 g6@5 ~@6",
  O: "db7@3 d7@2 d7@3 db7@3 c7@2 b6@3", P: "bb6@3 ~@2 b6@5 ~@6", Q: "~@5 c7 c7@2 ~@3 b6 ~ bb6 bb6@2, ~@6 b6 ~",
  R: "a6 a6@2 ~@2 ab6@3 g6@3 gb6@3 ~@2", S: "g6@3 ~@2 ab6@3 ~@3 g6@2 gb6@3", T: "f6@3 e6@2 eb6@3 ~@5 d6@3",
  U: "eb6@3 ~@5 d6@3 eb6@2 f6@3", V: "eb6@3 ~@2 c6@5 ~@6", W: "~@5 c7@3 ~@3 b6@2 g6@3",
  X: "c7@3 ~@2 g6@3 ab6@3 g6@2 f6@3", Y: "eb6@3 d6@2 eb6@3 ~@3 c6@2 d6@3", Z: "eb6@3 f6@2 g6@3 ~@3 g6@5",
  AA: "~@5 db7@3 ~@3 c7@2 ab6@3", AB: "db7@3 ~@2 ab6@3 a6@3 bb6@2 b6@3", AC: "c7@3 ab6@2 db7@3 d7@3 c7@2 b6@3",
  AD: "bb6@3 a6@2 ab6@3 ~@3 g6@5", AE: "c7@3 ab6@2 db7@3 d7@3 d7@2 db7@3", AF: "c7@3 b6@2 bb6@3 ~@3 b6@5",
})).s("gm_glockenspiel").gain(0.3)

// bass · tuba
const bass = note(`<
  ~@4 A@7 B@3 C D@5 E F G H I J K@2 L M N O P Q R S T U V W X Y K Z K AA AB AC AD AE K Z K AA AB AC AF AG K Z K AA AB AC
  AH AI ~@4 AJ@2 L M N O P AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE@3 BF BG BH BI BJ BK BL AY BM
  AZ BN BO BP BQ BR BS BM AZ BN BO BP BT BU AZ BM AZ BN BO BP BV BW BX ~@4
>`.pickRestart({
  A: "[~@11 c2@10 g1@4 ~@2 c2@10 g1@4 ~@2 c2@8 c2@2 a1@3 bb1@3 b1@10 g2@5 ~ b1@10 b1@3 g2@3 bb1@8 bb1@2 b1@3 bb1@3 a1@5]/7",
  B: "[~@3 f2@8 a1@16 a1@10 f1@5 ~ f2@5]/3", C: "c2@5 ~@11",
  D: "[~@5 f2@3 c2@3 f1@8 f2@5 a1@3 ab1@10 eb2@5 ~ ab1@2 d2@5 ~ g2@5 g1@3 gb1@8 b1@2 db2@3 b1@3 bb1@5]/5",
  E: "a1@11 c2@4 ~", F: "g2@4 ~ gb2@4 ~@2 ab2@4 ~", G: "g2@4 ~ bb2@4 ~@2 a2@4 ~", H: "db3@4 ~ c3@4 ~@2 g3@4 ~",
  I: "gb3@4 ~ d3@4 ~@2 f3@4 ~", J: "db3@4 ~ g2@4 ~@2 g2@4 ~", K: "c2@11 ~@5", L: "c2@8 c2@3 a1@2 bb1@3",
  M: "b1@11 g2@5", N: "b1@11 b1@2 g2@3", O: "bb1@8 bb1@3 b1@2 bb1@3", P: "a1 f2", Q: "a2 f2", R: "ab1@11 eb2@2 ab1@3",
  S: "g1@8 g1@3 d2@3 ~@2", T: "f1@11 c2@2 f1@3", U: "e1@11 ~@5", V: "gb1@8 gb1@3 gb2@3 ~@2", W: "f1@11 ~@5",
  X: "gb1@5 gb2@3 gb1@3 ~@5", Y: "f2@4 ~ gb2@4 ~@2 g2@4 ~", Z: "g1@11 ~@5", AA: "g1@8 bb1@3 b1@2 c2@3", AB: "db2 ~",
  AC: "ab1@11 ab2@5", AD: "db2@11 ~@5", AE: "ab1@5 bb1@5 ~ b1@5", AF: "db2@5 ~@3 db2@3 ab2@2 g2@3",
  AG: "~@3 gb2@2 f2@3 ~@8", AH: "db2@4 ~ c2@3 b1@3 bb1@2 a1@3", AI: "ab1@8 ab1@3 g2@5", AJ: "c2@11 g1@4 ~", AK: "a1",
  AL: "a1@11 f1@5", AM: "f2@5 c2@5 ~@6", AN: "~@11 f2@2 c2@3", AO: "f1@8 f2@5 a1@3", AP: "ab1@11 eb2@5",
  AQ: "ab1@3 d2@5 g2@5 g1@3", AR: "gb1@8 b1@3 db2@2 b1@3", AS: "bb1@5 a1@11", AT: "c2@4 ~ g2@4 ~@2 gb2@4 ~",
  AU: "ab2@4 ~ g2@4 ~@2 bb2@4 ~", AV: "a2@4 ~ db3@4 ~@2 c3@4 ~", AW: "g3@4 ~ gb3@4 ~@2 d3@4 ~",
  AX: "f3@4 ~ db3@4 ~@2 g2@4 ~", AY: "g2@4 ~ c2@11", AZ: "~@5 c2@11", BA: "~@5 c2@8 c2@3", BB: "a1@3 bb1@2 b1@11",
  BC: "g2@5 b1@11", BD: "b1@3 g2@2 bb1@8 bb1@3", BE: "[b1@3 bb1@2 a1@8 f2@8 a2@8 f2@8 ab1@11]/3",
  BF: "eb2@3 ab1@2 g1@8 g1@3", BG: "d2@3 ~@2 f1@11", BH: "c2@3 f1@2 e1@11", BI: "~@5 gb1@8 gb1@3",
  BJ: "gb2@3 ~@2 f1@11", BK: "~@5 gb1@5 ~ gb2@2 gb1@3", BL: "~@5 f2@4 ~@2 gb2@4 ~", BM: "~@5 g1@11",
  BN: "~@5 g1@8 bb1@3", BO: "b1@3 c2@2 db2@8 ~@3", BP: "~@5 ab1@11", BQ: "ab2@5 db2@11", BR: "~@5 ab1@5 ~ bb1@5",
  BS: "b1@5 c2@11", BT: "ab2@5 db2@5 ~@3 db2@3", BU: "ab2@3 g2@3 ~@2 gb2@3 f2@3 ~@2", BV: "ab2@5 db2@4 ~@2 c2@2 b1@3",
  BW: "bb1@3 a1@2 ab1@8 ab1@3", BX: "g2@5 ~@11",
})).s("gm_tuba").gain(0.4)

// chords · flute · "Bass Flute"
const flute = note(`<
  ~@23 A B C ~@14 D E ~@8 F G F G H I H I F G F G H I H I ~@22 J K L ~@14 M N O ~@7 P Q R Q S T U T V Q R Q S T U T W
  ~@4
>`.pickRestart({
  A: "~@5 c5 ~ b4 bb4 a4 ~ ab4 g4 gb4 ~ f4", B: "e4 eb4 ~ d4 db4 c4 ~ b3 bb3 a3 ~ ab3 g3 gb3 ~ f3",
  C: "e3 eb3 ~ d3 db3 c3 ~@10", D: "[a4,eb5]@3 ~@2 [g4,db5]@3 [f4,b4]@3 ~@2 [eb4,a4]@3",
  E: "~@3 [eb4,a4]@2 [e4,bb4]@3 [f4,b4]@3 [gb4,c5]@3 ~@2", F: "~@5 [eb3,g3]@3 ~@3 [eb3,g3]@3 ~@2",
  G: "~@5 [d3,g3]@3 ~@3 [d3,g3]@3 ~@2", H: "~@5 [f3,ab3]@3 ~@3 [f3,ab3]@3 ~@2", I: "~@5 [e3,ab3]@3 ~@3 [e3,ab3]@3 ~@2",
  J: "~@11 c5 b4 bb4 ~ a4", K: "ab4 g4 ~ gb4 f4 e4 ~ eb4 d4 db4 ~ c4 b3 bb3 ~ a3",
  L: "ab3 g3 ~ gb3 f3 e3 ~ eb3 d3 db3 ~ c3 ~@4", M: "~@5 [a4,eb5]@3 ~@3 [g4,db5]@2 [f4,b4]@3",
  N: "~@3 [eb4,a4]@3 ~@2 [eb4,a4]@3 [e4,bb4]@2 [f4,b4]@3", O: "[gb4,c5]@3 ~@13", P: "~@11 [eb3,g3]@3 ~@2",
  Q: "[eb3,g3]@3 ~@8 [d3,g3]@3 ~@2", R: "[d3,g3]@3 ~@8 [eb3,g3]@3 ~@2", S: "[d3,g3]@3 ~@8 [f3,ab3]@3 ~@2",
  T: "[f3,ab3]@3 ~@8 [e3,ab3]@3 ~@2", U: "[e3,ab3]@3 ~@8 [f3,ab3]@3 ~@2", V: "[e3,ab3]@3 ~@8 [eb3,g3]@3 ~@2",
  W: "[e3,ab3]@3 ~@13", // E
})).s("gm_flute").gain(0.4)

// chords · percussive organ · "Hammond Organ"
const percussive_organ = note(`<
  A B@3 C@8 D@8 E F G H I J K@3 L@2 M N@2 O P Q R S T U V W X W Y Z AA AB AC W AD W AE Z AF AG AH W AD W AE Z AF AB AI
  AJ@4 W@3 AK@2 AL AM@2 AN@4 AO AP AQ AR AS AT AU AV AW AX AY@2 AZ@2 BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ
  BR BS BT BU BN BV BP BW BX BY BZ BU BN BV BP BW BR CA CB CC@3 CD
>`.pickRestart({
  A: "~@11 c4@5", B: "[eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5",
  C: "[[eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [eb4,g4]@3 ~@2 [eb4,g4]@3 ~@3 c4@5 [d4,f4]@3 ~@2 [d4,f4]@3 ~@3 [a2,c4]@5, ~@11 c3@11 ~@5 c3@11 ~@5 c3@11 ~@5 b2@11 ~@5 b2@11 ~@5 bb2@11 ~@5 a2@11 ~@10]/8", // Eb Dm Am
  D: "[[d4,f4]@3 ~@2 [d4,f4]@3 ~@3 c4@5 [d4,f4]@3 ~@2 [d4,f4]@3 ~@3 c4@5 [d4,f4]@3 ~@2 [d4,f4]@3 ~@3 c4@5 [d4,f4]@3 ~@2 [d4,f4]@3 ~@3 c4@5 [d4,f4]@3 ~@2 [d4,f4]@3 ~@3 c4@5 [db4,eb4]@3 ~@2 [db4,eb4]@3 ~@3 c4@5 [eb4,e4]@3 ~@2 [eb4,e4]@3 ~@3 c4@5 [d4,e4]@3 ~@2 [d4,e4]@3 ~@3 [f2,c4]@5, ~@11 a2@16 a2@16 a2@16 a2@16 ab2@16 g2@16 gb2@16 f4@3 ~@2]/8", // Dm Dbsus2 Emaj7 Dsus2 F5
  E: "[c4,f4]@3 ~@10 eb3@3, ~@11 [c2,c3]@4 ~", F: "[g2,g3]@3 eb3@2 [gb2,g3]@3 eb3@3 ~@2 eb3@3, ~@11 [ab2,ab3]@4 ~",
  G: "[g2,c3]@3 eb3@2 [bb2,g3]@3 d3@3 ~@2 d3@3, ~@11 [a2,b2]@4 ~", // C5 Eb Asus2
  H: "[b2,db3]@3 g2@2 c3@3 eb3@3 ~@2 eb3@3, ~@11 g3@4 ~", // Bsus2
  I: "[gb3,g3]@3 eb3@2 [d3,ab3]@3 eb3@3 ~@2 eb3@3, ~@11 [c3,f3]@4 ~", // Gmaj7 Ddim F5
  J: "[db3,g3]@3 d3@2 [g2,b2]@3 d3@3 [g2,b2]@2 g2@3", K: "~@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2, c3@11 ~@5",
  L: "~@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2, b2@11 ~@5", M: "~@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2, bb2@11 ~@5",
  N: "~@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2, a2@11 ~@5", O: "[c4,eb4]@5 ~@3 [b3,d4]@3 eb3@2 ab2@3, ab2@11 [c4,eb4]@5",
  P: "~@3 [ab3,c4]@2 [bb3,d4]@3 [g2,c4,eb4]@3 [d3,d4,f4]@2 [eb4,g4]@3, g2 ~", // Ab Bb Cm Dm Eb
  Q: "[f4,ab4]@5 ~@3 [e4,g4]@3 c3@2 f2@3, f2@11 [f4,ab4]@5", // Fm Em Fm
  R: "~@3 [e4,g4]@2 [f4,ab4]@3 [g4,bb4]@3 [ab4,c5]@2 [bb4,d5]@3, e2@11 ~@5", // Em Fm Gm Ab Bb
  S: "[b4,eb5]@3 ~@2 [a4,db5]@3 [gb2,g4,b4]@3 [f4,a4]@5, gb2@8 ~@3 gb3@3 ~@2", // B A Gmaj7 F
  T: "~@3 [f4,a4]@2 [eb4,g4]@3 [db4,f4]@3 [b3,eb4]@3 ~@2, f2@11 ~@5", // F Eb Db B
  U: "[a5,eb6]@3 ~@2 [g5,db6]@3 [f5,b5]@3 ~@2 [eb5,a5]@3, gb2@11 ~@5", // Adim Gdim Fdim Ebdim
  V: "~@3 [eb5,a5]@2 [e5,bb5]@3 [f5,b5]@3 [gb5,c6]@3 ~@2, f2@11 ~@5", // Ebdim Edim Fdim Gbdim
  W: "c4@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2, c3@11 ~@5", X: "c4@5 [d4,g4]@3 ~@3 [d4,g4]@3 ~@2, g2@11 ~@5",
  Y: "c4@5 [d4,g4]@3 bb2@3 [b2,d4,g4]@2 c3@3, g2 ~", Z: "db4@5 [f4,ab4]@3 ~@3 [f4,ab4]@3 ~@2, db3 ~",
  AA: "db4@5 [e4,ab4]@3 ~@3 [e4,ab4]@3 ~@2, ab2@11 ab3@5", AB: "db4@5 [f4,ab4]@3 ~@3 [f4,ab4]@3 ~@2, db3@11 ~@5",
  AC: "[ab2,db4]@5 [e4,ab4]@3 ~@3 [e4,ab4]@3 ~@2, ~@5 bb2@5 ~ b2@5", AD: "g3@5 [d4,g4]@3 ~@3 [d4,g4]@3 ~@2, g2@11 ~@5",
  AE: "g3@5 [d4,g4]@3 bb2@3 [b2,d4,g4]@2 c3@3, g2 ~", AF: "ab3@5 [e4,ab4]@3 ~@3 [e4,ab4]@3 ~@2, ab2@11 ab3@5",
  AG: "[db3,db4]@5 [f4,ab4]@3 db3@3 [ab3,f4,ab4]@2 g3@3", AH: "~@3 gb3@2 [f3,e4,ab4]@3 ~@3 [e4,ab4]@3 ~@2, ab3@5 ~@11",
  AI: "[ab2,ab3]@5 [e4,ab4]@3 ~@3 [e4,ab4]@3 ~@2, ~@5 bb2@5 ~ b2@5", AJ: "c4@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2",
  AK: "c4@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2, b2@11 ~@5", AL: "c4@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2, bb2@11 ~@5",
  AM: "c4@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2, a2@11 ~@5", AN: "c4@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2, a2",
  AO: "c4@5 [db4,eb4]@3 ~@3 [db4,eb4]@3 ~@2, ab2", AP: "c4@5 [eb4,e4]@3 ~@3 [eb4,e4]@3 ~@2, g2",
  AQ: "c4@5 [d4,e4]@3 ~@3 [d4,e4]@3 ~@2, gb2", AR: "c4@5 [c4,f4]@3 ~@8, f2, f4@3 ~@13",
  AS: "[c2,c3]@3 eb3@2 [g2,g3]@3 eb3@3 ~@2 eb3@3, ~@11 [gb2,g3]@4 ~", // C G Gmaj7
  AT: "[ab2,ab3]@3 eb3@2 [g2,c3]@3 eb3@3 ~@2 d3@3, ~@11 [bb2,g3]@4 ~", // Ab C5 Eb
  AU: "[a2,b2]@3 d3@2 [b2,db3]@3 g2@3 ~@2 eb3@3, ~@11 c3@4 ~", // Asus2 Bsus2
  AV: "g3@3 eb3@2 [gb3,g3]@3 eb3@3 ~@2 eb3@3, ~@11 [d3,ab3]@4 ~", // Gmaj7 Ddim
  AW: "[c3,f3]@3 eb3@2 [db3,g3]@3 d3@3 ~@2 d3@3, ~@11 [g2,b2]@4 ~", AX: "[g2,b2]@3 g2@2 ~@6 [eb4,g4]@3 ~@2, ~@5 c3@11",
  AY: "[eb4,g4]@3 ~@8 [eb4,g4]@3 ~@2, ~@5 c3@11", AZ: "[eb4,g4]@3 ~@8 [eb4,g4]@3 ~@2, ~@5 b2@11",
  BA: "[eb4,g4]@3 ~@8 [eb4,g4]@3 ~@2, ~@5 bb2@11", BB: "[eb4,g4]@3 ~@8 [d4,f4]@3 ~@2, ~@5 a2@11",
  BC: "[d4,f4]@3 ~@8 [d4,f4]@3 ~@2, ~@5 a2@11", BD: "[d4,f4]@3 ~@2 [c4,eb4]@5 ~@3 [b3,d4]@3, ~@5 ab2@11",
  BE: "eb3@3 ab2@2 ~@3 [ab3,c4]@3 [bb3,d4]@2 [g2,c4,eb4]@3, [c4,eb4]@5 g2@8 ~@3", // Ab Bb Cm
  BF: "[d3,d4,f4]@3 [eb4,g4]@2 [f4,ab4]@5 ~@3 [e4,g4]@3, ~@5 f2@11", // Dm Eb Fm Em
  BG: "c3@3 f2@2 ~@3 [e4,g4]@3 [f4,ab4]@2 [g4,bb4]@3, [f4,ab4]@5 e2@11", // Em Fm Gm Fm
  BH: "[ab4,c5]@3 [bb4,d5]@2 [b4,eb5]@3 ~@3 [a4,db5]@2 [gb2,g4,b4]@3, ~@5 gb2@8 ~@3", // Ab Bb B A Gmaj7
  BI: "[f4,a4]@5 ~@3 [f4,a4]@3 [eb4,g4]@2 [db4,f4]@3, gb3@3 ~@2 f2@11", // F Eb Db
  BJ: "[b3,eb4]@3 ~@2 [a5,eb6]@3 ~@3 [g5,db6]@2 [f5,b5]@3, ~@5 gb2@11", // B Adim Gdim Fdim
  BK: "~@3 [eb5,a5]@2 ~@3 [eb5,a5]@3 [e5,bb5]@2 [f5,b5]@3, ~@5 f2@11", // Ebdim Edim Fdim
  BL: "[gb5,c6]@3 ~@2 c4@5 ~ [eb4,g4]@3 ~@2, ~@5 c3@11", BM: "[eb4,g4]@3 ~@2 c4@5 ~ [d4,g4]@3 ~@2, ~@5 g2@11",
  BN: "[d4,g4]@3 ~@2 c4@5 ~ [eb4,g4]@3 ~@2, ~@5 c3@11", BO: "[eb4,g4]@3 ~@2 c4@5 ~ [d4,g4]@2 bb2@3, ~@5 g2@8 ~@3",
  BP: "[b2,d4,g4]@3 c3@2 db4@5 ~ [f4,ab4]@3 ~@2, ~@5 db3@8 ~@3", // G Fm
  BQ: "[f4,ab4]@3 ~@2 db4@5 ~ [e4,ab4]@3 ~@2, ~@5 ab2@11", BR: "[e4,ab4]@3 ~@2 db4@5 ~ [f4,ab4]@3 ~@2, ab3@5 db3@11",
  BS: "[f4,ab4]@3 ~@2 [ab2,db4]@5 ~ [e4,ab4]@3 ~@2, ~@11 bb2@5", BT: "[e4,ab4]@3 ~@2 c4@5 ~ [eb4,g4]@3 ~@2, b2@5 c3@11",
  BU: "[eb4,g4]@3 ~@2 g3@5 ~ [d4,g4]@3 ~@2, ~@5 g2@11", BV: "[eb4,g4]@3 ~@2 g3@5 ~ [d4,g4]@2 bb2@3, ~@5 g2@8 ~@3",
  BW: "[f4,ab4]@3 ~@2 ab3@5 ~ [e4,ab4]@3 ~@2, ~@5 ab2@11", // Fm E
  BX: "[e4,ab4]@3 ~@2 [db3,db4]@5 ~ [f4,ab4]@2 db3@3, ab3@5 ~@11", // E Db Fm
  BY: "[ab3,f4,ab4]@3 g3@2 ~@3 gb3@3 [f3,e4,ab4]@3 ~@2, ~@5 ab3@5 ~@6", // Db Fm
  BZ: "[e4,ab4]@3 ~@2 c4@5 ~ [eb4,g4]@3 ~@2, ~@5 c3@11", CA: "[f4,ab4]@3 ~@2 [ab2,ab3]@5 ~ [e4,ab4]@3 ~@2, ~@11 bb2@5",
  CB: "[e4,ab4]@3 ~@2 c4@5 ~ [eb4,g4]@3 ~@2, b2@5 ~@11", CC: "[eb4,g4]@3 ~@2 c4@5 ~ [eb4,g4]@3 ~@2",
  CD: "[eb4,g4]@3 ~@13", // Eb
})).s("gm_percussive_organ").gain(0.2)

// other · glockenspiel
const glockenspiel_2 = note(`<
  A B C B C B C B C B C B C B C B C B C B D ~@5 C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E
  C E C E C E C E C E C E C E C E C E C E C E C E ~@5 F G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H
  G H G H G H G H G H G I
>`.pickRestart({
  A: "~@11 c7@2 eb7@3", B: "g7@3 b7@2 c7@3 eb7@3 [c7,g7]@2 b7@3", C: "c7@3 eb7@2 g7@3 b7@3 c7@2 eb7@3",
  D: "c7@3 eb7@2 g7@3 b7@3 ~@5", E: "[c7,g7]@3 b7@2 c7@3 eb7@3 g7@2 b7@3", F: "~@5 c7@3 eb7@3 g7@2 b7@3",
  G: "c7@3 eb7@2 [c7,g7]@3 b7@3 c7@2 eb7@3", H: "g7@3 b7@2 c7@3 eb7@3 g7@2 b7@3", I: "g7@3 b7@3 ~@10",
})).s("gm_glockenspiel").gain(0.2)

// other · xylophone
const xylophone = note(`<
  A B C B C B C B C B C B C B C B C B C B D ~@5 C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E C E
  C E C E C E C E C E C E C E C E C E C E C E C E ~@5 F G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H
  G H G H G H G H G H G I
>`.pickRestart({
  A: "~@11 c6@2 eb6@3", B: "g6@3 b6@2 c6@3 eb6@3 [c6,g6]@2 b6@3", C: "c6@3 eb6@2 g6@3 b6@3 c6@2 eb6@3",
  D: "c6@3 eb6@2 g6@3 b6@3 ~@5", E: "[c6,g6]@3 b6@2 c6@3 eb6@3 g6@2 b6@3", F: "~@5 c6@3 eb6@3 g6@2 b6@3",
  G: "c6@3 eb6@2 [c6,g6]@3 b6@3 c6@2 eb6@3", H: "g6@3 b6@2 c6@3 eb6@3 g6@2 b6@3", I: "g6@3 b6@3 ~@10",
})).s("gm_xylophone").gain(0.2)

// other · vibraphone
const vibraphone = note(`<
  ~@20 A B C D E F ~@8 G@4 H I J K L M L M N O N O ~@36 P Q R B C S ~@7 T U@3 V W X Y Z@8 ~@21
>`.pickRestart({
  A: "~@11 c3@2 eb3@3", B: "g3@3 eb3@2 g3@3 eb3@3 ab3@2 eb3@3", C: "c3@3 eb3@2 g3@3 eb3@3 b2@2 d3@3",
  D: "b2@3 g2@2 c3@3 eb3@3 g3@2 eb3@3", E: "g3@3 eb3@2 ab3@3 eb3@3 c3@2 eb3@3", F: "g3@3 eb3@2 b2@3 d3@3 b2@2 g2@3",
  G: "~@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2", H: "~@5 [db4,eb4]@3 ~@3 [db4,eb4]@3 ~@2",
  I: "~@5 [eb4,e4]@3 ~@3 [eb4,e4]@3 ~@2", J: "~@5 [d4,e4]@3 ~@3 [d4,e4]@3 ~@2", K: "[c4,f4]@3 ~@2 [c4,f4]@3 ~@8",
  L: "c4", M: "g3", N: "db4", O: "ab3", P: "c3@3 eb3@2 g3@3 eb3@3 g3@2 eb3@3", Q: "ab3@3 eb3@2 c3@3 eb3@3 g3@2 eb3@3",
  R: "b2@3 d3@2 b2@3 g2@3 c3@2 eb3@3", S: "b2@3 g2@3 ~@10", T: "~@11 [d4,f4]@3 ~@2", U: "[d4,f4]@3 ~@8 [d4,f4]@3 ~@2",
  V: "[d4,f4]@3 ~@8 [db4,eb4]@3 ~@2", W: "[db4,eb4]@3 ~@8 [eb4,e4]@3 ~@2", X: "[eb4,e4]@3 ~@8 [d4,e4]@3 ~@2",
  Y: "[d4,e4]@3 ~@2 [c4,f4]@3 ~@3 [c4,f4]@3 ~@2", Z: "[~@5 c4@16 g3@16 c4@16 g3@16 db4@16 ab3@16 db4@16 ab3@11]/8",
})).s("gm_vibraphone").gain(0.2)

// other · tubular bells · "Chimes"
const tubular_bells = note(`<
  ~@20 A B C D E F G@6 H@2 I@8 ~@16 J K L M N O P Q ~@20 R S T B C U V@5 W X Y Z@7 ~@16 AA AB AC AD AE AF AG AH ~@5
>`.pickRestart({
  A: "~@11 c4@2 eb4@3", B: "g4@3 eb4@2 g4@3 eb4@3 ab4@2 eb4@3", C: "c4@3 eb4@2 g4@3 eb4@3 b3@2 d4@3",
  D: "b3@3 g3@2 c4@3 eb4@3 g4@2 eb4@3", E: "g4@3 eb4@2 ab4@3 eb4@3 c4@2 eb4@3", F: "g4@3 eb4@2 b3@3 d4@3 b3@2 g3@3",
  G: "~@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2", H: "~@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2", I: "c4@5 ~@11",
  J: "c5@3 ~@2 b4@3 g4@3 c5@3 ~@2", K: "g4@3 ab4@2 g4@3 f4@3 eb4@2 d4@3", L: "eb4@3 ~@2 c4@3 d4@3 eb4@2 f4@3",
  M: "g4@3 ~@2 g4@5 ~@6", N: "db5@3 ~@2 c5@3 ab4@3 db5@3 ~@2", O: "ab4@3 a4@2 bb4@3 b4@3 c5@2 ab4@3",
  P: "db5@3 d5@2 d5@3 db5@3 c5@2 b4@3", Q: "bb4@3 ~@2 b4@5 ~@6", R: "c4@3 eb4@2 g4@3 eb4@3 g4@2 eb4@3",
  S: "ab4@3 eb4@2 c4@3 eb4@3 g4@2 eb4@3", T: "b3@3 d4@2 b3@3 g3@3 c4@2 eb4@3", U: "b3@3 g3@3 ~@5 [eb4,g4]@3 ~@2",
  V: "[eb4,g4]@3 ~@8 [eb4,g4]@3 ~@2", W: "[eb4,g4]@3 ~@8 [d4,f4]@3 ~@2", X: "[d4,f4]@3 ~@8 [d4,f4]@3 ~@2",
  Y: "[d4,f4]@3 ~@2 c4@5 ~@6", Z: "~@5 c4@5 ~@6", AA: "~@5 c5@3 ~@3 b4@2 g4@3", AB: "c5@3 ~@2 g4@3 ab4@3 g4@2 f4@3",
  AC: "eb4@3 d4@2 eb4@3 ~@3 c4@2 d4@3", AD: "eb4@3 f4@2 g4@3 ~@3 g4@5", AE: "~@5 db5@3 ~@3 c5@2 ab4@3",
  AF: "db5@3 ~@2 ab4@3 a4@3 bb4@2 b4@3", AG: "c5@3 ab4@2 db5@3 d5@3 d5@2 db5@3", AH: "c5@3 b4@2 bb4@3 ~@3 b4@5",
})).s("gm_tubular_bells").gain(0.15)

// other · tubular bells · "Chimes" · soft notes
const tubular_bells_soft = note("<~@42 A B A B C D C D ~@57 E@8 ~@21>".pickRestart({
  A: "c4", B: "g3", C: "db4", D: "ab3", E: "[~@5 c4@16 g3@16 c4@16 g3@16 db4@16 ab3@16 db4@16 ab3@11]/8",
})).s("gm_tubular_bells").gain(0.05)

// drums · kick
const kick = s("bd").struct("<A@20 B ~@5 B@15 C B@23 C B@19 C ~@5 D@15 E D@23 E D@4 ~>".pickRestart({
  A: "~@11 x ~@4", B: "x", C: "x ~@4 x ~@10", D: "~@5 x ~@10", E: "~@5 x ~@5 x ~@4",
})).gain(0.3)

// … 36 more lines