Strudelify

Night and Day

Cole Porter

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

// bass · acoustic bass
const bass = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q R C S T U V W X Y Z AA AB F AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD AO BE BF BG BH S BI F C BJ BK BL C BM X J BN BO BP BQ AC BR BS BT BU BV BW BX V BY BZ
  J CA CB CC CD CE CF BK CG CH CI CJ CK AG CL X CM CN AA BP BQ CH CO AY CP AG CQ CR CS V CT CU J CA CV CW CX CY CZ DA DB
  DC DD BW DE DF DG DH DI DJ L AQ DK DL DM DN
>`.pickRestart({
  A: "f2@5 ~ f2 ~ b2@5 ~ f2 ~", B: "bb1@5 ~ e2 ~ f2@5 ~ bb1 ~", C: "eb2@5 ~ bb2 ~ eb3@5 ~ bb2 ~",
  D: "eb2@6 a2 ~ bb2@3 ~ bb1@3 ~", E: "f2@5 ~ b2 ~ b2@5 ~ b1 ~", F: "bb1@5 ~ f2 ~ f2@5 ~ bb1 ~",
  G: "eb3@6 a2 ~ bb2@5 ~ d2 ~", H: "eb2@4 ~@2 bb2 ~ bb2@6 ab1 ~", I: "a1@5 ~ eb2 ~ eb2@5 ~ eb1 ~",
  J: "ab2@5 ~ eb3 ~ eb3@5 ~ ab2 ~", K: "g2@6 g2 ~ d3@5 ~ g2 ~", L: "gb2@6 c3 ~ c3@4 ~@2 gb2 ~",
  M: "f2@5 ~ b2 ~ c3@6 c2 ~", N: "bb1@6 f2 ~ f2@6 bb1 ~", O: "eb2@6 bb2 ~ bb2@5 ~ eb3 ~", P: "eb3@6 eb2 ~ bb2@5 ~ e2 ~",
  Q: "f2@5 ~ bb2 ~ b2@4 ~@2 f2 ~", R: "bb1@5 ~ e2 ~ f2@4 ~@2 f1 ~", S: "eb2@5 ~ a2 ~ bb2@3 ~ bb1@3 ~",
  T: "f2@5 ~ bb2 ~ b2@5 ~ f2 ~", U: "bb1@5 ~ f2 ~ f2@5 ~ f1 ~", V: "eb2@5 ~ bb2 ~ bb2@5 ~ eb2 ~",
  W: "eb2@4 ~@2 bb2 ~ bb2@5 ~ ab1 ~", X: "a1@5 ~ eb2 ~ eb2@5 ~ a1 ~", Y: "ab2@5 ~ eb3 ~ eb3@5 ~ eb2 ~",
  Z: "g2@5 ~ db3 ~ d3@4 ~@2 g2 ~", AA: "gb2@5 ~ c3 ~ c3@5 ~ gb2 ~", AB: "f2@4 ~@2 b2 ~ c3@6 f2 ~",
  AC: "eb2@5 ~ a2 ~ bb2@4 ~@2 eb2 ~", AD: "db2@5 ~ db2 ~ ab2@6 db2 ~", AE: "gb1@5 ~ db2 ~ db2@5 ~ gb2 ~",
  AF: "gb2@5 ~ gb1 ~ db3@3 ~ db2@3 ~", AG: "eb2@5 ~ bb2 ~ bb2@4 ~@2 eb2 ~", AH: "eb2@5 ~ bb2 ~ bb2@3 ~ ab2 ~ g2 ~",
  AI: "gb1@5 ~ db2 ~ gb2@5 ~ db2 ~", AJ: "gb1@4 ~@2 db2 ~ db3@3 ~ db2 ~ d2 ~", AK: "eb2@6 a2 ~ bb2@5 ~ d2 ~",
  AL: "eb2@6 a2 ~ bb2@3 ~ bb1 ~ ab1 ~", AM: "a1@5 ~ a1 ~ eb2@4 ~@2 a1 ~", AN: "ab2@5 ~ eb3 ~ eb3@4 ~@2 ab2 ~",
  AO: "g2@4 ~@2 d3 ~ d3@5 ~ g2 ~", AP: "gb2@6 c3 ~ c3@5 ~ gb2 ~", AQ: "f2@5 ~ c3 ~ c3@6 f2 ~",
  AR: "bb1@5 ~ bb1 ~ f2@5 ~ f2 ~", AS: "eb2@4 ~@2 bb2 ~ bb2@4 ~@2 eb2 ~", AT: "f2@4 ~@2 bb2 ~ bb2@5 ~ e2 ~",
  AU: "f2@5 ~ b2 ~ b2@6 f2 ~", AV: "bb1@6 e2 ~ f2@6 bb1 ~", AW: "eb2@5 ~ a2 ~ bb2@5 ~ d3 ~",
  AX: "eb3@6 a2 ~ bb2@6 gb2 ~", AY: "f2@4 ~@2 b2 ~ b2@5 ~ f2 ~", AZ: "bb1@4 ~@2 f2 ~ f2@5 ~ bb1 ~",
  BA: "eb2@4 ~@2 bb2 ~ eb3@4 ~@2 bb2 ~", BB: "eb2@5 ~ bb2 ~ bb2@3 ~ bb1 ~ bb1 ~", BC: "a1@5 ~ a1 ~ eb2@5 ~ a1 ~",
  BD: "ab2@4 ~@2 ab2 ~ eb3@5 ~ ab2 ~", BE: "gb2@5 ~ c3 ~ c3@4 ~@2 gb2 ~", BF: "f2@4 ~@2 b2 ~ c3@5 ~ c2 ~",
  BG: "bb1@6 f2 ~ f2@5 ~ f1 ~", BH: "eb2@6 bb2 ~ eb3@4 ~@2 bb2 ~", BI: "f2@4 ~@2 f2 ~ b2@5 ~ b1 ~",
  BJ: "eb2@6 a2 ~ bb2@5 ~ e2 ~", BK: "f2@5 ~ b2 ~ b2@4 ~@2 f2 ~", BL: "bb1@5 ~ e2 ~ f2@4 ~@2 bb1 ~",
  BM: "eb2@6 bb2 ~ bb2@3 ~ bb1@3 ~", BN: "g2@5 ~ d3 ~ d3@4 ~@2 g2 ~", BO: "gb2@4 ~@2 b2 ~ c3@6 gb2 ~",
  BP: "f2@6 b2 ~ c3@5 ~ f2 ~", BQ: "bb1@5 ~ f2 ~ f2@6 f1 ~", BR: "db2@6 db2 ~ ab2@6 db2 ~",
  BS: "gb2@5 ~ db3 ~ db3@4 ~@2 gb2 ~", BT: "gb2@5 ~ db3 ~ db3@3 ~ f2 ~ e2 ~", BU: "eb2@4 ~@2 bb2 ~ bb2@5 ~ eb2 ~",
  BV: "eb2@4 ~@2 bb2 ~ bb2@4 ~@2 g2 ~", BW: "gb2@4 ~@2 db3 ~ db3@5 ~ gb2 ~", BX: "gb2@6 db3 ~ db3@5 ~ d2 ~",
  BY: "eb2@5 ~ bb2 ~ bb2@3 ~ bb1 ~ ab1 ~", BZ: "a1@4 ~@2 eb2 ~ eb2@5 ~ eb1 ~", CA: "g2@5 ~ d3 ~ d3@5 ~ g2 ~",
  CB: "gb2@5 ~ b2 ~ c3@6 gb2 ~", CC: "f2@5 ~ c3 ~ c3@5 ~ f2 ~", CD: "bb1@5 ~ bb1 ~ f2@6 f2 ~",
  CE: "eb2@4 ~@2 a2 ~ bb2@6 d3 ~", CF: "eb3@6 a2 ~ bb2@5 ~ e2 ~", CG: "bb1@4 ~@2 e2 ~ f2@5 ~ bb1 ~",
  CH: "eb2@5 ~ bb2 ~ bb2@6 eb2 ~", CI: "eb2@4 ~@2 bb2 ~ bb2@3 ~ bb1 ~ e2 ~", CJ: "f2@4 ~@2 b2 ~ b2@6 f2 ~",
  CK: "bb1@5 ~ f2 ~ f2@6 bb1 ~", CL: "eb2@5 ~ bb2 ~ bb2@6 bb1 ~", CM: "ab2@5 ~ d3 ~ eb3@6 ab2 ~",
  CN: "g2@5 ~ d3 ~ d3@6 g2 ~", CO: "eb2@4 ~@2 bb2 ~ bb2@3 ~ g2 ~ gb2 ~", CP: "bb1@6 f2 ~ f2@4 ~@2 bb1 ~",
  CQ: "eb2@5 ~ bb2 ~ bb2@4 ~@2 e2 ~", CR: "f2@6 b2 ~ b2@4 ~@2 f2 ~", CS: "bb1@5 ~ bb1 ~ f2@4 ~@2 bb1 ~",
  CT: "eb2@6 bb2 ~ bb2@5 ~ ab1 ~", CU: "a1@4 ~@2 eb2 ~ eb2@6 a1 ~", CV: "gb2@4 ~@2 c3 ~ c3@5 ~ gb2 ~",
  CW: "f2@6 c3 ~ c3@5 ~ f2 ~", CX: "bb1@6 f2 ~ f2@5 ~ bb1 ~", CY: "eb2@4 ~@2 a2 ~ bb2@6 eb2 ~",
  CZ: "db2@6 ab2 ~ ab2@5 ~ ab1 ~", DA: "gb2@5 ~ db3 ~ db3@5 ~ gb2 ~", DB: "gb2@5 ~ db3 ~ db3@5 ~ d2 ~",
  DC: "eb2@6 bb2 ~ bb2@5 ~ eb2 ~", DD: "eb2@5 ~ bb2 ~ bb2@5 ~ g2 ~", DE: "gb2@4 ~@2 db3 ~ db3@3 ~ db2@3 ~",
  DF: "eb2@6 bb2 ~ eb3@5 ~ bb2 ~", DG: "eb2@4 ~@2 a2 ~ bb2@3 ~ b1 ~ bb1 ~", DH: "a1@5 ~ d2 ~ eb2@6 a1 ~",
  DI: "ab2@5 ~ ab2 ~ eb3@5 ~ ab2 ~", DJ: "g2@5 ~ db3 ~ d3@6 d2 ~", DK: "bb1@5 ~ bb1 ~ f2@4 ~@2 f2 ~",
  DL: "eb2@6 bb2 ~ bb2@4 ~@2 eb2 ~", DM: "ab2@5 ~ eb2 ~ eb2@5 ~ eb2 ~", DN: "eb2@5 ~@11",
})).s("gm_acoustic_bass").gain(0.5)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@2 A B C D E F C D G H I J K@2 L@2 E B M D E B N@2 O P Q R@3 S T U@4 V@2 W@2 X Y Z AA AB@2 AC AD@2 AE@3 AF AG AH@3 AI
  AJ AK AL@4 AM AN AO AP AQ AN AO AR AS AT AU AV AW@4 V@2 AX@8 AY AZ@5 BA@2 BB BC AY BD@7 BE@4 BF BG BH D E F BI@2 BJ@2
  BK BL BM@8 BN@2 BO@2 BP@2 Z BQ@3 BR BS BT
>`.pickRestart({
  A: "[gb4,bb4]@7 ~", B: "[f4,ab4]", C: "[d4,g4]@15 ~", D: "[c4,g4]@15 ~", E: "[gb4,bb4]", F: "[f4,ab4]@15 ~",
  G: "[a3,eb4,g4]", H: "[ab3,eb4,gb4]@15 ~", I: "[bb3,d4,f4]@15 ~", J: "[a3,c4,eb4]@7 ~",
  K: "[[b3,c4] ~ c4@5 ~ bb3@22 ~@2, [f3,ab3]@15 ~, eb4@7 ~@25]/2", L: "[[g3,bb3,eb4]@25 ~@7]/2",
  M: "g4@15 ~, d4@13 ~@3", N: "[d4@15 ~ c4@15 ~, g4]/2", O: "[c4,eb4]@15 ~", P: "[b3,eb4]", Q: "~ [d4,f4]@15",
  R: "[a3@6 ~@2 gb3@7 ~ ab3@7 ~ [ab3,bb3]@23 ~, eb4@23 ~@25, c4@7 ~ f3@15 ~]/3", S: "[g3,bb3,eb4]@15 ~",
  T: "~@3 ab4@4 ~, ~ db4@12 ~@3, ~@3 f4@10 ~@3", U: "[~@3 db5@28 ~ eb5@32, bb4@63 ~, gb4@16 g4@15 ~]/4",
  V: "[[gb4,bb4,db5]@31 ~]/2", W: "[[g4,bb4,eb5]@15 ~]/2", X: "g5", Y: "gb5", Z: "f5@15 ~", AA: "eb5 c5",
  AB: "[c5@15 [bb4,d5]@15 ~@2, [f4,ab4]@15 ~]/2", AC: "[g4,bb4,eb5]@15 ~", AD: "[f5@4 g5@3 ab5@4 ~ bb5@20]/2",
  AE: "[ab5@15 g5@32 ~]/3", AF: "bb5", AG: "ab5", AH: "[~@32 g6 ~@15, g5@47 ~]/3", AI: "gb6", AJ: "f6", AK: "c5@15 ~",
  AL: "[~@10 ab5@5 ~@17 [eb5,g5]@27 ~@5, f5 ~, ~@15 bb5@44 ~@5]/4", AM: "[b4,eb5,gb5,bb5]@15 ~", AN: "[d5,f5,ab5]@15 ~",
  AO: "[bb4,d5,g5]@15 ~", AP: "[bb4,c5,g5]@7 ~", AQ: "[b4,eb5,bb5]@15 ~, gb5@3 ~@13", AR: "[bb4,c5,g5]@15 ~",
  AS: "[a4,c5,eb5,g5]@15 ~", AT: "[ab4,gb5]@15 ~", AU: "[g4,bb4,d5,f5]@15 ~", AV: "[gb4,a4,eb5]@15 ~",
  AW: "[[ab4,c5]@8 ~@23 g4@19 [f4,ab4]@11 ~@3, f4@31 ~@33, ~@8 bb4@43 ~@13]/4", // Ab Fm
  AX: "[~ eb5@6 f5@4 g5@7 bb5@13 ~@24 bb5@8 [eb5,g5]@18 ~ bb5@5 g5@4 eb5@4 c5@16 b4@16 ~, ~@31 [db5,gb5]@31 ~@66]/8", // Eb Gb5
  AY: "bb4",
  AZ: "[a4@15 ~@16 [bb4,d5]@16 ~ eb5@18 ~@4 c5@2 bb4@7 ~, ~@15 ab4@31 ~ [g4,bb4]@15 ~@6 ab4@4 ~@8, ~@16 f4@31 ~@19 f4@13 ~]/5", // Bb Gm
  BA: "[~@4 bb4@3 ab4@9]/2", BB: "g4@5 d5@3, ~@10 db5 ~@5", BC: "c5",
  BD: "[ab4@15 g4@11 d5@5 c5@10 d5@2 eb5@2 f5@2 ~ g5@15 gb5@15 ~ f5@18 ~ eb5@5 d5@4 ~ c5@3 ~, ~@26 db5 ~@20 gb5@2 ~@63]/7",
  BE: "[ab4@15 f4@17 [eb4,g4]@28 ~@4, ~@15 bb4@45 ~@4]/4", BF: "[b3,eb4,gb4,bb4]@15 ~", BG: "[d4,f4,bb4]",
  BH: "[d4,g4]", BI: "[d4@15 ~ c4@12 ~@4, g4@29 ~@3]/2", BJ: "[~@7 f5@4 g5@5 [b4,gb5]@16, c5@15 ~@17, ~@2 eb5@29 ~]/2",
  BK: "[bb4,f5]@15 ~, d5@13 ~@3", BL: "[gb4,a4,c5]",
  BM: "[~@32 [eb4,g4]@17 ~@15 [gb4,db5]@31 ~ [eb4,g4]@30 ~@2, f4@29 ~@22 db4@46 ~@31, ab4 ~@7, ~ bb4@15]/8", // Eb Gb5 Eb
  BN: "[[gb4,db5]@7 ~, db4]/2", BO: "[[eb4,g4,bb4]@15 ~]/2", BP: "[g5@15 gb5@16 ~]/2",
  BQ: "[f5@2 e5@3 eb5@7 d5@2 db5 c5@5 ~@11 [f4,ab4]@15 ~@2, ~@21 bb4@25 ~@2]/3", BR: "[g4,bb4,eb5]",
  BS: "[c5,eb5], ab4@7 ~", BT: "[g4,bb4,eb5] ~@15",
})).s("gm_synth_strings_1").gain(0.38).pan(0.4)

// other · flute
const flute = note(`<
  ~@4 A@2 ~@2 B C@2 D E F G H I J K L M@3 N O P Q R S T@2 ~@2 U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
  AP AQ ~ AR AS AT AF AU@2 AV ~ AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ ~ BR BS BT BU BV@2 BW BX
  BY BZ CA CB CC CD@3 CE CF@2 CG CH CI@2 CJ CK ~ CL CM CN CO CP CQ CR CS CT CU CV CW CX@5 CY@2 CZ DA DB DC DD DE DF DG
  DH DI DJ DK ~@2
>`.pickRestart({
  A: "[~@14 gb5 g5@2 ~ f5@2 ~ d5@2 ~ c5@6 ~@2]/2", B: "~@2 g5@2 ~@2 g5@4 ~ f5@2 d5@2 ~, ~@2 gb5 ~@13",
  C: "[c5@2 d5@2 ~ c5@2 ~ eb5@2 d5 c5 ~ bb4@2 c5@2 ~@15]/2", D: "~@2 b4@2 ~ b4@2 ~ b4@2 ~@6",
  E: "~@13 c5 ~ d5, ~@6 bb4 ~", F: "~ bb4 ~ gb4 ~ gb4@2 ~@9", G: "~@6 [c5,eb5] f5 ab5@2 f5 ~ eb5 ~@2 db5",
  H: "d5@2 bb5 ~@13", I: "~@6 bb5 eb6@2 ~ c6@2 ~@2 g6@2",
  J: "~ eb6@2 ~@2 bb5@2 g5 bb5 g5 ~ gb5@2 g5 ab5 a5, ~@2 c6 ~@5", K: "bb5 ~@7", L: "~@2 ab5@2 ~@2 bb5@2 ab5@5 ~@3",
  M: "[~ f5 gb5 g5@2 bb5@2 c6@2 db6@2 ~@2 eb6 ~ f6@2 gb6 g6@2 ~ [f6,g6] f6 eb6@2 ~ d6@2 c6 ~ bb5@7 ~@11, ~@6 d6 ~@17]/3", // Fsus2
  N: "~ ab5 bb5 ab5@3 ~@2", O: "~ f5 gb5 g5@2 ~ a5@2 bb5@2 ab5@2 g5@2 bb5@2",
  P: "[ab5,bb5] ab5 g5@2 f5@2 eb5@2 d5@2 c5@2 d5@2 eb5@2", Q: "~ c5@3 ~@9 eb5@2 ~, ~@6 c5 ~", R: "b4", S: "bb4@15 ~",
  T: "[~@4 gb4 a4 c5 eb5@2 c5@2 a4 ~ gb4@2 f4@2 ~ ab4@2 f4@2 ~@10]/2",
  U: "[db5@2 eb5 ~@2 gb5@2 ~ ab5 ~ bb5 ab5 bb5 ab5 gb5@5 ~ bb5@2 db5 ~@9, ~@2 f5 ~@13]/2",
  V: "~@2 db5 gb5@2 ~ bb5 ~ db6@2 bb5@2 ~@4", W: "~ g5 bb5 eb6@2 ~ eb6 ~@2 g6@2 ~ eb6@2 g6@2, ~@3 c6 ~@12",
  X: "~@2 eb6 ~@3 g6@2 [eb6,g6] eb6 ~@3 g5@2 ~, ~@6 bb5 ~", Y: "gb5 ~ bb5 ~@3 bb5 ~@9",
  Z: "~ gb5 [ab5,bb5] eb6 ~@2 bb5 ~@9", AA: "~@4 g5 bb5 c6 [c6,eb6] ~ bb5 g5 ~ eb5 ~ c5@2",
  AB: "bb4 g4@2 ~@2 c5@2 eb5@2 c5 eb5 c5 bb4 ~@3, ~@2 bb4 ~@5", AC: "~ c5 d5 eb5 f5 gb5 g5 ~ eb6@2 c6@2 bb5 ~ g5@2",
  AD: "~@6 ab5@2 ~ b5@2 ~ eb6@2 b5@2", AE: "~@3 g5@2 ~ bb5@2 d6@2 f6 ~ d6 ~ g5@2, ~@14 bb5 ~", AF: "gb5 ~@7",
  AG: "~@2 f6@3 ~ eb6@2 c6@2 ab5@2 f5@2 ab5 ~, ~@2 eb6 ~@13",
  AH: "bb5@2 ab5 bb5 f5@2 eb5@2 c5@2 bb4 ~ g4@2 gb4@2, ~@4 ab5 ~@11", AI: "g4@2 bb4@2 eb5@2 c5@2 ~@2 bb4@2 g4@2 ab4 ~",
  AJ: "f4@2 ab4@2 bb4 c5 ~ db5 d5 f5 ab5 ~ bb5@2 ~@2", AK: "~@6 [g5,bb5] c6 g6@2 ~ eb6@2 ~ c6@2, ~@8 eb6 ~@7",
  AL: "bb5@2 ab5@3 ~ bb5@2 ~ ab5@2 f5@2 ~ gb5@2", AM: "g5@2 bb5 d6@2 ~ c6@2 d6 ~ c6@2 bb5@2 g5@2, ~@3 c6 ~@12",
  AN: "c6 d6 [bb5,c6] ~ g5@2 gb5 ~ f5@2 eb5 ~ d5@2 db5 ~", AO: "b4@3 eb5@2 gb5 ~@2 bb5@2 ~@2 bb5 ~ bb5 ~",
  AP: "ab5@2 bb5@2 ~ ab5 bb5 ab5 f5@2 eb5@2 ~ f5@2 gb5", AQ: "g5@3 eb5@2 ~ eb5@2 ~@8",
  AR: "~@2 gb5 g5@2 ~ c6@2 d6 ~ eb6@2 [d6,eb6] d6 c6 ~", AS: "b5@3 ~@9 eb6@2 d6@2",
  AT: "bb5@2 db6@2 d6@2 g5@2 bb5 ~ d6@2 [bb5,d6] bb5 g5@2", // Bb
  AU: "[[eb6,f6] eb6 c6 ~ bb5 ~ ab5@2 f5 eb5@2 c5 eb5 f5 eb5 c5@2 ~ bb4 ~ ab4 f4@2 eb4@2 ~ c4@2 db4@2 d4@2]/2", // Ebsus2
  AV: "eb4@2 eb4@2 ab4 ~@11", AW: "~@8 c5 ~ eb5@2 c5 ~@3", AX: "~@8 bb4@2 eb5 ~ bb4 ~@3",
  AY: "~@3 bb4 d5@2 bb4@2 ~@2 d5@2 bb4@2 ~@2, ~@10 bb4 ~@5", AZ: "c5 bb4 ~ c5 bb4 ~@3, bb4 ~@15",
  BA: "~@6 [b4,eb5] ~ bb5@2 gb5 ~@3 bb5 ~", BB: "~@2 ab5 ~@3 f5 ~@9",
  BC: "~@2 d6@3 c6@2 ~ d6@3 ~ c6 ~ d6@2, ~@2 db6 ~@13", BD: "~@2 c6@2 ~@2 d6@3 c6 d6 c6 bb5@2 c6@2",
  BE: "d6@2 eb6@2 f6@2 gb6@2 g6 ~ [f6,g6] f6 eb6@2 d6@2", BF: "gb6@2 ~@4 b5@2 eb6 ~ gb6@2 [eb6,gb6] eb6 b5@2",
  BG: "bb5@2 a5@2 ab5@2 g5@2 d6@3 c6@2 bb5@2 ~, ~@8 c6 ~@7", BH: "g5@2 gb5@11 ab5!2 [gb5,g5]",
  BI: "f5@2 ab5 ~ c6 eb6@2 ~ gb6 ~@7", BJ: "~@2 [f5,ab5] bb5@2 bb5@2 ~ bb5@2 bb5@2 ~ bb5 ~ ab5",
  BK: "a5 bb5@2 ~ g5@2 bb5@2 ~@2 g5@2 ~@4", BL: "~@2 bb5 ~ [ab5,bb5] ab5 f5 ~ eb5@2 db5 ~ c5 bb4@2 ~", BM: "ab4 ~@15",
  BN: "~@2 [gb5,bb5] [db6,gb6] ~@2 db6 ~@9", BO: "~@4 gb6 g6 bb6 g6 bb6 g6 bb6 g6 bb6 g6 bb6 g6",
  BP: "bb6 ~ gb6 ~ g6 ~ bb6@2 [g6,bb6] g6 ~ gb6 ~@4", BQ: "~@6 gb6 ~ bb6@2 [gb6,bb6] gb6 ~@4",
  BR: "~@2 g6@2 ~@2 bb6@2 [g6,bb6] g6 ~@2 eb6 ~ c6@2, ~@2 gb6 ~@13", BS: "g6@2 eb6@2 c6 ~ bb5@2 a5@2 ab5@2 g5@2 bb5 ~",
  BT: "eb6 ~ c6 bb5 ~ g5 ~ ab5, c6 ~@15", BU: "~ bb5 b5@12 bb5 ab5",
  BV: "[g5@3 bb5 ~ c6@2 ~ db6@2 d6@2 [c6,d6] c6 bb5 g5@2 ~ gb5@2 ~@2 gb5@2 ~@2 gb5@2 ~ gb5 ab5 gb5]/2", // Csus2
  BW: "f5@2 ab5 ~ c6@2 eb6@2 f6@2 eb6@2 ~@4, ~@4 b5 ~@11", BX: "~@2 bb5@2 ~@2 bb5@2 ab5@2 ~ eb6 ~@4, ~@2 ab5 ~@13",
  BY: "~@2 eb6@2 ~@2 bb5@2 eb6 ~ bb5@2 g5@2 ab5@2", BZ: "bb5 ab5 bb5 f5@2 ~ eb5@2 d5 c5 ~ bb4@2 ab4@2 ~, ~@3 ab5 ~@12",
  CA: "bb4 ~@7", CB: "~ ab4@2 ~ ab4 ab4@2 ~@9", CC: "~@8 g4@2 bb4 c5@2 db5 d5@2",
  CD: "[~@2 c5@3 d5@2 ~ c5@3 ~ b4@2 bb4@17 ab4@15 ~@2, ~@12 c5 ~@35]/3", CE: "~@2 g4@2 bb4@2 c5@2 d5@2 c5@2 d5 ~ c5 ~",
  CF: "[eb5@2 d5@2 c5@2 bb4@3 ~ a4@2 ab4@2 g4@12 [c5,eb5] c5 g4@4]/2", CG: "~@2 gb4@12 f4 gb4",
  CH: "g4@2 a4 ~ bb4@2 ~ db5@2 ~@2 c5 d5 c5 bb4@2, ~@3 c5 ~ d5 ~@2", CI: "[a4@15 ab4@2 ~ bb4@2 f4@2 ab4@3 ~@7]/2",
  CJ: "~@3 ab4@2 bb4@2 ~ [ab4,bb4] ab4 f4@2 ab4@2 bb4@2, ~ f4 ~@6", CK: "g4", CL: "~@4 bb4 ~ ab4 bb4",
  CM: "~ ab4@2 ~ bb4@2 ~ ab4@2 ~ bb4@2 ~@2 ab4@2",
  CN: "bb4@2 g4@2 ~ c5@2 ~ d5@2 [db5,d5] ~ [db5,d5] ~ d5 ~, ~@2 bb4 ~@5", // Dmaj7
  CO: "d5@2 ~ c5@2 ~ c5@2 ~@2 c5@2 ~ g4@2 ~, db5 ~@11 bb4@2 ~@2", CP: "ab4@2 ~ bb4@2 ~ ab4@2 ~@2 bb4@2 ab4@2 ~@2",
  CQ: "bb4@2 ab4@2 ~@2 bb4@2 ab4@2 ~ bb4@2 ~ ab4@2", CR: "g4@2 bb4 ~ c5@2 d5@2 ~@2 d5@2 ~@2 d5@2",
  CS: "c5@3 ~@3 c5@2 d5 eb5@2 f5@2 gb5@2 ~, db5 ~@15", CT: "g5@2 [f5,g5] f5 eb5@2 d5@3 ~ c5@2 eb5@2 f5@2",
  CU: "[f5,gb5] ~@2 gb5@2 ~ gb5@2 ~@2 gb5@2 ~@4", CV: "~@2 g5@2 a5 ~@2 c6@2 db6@2 ~ d6@2 c6@2, ~@2 gb5 ~@3 bb5@2 ~@8",
  CW: "d6@2 c6@2 bb5 ~ a5@8 bb5@2", CX: "[a5 ab5@17 bb5@3 ab5@3 bb5@3 ab5@3 bb5@33 db6@10 ~ eb6@2 f6@2 gb6@2]/5",
  CY: "[bb6@2 ab6 [ab6,bb6] gb6@2 f6@2 eb6@2 db6@2 ~ db6 d6 eb6@3 ~ c6@2 bb5@2 ~ g5@2 eb6@2 ~@2 c6@2, ~@6 c6 ~@9]/2", // Absus2
  CZ: "bb5 g5 gb5 g5 bb5 c6 eb6 db6", DA: "~@2 eb6@2 ~@2 f6@2 ~@2 gb6@2 ab6@2 bb6 ~",
  DB: "[ab6,bb6] ab6 gb6 ~ f6@2 eb6@2 db6@2 c6 ~ bb5@2 g5@2", DC: "eb6@2 ~ c6@2 ~ bb5@2 ~@6 [g5,bb5] c6",
  DD: "eb6@2 c6@2 bb5@2 [db6,d6] ~@3 eb6@2 ~ eb6@3", DE: "~@2 [db6,d6] c6@2 ~ eb6@2 f6@2 ~ g6@2 gb6@3, ~@5 gb6 ~@2",
  DF: "~@2 f6@3 e6@4 ~ eb6@2 d6@2 db6@2", DG: "c6 ~ db6 [d6,eb6] e6 ~ f6@2 e6 ~ eb6 d6 ~ db6 c6 bb5",
  DH: "a5@11 c6 b5 bb5 a5 ~", DI: "ab5@3 ~ f5@2 ab5@3 ~ bb5@2 ab5@2 f5@2",
  DJ: "ab5 bb5@2 ab5 bb5 ab5 f5@2 eb5 ~ c5@2 bb4 ~ ab4@2", DK: "bb4@7 ~",
})).s("gm_flute").gain(0.51).pan(0.9)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A B C D E B F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT A B C D E B F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  A B C D E B F G H I J K L@2 M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AU AV AW
>`.pickRestart({
  A: "[eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4] ~@3 [eb4,gb4,bb4]@4 [eb4,gb4,bb4] ~@3", // Ebm
  B: "~@2 [d4,f4,ab4] ~@3 [d4,f4,ab4]@5 ~ [d4,f4,ab4] ~@3", // Ddim
  C: "[bb3,d4,g4]@4 [bb3,d4,g4] ~@3 [d4,g4]@3 ~ [d4,g4] ~@3, ~@2 bb3 ~", // Gm G5
  D: "~@2 [bb3,c4,g4] ~@3 [bb3,c4]@6 [c4,g4] ~@3, ~@6 g4@5 ~@5", // C7 Bbsus2 C5
  E: "[b3,eb4,bb4]@3 ~ [b3,eb4,bb4] ~@3 [eb4,bb4]@3 ~ [eb4,bb4]@2 ~@2, ~@2 b3 ~", // Bmaj7 Eb5
  F: "[bb3,d4,g4]@3 ~ [bb3,d4,g4] ~@3 [bb3,d4,g4]@3 ~ [bb3,d4,g4] ~ bb3 ~", // Gm
  G: "~@2 [bb3,c4,g4] ~@3 [bb3,c4,g4]@5 ~ [bb3,c4,g4] ~@3", // C7
  H: "[c4,eb4]@3 ~ [c4,eb4] ~@3 [c4,eb4]@3 ~ [c4,eb4] ~@2 ab3, a3 ~ a3 ~", // Cm
  I: "~@2 [ab3,b3,eb4,gb4] ~@3 [ab3,b3,eb4,gb4]@5 ~ [ab3,b3,eb4,gb4] ~@3", // Abm7
  J: "[g3,bb3,d4,f4]@3 ~ [g3,bb3,d4,f4] ~@3 [g3,bb3,d4,f4]@3 ~ [g3,bb3,d4,f4] ~@3", // Gm7
  K: "~@2 [a3,c4,eb4] ~@3 c4@2 [c4,eb4]@4 [a3,c4,eb4] ~@3, ~@3 a3@3 ~@2, ~@6 eb4 ~@9", // Adim Cm Adim
  L: "[[ab3,eb4]@3 ~ [ab3,eb4] ~@3 [f3,ab3,eb4]@3 ~ [f3,ab3,eb4] ~ [f3,ab3]@6 [ab3,bb3] ~ [f3,ab3,bb3] ~@3 [f3,ab3,bb3] ~@5, f3@4 ~@10 bb3@5 ~@13]/2", // Ab5 Fm7 Fm Absus2 Bb7
  M: "~@2 [g3,bb3,eb4] ~@3 eb4@2 eb4@3 ~ [bb3,eb4] ~@3, ~@6 g3@7 ~@3, ~@6 bb3@5 ~@5", // Eb Eb5
  N: "[g3,bb3,eb4]@2 eb4 ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@5", // Eb
  O: "[b3,eb4,bb4] ~ [b3,eb4,bb4] ~@5 [eb4,bb4] ~ [eb4,bb4] ~@5, ~@4 b3 ~@3", // Bmaj7 Eb5
  P: "[d4,f4] [ab4,bb4] ~ [d4,f4,ab4,bb4] ~ [d4,f4,ab4,bb4]@2 ~, [ab4,bb4] ~@15", // Dm Absus2 Bb7 Absus2
  Q: "~@2 [bb3,d4,g4] ~@3 d4@2 d4@3 ~ [bb3,d4,g4] ~@3, ~@3 [bb3,g4]@3 ~@2", // Gm Eb
  R: "[c4,g4] ~ [c4,g4]@2 [c4,g4]@2 [c4,g4]@2 ~@2 [bb3,c4,g4] ~@5, bb3 ~", // C5 C7
  S: "~@2 [b3,gb4,bb4] ~@3 [gb4,bb4]@2 [gb4,bb4]@3 ~ [b3,gb4,bb4] ~@3, ~@6 b3@5 ~@5", // Bmaj7 Gb Bmaj7
  T: "~@2 [d4,f4,ab4] ~@3 [f4,ab4]@2 [f4,ab4]@3 ~ [d4,f4,ab4] ~@3, ~@6 d4@5 ~@5", // Ddim Fm Ddim
  U: "~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4]@5 ~ [bb3,d4,g4]@2 ~@2", // Gm
  V: "[bb3,g4]@2 c4 ~ [bb3,c4,g4]@2 [bb3,c4,g4] ~@3 [bb3,c4,g4] ~@5, c4 ~@15", // Eb C7
  W: "~@2 [g3,c4,eb4] ~@3 [a3,c4,eb4]@5 ~ [a3,c4,eb4] ~@3", // Cm Adim
  X: "~@2 [ab3,b3,eb4,gb4]@2 ~@2 [ab3,b3,eb4,gb4]@5 ~ [ab3,b3,eb4,gb4] ~@3", // Abm7
  Y: "~@2 g3 ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [g3,bb3,d4,f4]@2 [g3,bb3,d4,f4]@2 ~@4, ~@2 g3 ~@5", // Bb Gm7
  Z: "~@2 [a3,c4,eb4] ~@3 a3@5 ~ [a3,c4,eb4] ~@3, ~@5 [c4,eb4]@5 ~@6", // Adim Cm
  AA: "[ab3,eb4]@3 ~ [ab3,eb4] ~ [f3,ab3,bb3]@6 [f3,bb3] ~ [f3,bb3] ~, f3@2 ~@4 ab3 ~", // Ab5 Bb7 Bb5
  AB: "~@2 [f3,ab3,bb3] ~@3 [f3,ab3,bb3]@5 ~ [f3,ab3,bb3] ~@3", // Bb7
  AC: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]@5 ~ [g3,bb3,eb4] ~@3", AD: "~@6 ab4@9 ~, ~ db4@6 ~, ~@4 f4@11 ~",
  AE: "~@2 [db4,gb4,bb4] ~@3 db4 ~ [db4,gb4]@4 [gb4,bb4] ~ db4 ~, ~@8 bb4@3 ~@5", // Gb Gb5 Gb
  AF: "~@2 [db4,gb4,bb4] ~@3 [db4,gb4,bb4] ~@4 [db4,gb4,bb4] ~@4", // Gb
  AG: "~@4 [g4,bb4] ~ [g4,bb4] ~ [g4,bb4]@2 ~@2 [eb4,g4,bb4] ~ [eb4,g4,bb4]@2, ~@2 eb4@7 ~@7", // Gm Eb
  AH: "~@2 [eb4,g4,bb4]@2 ~@2 [g4,bb4]@6 [g4,bb4] ~@3, ~@3 eb4@4 ~", // Eb Gm
  AI: "~@2 db4@2 [gb4,bb4]@2 gb4@2 [gb4,bb4]@2 db4 ~ [db4,gb4,bb4] ~ [db4,gb4,bb4]@2, ~@3 db4@2 ~@3, ~@6 bb4 ~@9", // Gb
  AJ: "~@2 db4 ~ [db4,gb4,bb4] ~ [db4,gb4,bb4]@3 ~ db4 ~ [db4,gb4,bb4] ~ eb4 ~", // Gb
  AK: "~@2 eb4 ~ [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4,bb4]@2 ~@4 [eb4,g4,bb4] ~", // Eb
// … 106 more lines

More by Cole Porter