Strudelify

Begin the Beguine

Heywood

KeyE♭ majorTempo117 bpm
0:00/0:00
// Begin the Beguine — Heywood
// 117 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 202 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(117/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 · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A@4 B@6 C@3 D@7 E@6 F@4 G@8 H@6 I@2 J K@2 L M N O@6 P@2 Q@8 R@4 S@2 T@2 U@4 V W X@7 Y Z@2 AA@4 AB@4 AC@6 AD@8 AE@4
  AF@2 AG@2 AH@4 AI@2 AJ AK AL@8 AM@8 AN@6 AO@2 AP@4 AQ@2 AR@2 AS@8 AT@2 AU@4 AV@2 AW@2 AX@2 AY@6 AZ@4 ~@8
>`.pickRestart({
  A: "[bb4@33 ~@2 [db5,e5]@5 [c5,eb5]@8 [db5,e5]@8 [d5,f5]@5 ~@3, bb5@31 ~, eb3@7 ~@57]/4", // Dbm Cm Dbm Dm
  B: "[~@3 eb4@20 d4@4 ~@12 c4@8 ~, ~@5 [bb3,g4]@90 ~, ~@9 eb4@7]/6", C: "[[f3,bb3,d4,f4], ab3@7 ~@5]/3",
  D: "[~@16 ab4 ~@7 eb4@22 ~@2 d4@28 ~@11 bb3@25, ~@14 f3@22 ~@42 g4@25 ~@9, ~@15 ab3@32 ~ [bb3,bb4]@32 eb3@29 ~@3, ~@16 c4@31 ~@31 eb4@34, ~@16 c5@8 [f4,ab4]@55 ~@4 g3@26 ~@3]/7", // Bb Fm
  E: "[[g3,bb3,eb4], eb3@31 ~]/6", F: "[~@5 g4@3, f3, ~ d4@62 ~, ~ f4@39 ~@24, ~@12 ab3@49 ~@3]/4",
  G: "[[c4,eb4,f4]@32 bb3@32 eb4@31 ~ db5@15 ~ [ab4,c5]@16, ab4@32 eb5@31 ~, ab3@3 ~@29 bb4@61 ~@2 bb4@15 ~@18, ~@32 d4@30 ~@2 g4@29 ~@3 gb5@30 ~@2, ~@64 eb3@7 ~@57]/8", // F7 Ab
  H: "[f5@4 ~@2 f4@25 ~@4 b4@12 ~ bb4@15 ~@7 [gb4,eb5]@26, db5@63 b4@31 ~@2, ab4@23 ~@25, ~@32 e4@15 ~ [eb4,gb4]@21 ~@27]/6", // Ebm
  I: "[[gb4,c5,eb5], a4@15 ~]/2", J: "[bb4,d5], f4@13 ~@3",
  K: "[[gb4,bb4]@14 ~ [f4,d5]@16 ~, [a4,eb5]@10 ~@4 bb4@17 ~]/2", L: "~ b4@15, [eb4,gb4]@15 ~",
  M: "[f4,bb4] [c4,eb4], d4@3 ~@5", N: "[d4,f4]@4 gb4@2 c4@2 [d4,f4]@5 ~@3, ~ eb4 ~@2",
  O: "[~@5 db4, [bb3,eb4], g3@31 ~]/6", P: "[~@11 d4@21, [ab3,bb3,f4]]/2",
  Q: "[~@9 c4@2 ~@37 f5@15 ~ d5@31 ~ g4@29 ~@2 eb4, [b3,eb4]@63 ~ d4@8 ~@23 eb4@28 ~@5, ab3@9 ab4@38 ~@17, ~@17 b4@47 bb4@62 ~@2, ~@5 f4@7 ~@4]/8", // B
  R: "[[g4,bb4,eb5,g5]@26 [ab4,f5]@3 ~@11 d5@3 ~@2 c5@3 bb4@7 ~ [g4,eb5]@4 [bb4,f5]@4, ~@29 g4@26 ~ bb4@3 ~@5, ~@29 eb5@3 eb4@23 ~@9, ~@31 bb4@12 eb5@12 ~@9, ~@32 g5@25 ~@7]/4", // Eb Db Cm Bb5
  S: "[[g4,bb4,eb5,g5]@24 f5@5 eb5@3, ~@3 [g4,bb4]]/2", T: "[d5@7 ~ [ab4,bb4]@24, f4@7 ~, bb4@5 ~@3 d4@20 ~@4]/2",
  U: "[[f3,ab3,c4,eb4]@32 db4 [b3,c4] ~ bb3@4 ~ [c4,eb4]@22 ~@2, ~@33 g4@29 ~@2, ~@33 d4@5 ~ bb3@22 ~@3]/4", // Fm7 Cmaj7 Cm
  V: "[d4,f4,bb4]@3 [c4,eb4,ab4]", W: "[d4,f4,bb4]@15 ~",
  X: "[[eb4,g4,bb4]@11 ~ [c4,eb4]@4 [eb4,bb4]@5 ~@3 [g4,eb5]@4 f5@4 g5@58 ~@4 f5@2 [eb5,g5]@15 ~, ~@12 g4@9 ~@3 bb4@87 ~, ~@16 eb5@31 ~@9, ~@16 g4@6 ~@23 g4@3 ~@8]/7", // Eb Cm Eb5 Cm Eb
  Y: "ab5@4 ~@2 g5@2 [g4,bb4,f5]@6 eb5 ~, [bb4,eb5] ~", Z: "[bb4 ~@6 bb4@25, f4, d5@7 d4@20 ~@5, ~ ab4@15]/2",
  AA: "[[ab3,eb4]@16 ~ eb4@12 ~@2 g4@4 bb4@4 d5@5 f5@4 ~@8 c5@7 ~, c4@31 [g3,bb3]@30 ~@3, ~@16 gb4@14 ~ d4@15 ~@2 [c4,e5]@16, ~@48 e4@13 ~@3]/4", // Ab5 Gm C
  AB: "[[f3,f5]@3 [g3,g5]@2 [ab3,ab5]@2 bb5@25 f5@3 g5@2 ab5@3 ~@2 bb4@22, ~@7 bb3@55 ~@2, ~@20 bb5@11 ~, ~@21 bb2@9 ~@2]/4", // F G Ab
  AC: "[~@5 bb3@91, ~ eb4@94 ~, ~ g3@47]/6",
  AD: "[~@40 g4@24 ~@11 [ab4,c5]@21 ~@19 f4@10 ~@3, ab3, d4@15 ~ [c4,eb4]@8 [bb3,d4]@8, ~@5 f3@59]/8", // Ab Cm Bb
  AE: "[~@32 db5@14 ~@2 [ab4,c5]@15 ~, [eb4,g4]@15 ~ gb5@15 ~, ~@3 bb4@20 ~@9, ~@7 eb5@24 ~, ~@32 eb4 ~@31]/4", // Ab Eb
  AF: "[[f4,ab4]@5 ~ [db4,f4]@23 ~@3, db5@6 ab4@25 ~]/2", // Fm Db
  AG: "[[e4,ab4,b4]@15 ~@3 [eb4,bb4]@12 ~@2, db5@29 ~@3, ~@17 gb4@14 ~]/2", // E Eb5
  AH: "[[eb4,gb4,b4]@29 ~@3 [gb4,c5]@32, eb5@63 ~, ~@16 a4@15 ~]/4", AI: "[[f4,d5]@4 ~ a4@3, bb4@5 ~@3]/2",
  AJ: "[f4,bb4,d5]@15 ~", AK: "[eb4,gb4,b4]@15 ~",
  AL: "[[d4,f4]@6 ~ [c4,eb4]@8 ~ [d4,f4]@2 gb4@3 c4@2 ~ f4@7 ~@80 db4@13 ~@4, bb4@31 bb3@6 ~ bb3@89 ~, ~@18 eb4@6 d4@6 ~ eb4@95 ~@2, ~@32 g3@93 ~@3]/8", // Dm Cm Dm
  AM: "[bb3@32 ~@16 ab4@16 ~@9 ab3@4 gb4@5 ~@4 eb5@6 f5@6 db5@2 ~@3 bb4@13 ~@7 bb4@5, ab3@73 ~@11 b4@13 ~ f4@30, [f3,d4]@33 eb4@66 ~@2 d5@18 ab5@9, ~@32 b3@37 ~@2 b3@22 ~@35, ~@33 f4@5 ~@3 ab4@18 ~@5]/8", // Dm
  AN: "[~@9 d5@7 c5@8 ~@8 g5@26 [ab4,f5]@3 g4@2 ~@9 d5@2 ~@3 c5@3 bb4@7 ~ [g4,bb4,eb5]@3 ~ [bb4,d5,f5]@2 ~@2, g5@8 c4@3 ~ bb4@17 ~@3 g5@11 ~@5, ~ g4@30 ~ g4@21 ~@11 bb4@14 ~@14 ab4@4, ~ eb4@12 ~@3 eb5@42 ~@3 eb5@11 ~@2 eb5@13 ~@9, ~@16 eb4@12 ~@3 eb4@29 ~@4 eb4@24 ~@8]/6", // Db Eb Bb
  AO: "[[g4,bb4,eb5,g5]@24 ~@5 eb5@3, ~@24 [g4,bb4,f5]@7 ~]/2", // Eb Gm7
  AP: "[~@2 ab4@4 ~@2 [ab4,bb4]@23 [ab3,c4,eb4]@33, [f4,bb4,d5]@3 ~ [d4,f4]@9 ~@19, ~@2 e4 ~@13]/4", // Absus2 Ab Bb Dm
  AQ: "[~@21 eb5@9 ~@2, [bb4,c5,g5]@15 ~]/2", // C7
  AR: "[[c5,eb5]@3 ~@2 f5@6 ~ [c5,eb5,ab5]@4 [d5,f5]@16, bb5@31 ~, ~@4 d5@7 ~@21]/2", // Cm Ab Dm
  AS: "[[eb5,g5,bb5]@12 [c5,eb5]@3 ~ [eb5,bb5]@6 ~@2 [eb5,bb5,eb6]@4 [f5,f6]@4 ~@17 eb6@25 d6@5 ~@2 c6@7 ~@8 [g5,g6]@15 ~ [ab5,ab6]@5 ~ [g5,g6]@2 [f5,bb5,f6]@5 eb6 ~@2, ~@12 g5@9 ~@7 bb5@58 ~@2 bb5@32 ~@8, ~@32 [g5,g6]@63 ~ eb6@24 ~@8, ~@42 eb5@51 ~@2 eb5@18 ~@15]/8", // Eb Cm Eb5 F G Ab G Bb5 …
  AT: "[d6@6 ~ f5@25, ab5@25 ~@7, bb5@5 ~@3, ~@3 d5@13]/2",
  AU: "[ab3@16 gb4@15 ~@2 g4@5 bb4@2 d5@4 f5@3 ~ c4@13 ~@3, eb4@30 ~ bb3@16 e5@13 ~@4, c4@28 ~@3 g3@29 ~@4, ~@32 d4@14 ~ e4@17]/4",
  AV: "[[f4,f5]@3 [g4,g5]@2 [ab4,ab5]@2 ~ bb5@24, ~@7 bb4@25]/2", // F G Ab
  AW: "[[f4,f5]@2 [g4,g5]@3 [ab4,ab5]@2 ~@3 bb3@17 ~@5, ~@7 [bb4,bb5]@25, ~@10 bb6@13 ~@9]/2", // F G Ab Bb
  AX: "[[f4,f5]@2 ~ g5@2 [ab4,ab5]@3 ~@3 bb3@21, ~@2 g4@3 ~@3 bb5@24, ~@4 bb4@11 ~]/2", // F Ab
  AY: "[~@12 eb5@22 ~ f5@12 ~@17 bb5@32, [eb4,bb4]@32 ~@3 f4@30 ~@31, g5 ~@7, ~@9 g4@27 ~@11 [bb3,bb4]@49]/6", // Eb5 Bb
  AZ: "[~@46 [eb3,eb4]@13 ~@5, ~@2 [g4,d5,g5]@57 ~@5]/4", // Eb G5
})).s("gm_string_ensemble_1").gain(0.2).pan(0.3)

// other · trumpet
const trumpet = note(`<
  A ~ B C D ~@33 E F G@2 H I J@2 K L M@2 ~@2 N O ~@19 P ~@3 Q R@2 S T U@2 ~@2 V W X@2 V Y Z@2 AA AB AC@2 AD AE AD AE
  ~@16 E AF AG@2 H AH AI@2 K AJ AK@2 ~@2 AL AM ~@23 Q R@2 AN T AO@2 ~@6 V Y AP@2 AQ AR AS ~ AT AU AT AV AW@2 AX ~@8 AY
  ~@8
>`.pickRestart({
  A: "[e3,f3] ~@15", B: "eb3@3 f3@2 g3@3 ab3@3 bb3@2 c4@3", C: "d4@3 eb4@2 f4@3 g4@3 f4@2 eb4@3", D: "bb4 ~@3",
  E: "~@3 eb4@3 db4@2", F: "c4@5 ~ db4@2 eb4@3 db4@2 c4@2 ~", G: "[db4@4 ~@2 db4@19 ~@7]/2", H: "~@3 db4@3 b3@2",
  I: "bb3@8 db4@2 ~ db4@2 ~ db4@2", J: "[b3@27 ~@5]/2", K: "c4@3 db4", L: "eb4@13 ~ eb4@2", M: "[f4@21 ~@11]/2",
  N: "[d4,f4]@7 ~ [c4,eb4]@8", O: "[d4,f4]@3 [eb4,gb4]@2 [c4,eb4]@2 ~ [d4,f4]@6 ~@2", P: "~@2 c4@3 ~@11",
  Q: "~@6 [ab3,c4] [bb3,d4]", R: "[[c4,eb4]@24 [c4,f4]@7 ~]/2", S: "[bb3,g4]@9 ~ f4@2 eb4@2 d4@2",
  T: "eb4 d4 c4 bb3 c4 bb3 ab3 g3", U: "[f3@3 g3@2 ab3@2 ~ bb3@17 ~@7]/2", V: "eb3 d3", W: "c3@8 bb2@5 ~ bb2@2",
  X: "[eb3@3 f3 g3@2 bb3@22 ~@4]/2", Y: "c3@2 bb2 ~", Z: "[ab3@2 bb3 ~ c4@2 d4@4 eb4@2 d4@2 c4@4 bb3@4 ab3@2 bb3@8]/2",
  AA: "ab3@3 g3, f4 ~@3", AB: "gb3@15 ~", AC: "[g3@27 ~@5]/2", AD: "~@5 [d3,f3,bb3] ~@2",
  AE: "~ [db3,e3,bb3] ~@3 [c3,eb3,bb3] ~@2", AF: "c4@5 ~ db4@2 eb4@3 db4@2 c4 ~@2", AG: "[db4@2 ~ db4@10 ~@3]/2",
  AH: "bb3@8 db4@2 ~ db4@2 ~ db4 ~", AI: "[b3@3 ~]/2", AJ: "eb4@9 ~ eb4@4 f4 ~", AK: "[f4@9 ~@7]/2",
  AL: "d4 [c4,eb4], f4@3 ~@13", AM: "[d4,f4]@3 [eb4,g4]@2 [c4,eb4]@2 ~ [d4,f4]@2 ~@6", AN: "[bb3,g4]@5 f4 eb4 d4",
  AO: "[f3@3 g3@2 ab3@2 ~ bb3@24]/2", AP: "[ab3@3 bb3 c4@2 d4@4 eb4@2 d4@2 c4@4 bb3@3 ~ ab3 ~ bb3@6 ~@2]/2",
  AQ: "ab3@3 g3", AR: "gb3", AS: "g3", AT: "~@10 [d3,f3,bb3] ~@5", AU: "~@2 [db3,bb3] ~@7 [c3,eb3,bb3] ~@5, ~ e3 ~@6",
  AV: "~@2 [db3,e3,bb3] ~@7 [c3,eb3,bb3] ~@5", AW: "[f3@2 ~ g3@2 ab3@2 ~ bb3@18 ab3@2 ~@2 g3@2]/2", AX: "eb3 ~@15",
  AY: "~@4 g3 ~ g3 ~ g3 ~@7",
})).s("gm_trumpet").gain(0.05).pan(0.6)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~@2 A B C@2 ~@16 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K ~@16 L M@2 N@2 O P G@2 Q R S@2 T@2 U@2 ~@2 V W ~@14 X Y ~@11 L Z@2 AA@2
  AB@2 AC@2 AD@2 AE@2 AF@2 K ~@16 L AG@2 AH@2 AI P AJ@2 AK AL S@2 AM@2 AN ~@3 AO AP ~@12 AQ AR AS@2 AQ AT@2 ~@5 AU AV AW
  AX AY@2 AZ ~ BA BB BC BD BE ~@2 BF ~@8
>`.pickRestart({
  A: "eb4@3 f4@2 g4@3 ab4@3 bb4@2 c5@3", B: "d5@3 eb5@2 f5@3 g5@2 f5@3 eb5@3", C: "[bb4@13 ~@3]/2",
  D: "[eb4@3 f4@2 g4@3 bb4@15 ~ g4@2 ~ f4@2 eb4 ~@2]/2", E: "[g4@28 eb4@3 ~]/2",
  F: "[eb4@3 f4@2 g4@3 d5@12 c5@4 bb4@3 ab4@2 g4@3]/2", G: "[ab4@8 f4@18 ~@2 f4@3 ~]/2",
  H: "[f4@3 g4@2 ab4@3 g5@16 f5@3 eb5@3 d5@2]/2", I: "[eb5@2 c5@5 ~]/2", J: "[f4@3 g4@2 ab4@2 ~ bb4@16 ab4@4 g4@3 ~]/2",
  K: "eb4", L: "~@14 eb4 ~", M: "[eb4@3 f4@2 g4@3 bb4@12 g4@3 ~ g4@3 f4@2 eb4@3]/2", N: "[g4@24 ~@4 eb4@3 ~]/2",
  O: "eb4@3 f4@3 g4@2 bb4@3 c5@3 bb4@2", P: "db5@6 c5@2 bb4@3 ab4@3 g4@2", Q: "f4@3 g4@2 ab4@2 ~ b4@3 eb5@2 f5@2 ~",
  R: "g5@6 f5@2 eb5@3 db5@3 b4@2", S: "[eb5@8 b4@17 ~@3 f4@3 ~]/2", T: "[f4@3 g4@3 ab4@2 bb4@17 ~ ab4@4 g4 ~]/2",
  U: "[g4@21 ~@11]/2", V: "~@8 d5@3 eb5@2 d5@3", W: "eb5 ~", X: "~@8 d4@3 eb4@2 d4@3", Y: "bb3@3 ~",
  Z: "[eb4@3 f4@2 g4@2 ~ bb4@16 g4@2 ~ f4 ~ eb4@2 ~]/2", AA: "[g4@21 ~@7 eb4@2 ~@2]/2",
  AB: "[eb4@3 f4@2 g4@2 ~ d5@12 c5@3 ~ bb4@2 ~ ab4@2 g4@2 ~]/2", AC: "[ab4@4 f4@7 ~@3 f4 ~]/2",
  AD: "[f4@3 g4@2 ab4 ~@2 g5@16 f5@3 eb5@2 d5@3]/2", AE: "[eb5 c5@2 ~]/2", AF: "[f4@3 g4@2 ab4@3 bb4@19 ab4@3 g4@2]/2",
  AG: "[eb4@3 f4@2 g4@2 ~ bb4@12 g4 ~@3 g4@2 f4@3 eb4@3]/2", AH: "[g4@20 ~@8 eb4@3 ~]/2",
  AI: "eb4@3 f4@3 g4@2 bb4@3 c5@2 bb4@2 ~", AJ: "[ab4@8 f4@17 ~@3 f4@3 ~]/2", AK: "f4@3 g4@2 ab4@3 b4@3 eb5@3 f5@2",
  AL: "g5@6 f5@2 eb5@3 db5@2 b4@3", AM: "[f4@3 g4@2 ab4@3 bb4@18 ab4@4 g4 ~]/2", AN: "g4", AO: "~@8 d4@3 eb4@2 d4@2 ~",
  AP: "bb3 ~", AQ: "eb4 d4", AR: "c4@8 bb3@5 ~ bb3@2", AS: "[eb4@3 f4 g4 ~ bb4@19 ~@7]/2", AT: "[c4@8 bb3@15 ~@9]/2",
  AU: "f3@5 bb2@3", AV: "~@2 bb2@6 ~@2 bb2@5 ~", AW: "f3@4 ~ bb2@3", AX: "~ bb2@3 ~ bb2@3",
  AY: "[f3@2 ~ g3 ~ ab3 ~@2 bb3@17 ~ ab3@2 ~@2 g3 ~]/2", AZ: "eb3@7 ~@9", BA: "~@3 ab4",
  BB: "g4@3 f4@2 eb4@2 ~ d4@5 c4@2 ~", BC: "bb3@3 ab3@2 g3@3 f3@5 eb3 d3 c3", BD: "bb2", BE: "eb3 ~@15",
  BF: "~@6 eb2 ~ eb2 ~@7",
})).s("gm_brass_section").gain(0.3).pan(0.6)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~@2 A B C D@2 ~ E@7 ~ F@4 G@8 H@4 I@6 J@2 K@2 L@2 M@2 N@4 O@2 P@2 Q R@2 S@5 T@6 U@4 V@2 W X Y@2 Z@2 AA@2 AB AC AD AE
  AF AG AH@2 AI AJ AK@2 AL@2 AM@2 AN@4 AO@2 AP@4 AQ@4 AR@4 AS@2 AT@2 AU@2 AV@2 AW@4 AX AY@2 AZ BA@2 BB@6 BC@4 BD@2 BE@2
  BF@4 BG@2 BH BI BJ@2 BK@2 BL@2 BM AC AD BN BO BP BQ@2 BR BS BT@2 BU@2 BV@2 BW@4 BX@2 BY@5 BZ CA@3 CB ~@8
>`.pickRestart({
  A: "eb3@8 f3@7 ~", B: "[eb3,bb3]@2 [g3,c4] ~", C: "[db4,e4,bb4]@7 ~ [c4,eb4,bb4]@7 ~",
  D: "[[db4,e4]@8 [d4,f4]@11 ~@13, bb4@19 ~@13]/2", // Dbm Dm
  E: "[~@6 eb4@2 ~@2 bb3@6 c4@2 ~@4 d4@4 bb3@2 d4@2 ~@2 [eb4,g4]@14 ~@4 f4@2 ~@2 g4@8 ~@16 f3@4 ~@6 c5@2 d5@2 ~@2 bb4@9 ~@9, ~@2 eb3@62 ~@6 bb2@33 ~@9, ~@4 bb3@4 f4@9 ~ bb3@7 ~@5 bb3@14 ~@2 bb3@21 ~@15 bb3@22 ~@8, ~@6 g4@22 ~@20 eb4@14 ~@26 f5@15 ~@9, ~@8 d4@6 ~@2 eb4@6 f4@8 ~@2 eb2@8 ~@52 c5@11 ~@9]/7", // Eb
  F: "[~@11 eb5 ~@2 c5@2 bb4@2 ~@3 [d4,f4]@2 [eb4,g4] [d4,f4]@4 ~@2 f4 bb3, bb2@14 ~@2 bb2@15 ~, ~@18 f4@16 ~@4 bb3@16 ~@2 bb3@5 ~@3, ~@10 ab4@6 ~@13 d4@3, ~@3 d5 ~@4]/4", // Dm Eb Dm
  G: "[~@2 bb3 ~ [eb4,g4]@2 bb3@2 [d4,f4]@2 bb3@3 ~ bb3@2 ~@2 bb3@2 [d4,f4]@2 bb3@2 ~@2 bb3@12 g3@6 ~@6 eb4@20 ~@2 g3@9 ~@5 f4@2 ~@4 g3@6 ~@4 bb3@5 ~@3 bb3@4 ~@2 bb3@2 d4@4 ~@2 bb3@2 d4@2, eb3@41 ~@3 eb3@21 ~@5 eb3@25 ~@3 eb3@28 ~@2, ~@24 [eb4,g4]@7 ~@15 g3@24 ~@12 g3@8 bb3@10 g3@6 ~ g3@6 ~ g3@6 ~@2 g3@5 ~, ~@24 bb3@12 ~@6 bb3@2 eb4@7 ~@13]/8", // Eb Dm Eb
  H: "[~@3 bb3@3 ~@23 bb3 c4 bb3, bb2@11 bb3@7 f3@7 ~ c4@3 ~@3, ~@14 f3@17 ~@3 bb2@30, ~@18 [c4,f4]@15 ~@5 bb3@11 ~ bb3@4 d4@6 ~@4, ~@10 d4@6 ~@7 g4@8 ~]/4", // F5
  I: "[eb4@4 ~@10 ab5@3 ~@9 eb5@4 ~@26 bb3@4 d4 ~@9 bb3@4 bb3@6 ~@4 eb4@2 [d4,f4]@4 [eb4,g4]@2 ~@4, ~@4 f3@8 eb5@6 g5@13 ~@7 d4@13 ~@3 f3@8 bb3@7 ~@13 bb3@9 ~@5, ~@6 c4@16 f5@9 ~@3 bb3@6 f4@19 ~@5 [eb4,g4]@18 ~@2 g4@5 ~@7, ~@8 eb4@21 ~ d5@4 bb4@22 ~@8 eb3@14 ~@2 eb3@12 ~@4, ~@10 ab4@21 ~ f3@12 d5@12 ~@40]/6", // Dm Eb
  J: "[~@4 gb4 ~ [eb4,gb4,bb4]@13 ~@11 eb4 ~, [eb3,eb4]@5 ~ [eb3,bb3]@24 ~@2, ~@3 f4@2 ~@27]/2", // Ebm Eb Eb5
  K: "[[f4,ab4,db5]@5 ~ [db4,f4,ab4]@23 ~@3]/2", L: "[db4@3 ~ e4 ~ [db4,e4,ab4]@19 ~@7, ~@3 eb4@2 ~@27]/2",
  M: "[b3@5 ~@2 gb4@2 ~@3 b3@3 ~, eb5@16 ~@6 eb4@7 ~@3, [gb4,b4]@14 ~@6 [db4,gb4]@9 ~@3, ~@5 b2@10 ~, ~@6 b3@3 gb3@6 ~]/2", // B5 Gb5
  N: "[[gb3,a3,c4,eb4]@28 ~@12 eb5@3 ~@3 bb4@4 ~@14, ~@31 f3@19 ~@14, ~@16 bb3@9 ~@7, ~@33 d4@17 ~@14, ~@34 f4@2 bb4@2 f5@4 ~ d5@7 ~@14]/4", // Gbdim
  O: "[~@6 bb4 ~ eb4@2 ~ gb4@4 eb4, bb4@5 f4@2 ~ b4@3 ~@5, d4@6 bb3@8 b3@11 ~@7, ~@2 f3@5 ~ b2@4 ~@4, ~@8 d4@6 ~@6 eb4@9 ~@3]/2",
  P: "[b3@2 ~@4 d4@17 ~@9, ~@4 bb3@17 ~@11]/2", Q: "~@6 eb3@3 ~ bb3@2 g4@2 bb3@2, ~@12 eb3 ~@3",
  R: "[[d4,f4]@2 ~@20 eb2@4 eb3@5 ~, eb3@23 ~@9, ~ eb4@15, ~ g4@13 ~@2, ~@3 bb3@13]/2", // Dm
  S: "[eb3@6 ~@10 f4@2 eb4@18 ~@6 eb3@4 g3@4 ~@16 f4@4 ~@2 eb5 ~@3 bb4@2 f4@2, ~@10 eb3@31 ~@13 f3@14 ~@2 f3@8 ~@2, ~@12 g3@31 ~@31 d5@4 ~@2, ~@7 bb3@17 ~@4 bb3@7 ~ bb3@3 ~, ~@36 db4@11 ~@11 d4@13 ~@3 d4@6]/5",
  T: "[~@26 eb4@5 ~@14 b5 ~@12 ab5@2 ~@10 bb4@6 ~@10 bb4@2 f4@2 [c5,eb5]@2 ~ bb4@3, ab3@14 b4@10 b3@40 ~@18 [d5,f5]@8 ~@3 d5 ~@2, ~@2 b3@14 ab4@9 ~@9 eb4@31 ~@13 bb4@7 ~@11, ~@4 eb4@18 ab3@43 ~@31, ~@6 ab4@2 ab5@3 eb5@15 ~@12 f4@4 f6@2 eb6@2 ab5@4 f4@4 f6 eb6 b5@4 f4@14 ~@2 f4@10 ~@6 f4@4]/6", // Cm Dm
  U: "[~@4 eb4@8 ~@4 g4@6 bb4@3 ~@7 [eb6,g6] ~@5 [bb4,eb5,g5] ~ bb4@6 bb4@11 ~ [ab4,f5]@2 ~ eb5@2 ~, ~@2 g4@12 eb4@12 ~@5 bb4@5 ~@25 g4 ~@2, ~@12 bb3@14 ~@5 bb5@2 ~@31, ~@32 eb5@4 ~@4 [eb5,g5]@17 ~@7, ~@16 g5 ~@15]/4", // Eb Db Eb
  V: "[[bb4,eb5]@21 ~@3 [g4,bb4,eb5]@2 ~@2 [ab4,bb4,f5] ~@3, g5 ~]/2", // Eb5 Eb Bb7
  W: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5]@5 ~ [bb4,eb5,g5] ~", // Eb
  X: "[bb4,eb5,g5]@5 ~ [bb4,eb5,g5] ~ [g4,f5]@2 ~@4 [g4,bb4,eb5] ~, ~@8 [a4,eb5] ~@7", // Eb G7 Eb Adim
  Y: "[[ab4,bb4,d5]@3 ~@5 [d4,ab4,bb4]@20 ~@4]/2", // Bb7
  Z: "[ab3@21 ~ ab3@5 ~ ab3@3 ~, eb4@31 ~, c4@29 ~@3, f3@25 ~@2 f3@5]/2",
  AA: "[[g3,bb3,d4]@5 ~@3 g3@8 ~@12 g4@3 ~, ~@7 [eb4,g4]@18 ~ eb4@6, ~@7 c4@16 ~ bb3@6 ~@2, ~@7 bb3@13 g3@12, ~@7 c3@7 ~@4 c3@13 ~]/2", // Gm Eb
  AB: "[d4,f4]@11 ~@3 [c4,eb4,ab4] ~, f3@7 ~, bb3 ~, ab3@3 ~@5", AC: "[d4,f4,bb4]@7 ~",
  AD: "[eb4,g4,bb4]@11 ~ [c4,eb4,g4]@3 ~", AE: "[eb4,g4,bb4]@4 ~@4 [g4,bb4,eb5]@2 ~@2 [ab4,d5,f5] ~@3",
  AF: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~", // Eb
  AG: "[bb4,eb5,g5]@10 [bb4,eb5,g5] ~@3 [bb4,eb5,g5] ~", // Eb
  AH: "[[bb4,eb5,g5]@26 ~@2 [g4,bb4] ~ [ab4,f5] ~, ~@14 eb5 ~]/2", // Eb Gm Db
  AI: "[bb4,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5] ~ [bb4,eb5,g5]@4 ~@2, eb5 ~@15", // Eb
  AJ: "[bb4,eb5]@5 ~ [bb4,eb5,g5] ~ [g4,f5]@4 ~@2 [g4,bb4,eb5] ~, ab5@3 ~@5 eb5 ~@7", // Eb5 Eb G7 Eb
  AK: "[[ab4,bb4,d5]@4 ~@2 [ab4,bb4]@19 ~@3 [ab3,c4]@2 [bb3,d4]@2, ~@3 d4@11 ~@2]/2", // Bb7 Absus2 Ab Bb
  AL: "[[ab3,eb4]@14 ~@2 [c4,eb4,gb4]@7 ~ [c4,eb4]@3 [bb3,d4] ~@2 [ab3,c4] ~, f3@15 ab3@8 ~@9, c4@3 ~@5]/2", // Ab5 Cdim Cm Bb Ab
  AM: "[~@10 bb3@2 ~@12 g3@4 bb3 ~@3, g3@20 ~@2 e3@7 ~@3, bb3@8 g4@5 ~ bb3@11 ~@7, ~@6 g2@6 d4@4 [c3,e4]@13 ~@3]/2", // C
  AN: "[[f3,f4]@3 [g3,g4]@2 ab4@3 bb3@8 [db4,e4]@8 ~@2 [c4,eb4]@7 ~@9 f4@8 [db4,e4]@6 ~@2 [c4,eb4]@6, ~@5 ab3 ~@2 bb4@56, ~@21 d4@3 ~@8]/4", // F G Dbm Cm Dbm Cm
  AO: "[~@4 bb3@9 ~@13 bb3@4 g3@2, eb3@13 ~ eb3@16 ~@2, ~@2 g3@12 ~@2 g3@13 ~@3, ~@9 eb4@7]/2",
  AP: "[~@3 f4@2 ~@15 bb3@2 ~@5 g5@3 eb5@2, eb3@15 ~@3 eb3@12 [eb6,g6]@10 ~@6 eb5@11 ~@7, ~@2 bb3@16 ~@4 bb3@13 ~@3 eb3@6 ~@20, ~@4 eb4@15 ~@5 eb4@14 ~@6 eb4@18 ~@2, ~@10 g4@10 ~@6 [f6,bb6]@13 ~@9 bb5@15 ~]/4", // Eb Bb5
  AQ: "[~@23 [bb5,c6] d6 c6 bb5 ~ [e5,f5] ~ d5 ~ bb4@2 ~@12 f3@4 ~@4 [d5,g5]@2 c5@2 ~@2 g4@2 g4 ~, ~@3 bb3@18 ~@4 bb3@7, ~@6 d4@15 ~@5 d4@6, ~@38 f4@13 ~@3 db5 ~@9]/4", // Bbsus2 Fmaj7 G5
  AR: "[~@14 c6@6 ab5 ~ f5@4 eb5@4 ~@16 c5@6 bb4@6 g4@3 f4@3, [ab4,eb5]@3 c4@2 ab5 eb6@4 ~@11 f4@8 ~@3, ~ f3@14 ~@2 f3@5 d5@4 ~@6, ~@2 ab3@13 ~@3 bb3@14, ~@4 eb4@11 d5@4 bb4@4 ~@9]/4", // Ab5
  AS: "[g4@3 ab4 bb4@2 ~@16 bb3@6 ~@4, eb3@25 ~@7, ~@3 g3@9 ~@2 eb4@16 ~@2, ~@6 c5@9 ~@3 g3@6 ~@8, ~@10 bb3@9 ~@13]/2",
  AT: "[~ f4 gb4 [gb4,bb4]@12 ~, eb3@27 ~@5, eb4@5 ~ eb4@22 ~@4]/2", // Gb
  AU: "[[db4,f4,ab4,db5]@4 ~@2 [db3,db4,ab4]@23 ~@3, ~@6 f4@21 ~@5]/2", // Db Db5
  AV: "[[db3,db4]@3 [eb3,eb4] [e3,e4] ~ db4@24 ~@2, ~@3 db3@9 ~@4, ~@6 e4@15 ~@11, ~@6 ab4@13 ~@13]/2", // Db Eb E
  AW: "[~@22 eb4@6 ~@4 [c5,eb5]@22 gb4@7 ~@3, b2@18 gb4@9 ~@4 gb4@20 ~@13, [gb4,b4]@10 eb4@4 eb5@2 b4@12 ~@3 a4@25 ~@8, eb4@6 b3@23 ~@3 c4@3 ~@29, ~@2 gb3@25 ~@4 [gb3,a3]@4 ~@29]/4", // Cm B5 Gbm
  AX: "~ bb4, ~@2 bb3@13 ~, ~ d4@3, ~@3 f4@5",
  AY: "[~@22 bb3@5 ~ bb3@2 ~@2, ~@15 bb3@6 ~@11, ~ [f3,d4], ~@16 f4@13 ~@3]/2", AZ: "[eb4,gb4]@15 ~, [b2,b3]@13 ~@3",
  BA: "[[bb2,bb3,d4,f4]@7 ~ c4@10 ~@14, ~@8 eb4@7 ~@17]/2", // Bb
  BB: "[~@14 f4@4 ~@4 eb4@10 ~@18 [bb3,c4]@3 ~@7 [d4,f4]@2 ~@4 bb3@7 ~@11 db5@2 bb4@2 g4@2 eb4@6, ~@10 eb3@21 ~@3 eb4@4 g3@4 d4@6 g3@8 ~@2 g3@12 ~@4 g3@13 ~@9, ~@12 bb3@37 ~@28 bb3@17 ~@2, ~@18 g4@14 ~@2 g4@12 eb3@6 ~@4 eb3@14 ~@3 eb3@21 ~@2, ~@20 g3@16 eb3@6 f4@8 eb4@10 ~@2 [eb4,g4]@13 ~@21]/6", // Bbsus2 Dm Eb
  BC: "[[d4,f4]@2 ~@8 f5@6 ~@3 [bb5,c6] d6 c6 bb5 ab5 g5 ~ f5@2 eb5@2 d5@6 ~@20 eb5@6 ~@2, ~ f3@17 ~@6 eb4@8, ~@4 bb3@32 ~@6 ab3@19 ~@3, ~@3 d4@18 ~ b3@5 b4@4 ~, ~@8 ab4@6 ~@24 ab4@12 ~ ab4@10 ~@3]/4", // Dm Bbsus2
  BD: "[ab3@3 ~@5 [f4,f6]@3 eb6@3 ~@16 ab4 bb4, ~@3 ab5@4 b3@8 ~, ~@6 ab3@5 eb4@19 ~@2, ~@7 b5 ab5@3 f4@5, ~@16 ab3@13 ~@3]/2", // F
  BE: "[c5 ~@27 f5@4, d5@12 ~ ab4@3, ~ bb3@3 ab4@5 bb3@5 ~@2, ~@2 d4@3 bb4@6 d4@3 ~@2, ~@6 f4@17 ~ f4@5 ~@3]/2",
  BF: "[~@14 bb3@4 ~@4 [eb4,g4]@6 ~@4 [eb5,g5]@2 ~ [bb4,eb5,g5]@2 eb5 [bb4,g5] ~ [bb4,eb5,g5]@18 [ab4,f5]@2 ~ eb5@2 ~, g3@18 ~@2 bb3@7 ~@37, eb5@3 eb4@6 [d4,f4]@2 ~@21, ~@4 bb3@7 g4@10 ~@10 bb4@3 ~@27 g4 ~@2]/4", // Eb Db Dm
  BG: "[[bb4,eb5,g5]@21 ~@3 [g4,bb4,eb5]@2 ~@2 [ab4,bb4,f5] ~@3]/2", // Eb Bb7
  BH: "[bb4,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5]@5 ~ [bb4,eb5,g5] ~, eb5 ~@15", // Eb
  BI: "[bb4,eb5,g5]@5 ~ [bb4,eb5,g5] ~ [g4,f5]@2 ~@4 [g4,bb4,eb5] ~", // Eb G7 Eb
  BJ: "[[ab4,bb4,d5]@5 ~@3 [ab4,bb4]@15 ~@5 [ab3,c4]@2 [bb3,d4]@2, ~@2 d4@5 ~]/2", // Bb7 Absus2 Ab Bb
  BK: "[c4@14 ab3@4 ~@6 c4@3 ab3 ~@4, eb4@20 ~@2 eb4@7 ~@3, f3@17 ~ f3@14, ab3@13 ~@7 ab3@5 ~@7]/2",
  BL: "[[g3,g4]@7 ~@19 d4@2 eb4@2 d4 ~, [bb3,d4]@5 ~@2 [bb3,c4]@7 g3@18, ~@8 [eb4,g4]@8 ~@2 d4@4 bb4@9 ~, ~@3 c3@5, ~@20 eb4@7 ~@5]/2", // G Bb Bbsus2 Eb
  BM: "~ [c4,eb4]@2 ~ [d4,f4]@7 ~ [c4,eb4,ab4]@4, ~ bb4@10 ~@5", BN: "[eb4,g4,bb4]@5 ~@3 [bb4,eb5,g5]@2 ~@3 f5@3",
  BO: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~", // Eb
  BP: "[bb4,eb5,g5]@9 ~ [bb4,eb5,g5]@2 ~ [bb4,eb5,g5]@2 ~", BQ: "[[bb4,eb5]@23 ~@5 eb5@2 f5@2, g5@21 ~@11]/2",
  BR: "[bb4,eb5,g5]@2 ~ [bb4,eb5,g5] ~@2 [bb4,eb5,g5] ~ [bb4,eb5,g5] ~ [bb4,eb5,g5]@4 ~@2", // Eb
  BS: "[bb4,eb5,ab5]@5 ~ [bb4,eb5,g5] ~ [g4,bb4,f5]@5 ~ [g4,bb4,eb5] ~", // Ebsus4 Eb Gm7 Eb
  BT: "[[ab4,bb4,d5]@5 ~ d4@5 ~@5 bb4@8 ~@4 [ab3,c4]@2 [bb3,d4]@2, ~@3 [ab4,bb4]@4 ab4@5 ~@4, ~@3 d4@3 ~@2]/2", // Bb7 Ab Bb Absus2
  BU: "[~@4 ab3@10 ab3@3 ~@7 ab3@6 ~@2, f3@31 ~, [c4,eb4]@15 ~@3 gb4@12 ~@2, ~@20 eb4@11 ~, ~@11 c4@4 ~]/2", // Cm
  BV: "[~@4 g4@2 f4@2 ~@4 c4@3 ~, g3@8 ~ e3@6 ~, ~@2 g2@11 ~@3 c3@14 ~@2, ~@4 bb3@16 g3@11 ~, ~@3 d4@5 e4@3 bb3@4 ~]/2",
  BW: "[[f4,g4] ~@2 g3@2 ab3 ab4 ~ bb3@10 [db4,e4,bb4]@7 ~@7 f3@2 ~ g3@2 ab3@2 ~@3 [d4,f4,bb4]@6 ~@2 [db4,e4,bb4]@7 ~ [c4,eb4,bb4]@4 ~@2, f3@2 ~ g4 ~@4 ab4@8 ~@10 [c4,eb4,bb4]@14 bb3@11 ~@13]/4", // Fsus2 Bbdim Bb Bbdim Cm7
  BX: "[[f2,f4]@2 ~ [g2,g4] ~ ab2@2 ~@13 [bb3,bb5]@12, ~@5 ab4 ~@2 bb4@24, ~@4 bb2@11 ~]/2", // F G Bb
  BY: "[~@6 [eb6,g6]@2 [d6,f6]@2 bb5@2 [c6,eb6]@6 bb5@2 [d6,f6]@2 [eb6,g6]@8 ~@16 f5@29 ~ f5@3 ~, ~@6 gb6 ~@23 bb5@48 ~@2]/5", // Eb Dm Cm Dm Eb
  BZ: "~@6 [c4,eb4,ab4] ~@9", // Ab
  CA: "[~@10 f5@4 eb5@4 d5@19 ~ bb4@2 eb5@3 f5@3 g5@2, ~ g4@8 ~@15, ~@2 d5@5 ~@17, ~@3 g5@16 ~@5]/3",
  CB: "[eb5,bb5]@3 ~", // Eb5
})).s("gm_piano").gain(0.47).pan(0.4)

// chords · piccolo
const piccolo = note(`<
  ~@4 A B ~@2 C D ~@2 E F ~@2 E G ~@2 C H I J K@2 L M N@2 O P Q@2 R S T@2 ~@2 U V ~@2 W X ~@10 Y Z ~@2 AA AB ~@2 AC AD
  ~@2 AE AF ~@7 AG AH AI AJ@2 AK AL AM AN ~@2 AO AP ~@3 AG AQ AR AS@2 AT@2 AU@2 AV AW K@2 AX M N@2 O P AY@2 AZ S BA@2
  ~@2 U BB ~@2 W BC ~@10 Y BD ~@2 AA F ~@2 E BE ~@2 BF BG ~@7 AG AH BH AJ@2 BI BJ BK BL ~@2 BM BN ~@3 AG BO BP BQ@2 BR@2
  BS@2 BT BU@2 BV ~@4 BW@4 ~@8
>`.pickRestart({
  A: "~@2 [db5,e5] ~ [db5,e5] ~ [db5,e5] ~@3 [c5,eb5] ~ [c5,eb5] ~ [c5,eb5] ~", // Dbm Cm
  B: "~@2 [db5,e5] ~ [db5,e5] ~ [db5,e5] ~ [d5,f5] ~@7", // Dbm Dm
  C: "~@2 [eb5,g5] ~ [eb5,g5] ~ [d5,eb5,g5] ~@3 [d5,eb5,g5] ~@3 [c5,eb5,g5] ~", // Eb Ebmaj7 Cm
  D: "~ [f5,ab5] bb5 [eb5,g5]@3 ~@2, ~@4 g5 ~@11", // Fm Eb
  E: "~@2 [f5,ab5] ~ [f5,ab5] ~ [eb5,f5,ab5] ~@3 [eb5,f5,ab5] ~@3 [d5,f5,ab5] ~", // Fm Fm7 Ddim
  F: "~ [g5,bb5] c6 [f5,ab5]@3 ~@2, ~@4 ab5 ~@11", G: "~@2 [g5,bb5]@2 [ab5,c6] ~ [f5,ab5]@7 ~@3",
// … 118 more lines