Strudelify
Sophisticated Lady cover art

Solos, Duets, & Trios

Sophisticated Lady

Ellington

KeyE♭ majorTempo65 bpm
0:00/0:00
// Sophisticated Lady — Ellington
// 65 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 63 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · "Bas"
const bass = note(`<
  ~ A B C D E F G H I B C D E J K L M N O P Q L R S T B U D I V W N Q L X Y Q L Z S AA B AB D I AC AD AE@4 AF@2 AG@2
  AH@2 AI AJ AK@2 ~
>`.pickRestart({
  A: "bb1@44 f1@3 ~", B: "gb2 f2 e2 eb2", C: "ab2@4 eb3 ab2", D: "ab2 g2 gb2 f2", E: "bb1@10 ~ bb1",
  F: "eb2@24 a1@18 ~@2 a1@3 ~", G: "ab2@40 ab1@4 ab2@3 ~", H: "f2@10 ~ f2", I: "bb1@4 f2 bb1",
  J: "eb2@40 eb1@4 eb2@3 ~", K: "ab2@10 ~ ab2", L: "a1@18 ~@2 a1@3 ~ d2@24", M: "g2@18 ~@2 g2@3 ~ e2@24", N: "a1 d2",
  O: "g2@24 ab2@18 ~@2 ab2@3 ~", P: "a1@24 d2@18 ~@2 d2@3 ~", Q: "g2 e2", R: "g2@12 d2@12 c2@18 ~@2 c2@3 ~",
  S: "eb2 d2", T: "bb1@39 ~@5 bb1@4", U: "ab2@29 ~@3 ab2@2 ~@2 ab2@12", V: "eb2 a1", W: "ab2@39 ~@5 ab2@4", X: "g2 ab2",
  Y: "c2 d2", Z: "g2 d2 c2@2", AA: "bb1@40 bb0@4 bb1@3 ~", AB: "ab2@18 ~@2 ab2@3 ~ db2@18 ~@2 db2@3 ~",
  AC: "eb2@18 ~@2 eb2@3 ~ db2@18 ~@2 db2@3 ~", AD: "c2 gb2", AE: "f2/4", AF: "[~ ab2@43 db2@15 ~@13 db2@13 ~@11]/2",
  AG: "[ab2@11 db2@6 ~ db2@5 ~]/2", AH: "[gb2@12 ~ db3@11 bb2@12 g2@8 b1@51 ~]/2",
  AI: "e2@12 b2@12 ab2@11 ~ e2@6 b1@5 ~", AJ: "a1!2", AK: "[ab1@95 ~]/2",
})).s("gm_acoustic_bass").gain(0.49).pan(0.4)

// chords · piano
const piano = note(`<
  A@2 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB@2 AC AD AE AF AG AH AI AJ@2 AK AL AM AN AO AP AQ AR AS
  AT@2 ~@2 AU@2 AV@2 AW@2 AX@4 ~
>`.pickRestart({
  A: "[~ [f4,ab4,c5], ~@47 db4@45 ~@4, ~@47 bb3@39 ~@10]/2", // Fm
  B: "[db4,gb4,bb4,db5,e5,ab5]@12 [c4,f4,a4,c5,eb5,g5]@12 [b3,e4,ab4,b4,d5,gb5]@11 ~ [eb4,g4,f5]@12, ~@35 bb3@12 ~, ~@9 [bb4,db5]@2 ~", // Gb7 F7 E7 Eb Bbm
  C: "~@5 g5@3 ~ ab5@3 ~ g5@3 eb5@3 c5@2 eb5@3 [g3,c4,eb4,g5]@24, [g3,eb4] ~, ~ c4@23 ~@24", // Cm
  D: "~@13 b2@9 ~@2, ~@24 [eb4,gb4,ab4]@23 ~, ~@25 [gb3,b3,c5]@23", // Ab7 B
  E: "~@17 c4@6 ~@9 [d5,f5]@16, f3, b3@23 ~ ab3@24, [d4,f4,ab4,c5]@19 ~@5 [eb5,g5]@8 ~@16, ~ bb2@23 ~ c4@23", // Dm Dm7b5 Eb
  F: "~ bb2@23 ~ [db4,e4,g4,c5]@23, [eb3,bb3,db4,f4,g4,c5] [a2,e3,a3]", G: "[c4,eb4,g4,bb4]@41 ~@7, [ab2,eb3,ab3]@47 ~",
  H: "~@5 gb5@3 ab5@4 f5@3 eb5@3 c5@2 ~ bb4@2 ~@6 [a3,c4,eb4,gb4]@19, ~@23 a4@23 ~@2", // Adim
  I: "~ [f3,c4]@11 [f4,ab4,c5,eb5]@3 ~ [f4,ab4,c5,eb5]@2 ~@6 [db3,f3,c4]@12 [db3,f3,c4]@11 ~, db3@10 ~@2 [db3,f3,c4]@10 [f4,ab4,c5,eb5]@25 ~", // F5 Fm7 Dbmaj7 Fm7
  J: "g5 ab5 bb5 ab5 g5 f5 eb5 d5 ~ c5 bb4 ab4 ~ bb4 db5 e5, [ab3,c4,gb4]@12 [g3,b3,f4]@12 db5@3 ~@9 [b3,eb4]@11 ~, ~@25 [gb3,bb3,e4]@11 g4@3 ~@9, ~@37 g3@11", // Ab7 G7 B Gb7
  K: "eb5@3 c5@3 g4@3 ~@3 f4@12 [f3,bb3,c4,eb4]@23 ~, [g3,bb3,c4]@23 ~@25, eb4@9 eb4@14 ~@25", // Fsus4 C7
  L: "~@2 c3 db3 eb3 f3 gb3 ab3 a3@2 gb3@2 f3@2 eb3@2, ~@24 [a4,c5,eb5,ab5]@23 ~", // Ab
  M: "~@24 [ab5,c6]@3 ~ [f5,ab5]@3 ~ [d5,f5]@16, [d3,f3,ab3,c4]@11 ~", // Ab Fm Dm Dm7b5
  N: "g4@3 ~ bb4@3 db5@3 eb5@3 e5@3 gb5@3 g5@3 ~@15 eb5@9 ~@2, c4@23 ~, [f3,bb3]@22 gb5@15 ~@11, ~@24 [e3,a3]@23 ~", // Bb5 A5
  O: "~@6 c6@2 ~ ab5@2 ~ g5@4 f5@2 eb5@2 c5@3 bb4@24 ~, [eb3,ab3,c4] ~, ~@4 bb5 ~@19", // Ab
  P: "~ g4@22 ~ [a3,d4,e4,g4,a4,d5]@11 ~ [a3,c4,eb4,gb4,a4,d5]@12, [a3,c4,e4,a4,d5]@23 ~@25", // Asus4 D7 Am
  Q: "~@4 [g5,b5] [gb5,a5] [e5,g5] [d5,gb5] [c5,e5] [b4,d5] [a4,c5] [g4,b4] [gb4,a4] [e4,g4] [d4,gb4] [e4,g4]", // G Gbm Em D C Bm Am G …
  R: "[gb4,a4]@11 ~ [a3,e4,b4]@12 [d3,a3,eb4,gb4,b4]@24, ~@12 c4@35 ~", S: "~@24 a5@6 f5@5 ~ e5@6 d5@6",
  T: "c5@8 ~@28 d3@11 ~, ~@24 [gb5,a5,c6,eb6]@23 ~", // Gbdim
  U: "~@11 bb5@3 ~ b5@3 bb5@3 b5@3 bb5@3 b5@3 bb5@3 b5@3 bb5@3 ~ b5@2 bb5@4 b5@2",
  V: "~ e5@4 ~ e5@2 ~@12 b5@3 ~ eb5@4 eb5@2 ~ eb5@16 ~",
  W: "[g3,b3,d4,gb4,a4]@11 ~ [ab3,b3,d4,f4,ab4]@11 ~ [g3,bb3,c4,g4,bb4]@23 ~, ~@23 eb4@22 ~@3", // Gmaj7 Abdim C7
  X: "~ [g3,bb3,db4]@23 ~ [gb3,c4]@23, [eb4,g4,bb4]@24 [a3,d4,gb4,a4]@23 ~", // Gdim Gbdim Eb D
  Y: "~@12 [c5,c6]@3 [db5,db6]@3 [c5,c6]@2 [db5,db6]@3 [c5,c6]@5 [ab4,ab5]@3 ~ [ab4,ab5]@16", // C Db C Db C Ab
  Z: "~@4 ab5 c6 bb5 ab5 g5 gb5 f5 e5 eb5 c5 gb4 eb4", AA: "c4@12 ~@13 bb5@23, ~@24 [eb3,g3,c4,c5,eb5,g5]@23 ~",
  AB: "[[eb3,ab3,c4]@12 ~ [g3,b3]@11 [db3,gb3,bb3]@12 [c3,a3]@11 ~@2 [d4,f4,ab4,c5]@9 ~@2 [d4,f4,ab4,c5]@4 [f4,ab4,c5,eb5]@3 ~@6 c5@10 ~ [d4,f4,ab4,bb4]@4 c5@2 ~@6, ~@13 c3 ~@22 f3@35 ~ [f3,ab3,c4]@21 ~@3, ~@48 [bb2,bb3]@24 [d4,f4,ab4]@10 ~@6 d4 ~@7]/2", // Ab G Gb F Dm7b5 Fm7 Bb7 Fm …
  AC: "~ [eb3,bb3]@7 ~ [bb2,eb3,bb3,g4]@15 ~ [db4,e4,g4,c5]@7 ~ [a2,eb3,a3,db4,e4,g4,c5]@15, [bb2,db4,f4,g4,c5]@8 [db4,f4,c5]@15 ~ [a2,eb3,a3]@8 ~@16", // Eb5 Eb C A7 Gm7b5 Dbmaj7 Adim
  AD: "~ [ab2,eb3,ab3]@23 ~@13 bb5@9 ~@2, [c4,eb4,g4,bb4]@35 ~ [c5,eb5,g5]@10 ~@2, ~@24 ab2@23 ~, ~@25 [eb3,ab3]@22 ~", // Ab5 Cm7 Cm Ab5
  AE: "~ g5@10 ~ [e5,g5,b5]@11 ~@2 b4@10 ~ [c5,eb5,gb5,b5]@11 ~, [a4,c5,e5]@11 c5@11 ~@2 [c4,eb4,gb4]@11 ~@13", // Em Cdim Am Cdim
  AF: "~@12 b5@3 c6@3 b5@2 c6@3 ~ b5@2 g5@3 e5@3 g5@14 ~@2, [gb3,a3,b3,d4]@23 ~ [e3,g3,b3,d4]@22 ~@2", // Bm7 Em7
  AG: "~@12 b5@3 c6@3 ~ b5@2 c6@3 b5@2 ~ g5@3 e5@3 g5@4 b5@6 ~@5, [e3,g3,a3,c4]@23 ~ [d3,gb3,a3,c4]@21 ~@3", // Am7 D7
  AH: "gb5@6 d5@6 e5@6 d5@6 ~ f5@2 e5@3 d5@3 ~@3 b4@3 f5@3 e5@3 eb5@3, [gb3,a3,b3,d4]@11 ~ [f3,ab3,b3,d4]@11 ~, ~@33 c5@5 ~@10", // Bm7 Fdim
  AI: "c5@3 d5@3 eb5@3 d5@3 c5@3 bb4@3 a4@3 g4@3 gb4@4 ~@8 d5@3 db5@3 c5@3 d5@3, [eb3,g3,a3,c4]@23 ~ [d3,gb3,bb3,c4]@24", // Am7b5 Daug
  AJ: "[~@22 b4@14 ~@10 bb4@14 ~@10 c5@14 ~@9 c5@3, ~@12 a5@24 a5@23 ~ a5@24 a5@10 ~@2, ~@15 gb5@21 ~@4 f5@19 ~@5 g5@20 ~@3 gb5@8 ~, ~@18 d5@18 ~@7 e5@17 ~@6 e5@17 ~@7 d5@5 ~]/2",
  AK: "~ [a3,c4,eb4,g4,a4,c5]", AL: "~ [eb4,g4,bb4,db5]@23 [gb3,c4,d4,gb4,a4,c5]@23 ~, [g3,db4] ~",
  AM: "~@6 [bb2,f3,ab3,db4,f4,ab4,c5,eb5]@2 [bb2,f3,ab3,db4,f4,ab4,c5,eb5] ~@3 [bb2,f3,ab3,db4,f4,ab4,c5,eb5]@12", // Bbm7
  AN: "[gb3,db4,gb4,bb4,db5,eb5] [f3,c4,f4,a4,c5,eb5] [e3,b3,e4,ab4,b4,eb5] [eb3,bb3,eb4,g4,bb4,eb5]", // Ebm7 F7 Emaj7 Eb
  AO: "~ [ab2,ab3,c4,e4,g4,b4] [db2,db3,b3,eb4,g4,bb4]@2", // Cmaj7 Eb7
  AP: "[ab2,ab3,c4,eb4,gb4,bb4] [g2,g3,b3,d4,f4,a4] [gb2,gb3,bb3,db4,e4,ab4] [f2,f3,a3,c4,eb4,gb4]", // Ab7 G7 Gb7 F7
  AQ: "~ [bb3,c4]@3 [ab4,c5] [f3,bb3,c4]@2 ~@5 [f3,bb3,c4,f4]@36, [f3,d4,f4,ab4,c5]@2 f4 ~@21, ~@5 d4 ~@6 [d4,ab4,c5]@32 ~@4", // Bbsus2 Ab Fsus4 Dm7b5
  AR: "[eb2,eb3,db4,f4,g4,c5]@2 [db4,e4,ab4,c5] [db4,f4,g4,c5], ~ [db2,db3]", // Cm Dbm Dbmaj7 Db
  AS: "[c2,c3,c4,eb4,gb4,bb4]@23 ~ [gb2,gb3,c4,eb4,gb4]@24, ~@6 bb4@5 ~", // Cm7b5 Cdim
  AT: "[[f2,f3,c4,eb4,gb4,a4] [c3,f3,a3,c4,eb4,gb4,ab4]@3]/2", // F7
  AU: "[[c4,eb4,g4,bb4]@13 ~@3 [db2,db3]@16, [ab2,ab3] ~, ~@43 [eb4,g4,bb4]@47 ~@6, ~@11 b3@12 ~]/2", // Cm7 Db Ab Eb
  AV: "[[ab2,ab3,c4,eb4,g4,bb4]@44 ~ db3@51, ~@11 db2@13, ~@44 [b3,eb4,g4,bb4]@41 ~@11]/2", // Abmaj7 Eb
  AW: "[[bb3,db4,f4,ab4]@40 ~@5 [a3,db4,eb4,ab4]@51, [gb2,gb3]@44 b2@51 ~]/2", // Bbm7 Amaj7 Gb
  AX: "[~@24 eb5@3 e5@2 ~ eb5@3 e5@3 eb5@3 ~ b4@3 ab4@4 g4@14 ~@12 e5@22 ~ [g4,bb4,c5,eb5]@96, ~@72 [a2,a3,g4,b4,db5]@23 [ab2,eb3,g3]@96 ~]/4", // Cm7 A7 Abmaj7
})).s("gm_piano").gain(0.26).pan(0.6)

// chords · acoustic guitar nylon · "Ac. Guita"
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I B J D K L M N O P Q R S T U V W X Y D W Z AA AB AC AD AE AF AG AH AI AJ AK B AL AM W AN AO AP@4 AQ
  AR AS AT AU AV AW ~@4
>`.pickRestart({
  A: "~@11 c4, ~ bb2@5, ~@12 f3@15 ~@5 f3@16, ~@5 ab3@7, ~@3 db4",
  B: "[bb3,db4,e4,gb4] [a3,c4,eb4,f4] [ab3,b3,d4,e4] [g3,bb3,db4,eb4]", // Gb7 F7 E7 Eb7
  C: "~@5 c4 ~@2 c4 ~@2 c4, ~ ab2@5, ~@4 ab3@7 ~ ab3@4, ~@8 eb4@7 ~",
  D: "[c4,eb4,gb4,ab4] [b3,d4,f4,g4] [bb3,db4,e4,gb4] [a3,c4,eb4,f4]", // Ab7 G7 Gb7 F7
  E: "~@11 f4, ~ bb2@3 d4@2, ~ f3@3, ~@5 ab3@7, ~ bb3", F: "~@5 bb3 [g3,c4,db4,e4]@6, eb2 ~, db4@3 ~@5, ~ g3@2 ~@3",
  G: "~@11 eb4, ~ ab2@5, ~@12 bb3@15 ~@5 bb3@16, ~@5 c4@7, ~@3 g4",
  H: "a3@2 ~@3 c4@6 f3, f2, ~@2 f3@5 ~@5, ~@6 a3@17 ~",
  I: "~@5 ab3 ~@2 ab3 ~@2 ab3, ~ bb2@5, ~@4 f3@7 ~ f3@4, ~@8 c4@7 ~",
  J: "~@9 g4@2 ~, ~@4 ab2@19 ~, ~@3 ab3@8 ~, ~@5 c4@6 ~",
  K: "ab3@5 ~@39 ab3@4, [bb2,d4], ~@4 ab3@17 ~@3, ~ bb3@3, ~@5 f4@7", // Bb
  L: "~@9 db4@2 ~, ~@4 eb2@19 ~, ~@3 eb3@8 ~, ~@5 g3@6 ~",
  M: "~@5 eb4@5 ~@2, ~@4 ab2@39 ~@5, ~@4 ab3@17 ~@3, ~@3 c4@7 ~@2",
  N: "~@5 c4 ~@5 a3, e3 d3, ~ g3@2 ~@3, ~@3 a3@3 ~@2 [c4,gb4]@4", O: "[b3,d4,g4]@6 ~@5 e4, ~@7 e2@5, ~@2 g3, ~@3 b3",
  P: "~@5 b3 ~@5 d4, a2@2 ~ c4, b3@3 g3@3 ~@2 a3@4, ~@2 e3@4 ~ d3@5",
  Q: "~@5 b4 ~@5 f4, b3 ab3, ~ d4@2 ~ b3@2, ~ g4 ~ d4", R: "~@5 c4 ~@5 eb4, a2@3 ~ a3@2, c4 a3 eb4 c4, ~ e3@2 d3@3",
  S: "[b3,d4,g4,b4]@6 ~@5 g4, ~ g3, ~@2 b3, ~@3 e4", T: "[e3,a3,c4]@6 ~@5 gb4, ~ a3, ~@2 c4, ~@3 d4",
  U: "[b3,d4,g4,b4]@3 [b3,d4,f4,ab4]@3 ~@5 c4, ~ c3, ~@4 eb4@3 ~, ~@2 g3", // G Bdim
  V: "~@5 g3 [c4,d4,gb4,a4]@6, eb2 ~, ~ [bb3,g4]@2 ~@3", // D7 Eb
  W: "~@5 c4@5 ~@2, ~@4 bb2@39 ~@5, ~@4 f3@17 ~@3, ~@3 ab3@7 ~@2",
  X: "[bb3,db4,gb4,bb4] [a3,c4,eb4,f4] [ab3,b3,d4,e4] [g3,bb3,db4,eb4]", // Gb F7 E7 Eb7
  Y: "~@8 eb4@3 ~, ab2@23 ~, ~@4 c4@19 ~, ~@3 ab4@8 ~, ~@5 c5@4 ~@3",
  Z: "[eb3,g3,bb3]@6 ~@5 db4, ~@7 a2@5, ~@2 e3, ~@3 g3, ~@5 c4", // Eb
  AA: "~@5 c4 ~@2 c4 ~@2 c4, ~ ab2@5, ~@4 bb3@7 ~ bb3@4, ~@8 eb4@7 ~",
  AB: "~@5 e3 ~@5 a3, a2 d3, ~ [a3,e4]@2 ~ [c4,gb4]@2", AC: "~@5 d4 ~@5 e4, g2 e2, gb4@3 ~ e4@2 b3@2, ~ b3@2 ~ g3@2",
  AD: "[g3,a3,c4,e4] [a3,c4,d4]", AE: "~@5 d4 [ab3,b3,d4]@6, g2 ~, d4 b3 ~@2, ~ g3@2 ~@3",
  AF: "~@5 c4 ~@5 gb4, ~ c3@5 ~ d3@5, ~@2 g3@4 ~@3 d4@3, ~@3 a3@3 ~@2 bb3@4",
  AG: "~@5 b3 ~@5 e4, g2 e2, ~@2 [d4,b4]@4 e4@3 b3@3, ~@2 g3", // G
  AH: "~@5 a3 ~@5 d4, ~ a2@5 ~@2 a3@4, ~ e3@2 d3@3, ~ g3 d4 c4",
  AI: "[b3,d4,g4,b4]@3 [b3,d4,f4,ab4]@3 ~@5 g4, ~@7 c3@5, ~@2 g3, ~@3 c4, ~@5 eb4", // G Bdim
  AJ: "~@5 g3 ~@5 d4, eb2@2 d4 c4, ~ [bb3,g4]@2 d3@3, ~@2 a3", AK: "~@2 f4, ~ bb2@5, ~ f3@3, ~@5 bb3@7, ~ db4",
  AL: "[ab3,c4,eb4] [g3,b3,db4]", AM: "[c4,eb4,gb4,ab4] [b3,d4,f4,g4] [bb3,db4,e4,gb4] [a3,c4,eb4,gb4]",
  AN: "~@5 bb3 ~@5 f4, eb2@2 ~ c4, db4@9 ~@7 ab3@8, ~@2 g3@4 ~ db3@5, ~@5 db4",
  AO: "~@5 g3 [bb3,db4,e4,gb4]@6, c3 ~, ~ [bb3,eb4]@2 ~@3", AP: "[a3,c4,eb4,gb4]/4",
  AQ: "~@20 g4@4 [c4,eb4,g4,bb4]@7 ~ [b3,db4,f4,g4]@15 ~, ~ ab2@5 ~@6, ~ bb3@2 ~@3, ~ c4 ~@2, ~@2 eb4 ~@3", // Cm7 Db7
  AR: "~@5 db4@5 ~@2, ~@4 db3@39 ~@5, ~@4 g3@17 ~@3, ~@3 b3@7 ~@2",
  AS: "~@20 db4@4 [bb3,db4,f4,ab4]@7 ~ [a3,db4,eb4,gb4]@15 ~, gb2 ~, db4 bb3 ~@2, ~ gb3@2 ~@3", // Bbm7 Ebm7b5
  AT: "~@11 gb4, ~ b2@3 eb4@2, ~ gb3@3, ~@5 a3@7, ~ db4", AU: "[e3,ab3,b3]@24 [ab3,b3,eb4,gb4]@7 ~ [g3,b3,db4,e4]@15 ~",
  AV: "[e3,g3,b3]@6 ~@5 e3, ~ a2, ~@2 [g3,db4]", AW: "[c4,eb4,g4,bb4] ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.19)

// other · alto sax
const alto_sax = note("<~@41 A B C ~ D E F G ~@3 H@2 I@2 J@2 K@2 L@3>".pickRestart({
  A: "~@8 c4@3 db4@3 eb4@3 e4@3 ab4@3 c5@12 bb4@13", B: "e4@11 eb4@12 ~ d4@12 db4@11 ~", C: "~@13 bb4@11 bb4@23 ~",
  D: "eb5", E: "~ eb5@23 db5@24", F: "eb5@36 db5@11 ~", G: "db5@25 c5@23", H: "[~@11 f4@7 eb4@17 f4@8 ab4@52 ~]/2",
  I: "[~@12 f4@7 eb4@17 f4@8 ab4@52]/2", J: "[~@12 eb4@8 db4@16 ab4@8 g4@23 ab4@29]/2",
  K: "[gb4@42 ~ gb4@28 e4@24 ~]/2", L: "[eb4@119 ~@25]/3",
})).s("gm_alto_sax").gain(0.26).pan(0.4)

// other · alto sax
const alto_sax_2 = note("<~@41 A@2 B ~ C D E F ~@3 G@2 H@2 I@2 J@5>".pickRestart({
  A: "[~@47 db4@12 ~ c4@12 b3@12 bb3@12]/2", B: "~ g4 f4@2", C: "c5", D: "c5 bb4", E: "~ c5@23 bb4@24", F: "bb4 a4",
  G: "[~@12 eb4@7 c4@16 eb4@8 f4@52 ~]/2", H: "[~@12 eb4@7 ~ c4@16 eb4@8 f4@52]/2",
  I: "[~@3 db4@2 bb3@4 db4@2 eb4@13]/2", J: "[eb4@42 db4@29 ~ db4@23 c4@121 ~@24]/5",
})).s("gm_alto_sax").gain(0.26).pan(0.4)

// other · tenor sax
const tenor_sax = note("<~@41 A B C ~ D E F G ~@3 H@2 I@4 J@5>".pickRestart({
  A: "~@8 c3@3 db3@4 eb3@2 e3@3 ab3@3 c4@12 bb3@12 ~", B: "bb3 a3 ab3 g3", C: "~@12 eb4@11 ~ eb4@24", D: "ab4", E: "g4",
  F: "gb4", G: "~ gb4@24 gb4@23", H: "[~@11 c4@8 ~ bb3@16 c4@7 ~ eb4@52]/2",
  I: "[~@12 c4@7 ~ bb3@16 c4@8 eb4@53 ~@11 bb3@8 ab3@16 bb3@8 db4@52]/4", J: "[~ b3@42 b3@28 ~ b3@23 bb3@121 ~@24]/5",
})).s("gm_tenor_sax").gain(0.26).pan(0.4)

// other · tenor sax
const tenor_sax_2 = note("<~@41 A@2 B ~ C D E F ~@3 G@2 H@2 I@2 J@5>".pickRestart({
  A: "[~@47 gb3@13 f3@12 e3@11 eb3@12 ~]/2", B: "~ c4 b3@2", C: "f4", D: "e4@47 ~", E: "eb4@47 ~", F: "eb4!2",
  G: "[~@12 bb3@7 g3@16 ~ bb3@7 b3@52 ~]/2", H: "[~@12 bb3@8 g3@16 bb3@7 ~ b3@52]/2",
  I: "[~@12 ab3@8 f3@16 ab3@7 ~ a3@23 b3@24 a3@5]/2", J: "[ab3@42 ~ g3@28 g3@24 g3@121 ~@24]/5",
})).s("gm_tenor_sax").gain(0.26).pan(0.4)

// other · trumpet · "Trumpet 1"
const trumpet = note(`<
  ~ A B C D A E F G A B C D A E ~@10 A B H I A J ~@10 K@2 L I M N O P ~@3 Q@4 R@2 S@5
>`.pickRestart({
  A: "ab4", B: "eb5 d5 db5 c5", C: "~ bb4 g4@2", D: "eb5@12 d5@12 db5@12 c5@11 ~", E: "eb5 c5", F: "~ bb4@3", G: "b4",
  H: "~@12 bb4@11 ~ g4@24", I: "eb5@12 d5@12 db5@11 ~ c5@12", J: "eb5@24 c5@23 ~",
  K: "[~ eb5@46 eb5@13 d5@12 db5@11 ~ c5@12]/2", L: "~@12 b4@13 bb4@23", M: "c5", N: "c5@23 bb4@24 ~", O: "bb4",
  P: "a4 ab4", Q: "[bb4@43 bb4@52 ~]/2", R: "[ab4@43 ~ ab4@28 ab4@24]/2", S: "[gb4@42 ~ gb4@28 e4@24 bb4@121 ~@24]/5",
})).s("gm_trumpet").gain(0.26).pan(0.6)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
  ~ A B C D A E F G A H C I A J ~@10 A B K D A L ~@10 M N O D P Q R S ~@3 T@2 U@2 V@2 W@5
>`.pickRestart({
  A: "f4", B: "c5@12 b4@11 ~ bb4@12 a4@12", C: "~ g4 f4@2", D: "b4@12 bb4@12 a4@12 ab4@11 ~", E: "c5 gb4", F: "~ f4@3",
  G: "ab4", H: "c5 b4 bb4 a4", I: "b4 bb4 a4 ab4", J: "c5@24 gb4@23 ~", K: "~@12 g4@12 f4@23 ~", L: "c5@23 ~ gb4@24",
  M: "c5", N: "c5@13 b4@12 bb4@11 a4@12", O: "~@12 g4@12 ~ g4@23", P: "ab4@47 ~", Q: "g4@2 ab4 g4", R: "gb4",
  S: "~ gb4@47", T: "[g4@43 g4@28 f4@24 ~]/2", U: "[g4@44 g4@27 f4@24 ~]/2", V: "[f4@11 eb4@7 eb4@6]/2",
  W: "[~ eb4@42 db4@28 ~ db4@23 g4@121 ~@24]/5",
})).s("gm_trumpet").gain(0.2).pan(0.6)

// chords · trumpet · "Trumpet 3"
const trumpet_3 = note(`<
  ~ A B C D E F G H I B C D E F ~@10 A B C J E F ~@10 K B L@2 M N O P ~@2 Q@3 R@2 S@2 T@5
>`.pickRestart({
  A: "[bb3,db4]", B: "[gb4,ab4] [f4,g4] [e4,gb4] [eb4,f4]", C: "~ [d4,eb4] [c4,eb4]@2",
  D: "[gb4,a4] [f4,ab4] [e4,g4] [eb4,gb4]", E: "[bb3,d4]", F: "[f4,ab4] [db4,e4]", G: "~ [c4,eb4]@3", H: "[eb4,gb4]",
  I: "[c4,eb4]@23 ~ [bb3,db4]@24", J: "[gb4,a4]@11 ~ [f4,ab4]@12 [e4,g4]@12 [eb4,gb4]@12", K: "[f4,ab4]",
  L: "[~@12 [c4,e4]@12 [b3,eb4]@23 ~ a4@12 [f4,ab4]@12 [e4,g4]@12 [eb4,gb4]@12, ~@47 gb4@12 ~@37]/2", M: "[d4,f4]",
  N: "[db4,f4] [db4,e4]", O: "~ c4@47, eb4", P: "~ eb4@47, c4", Q: "[~@48 c4@43 [b3,eb4]@53, ~@47 eb4@43 ~@54]/3",
  R: "[[c4,eb4]@43 ~ b3@51 ~, ~@43 eb4@53]/2", S: "[[bb3,db4]@11 [a3,db4]@7 [a3,db4]@6]/2",
  T: "[[ab3,b3]@42 ~ [g3,b3]@29 [g3,b3]@23 ~ c4@120 ~@24, ~@95 eb4@122 ~@23]/5", // Abm G
})).s("gm_trumpet").gain(0.2).pan(0.6)

// other · trombone
const trombone = note(`<
  ~ A B C D A E F G A H C D A I ~@2 J K L M N O ~ P A Q C D A R ~@2 S T U V S T W X Y@2 Z AA AB AC AD AE ~@3 AF@2 AG@2
  AH@2 AI@5
>`.pickRestart({
  A: "ab3", B: "e4@12 eb4@11 ~ d4@12 db4@12", C: "~ b3 bb3@2", D: "f4 e4 eb4 d4", E: "db4!2", F: "~ g3@3", G: "c4",
  H: "e4 eb4 d4 db4", I: "db4@24 db4@23 ~", J: "~@3 a4 g4@2", K: "b4@24 gb4@23 ~", L: "d4 ab4", M: "g4@23 gb4@24 ~",
  N: "~@23 a4@8 g4@17", O: "b4@12 gb4@11 ~", P: "~ d4@23 c4@24", Q: "e4@12 eb4@12 d4@12 db4@11 ~", R: "db4@23 ~ db4@24",
  S: "~@3 b3 ~@2 d4 ~@2 g4 ~@5 b3 ~@2 d4 ~@2 g4 ~@5 b3 ~@2 d4 ~@2 g4 ~@5 b3 ~@2 d4 ~@2 g4 ~@2",
  T: "~@3 c4 ~@2 e4 ~@2 g4 ~@5 c4 ~@2 e4 ~@2 g4 ~@5 c4 ~@2 e4 ~@2 g4 ~@5 c4 ~@2 e4 ~@2 g4 ~@2", U: "~@5 gb4 f4@6",
  V: "~@19 e4@4 ~ eb4@24", W: "~ d4 eb4@2", X: "db4@24 eb4@23 ~", Y: "[db4@46 ~ e4@12 ~ eb4@12 d4@12 db4@11 ~]/2",
  Z: "~@12 bb3@11 ~ bb3@24", AA: "f4@12 e4@12 eb4@11 ~ d4@12", AB: "c4@47 ~", AC: "c4@24 bb3@23 ~", AD: "bb3", AE: "a3",
// … 96 more lines

More by Ellington