Strudelify

I've Got You Under My Skin

Cole Porter

KeyA♭ majorTempo132 bpm
0:00/0:00
// I've Got You Under My Skin — Cole Porter
// 132 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 116 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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(`<
  ~ A B A C D E F G H I J K L M N O P Q R S P T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@2 AR AS
  AT AU@8 AV AW AX@3 AY@4 AZ@2 BA BB BC BD BE@5 BF BG BH BI BJ BK@2 BL@8 BM@3 BN BO BP BQ BR BS BT BU@2 BV@2 BW@5 BX@3 ~
>`.pickRestart({
  A: "~ db2@10 ~ db2 ab2@11", B: "~ db2@10 ~ ab2@7 ab1@5", C: "~ db2@10 ~ ab2@7 ab2@5", D: "~ db2@9 ~@2 db2 ab2@11",
  E: "~ db2@9 ~@2 ab2@7 db2@5", F: "~ eb2@10 ~@2 ab2@10 ~", G: "~ eb2@8 ~@3 ab1@6 ~ ab2@4 ~", H: "~ db2@9 ~@3 ab2@10 ~",
  I: "~ db2@8 ~@2 ab2@6 ~@2 db2@4 ~", J: "~ eb2@9 ~@3 eb2@10 ~", K: "~ ab1@9 ~@2 ab2@9 ~@3", L: "db2@5 ~ ab2@5 ~",
  M: "db2@5 ~ ab2@2 ~ db2@2 ~", N: "eb2@11 ~ eb2@12", O: "ab2@11 ~ ab1@12", P: "db2 ab2", Q: "db2 bb1",
  R: "eb2@10 ~@2 eb2@11 ~", S: "ab1 ab2", T: "db2@9 ~ ab2@7 ~ db2@6", U: "eb2@9 ~@3 eb2@11 ~", V: "ab2@9 ~ ab1@8 ab2@6",
  W: "db2@6 ab2@5 ~", X: "db2@4 ~ ab2@3 ~ ab2@2 ~", Y: "gb2@11 ~ db3@10 ~@2", Z: "gb2@9 ~@3 gb2@4 ~@2 ab2@4 ~@2",
  AA: "db2@10 ~@2 ab2@9 ~@3", AB: "db2@4 ~ ab2@3 ~ db2@2 ~", AC: "c2@10 ~@2 c2@11 ~", AD: "f1@9 ~ f2@14",
  AE: "a1@11 ~ bb1@11 ~", AF: "d2@5 ~ d2@5 ~", AG: "eb2@3 ~ eb2@3 ~", AH: "ab1@10 ~@2 ab1@6 c2@5 ~",
  AI: "db2@12 ab2@9 ~ ab2@2", AJ: "db2@9 ~ ab2@7 ~ d2@5 ~", AK: "eb2@4 ~@2 eb2@5 ~ bb2@4 ~@2 bb2@5 ~",
  AL: "ab2@4 ~@2 ab2@5 ~ eb2@4 eb2@2 ab2@4 ab2 ~", AM: "db2@4 ~@2 db2@6 ab2@4 ~@2 ab2@5 ~",
  AN: "d2@6 eb2@6 e2@6 f2@5 ~", AO: "gb2@5 ~ f2@6 eb2@6 db2@5 ~", AP: "gb1 c2 db2 gb2",
  AQ: "[f2@4 ~@2 f2@5 ~ e2@4 ~@2 d2@4 eb2@8 g2@6 ab2@5 ~ a2@5 ~]/2", AR: "bb2@6 ab2@6 f2@5 ~ bb1@6",
  AS: "eb2@6 g2@6 ab2@5 ~ d2@6", AT: "db2 ab1 bb1 db2",
  AU: "[e2@4 ~@2 e2@5 db2@5 ~ d2@5 ~ eb2@6 g2@5 ~ ab2@4 ~@2 bb2@5 ~ eb2@4 ~@2 eb2@4 ~@2 d2@4 ~@2 d2@4 ~@2 db2@4 ~ db2@4 ~ g2 ab2@6 g2@5 ~ ab2@4 ~@2 ab2@5 ~ db2@4 ~@2 db2@4 ~@2 gb1@4 ~@2 gb1@6 ~ db2@6 f2@6 gb2@4 ~@2 gb2@6 b1@6 c2@5 ~ db2@5 ~ ab1@6 ~ bb1@6 db2@6]/8",
  AV: "b1@4 ~@2 b1@6 bb1@6 d2@5 ~", AW: "~ eb2@10 ~@2 eb2@9 ~@2",
  AX: "[a1 ab1@10 ~@2 ab1@6 ~ c2@6 db2@4 ~@2 db2@6 ab2@4 ~@2 ab2@6 db3@4 ~@2 db3@4 ~ gb2 ab2@4 ~@2 ab1@4]/3",
  AY: "[~@2 db2@4 ~@2 db2@6 ab2@4 ~@2 ab2@6 db3@4 ~@2 db3@4 ~ gb2 ab2@4 ~@2 ab1@4]/2",
  AZ: "[~@2 db2@4 ~@2 db2@6 ab2@4 ~@2 ab2@6 db3@4 ~ db3@4 ~ gb2 ab2@4 ~@2 ab1@4 ~]/2",
  BA: "~ eb2@4 ~@2 eb2@5 ~ ab2@4 ~@2 ab2@5", BB: "~ eb2@4 ~@2 eb2@5 ~ ab1@5 ~ ab2@5",
  BC: "~ db2@4 ~ db2@5 ~ ab2@4 ~@2 ab2@4 ~ ab2", BD: "db2@5 ~ db2@5 ~ ab2@5 ~ db3@4 ~@2",
  BE: "[gb2@4 ~@2 gb2@5 ~ db3@5 ~ db2@5 gb2@4 ~@2 g2@5 ~ ab2@4 ~@2 ab2@5 ~ db2@4 ~@2 db2@5 ~ ab2@4 ~@2 ab2@4 ~@2 db3@5 ~ g2@5 ~ ab2@5 ~ db3@5 ~ c3@5 ~ g2@5 ~ eb2@5 ~@2 c2@4 ~@2]/5",
  BF: "f1@5 ~ c2@6 f2@4 ~@2 f2@5 ~", BG: "a1@4 ~@2 bb1@6 f2@5 ~@2 g2@4 ~", BH: "~ bb2@5 ~ a2@5 ~ bb2@4 ~@2 d2@5",
  BI: "~ eb2@4 ~@2 eb2@6 ~ bb1@4 ~@2 bb1@4", BJ: "~@2 ab2@5 ~ ab2@5 ~ eb2@5 ~ ab2@4",
  BK: "[~@2 db2@4 ~@3 db2@6 ab2@4 ~@2 ab2@5 ~ db2@5 ~ db2@3 ~@2 ab2@6 ~ d2@3]/2",
  BL: "[~@3 eb2@5 ~ f2@5 ~@2 gb2@5 ~ g2@5 ~ ab2@4 ~@2 ab2@5 ~ eb2@5 ~ d2@5 ~ db2@6 g2@6 ab2@5 ~ c3@5 ~ db3@5 ~ db2@6 ab2@5 ~ db2@6 gb2@4 ~@2 gb2@6 db3@4 ~@2 db3@6 gb2@5 ~ gb2@6 db3@5 ~ gb2@6 ~ f2@4 ~@2 f2@6 e2@5 ~ e2@4 eb2@7 ~ g2@6 ab2@4 ~@2 a2]/8",
  BM: "[~@5 bb2@5 ~ ab2@5 ~ f2@5 ~ bb1@5 ~ eb2@6 g2@5 ~ ab2@5 ~ d2@5 ~ db2@4 ~@2 ab1@6 bb1@5 ~@2]/3",
  BN: "db2@6 e2@3 ~@3 e2@5 ~ db2@4 ~@2", BO: "d2@6 eb2@5 ~ g2@5 ~ ab2@5 ~", BP: "bb2@4 ~ bb2 eb2@5 ~ eb2@5 ~@2 d2@4 ~",
  BQ: "~ d2@5 ~ db2@6 f2@6 gb2@5", BR: "~ g2@5 ~ ab2@4 ~@2 ab2@5 ~ db2@4 ~", BS: "~ db2@5 ~ gb1@5 ~@2 a1@6 bb1@4",
  BT: "~ f2@3 gb2@2 ~ gb2@2 ~ b1@2", BU: "[~@2 c2@5 ~ db2@4 ~ ab1@7 ~ bb1@5 ~ b1@4 bb1@2 ~@15]/2",
  BV: "[~@10 eb2@25 gb2@12 ~]/2",
  BW: "[ab1@6 bb1@7 db2@12 c2@13 bb1@13 ab1@12 eb2@24 ~@2 gb2@12 ab1@6 ~ bb1@4 ~@2 db3@3 ~ c3@2]/5",
  BX: "[~ bb2@3 ~@3 ab2@4 f2@2 ~ eb2@4 db2@31 ~@23]/3",
})).s("gm_acoustic_bass").gain(0.27)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@15 A@3 B C D E@2 ~@8 F@3 G@3 H@2 ~@6 I J K@2 L@5 M@4 ~@3 N@8 O@2 P@5 Q@6 R@4 ~@5 S T@8 U@5 ~@8 V@3
>`.pickRestart({
  A: "[db4@23 d4@12 f4@12 [bb3,g4]@13 [ab3,ab4]@12]/3", B: "bb4@10 ~ ab3@13, g3@13 ~@11, ~@5 c5@7", C: "db5@3 bb4, bb3",
  D: "db4 d4", E: "[eb4@3 ~]/2", F: "[d5@23 g5@24 a5@13 g5@12]/3", G: "[c6@11 bb5@12 db5@49]/3", H: "[ab4@11 ~]/2",
  I: "c4@6 b3@5 ~", J: "~@11 eb4@7 e4@6", K: "[~ bb5@7]/2", L: "[ab5@58 ~ bb5]/5",
  M: "[~@8 b5@11 ~@3 [bb4,db6]@25 [a4,eb6]@24 [ab4,f6]@23 ~@2]/4", // Bbm Adim Db
  N: "[~@2 [f4,ab4]@96 ~ f5@47 [f6,ab6]@46, ~@49 f4@47, ~@33 ab5@31]/8", O: "[~ [eb5,f5,ab5]@47]/2",
  P: "[[eb5,f5,ab5]@47 [eb5,gb5,a5]@47 ~ [f5,ab5]@25, ~@47 eb5@13]/5", // Fm7 Ebdim Fm
  Q: "[~@22 [eb5,g5,c6]@48 ~ a5@9 ~@40 [db5,gb5]@24, ~@71 f5@47 ~@26, ~@71 d5@44 ~@29, ~@5 bb5@4]/6", // Cm Gb5
  R: "[~ [ab5,db6]@25 [eb5,f5,ab5]@49 ~@21, ~ eb5@22 ~@73]/4", S: "~ c4@3 b3@2",
  T: "[~@16 eb4@6 e4@6 ~@6 bb5@43 ab5@115]/8",
  U: "[~@7 bb5@10 b5@12 ~@3 db6@24 [a4,eb6]@24 [ab4,f6]@23 ~@17, ~@31 bb4@25 ~@64]/5", V: "[~@9 bb4@47 ~@16]/3",
})).s("gm_string_ensemble_2").gain(0.15)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@15 A@2 ~@3 B@3 ~@16 C@8 ~@18 D@4 ~@16 E@6 F@3 ~@19 G@3>".pickRestart({
  A: "[bb3@23 ab3@25]/2", B: "[~@23 ab3@37 ~@12, gb3@25 ~@47]/3",
  C: "[[ab2,ab3]@46 ~ db3@24 d3@24 [eb3,gb3]@46 ~@2 f3@12 e3@10 eb3@27, eb3@47 a2@95 ~@23 bb3@15 ~@12, ~@47 f3@49 ~@47 ab3@47 ~@2]/8", // Ab Ebm
  D: "[~@2 db5@93 ~]/4", E: "[~ [ab2,eb3,ab3]@16 [db3,f3]@16 [eb3,gb3]@15, ~@17 a2@31]/6",
  F: "[~@4 f3@11 e3@10 ~ eb3@27 ~@19, ~@4 ab3@47 ~@21, ~@26 bb3@15 ~@31]/3",
  G: "[~@3 [b3,d4]@16 ~@5, ~@8 g4@47 ~@17, ~@9 f3@46 ~@17]/3", // Bm
})).s("gm_string_ensemble_2").gain(0.07)

// chords · muted trumpet
const muted_trumpet = note(`<
  ~ A@2 B@2 C@3 ~@9 D E ~@4 F G H I ~@2 H I ~@6 H I ~@4 J K L M ~@8 N O P ~@31 Q R S@2 T U V W X@2 Y ~ Z AA AB@2 ~@11
>`.pickRestart({
  A: "[~ [c4,eb4]@36 ~@6 [c4,f4]@4 ~, ~@21 [db4,gb4] ~@2]/2", // Cm F5 Gb5
  B: "[~ [bb3,eb4]@36 ~@6 [c4,f4]@4 ~, [b3,e4] ~@20 [db4,gb4] ~@2]/2", C: "[~ [bb3,eb4]@48 ~@23, [b3,e4] ~@35]/3",
  D: "~@16 ab5@2 g5@3 ~@3", E: "g5@3 ~@3 g5@4 f5@14", F: "~@12 [bb3,db4,eb4,gb4] ~@11",
  G: "[bb3,db4,eb4,gb4] ~@8 [bb3,db4,eb4,gb4]@5 ~@10", H: "~@12 [bb3,db4,f4,ab4] ~@11",
  I: "[bb3,db4,f4,ab4] ~@9 [bb3,db4,f4,ab4]@5 ~@9", // Bbm7
  J: "[bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@11", // Ebm7
  K: "~@10 [bb3,db4,eb4,gb4]@5 ~ [bb3,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~@5, ~@8 db4 ~@3", // Ebm7 Ebm Ebm7
  L: "[c4,eb4,f4,ab4] ~@5 [c4,eb4,f4,ab4] ~@5 [b3,d4,e4,ab4]@10 [bb3,db4,eb4,ab4] ~", // Fm7 E7 Bbm7
  M: "~@4 [bb3,db4,eb4,ab4] ~@5 [bb3,db4,eb4,ab4] ~ [ab3,c4,eb4,ab4] ~@5 [ab3,c4,eb4,ab4] ~@5", // Bbm7 Ab
  N: "~@3 [gb4,bb4,db5]@2 ~@4 bb4@2 [gb4,db5]@2 ~@11, ~@11 bb4 ~@12", // Gb Gb5
  O: "~@3 [a4,eb5]@2 ~@4 db5@2 [gb4,a4,eb5]@2 ~@11, ~@3 gb4 ~@20", // Adim Ebdim
  P: "~@9 e5@2 ~@2 db5@2 ~@9, ~@4 [ab4,db5,f5]@7 eb5@2 ~@11, ~@6 d5 ~@5", // Db
  Q: "~@4 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@7", // Ebm7
  R: "~@15 [bb3,db4,eb4,gb4]@5 ~ [bb3,db4,eb4,gb4]!2 ~", // Ebm7
  S: "[~@5 [c4,eb4,f4,ab4] ~@5 [c4,eb4,f4,ab4] ~@5 [b3,d4,e4,ab4]@10 [bb3,eb4,ab4] ~@5 [bb3,eb4,ab4,db5] ~@5 [bb3,eb4,ab4,db5]@2 [eb4,eb5]@2 ~@4 [ab3,eb4,ab4,eb5], ~@27 db5@2 ~@12 [ab3,ab4] ~@6]/2", // Fm7 E7 Ebsus4 Bbm7 Eb Ab5 Ab
  T: "~@8 [db5,f5] ~@11 [ab4,db5] ~@3, ~@4 ab4 ~@5 f5 ~", U: "~@9 [ab4,db5,f5]@2 ~@10 [ab4,c5] ~@2, ~@21 e5@2 ~",
  V: "~@9 [f4,ab4,eb5] ~@11 [f4,ab4] ~@2, ~@21 db5@2 ~", W: "~@9 [f4,ab4,eb5] ~@12 [f4,ab4] ~, ~@11 db5",
  X: "~@10 [gb4,ab4,db5] ~@11 [gb4,ab4,c5] ~", Y: "~@10 [f4,ab4,c5] ~@12 [f4,ab4,bb4]",
  Z: "~@6 [gb4,bb4,db5] ~@2 bb4 [gb4,db5] ~, ~@20 bb4 ~@3", AA: "~@6 [a4,eb5] ~@2 db5 [gb4,a4,eb5] ~, ~@12 gb4 ~@11",
  AB: "[~@13 [ab4,db5,f5]@14 [gb4,b4,eb5]@3 ~ [f4,bb4,d5]@2 ~@15]/2", // Db B Bb
})).s("gm_muted_trumpet").gain(0.28).pan(0.4)

// chords · trumpet
const trumpet = note(`<
  ~@23 A B C D ~@2 C D ~@6 C D E F G H E I J K ~@6 L M N O P ~@10 Q@2 R@2 S T U@2 V@3 W@2 X Y Z@2 AA AB AC AD AE AF AG@3
  AH AI AJ AK AL AM@3 AN AO ~@12
>`.pickRestart({
  A: "~@12 [bb3,db4,eb4,gb4] ~@11", B: "[bb3,db4,eb4,gb4] ~@8 [bb3,db4,eb4,gb4]@5 ~@10",
  C: "~@12 [bb3,db4,f4,ab4] ~@11", D: "[bb3,db4,f4,ab4] ~@9 [bb3,db4,f4,ab4]@5 ~@9",
  E: "[bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@11", // Ebm7
  F: "~@10 [bb3,db4,eb4,gb4]@5 ~@3 [bb3,db4,eb4,gb4] ~@5", // Ebm7
  G: "[ab3,bb3,db4,f4] ~@5 [ab3,bb3,db4,f4] ~@5 [ab3,bb3,db4,f4] ~@11", // Bbm7
  H: "~@10 [ab3,bb3,d4,f4]@5 ~ [ab3,bb3,d4,f4]@3 ~@5", // Bb7
  I: "~@10 [bb3,db4,eb4,gb4]@5 ~ [bb3,eb4,gb4] ~ [bb3,db4,eb4,gb4] ~@5, ~@8 db4 ~@3", // Ebm7 Ebm Ebm7
  J: "[c4,eb4,f4,ab4] ~@5 [c4,eb4,f4,ab4] ~@5 [b3,d4,e4,ab4]@10 [bb3,db4,eb4,ab4]@2", // Fm7 E7 Bbm7
  K: "~@2 [bb3,db4,eb4] ~@2 [bb3,db4] [ab3,ab4] ~@2 [ab3,c4,eb4,ab4] ~@2, ~@4 ab4 ~@5 [eb4,ab4] ~ [c4,eb4] ~@11", // Eb7 Bbm Ab Ab5 Cm
  L: "~@22 [gb3,ab3,b3] ~, ~@11 eb4", M: "~@4 [gb3,ab3,eb4]@3 ~ [f3,ab3,d4]@10 ~@6, ~@2 b3@7 ~@3",
  N: "~@3 [gb4,bb4,db5]@2 ~@4 bb4@2 [gb4,db5]@2 ~@11, ~@11 bb4 ~@12", // Gb Gb5
  O: "~@3 [a4,eb5]@2 ~@4 db5@2 [gb4,a4,eb5]@3 ~@10, ~@3 gb4 ~@20", // Adim Ebdim
  P: "~@9 [g4,e5]@2 ~@2 ab4@2 ~@9, ~@4 [ab4,db5,f5]@7 [gb4,db5]@2 ~@11, ~@6 [f4,b4] ~@5", // C Db Gb5 Fdim
  Q: "[~@13 [c4,e4,e5]@2 [db4,f4,f5]@2 [d4,gb4,gb5]@2 [eb4,g4,g5]@2 [e4,ab4,ab5]@2 [f4,a4,a5]@2 [gb4,bb4,bb5]@4 [gb4,bb4,bb5] ~@18]/2", // C Db D Eb E F Gb
  R: "[~@11 [eb5,f5,ab5]@5 ~ [bb4,eb5,gb5]@2 [ab4,db5]@4 db5@2 ~@7 eb4@2 ~@14, ~@19 f5@3 ~ bb4 ~ [ab4,db5,f5]@4 [g4,db5]@2 [gb4,ab4]@2 ~@15, ~@14 e5 [f4,bb4] ~@8]/2", // Fm7 Ebm Db5 Db Gdim Gbsus2 Bb5
  S: "~@6 [db5,eb5,f5,ab5] ~", T: "[db5,eb5,gb5,a5]@2 [db5,eb5,gb5,a5] ~@9",
  U: "[~@9 [eb5,ab5]@2 ~@4 [db5,gb5]@3 ~@3 c5@2 [db5,f5]@4 [c5,e5]@2 [db5,f5]@3 ~ [db5,f5]@2 ~@13, ~@21 e5 ~@26]/2", // Ab5 Gb5 Db C Db
  V: "[~@17 [f3,bb4,db5,f5]@3 ~@3 [g3,bb4,eb5,g5]@5 ~ [g3,bb4,eb5,g5]@3 ~ [g3,bb4,g5]@2 [g3,bb4,eb5,g5]@4 ~ [f3,a4,eb5,f5]@2 [g3,bb4,eb5,g5]@3 ~ [g3,bb4,eb5,g5]@7 ~ [f3,a4,d5,f5]@4 ~@2 [f3,a4,d5,f5]@4 [eb3,g4,eb5] ~ [d3,f4,a4,d5]@4 ~@2, ~@33 eb5 ~@30 c5@2 ~@6]/3", // Bbm Eb Gm Eb F7 Eb Dm Eb …
  W: "[[db3,g4,a4,db5]@5 ~ [d3,f4,bb4,d5]@4 [d3,f4,bb4,d5]@27 ~@6 [d3,f4,g4,bb4,d5]@4 ~]/2", // A7 Bb Gm7
  X: "~ [eb3,ab4,bb4,db5,eb5]@6 [eb3,ab4,bb4,db5,eb5]@4 ~ [eb3,ab4,bb4,db5,eb5]@2 [ab4,bb4,db5]@6 [eb3,ab4,bb4,db5,eb5]@4, ~@7 [eb3,eb5]@2 ~@3", // Ebsus4 Bbm7 Ebsus4 Eb
  Y: "[eb3,ab4,bb4,db5,eb5]@7 ~ [eb3,ab4,bb4,db5,eb5]@4 ~@2 [eb3,ab4,bb4,db5,eb5]@4 [bb2,eb4,gb4,bb4]@2 [a2,c4,e4,a4]@3 ~", // Ebsus4 Ebm Am
  Z: "[[ab2,db4,eb4,f4,ab4]@13 ~@3]/2", AA: "~@3 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@6 [bb3,db4,eb4,gb4] ~@7",
  AB: "~@14 [bb3,db4,eb4,gb4]@5 ~@3 [bb3,db4,eb4,gb4] ~", // Ebm7
  AC: "~@4 [ab3,bb3,db4,f4] ~@5 [ab3,bb3,db4,f4] ~@5 [ab3,bb3,db4,f4] ~@7", // Bbm7
  AD: "~@14 [ab3,bb3,d4,f4]@5 ~ [ab3,bb3,d4,f4]@3 ~", // Bb7
  AE: "~@4 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@5 [bb3,db4,eb4,gb4] ~@7", // Ebm7
  AF: "~@15 [bb3,db4,eb4,gb4]@5 ~ [bb3,db4,eb4,gb4]!2 ~", // Ebm7
  AG: "[~@5 [c4,eb4,f4,ab4] ~@5 [c4,eb4,f4,ab4] ~@5 [b3,d4,e4,ab4]@10 [bb3,db4,eb4,ab4,db5]@3 ~@3 [bb3,eb4,ab4,db5]@2 ~@4 [bb3,ab4,db5]@2 [ab3,ab4,eb5]@2 ~@4 [ab3,eb4,ab4,eb5]@2 ~@7 [ab4,db5,f5]@2 ~@10 [ab4,db5,f5]@2 ~@2, ~@39 eb4 ~ eb4 ~@30]/3", // Fm7 E7 Bbm7 Ab5 Db
  AH: "~@9 [ab4,db5,f5]@2 ~@10 [ab4,c5,e5]@2 ~", AI: "~@9 [f4,ab4,eb5]@2 ~@10 [f4,ab4,db5]@2 ~",
  AJ: "~@9 [f4,ab4,eb5]@2 ~@11 [f4,ab4,db5]@2", AK: "~@5 [ab4,db5] ~@5 [gb4,ab4,c5], ~@10 gb4 ~@13",
  AL: "~@5 [gb4,ab4,db5] ~@5 [gb4,ab4,c5]", // Gbsus2 Ab7
  AM: "[~@10 [f4,ab4,c5]@2 ~@11 [f4,ab4,bb4]@2 ~@6 [gb3,ab3,b3] ~@5 [gb3,ab3,eb4]@3 ~ [f3,ab3,d4]@10 ~@9 [gb4,bb4,db5]@2 ~@4 bb4@2 [gb4,db5]@2 ~@2, ~@31 eb4@2 ~@4 b3@14 ~@17 bb4 ~@3]/3", // Fm Bb7 Abm7 Ab7 Ddim Gb Gb5
  AN: "~@12 [a4,eb5]@2 ~@4 db5@2 [gb4,a4,eb5]@3 ~, ~@12 gb4 ~@11", // Adim Ebdim
  AO: "~@11 [f4,ab4], ~@13 [ab4,db5,f5]@6 g4@2 b4@2 ~, ~@9 e5 [gb4,db5] ~", // Fm Db Gb5
})).s("gm_trumpet").gain(0.45).pan(0.4)

// chords · trombone
const trombone = note(`<
  ~ A@2 B@2 ~@40 C D E F G H I J K ~@3 L M N@2 O P Q P Q P Q R@2 S T U V@2 W@2 ~@14 X@2 ~@10 Y@2 ~@11
>`.pickRestart({
  A: "[~ ab3@35 ~@12, ~ c4@3 ~@44]/2", B: "[~ gb3@35 ~@12]/2", C: "f2@2 ~@4 f2@2 ~@4 e2@5 ~ d2@4 eb2 ~",
  D: "~@2 bb2 ~@2 bb2 ab2 ~@2 a2 ~@2", E: "~@4 [db4,f4] ~@10 [ab3,db4] ~@8, ~@4 ab3@2 ~@9 f4@2 ~@7",
  F: "~@4 [ab3,db4,f4]@2 ~@10 [ab3,c4,e4] ~@7", G: "~@3 [f3,ab3,eb4] ~@11 [f3,ab3,db4] ~@8",
  H: "~@3 [f3,ab3,eb4] ~@11 [f3,ab3] ~@8, ~@15 db4@2 ~@7", I: "~@3 [gb3,ab3,db4] ~@11 [gb3,ab3,c4] ~@8",
  J: "~@3 [gb3,ab3,db4] ~@10 [gb3,ab3,c4] ~@9", K: "~@2 [f3,ab3,c4] ~@11 [f3,ab3,bb3] ~@9",
  L: "~@3 db2@6 bb1 ab1 ~ f1 ~@11",
  M: "~@4 [ab3,b3] ~@5 [ab3,b3,eb4]@2 [ab3,bb3,d4]@2 ~@4 [bb3,d4]@2 ~@4, ~@4 eb4@2 ~@12 ab3 ~@5", // Abm Bb7 Bb
  N: "[~@13 [gb3,bb3,db4] ~@9 [gb3,a3,db4]@22 ~@3]/2", O: "~ db2 ~@2 ab2 ~@5 db2 ~",
  P: "~@2 ab2 ~@9 db2@2 ~@4 eb2@2 ~@4", Q: "ab1 db2 ~@2 ab2 ~@5 db2 ~",
  R: "[~@2 ab2 ~@8 db2@2 ~@4 eb2@2 ~@4 ab1@2 ~@10 gb4@13]/2", S: "~ f4@2 gb4 ~@2 bb4@17 ~", T: "~@10 db5@13 ~",
  U: "bb4@2 ~ ab4@2 db5@5 bb4@9 ~@5", V: "[~@12 gb4@3 ~ gb4 ab4@3 ~ a4@9 ~ ab4@2 gb4 ~ a4@4 gb4@5 ~@4]/2",
  W: "[~@5 eb4@4 e4@2 f4@3 ~ ab4 ~ bb4@4 ab4@2 db5@4 ~@2 bb4@14 ~@5]/2",
  X: "[~@4 f2@2 ~@4 f2@2 ~@4 e2@5 ~ d2@4 ~ eb2@3 ~@3 bb2@2 ~@3 bb2@2 ab2@2 ~@4 a2@2]/2",
  Y: "[~@13 [ab3,db4,f4]@14 [b2,gb3,eb4]@3 ~ [f3,bb3,d4]@2 ~@15]/2", // Db B Bb
})).s("gm_trombone").gain(0.32).pan(0.2)

// chords · trombone · soft notes
const trombone_soft = note("<~ A@2 B@2 C@4 D@4 E@2 ~@101>".pickRestart({
  A: "[~@3 bb3@34 ~@11, ~ f3@36 ~@11]/2", B: "[~ [db3,bb3]@35 ~@12]/2", C: "[~ [f3,ab3,bb3]@48 [bb3,db4,eb4]@47]/4",
  D: "[~ [ab3,db4,f4]@48 [bb3,db4,eb4]@47]/4", E: "[ab3,db4,f4]/2",
})).s("gm_trombone").gain(0.16).pan(0.2)

// other · alto sax
const alto_sax = note(`<
  ~ A B C D A E F G H I J K L M ~@6 N O P O Q O R S N O ~@6 N O ~@8 T@2 U V W@2 X Y ~@3 Z AA@2 ~@16 AB AC@2 AD AE AF AG
  ~@9 AH@4 AI@4 ~@15
>`.pickRestart({
  A: "~ db2@4 ~@2 bb2@4 ~@2 eb3@3 ~@3 bb2@4 ~, ~@3 ab2 ~@5 ab2 ~@2", B: "~ eb3@3 ~@3 bb2@4 ~ eb3 ~@11",
  C: "~ db2@2 ~@4 bb2@3 ~@3 eb3@3 ~@3 bb2@4 ~, ~@3 ab2 ~@2 ab2 ~@5", D: "~ eb3@3 ~@3 bb2@4 ab2 ~@12, ~@3 ab2 ~@8",
  E: "~ eb3@3 ~@3 bb2@4 ~ ab2@2 ~@10", F: "~ eb2@4 ~@2 bb2@4 ~@2 eb3@3 ~@3 bb2@4 ~, ~@3 ab2 ~@8",
  G: "~ eb3@3 ~@3 bb2@4 ~ ab2 ~@11", H: "~ db2@2 ~@2 ab2@2 bb2@3 ~@3 eb3@3 ~@3 bb2@4 ~",
  I: "~ eb3@3 ~@3 bb2@4 ab2 ~@12", J: "~ eb2@4 ab2@2 bb2@4 ~@2 eb3@3 ~@3 bb2@4 ~", K: "~ eb3@3 ~@2 bb2@4 ~ ab2 ~@12",
  L: "db2@4 ~@2 bb2@4 ~@2 eb3@3 ~@3 bb2@4 ~@2, ~@5 ab2@2 ~@17", M: "eb3@3 ~@3 bb2@4 ab2 ~@13",
  N: "db2 ~@2 bb2@2 ~ eb3 ~@2 bb2@2 ~, ~@5 ab2@2 ~@10 ab2@2 ~@5", O: "eb3@2 ~@4 bb2@4 eb3 ~@13",
  P: "eb2 ~@2 bb2@2 ~ eb3 ~@2 bb2@2 ~, ~@5 ab2@2 ~@17", Q: "db2 ~@2 bb2@2 ~ eb3 ~@2 bb2@2 ~, ~@5 ab2@2 ~@17",
  R: "eb2@2 ~@4 a2@4 ab2 ~ gb3 ~@5 a2@4 ~@2, ~@5 ab2@2 ~@10 ab2@2 ~@5", S: "gb3 ~@5 a2@4 gb3 ~@13",
  T: "[f4@35 e4@12 ~]/2", U: "eb4@5 db4@7", V: "eb4@2 ~@4 eb4@3 db4@10 ~@5",
  W: "[~@2 db4@8 ~ c4@10 ~@2 db4@3 ~@3 db4@4 c4@12 ~@3]/2", X: "~@3 c4@7 bb3@8 ~@4 eb4@2", Y: "~ eb4 d4@2 ~@2",
  Z: "~@4 [ab3,b3,eb4] ~@5 [ab3,eb4] ~ [bb3,d4]@2 ~@4 [ab3,bb3,d4]@2 ~@4, ~@10 b3@2 ab3 ~@11", // Abm Ab5 Bb Bb7
  AA: "[~@13 eb2@2 ~@8 gb2@15 ~@10]/2", AB: "~@5 f4@3 ~ f4 ~ f4@4 ~ c4@2 f4@3 ~ f4 ~",
  AC: "[f4@4 c4 ~ f4@3 ~ f4 ~ f4@4 c4 ~ f4@3 ~ g4@5 ~ c4 ~ g4@3 ~ g4 ~ g4@4 ~ c4@2 g4@3 ~ g4]/2",
  AD: "~ g4@4 ~@2 g4@3 ~ g4 ~ g4@3 ~@8", AE: "~@5 d4 ~ ab4@3 ~ ab4 ~@2 ab4@4 ~@2 ab4@3 ~",
  AF: "ab4 ~ ab4@4 ~@2 ab4@3 ~ ab4 ~ ab4@4 ~@2 ab4@4", AG: "~ ab4@2 ~@9",
  AH: "[~@5 f4@35 e4@12 ~ eb4@11 db4@14 eb4@2 ~@4 eb4@3 db4@9]/4",
  AI: "[~@9 db4@9 c4@10 ~@2 db4@3 ~@3 db4@4 ~ c4@12 ~@6 c4@8 bb3@8 ~@4 eb4@2 ~@4 eb4@4 d4@7]/4",
})).s("gm_alto_sax").gain(0.19).pan(0.8)

// other · alto sax · soft notes
const alto_sax_soft = note("<~ A B C D A B E B F G H@4 ~@6 I G J G J G K G I G ~@6 I G ~@43 L ~@33>".pickRestart({
  A: "~@6 ab2 ~@5", B: "ab2 ~@2 ab2 ~@8", C: "~@9 ab2 ~@2", D: "ab2 ~@23", E: "~@6 ab2 ~@2 ab2 ~@2",
  F: "~@11 ab2@2 ~@4 ab2@2 ~@4 ab2", G: "~@5 ab2@2 ~@17", H: "[~@11 ab2@2 ~@4 ab2@2 ~@4 ab2@2 ~@4 ab2@2 ~@17]/2",
  I: "~@5 ab2 ~@5 ab2", J: "~@10 ab2@2 ~@5 ab2@2 ~@3 ab2@2", K: "~@22 ab2 ~", L: "~@6 d4 ~@11 d4 ~@5",
})).s("gm_alto_sax").gain(0.13).pan(0.8)

// … 181 more lines

More by Cole Porter