Strudelify
Me & Mrs Jones cover art

1972 · 360 Degrees of Billy Paul

Me & Mrs Jones

Billy Paul

KeyG minorTempo98 bpm
0:00/0:00
// Me & Mrs Jones — Billy Paul
// 98 bpm, 3/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 154 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@2 B@2 C@2 B@2 C@2 D@2 C@2 E@2 F G H I J K L M N O P Q R S H T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL ~@2 F
  AM H AN J K L M AO AP P AQ AR AS H AT AU AV W AW AX AY AZ BA AC AD AE AF AG BB AI AJ AK AL ~@2 F G H BC J K L M AO AP
  P AQ AR AS H AT AU AV W AW AX AY AZ BA AC AD AE AF AG BB AI AJ AK AL ~@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2
  B@2 A@2 BD@4
>`.pickRestart({
  A: "[eb2@7 ~ c2@4 eb2@7 ~ ab2@28]/2", B: "[eb2@7 ~ c2@4 eb2@7 ~ ab2@16 bb1@4 c2@4 d2@4]/2",
  C: "[eb2@8 c2@4 eb2@7 ~ ab2@28]/2", D: "[eb2@7 ~ c2@4 eb2@8 ab2@16 bb1@4 c2@4 d2@4]/2",
  E: "[eb2@8 c2@4 eb2@7 ~ ab2@16 bb1@4 c2@4 d2@4]/2", F: "eb2@4 ~ eb2", G: "bb2@4 bb1 c2", H: "eb2@19 ~ eb2@4",
  I: "bb2 ~@5 eb2@2 d2@2 bb1@2", J: "g2@9 ~ g2@2", K: "d2@6 g2 ~@3 gb2@2", L: "f2@19 ~ f2@4", M: "c2 b1",
  N: "bb1@9 ~ bb1@2", O: "bb2@3 g2 f2 d2", P: "bb1@18 ~@2 bb1 ~@3", Q: "bb1@3 f1 g1 ab1", R: "bb1@9 ~ bb1 ~",
  S: "bb1 d2", T: "bb2@11 ~ bb2@4 f2@4 gb2@4", U: "g2 d2", V: "b1@3 g1 a1 b1", W: "c2@5 g2", X: "c2@3 eb2 d2 c2",
  Y: "g2@19 ~ d2@4", Z: "g2@14 ~@2 g2@3 ~ gb2@4", AA: "f2@4 c2 b1", AB: "bb1 e2", AC: "eb2@11 ~ eb2@8 bb1@4",
  AD: "eb2@3 ~@5 d2@16", AE: "c2@3 ~ c2@2 d2@6", AF: "eb2@12 f2@11 ~", AG: "g2@7 ~ g2@11 ~ g2@4",
  AH: "d2@15 ~ g2@4 gb2@4", AI: "f2@3 ~ f2@3 ~ f2@3 ~ eb2@3 ~ eb2@3 ~ eb2@4",
  AJ: "d2@3 ~ d2@3 ~ d2@4 c2@3 ~ c2@3 ~ c2@4", AK: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
  AL: "[bb1,bb2] ~@11", AM: "bb2@4 c3 bb2", AN: "bb1@3 ~@3 eb2@2 d2@2 bb1@2", AO: "bb1@18 ~@2 bb1@3 ~",
  AP: "bb1@2 e1 f1 g1 ab1", AQ: "bb1@18 f2@2 bb2@2 f2 ~", AR: "bb1@19 ~ bb1@3 ~", AS: "bb2@3 e2@2 bb2",
  AT: "bb2@3 e1 f1 gb1", AU: "g1@7 ~ g1@4 bb1@6 ~@2 bb1@4", AV: "b1@3 ~ b1@2 d2@3 ~ d2@2",
  AW: "c2@11 ~ c2@4 d2@4 eb2@4", AX: "g2@19 ~ g2@4", AY: "d2@8 g2@7 ~ g2@3 ~ gb2@4", AZ: "f2@4 c3 b2", BA: "bb2 d2",
  BB: "d2@3 ~ bb1@3 ~ a1@4 g1@7 ~ g2@4", BC: "bb2@3 ~@3 eb2@2 d2@2 bb1@2", BD: "[eb2@7 ~ c2@4 eb2@7 ~ ab2@72 ~@4]/4",
})).s("gm_acoustic_bass").gain(0.64)

// other · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~@20 A@2 B ~@33 A@2 B ~@33 A@2 B ~@33 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 ~@2
>`.pickRestart({
  A: "[bb4@30 ~@10 ab4@3 ~ bb4@4]/2", B: "ab4@7 ~", C: "[d4@19 ~ eb4@28]/2", D: "[d4@10 eb4@9 ~@5]/2",
  E: "[bb4@35 ~@5 eb4@3 ~ c4@3 ~]/2", F: "[c4@8 bb3@21 ~@19]/2",
})).s("gm_pad_warm").gain(0.55)

// other · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~@20 A@2 B ~@33 A@2 B ~@33 A@2 B ~@33 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 ~@2
>`.pickRestart({
  A: "[g4@27 ~@13 f4@3 ~ g4@4]/2", B: "f4@3 ~", C: "[bb3@19 ~ c4@24 ~@4]/2", D: "[bb3@18 ~@2 c4@17 ~@11]/2",
  E: "[g4@33 ~@7 eb4@4 c4@3 ~]/2", F: "[c4 bb3@3 ~@2]/2",
})).s("gm_pad_halo").gain(0.53)

// other · pad warm · "WARM PAD"
const pad_warm_2 = note(`<
  ~@20 A@2 B ~@33 A@2 B ~@33 A@2 B ~@33 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 C@2 D@2 E@2 F@2 ~@2
>`.pickRestart({
  A: "[d4@29 ~@11 c4@3 ~ d4@4]/2", B: "c4@11 ~", C: "[g3@4 ~ g3@6 ~]/2", D: "[g3@8 ~@2 g3@9 ~@5]/2",
  E: "[d4@30 ~@10 eb4@4 c4@3 ~]/2", F: "[c4@8 bb3@21 ~@19]/2",
})).s("gm_pad_warm").gain(0.62)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@3 A@2 ~ B C@2 ~ D@2 ~ E F@2 ~@4 G@2 H I J K L@2 M N O@2 ~ P Q@2 R@3 S T U V W X Y Z AA AB AC@2 ~@5 G@2 H AD J K L@2
  M N AE@2 ~ P Q@2 R@3 S T U V AF@2 Y Z AA AB AC@2 ~@5 G@2 H AD J K L@2 M N AE@2 AG AH AI@2 AJ@2 AK AL AM AN AO@2 AP@2 Z
  AA AB AC@2 ~ AQ@2 ~@2 AR@2 AS@2 AT@2 AU@2 AV@2 AW@4 AX@2 AY@2 AZ@4 BA@4
>`.pickRestart({
  A: "[~@4 bb4@3 ~@3 bb5@2 ~@4 bb6@2 ~ bb6@18 ~@11, ~@7 bb4@30 ~@11, ~ bb5@2 ~]/2",
  B: "~@4 bb4@5 ~ c5 ~@2 eb5 ~ f5 ~@3 gb5 g5 ~ c6 ~, ~@9 f5 ~@2",
  C: "[~@3 [gb5,g5] ~ c6 ~@2 gb5 f5@2 c5 ~ eb5@24 ~@11, ~ f5 ~@22]/2", // Gmaj7
  D: "[~@9 bb5@11 ~@4, ~ bb4@9 ~@2, ~@7 bb5@11 ~@30, ~@15 bb6@25 ~@8]/2", E: "~@15 c5 ~@2 eb5 ~ f5 ~@3",
  F: "[f5 gb5 g5@2 ~@2 g5@10 ~ gb5 f5@2 c5@2 ~ eb5@16 ~@9, ~@5 gb5@2 ~@41]/2",
  G: "[[g3,bb3,d4,g4]@35 ~ [g3,bb3,d4,g4] ~@7 [gb3,a3,db4,gb4]@4]/2", H: "[f3,ab3,c4,f4]@20 ~@3 f5",
  I: "gb5 [g5,ab5,c6,eb6,g6]@3 ~ [f5,ab5,c6,eb6,f6]@2 ~@4 f4 gb4 [ab4,c5,eb5]@3 [f4,c5,f5] ~@4 db4 f3 gb3, ~@12 [g4,g5]@3 ~ [ab4,eb5]@2 ~@6", // Abmaj7 Fm7 Ab F5 G Ab5
  J: "[g3,ab3,c4,eb4,g4]@3 ~ [f3,ab3,c4,eb4,f4] ~@6 [f4,gb4] [g4,ab4,c5,eb5,g5]@4 [f4,ab4,c5,eb5,f5] ~@6 f5", // Abmaj7 Fm7 Gbmaj7 Abmaj7 Fm7
  K: "gb5 g5@3 ~ [f5,ab5,c6,eb6,f6] ~@5 f4 gb4 [g4,ab4,c5,eb5,g5]@3 ~ [eb5,f5]@2 ~@5, [ab5,c6,eb6,g6]@2 ~@6 ab4 ~@3, ~@17 [f4,c5] ~@6", // Fm7 Abmaj7 Ebsus2 Abmaj7 F5
  L: "[[f2,f3,ab3,c4,eb4]@35 ~ [f3,ab3,c4,eb4]@12, ~@9 f2@2 ~]/2", M: "~ [f3,ab3,c4]@18 ~ [f3,ab3,c4]@4",
  N: "[f3,ab3,b3,d4]@19 ~@5", O: "[~ f4@18 ~ [g3,bb3,d4,f4]@24 ~@4, [g3,bb3,d4]@19 ~@29]/2",
  P: "~@2 c5 ~@2 eb5 ~ [f5,c6]@2 ~@2 [g5,c6]@2 ~ gb5 [g5,c6]@3 ~ gb5 f5@2 c5@2, ~@11 gb5 ~@7 c6@3 ~@2", // F5 C5
  Q: "[~ [eb5,c6]@12 ~@24 eb4@11, [g3,c4,eb4]@35 ~ [g3,c4]@11 ~, ~ c3@46 ~]/2", // Cm C5
  R: "[g3@16 g3@4 c4@2 ~@2 db4 c4@3 g3@4 [bb3,g4]@12 ~@5 eb4@22 ~, g2@27 ~@20 f3@24 ~, [bb3,d4]@21 ~@3 g4@5 ~@19 [ab3,c4]@23 ~]/3", // Eb Bb Ab
  S: "[ab3,d4]@23 ~, [c4,g4]@19 ~@5", T: "[g3,bb3,d4,f4]@7 ~", U: "~@4 [f3,b3,e4]@7 ~", V: "[g3,c4,eb4]@11 ~",
  W: "f4@2 gb4 g4 ~ bb4@2 ~@2 gb4 f4@2 ~ c4@2 eb4 ~@2 [f4,c5]@5 ~, ~@3 c5 ~@4", X: "~@16 g3@2 ~@2 bb3 ~@3",
  Y: "[c4,g4]@3 ~ g3@3 ~ [bb3,g4]@11 ~@5, db4 ~@23", // C5 Eb
  Z: "[a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3", // F7
  AA: "[a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [a3,c4,eb4,f4] ~@3 [c4,eb4]@2 ~@2, ~@20 [a3,f4] ~@3", // F7 Cm Dm
  AB: "[ab3,c4,eb4,f4]@3 ~ [ab3,c4,eb4,f4]@2 ~@2 [ab3,c4,eb4,f4]@3 ~ [ab3,c4,eb4,f4]@2 ~@2 [ab3,c4,eb4,f4]@2 ~@2 [ab3,c4,eb4,f4]@3 ~", // Fm7
  AC: "[[ab3,c4,d4,f4] ~ [bb4,bb5]@15 ~@7]/2", // Dm7b5 Bb
  AD: "gb5 [g5,ab5,c6,eb6,g6]@3 ~ [f5,ab5,c6,eb6,f6]@2 ~@4 f4 gb4 [ab4,c5,eb5]@3 [f4,c5,f5] ~@5 f3 gb3, ~@12 [g4,g5]@3 ~ [ab4,eb5]@2 ~@6", // Abmaj7 Fm7 Ab F5 G Ab5
  AE: "[~ f4@18 ~ [g3,bb3,d4,f4]@28, [g3,bb3,d4]@19 ~@29]/2", // Gm7 Gm
  AF: "[f4@2 gb4 g4 ~ bb4@2 ~@2 gb4 f4@2 ~ c4@2 eb4 ~@2 [f4,c5]@13 ~@9 g3@2 ~@2 bb3 ~@3, ~@3 c5 ~@12]/2", // F5
  AG: "~ [g3,bb3,d4,g4]@11 ~ [g3,bb3,d4,g4]@11", AH: "[g3,b3,d4,g4]@6 ~ c4 ~ eb4 ~ f4 ~@3 gb4 f4@4 c4@4, ~@15 c5@5 ~@4",
  AI: "[~ eb4@18 ~ [g3,c4,eb4]@15 ~ [g3,c4,eb4]@2 ~@2 [g3,c4,eb4]@7 ~, [g3,bb3] ~@2, ~ c3@47]/2", // Cm Gm
  AJ: "[~ [g3,bb3,d4,g4]@23 ~ [g3,bb3,d4,g4]@11 [g3,bb3,g4]@11 ~, ~ g2@44 ~@3, ~@9 d4@2 ~]/2", // Gm
  AK: "[ab3,c4,eb4,g4]@23 ~, f2@5 ~", AL: "~ [ab3,d4,g4]@11 ~ b3@11, c4@11 ~ [ab3,d4,g4]@11 ~",
  AM: "~ [eb2,g3,f4]@23, [bb3,d4]", AN: "~ [g3,b3,d4,g4]@2, ~@2 g2@3 ~",
  AO: "[[g3,c4,eb4]@11 ~@2 [g3,c4,eb4]@23 [g3,c4,eb4] ~@3 [g3,c4,eb4]@7 ~, c3@11 ~]/2", // Cm
  AP: "[[g3,bb3,d4]@22 ~@2 [g3,bb3,d4]@11 ~ [g3,bb3,d4]@9 ~@3, g2@2 ~]/2", AQ: "[~@13 [d6,g6]@35, ~ [g5,bb5]@3]/2",
  AR: "[[g3,bb3,d4,f4]@3 ~@2 [ab3,c4,eb4,g4]@6 ~]/2", // Gm7 Abmaj7
  AS: "[~@3 c5 ~@2 eb5 ~ f5 ~@3 gb5 f5@3 c5@3 ~@9 gb5 f5 ~@2 c5 ~@3 [eb5,c6]@3 ~ [f5,c6]@3 ~ [eb5,c6]@4, [g3,bb3,d4,f4]@20 ~@4 [ab3,eb4,g4]@23 ~, ~@12 c6@3 ~@5 [eb5,c6]@7 ~ c6@2 ~@18, ~@6 c4@5 ~]/2", // Cm F5 Cm Gm7 Abmaj7 Cm
  AT: "[[g3,bb3,d4,f4]@18 ~@2 [ab3,c4,eb4,g4]@25 ~@3]/2", // Gm7 Abmaj7
  AU: "[[g3,bb3,d4,f4]@5 ~ [g3,bb3,d4,f4]@3 ~ [ab3,eb4,g4]@13 ~, ~@20 c4@23 ~@5]/2", // Gm7 Abmaj7
  AV: "[[g3,bb3,d4,f4]@13 ~@7 [ab3,c4,eb4,g4]@20 ~@8]/2", // Gm7 Abmaj7
  AW: "[~@5 bb5@4 ~@3 bb6@8 ~@12 eb5 ~@3 [gb5,d6] f5@2 ~ c5@3 ~@5 [g3,bb3,f4]@15 ~@5 [ab3,eb4,g4]@26 ~@2, [g3,bb3,c4,f4]@20 [ab3,c4,eb4,g4]@26 ~@2 d4@12 ~@8 c4@23 ~@5, ~ bb4@4 ~@6 [eb5,c6]@6 ~@7, ~@10 bb5@11 ~@15 c6@5 ~@55]/4", // D Gm7 Abmaj7 Gm7 Abmaj7 Cm
  AX: "[[g3,bb3,d4,f4]@11 ~ [g3,bb3,d4,f4]@6 ~@2 c4@21 ~@3 bb5@4, ~@5 [ab3,eb4,g4]@7, ~@7 bb4]/2", // Gm7 Abmaj7
  AY: "[~@3 bb6@17 [ab3,c4,eb4,g4]@28, [g3,bb3,d4,f4]@11 ~@13, ~ bb5@10 ~@13]/2", // Abmaj7 Gm7
  AZ: "[~@4 c5 ~@3 eb5 ~@3 f5@2 ~@2 f5@2 ~@2 [f5,gb5] ~@3 f5@3 ~ c5@2 ~@2 eb5@3 ~ [f5,c6]@4 c5@3 ~@5 [g3,bb3,d4]@16 ~@4 [ab3,c4,eb4,g4]@24 ~@4, f4@15 ~@5 ab3@26 ~@50, [g3,bb3,d4]@12 gb5 ~@3 gb5 ~@3 [c4,eb4]@21 ~@55, ~@20 g4@14 ~@14 f4@19 ~@29, ~@24 gb5 ~@11 gb5 ~@7 [eb5,c6]@10 ~@42]/4", // Gbmaj7 F5 Gm Abmaj7 Gm Cm
  BA: "[[g3,bb3,d4,f4]@5 ~@31 c5@10 ~@2, ~@20 [ab3,eb4,g4]@19 eb6@3 c6@4 ab6@14 ab5@3 g5@4 eb5@25 ~@4, ~@21 c4@28 g6@43 ~@4, ~@25 c5@28 eb6@39 ~@4, ~@28 eb5@3 g5@4 bb5@21 c6@36 ~@4]/4", // Gm7 Abmaj7
})).s("gm_piano").gain(0.56)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  A@8 B@8 ~@7 C D C ~ E F G H I J K L@4 M@4 ~ N O@4 ~@11 C D C ~ E F G H I J K L@4 M@4 ~ N O@4 ~@11 C D C ~ E F G H I J
  K L@4 M@4 ~ N O@4 ~@4 P@2 Q@6 P@2 Q@6 P@2 Q@6 P@2 R@4
>`.pickRestart({
  A: "[[g3,bb3,d4]@5 [ab3,c4,eb4]@7 [g3,bb3,d4]@5 [ab3,c4,eb4]@7 [g3,bb3,d4]@5 [ab3,c4,eb4]@7 [g3,bb3,d4]@5 [ab3,c4,eb4]@7, g4]/8", // Gm Ab Gm Ab Gm Ab Gm Ab
  B: "[[g3,bb3,d4]@5 [ab3,c4,eb4]@7]/2", C: "[ab5,c6,eb6,g6]@4 f6 ~@7 [ab4,c5,eb5,g5]@4 f5 ~@7",
  D: "[ab3,c4,eb4,g4]@4 f4 ~@7 [ab4,c5,eb5,g5]@4 f5@2 ~@6", E: "~@3 [c4,c5] [eb4,eb5] [f4,f5]",
  F: "[g4,g5] [bb4,bb5] [g4,g5]@4", G: "[gb4,gb5]", H: "[g4,bb4,d5,f5]",
  I: "[d4,d5] [f4,f5] [eb4,eb5] [d4,d5] [bb3,bb4] [ab3,ab4]", J: "[g3,g4]", K: "[b3,b4] [d4,d5]",
  L: "[[c4,eb4,c5] [bb3,d4,bb4], g4]/4", M: "[[eb4,ab4]@6 ~@6 [g3,bb3]@7 ~@5, [ab3,c4] ~, ~@6 [d4,g4]@13 ~@5]/4",
  N: "~@3 [g4,g5]@2 [c5,c6]", O: "[[bb4,bb5]@9 [g5,g6]@4 [eb5,eb6]@11]/4",
  P: "[~@3 [bb4,bb5] [ab4,ab5] [g4,g5]@5 [f4,f5] [eb4,eb5]]/2", // Bb Ab G F Eb
  Q: "[[c4,c5]@2 bb4@10 [g3,d4]@5 [ab3,c4,eb4]@7 [g3,bb3,d4]@5 [ab3,c4,eb4]@7, ~@2 bb3@15 ~@19, ~ g4@2]/6", // C G5 Ab Gm Ab
  R: "[[c4,c5]@2 [bb3,bb4]@3 [g4,eb5]@18 ~]/4", // C Bb Cm
})).s("gm_string_ensemble_2").gain(0.37)

// chords · trumpet
const trumpet = note(`<
  ~@3 A B@2 ~@2 C@2 D A B@2 ~@27 E ~@4 F@2 G H ~@27 E ~@4 F@2 G H ~@12 I@3 J@3 K L M N O ~@4 E ~@4 F@2 G H ~@5 A B@2 ~@5
  P Q@2 ~@5 A B@2 ~@3 P R@4
>`.pickRestart({
  A: "~@5 eb4", B: "[f4@7 ~ bb4@2 ~@10 g4@27 ~]/2", C: "[bb4@7 ab4 g4 eb4 f4 g4]/2", D: "bb3", E: "~ [b4,d5,g5]@2",
  F: "[a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~@3 [a4,c5] ~@3", // Am
  G: "[c5,eb5] ~@3 [c5,eb5] ~@3 [c5,eb5] ~@3 [c5,eb5] ~@3 [c5,eb5] ~@3 [c5,eb5] ~@3", H: "[d5,f5] ~@11",
  I: "[eb4,g4]/3", J: "[gb4 f4@2, d4@71 ~]/3", K: "d4@22 ~ gb4, ~@11 f4", L: "g4@23 ~",
  M: "[c4,c5]@17 ~@3 [c4,c5]@2 ~@2", N: "~@5 [c4,c5]", O: "[bb3,bb4]@9 ~ [bb3,bb4] ~", P: "~@5 [c5,eb5]",
  Q: "[[d5,f5]@7 ~ [g5,bb5]@2 ~@10 [eb5,g5]@27 ~]/2", R: "[[d5,f5]@7 ~ [g5,bb5]@2 ~@10 [eb5,g5]@72 ~@4]/4",
})).s("gm_trumpet").gain(0.64)

// chords · alto sax
const alto_sax = note(`<
  ~@3 A B@2 ~@5 A B@2 ~@6 C@2 D@2 ~@4 E F ~@2 G H ~@7 I ~@4 J@2 K L ~@6 C@2 D@2 ~@4 M N O@2 P Q ~@2 R S T ~@2 I ~@4 J@2
  K L ~@2 U@2 V@2 C@2 D@2 ~@4 M N O@2 P Q W X Y ~@4 I ~@4 J@2 K L ~@5 A B@2 ~@5 Z AA@2 ~@5 A B@2 ~@3 Z AB@4
>`.pickRestart({
  A: "~@5 c4", B: "[d4@8 g4@2 ~@10 eb4@27 ~]/2", C: "[[bb3,d4,f4]@9 ~@2 [a3,db4,e4]]/2", D: "[[ab3,c4,eb4]@23 ~]/2",
  E: "gb4 g4@18 ~@5", F: "gb4", G: "~ g4@20 a4@2 bb4", H: "b4@6 d5@5 ~", I: "~ [d4,f4]@2",
  J: "[eb4,a4] ~@3 [eb4,a4] ~@3 [eb4,a4] ~@3 [eb4,a4] ~@3 [eb4,a4] ~@3 [eb4,a4] ~@3", // Ebdim
  K: "[eb4,ab4] ~@3 [eb4,ab4] ~@3 [eb4,ab4] ~@3 [eb4,ab4] ~@3 [eb4,ab4] ~@3 [eb4,ab4] ~@3", L: "[d4,ab4] ~@11",
  M: "[gb3,gb4] [g3,g4]@18 ~@5", N: "[gb3,gb4]", O: "[d4@47 ~]/2", P: "~ g4@20 a4@2 [e4,bb4], d4@11 ~",
  Q: "~@12 d5@11 ~, b4 ~, ~ f4@23", R: "~@12 [f4,gb4] g4@3 bb4 ~@3 bb4 c5@3",
  S: "bb4@9 ~@3 g4@3 ~ c4@2 ~@2 eb4@2 ~@2, ~@12 gb4 ~@11", T: "eb4@19 ~@5",
  U: "[~@8 [c5,db5] d5@30 ~ bb4@2 ~@2 g4@2 ~@2]/2", V: "[bb4@20 ~ ab4 ~ g4@19 ~@6, ~@10 a4 ~@13]/2",
  W: "[g3,c4,eb4]@17 ~@3 [c4,eb4]@2 ~@2, ~@20 g3 ~@3", X: "~@5 [g3,c4,eb4]", Y: "[g3,bb3,d4]@17 ~@3 [g3,bb3,d4]@2 ~@2",
  Z: "~@5 [c4,eb4]", AA: "[[d4,f4]@7 ~ [g4,bb4]@2 ~@10 [eb4,g4]@27 ~]/2",
  AB: "[[d4,f4]@7 ~ [g4,bb4]@2 ~@10 [eb4,g4]@72 ~@4]/4", // Dm Gm Eb
})).s("gm_alto_sax").gain(0.64)

// chords · alto sax · soft notes
const alto_sax_soft = note("<~@26 A@2 B ~ C@2 ~@30 D@2 E ~ C@2 F ~@4 G ~@24 H@2 E ~ C@2 F ~@49>".pickRestart({
  A: "eb4/2", B: "~@5 g4, ~@19 gb4@2 ~@3", C: "f4/2", D: "[eb3,eb4]/2", E: "~@5 [g3,g4], ~@19 [gb3,gb4]@2 ~@3",
  F: "~@22 eb4 ~", G: "~@11 f4", H: "[c4,eb4]/2",
})).s("gm_alto_sax").gain(0.4)

// chords · trombone
const trombone = note(`<
  ~@3 A B@2 ~@5 A B@2 ~@2 C D E@2 F@2 G@2 ~@17 H I@4 J K L M ~@2 C D E@2 F@2 G@2 ~@6 N@4 ~@7 H I@4 J K L M ~@2 C D E@2
  F@2 G@2 ~@4 O P N@4 Q R S ~@4 H I@4 J K L M ~@5 A B@2 ~@5 A T@2 ~@5 A B@2 ~@3 A U@4
>`.pickRestart({
  A: "~@5 g4", B: "[bb4@7 ~ d5 ~@11 c5@27 ~]/2", C: "~@8 [bb4,d5]@2 ~@10 [g4,bb4,d5]@3 ~, ~@8 g4 ~@15",
  D: "[g4,c5,eb5]@3 ~@9 [g4,c5,eb5]@2 ~@10", E: "[[g4,d5,f5]@2 ~@10 [g4,d5,f5]@7 ~ [g4,c5,eb5]@20 ~@8]/2",
  F: "[~ g5@36 ~@7 gb5@4]/2", G: "[f5@15 ~]/2", H: "~ [g3,d4]@2", I: "[[c5,eb5] [bb4,d5], g4]/4",
  J: "[a4,c5,eb5] ~@3 [a4,c5,eb5] ~@3 [a4,c5] ~@3 [a4,c5,eb5] ~@3 [c5,eb5]@2 ~@2 [a4,c5,eb5] ~@3, ~@8 eb5@2 ~@6 a4 ~@7", // Adim Am Adim Cm Adim
  K: "[a4,c5,eb5] ~@3 [a4,c5,eb5] ~@3 [a4,eb5] ~@3 [a4,c5,eb5] ~@3 [a4,c5,eb5] ~@3 [a4,eb5] ~@3, ~@4 c5 ~@5 c5 ~", // Adim
  L: "[c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [c5,eb5]@2 ~@2, ab4@2 ~@6 c5@2 ~@10 ab4 ~@3", // Cm Ab Ab5 Ab Cm
  M: "[f4,ab4,d5] ~@11", N: "[bb4@6 ~ d5, g4@7 ~, ~@3 b4]/4", O: "c5", P: "b4", Q: "[c4,c5]@17 ~@3 [c4,c5]@2 ~@2",
  R: "~@5 [c4,c5]", S: "[bb3,bb4]@9 ~ [bb3,bb4] ~", T: "[bb4@7 ~ d5@2 ~@10 c5@26 ~@2]/2",
  U: "[bb4@7 ~ d5@2 ~@10 c5@72 ~@4]/4",
})).s("gm_trombone").gain(0.48)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 ~@17 I@4 J K@2 L M N@2 O@2 P@2 Q R ~@2 S T U@4 V@2 ~@8 W X@2 Y Z@2 AA AB@3 AC AD AE@2
  P@2 AF R ~@2 S T AG@4 V@2 ~@8 W X@2 Y Z@2 AH AB@3 AC AD AE@2 P@2 AF R ~@2 A@2 B@2 C@2 D@2 A@2 B@2 AI@2 D@2 A@2 B@2
  AI@2 D@2 A@2 AJ@4
>`.pickRestart({
  A: "[[g4,g5]@18 ~@2 [g4,g5]@19 ~ [eb4,eb5]@3 ~ [f4,f5]@4]/2", B: "[[g4,g5]@18 ~@2 [g4,g5]@23 ~ [eb4,eb5]@4]/2",
  C: "[[f4,f5]@4 [bb4,bb5] ~@5 g5@14, ~@5 g4@6 ~]/2", // F Bb
  D: "[[d5,d6]@12 [bb4,bb5]@4 [g4,g5]@3 ~ [bb4,bb5]@20 [g4,g5]@4 [f4,f5]@4, [c5,db6] ~@47]/2", // D Bb G Bb G F Dbmaj7
  E: "[~ [g4,g5]@13 ~@6 [g4,g5]@17 ~@3 [eb4,eb5]@3 ~ [f4,f5]@4]/2", // G Eb F
  F: "[~ g5@16 ~@3 [g4,g5]@20 ~@4 [eb4,eb5]@4, g4 ~@2]/2", G: "[~ [f4,f5]@4 ~@3 [bb4,bb5]@2 ~@10 [g4,g5]@28]/2",
  H: "[db6 d6@11 [bb4,bb5]@4 [g4,g5]@4 ~ bb4@21 ~@6, d5@12 ~@8 bb5@21 ~@7]/2", // Bb G
  I: "[~@24 [g4,c5]@36 ~@12 d5@15 ~@5 c6@4, ~@23 eb4@37 ~@10 g4@16 ~@10, ~@71 bb4@16 ~@9]/4", J: "bb5@15 ~ c6@4 bb5@4",
  K: "[~ [f5,ab5]@15 ~@8 c5@24, c5@17 ~@6 ab4@25, ~@4 d5@3 ~]/2", L: "[g4,bb4,d5]@5 ~", M: "~ [f4,b4,d5]@2",
  N: "[eb5@9 ~@3 eb5@4 d5@4 c5@15 ~ [g4,c5,eb5]@12, g4@35 ~@13, c5 ~@2]/2", O: "[[g4,bb4,d5]@3 ~]/2",
  P: "[a4,c5,eb5,f5] ~@3 [a4,c5,eb5,f5] ~@3 [a4,c5,eb5,f5] ~@3 [a4,c5,eb5,f5] ~@3 [a4,c5,eb5,f5] ~@3 [a4,c5,eb5,f5] ~@3", // F7
  Q: "[ab4,c5,eb5,f5] ~@3 [ab4,c5,eb5,f5] ~@3 [ab4,c5,eb5,f5] ~@3 [ab4,c5,eb5,f5] ~@3 [ab4,c5,eb5,f5] ~@3 [ab4,c5,eb5,f5] ~@3", // Fm7
  R: "[ab4,c5,d5,f5] ~@11", S: "~@2 [d5,d6] ~@2 [d5,d6]", T: "[eb5,eb6]@4 ~@8 [eb5,eb6]@5 ~@7",
  U: "[[f5,f6]@5 ~@7 [f5,f6]@7 ~ [eb5,eb6]@15 ~@13 d5@39 ~@5 [gb4,a4,db5]@4, ~@23 g4@19 ~@6, ~@47 bb4@37 ~@12]/4", // F Eb Gbm
  V: "[[f4,ab4,c5]@37 ~@11]/2", // Fm
  W: "~ [d4,g4]@2 ~ [d4,g4,bb4]@2 ~@2 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4]@2 ~@2 [d4,g4,bb4]@2 ~@2, bb4 ~@11", // G5 Gm
  X: "[[d4,f4,b4]@3 ~ [d4,f4,b4]@2 ~@2 [d4,f4,b4]@2 ~@2 [d4,f4,b4]@3 ~ [d4,f4,b4]@2 ~@2 [f4,b4]@2 ~@2 eb5@20 ~@4, ~@19 d4@2 ~ g4@22 ~@4, ~@23 c5@21 ~@4]/2", // Bdim Fdim
  Y: "[g4,c5,eb5]@8 ~@5 eb5@8 ~@3, ~@11 g4@10 ~@3, ~@4 c5@3 ~", // Cm
// … 91 more lines