Strudelify

Ain't Misbehavin'

Basie

KeyE♭ majorTempo88 bpm
0:00/0:00
// Ain't Misbehavin' — Basie
// 88 bpm, 4/4, key D# 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 71 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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 · "Jazz Bass"
const bass = note(`<
  A B C@2 D E@2 F@2 G H I J K L M@2 N@2 O P Q R@4 S T U V@2 W X Y Z AA AB AC@2 AD@2 AE@2 AF@2 AG AH AI AJ AK AL AM AN AO
  AP AQ AR AS@2 AT AU AV AW AX AY@4 AZ@3
>`.pickRestart({
  A: "c2@23 ~", B: "ab2@23 ~", C: "[~@4 f1@4 f1@4 f1@6 f1@4 f2@8 f2@5 ~ bb1@6 bb1@6]/2",
  D: "eb3 bb2 eb2 f2@2 eb2 e2@2 e1 gb2@3", E: "[f2@4 f1@2 b1@6 bb1@5 ~ bb1@4 eb2@7 ~ ab2@6 g2@4 g1@2 a2@6]/2",
  F: "[ab2@5 ~@5 d2@2 db2@5 ~ db2@4 eb2@6 eb1@2 eb2@6 c2@6 e2@4 c2@2, ~ ab2 ~@6]/2",
  G: "f2@2 f1 f2@3 bb2 f2 bb1 ab2@2 gb2", H: "g2@5 ~ db2@4 ~@2 c2@5 ~@5 gb2@2, ~@3 c2",
  I: "f2@4 f1@2 f2@6 bb1@5 ~ bb1@6", J: "eb2@5 ~ eb2@6 e2@5 ~ e2@6", K: "f2@5 ~ f2@6 gb2@5 ~ gb2@6",
  L: "g2@3 bb2@2 g2 bb1@2 ~ a1@2 ~", M: "[ab2@5 ~ ab2@6 db2@5 ~ db2@4 eb2@8 g2@4 eb2@2 c2@4 c1@2 c2@6]/2",
  N: "[f2@5 ~@5 b1@2 bb1@4 bb0@2 e2@4 eb2@6 ~@2 eb2@3 ~@3 db2@5 ~ db2@3 ~@3, ~ f2 ~@6]/2",
  O: "eb2@5 ~ eb2@3 ~@3 g2@4 g1@2 db2@6", P: "c2@3 ~ c1 ~ d2@5 ~ eb2@6 g2@4 c2@2", Q: "ab2@3 eb3@3 ab3@3 eb3@2 db2",
  R: "[c2@6 d2@5 ~ eb2@6 g2@4 c2@6 c1@2 c2@4 c2@5 ~ bb1@5 ~ bb1@6 ~@2 bb1@4 ~@2 b1@6 db2@4 c2@6 ~@2 c2@3 ~@3 f2@4 ~@2 f2@5 ~]/4",
  S: "bb1@4 ~@2 b1@4 ~@2 c2@5 ~ c2@6", T: "f2@4 b1@7 ~ bb1@5 ~@5 e2@2, ~@3 bb1", U: "eb2@2 eb1 eb2@3 e2@3 g2@2 e2",
  V: "[f3@2 c3@2 f2@2 b1@4 a1@2 bb1@4 bb0@2 b1@4 bb1@6 ~@2 bb1@3 ~@3 a1@4 ab2@7 ~]/2",
  W: "ab2@5 ~@5 d2@2 db2@4 db1@2 e2@6, ~ ab2 ~@2", X: "bb1@3 ~ c2@2", Y: "f1 bb1", Z: "eb2@5 ~ eb2@6 c2@4 c1@2 c2@6",
  AA: "f2@5 ~ bb1@4 e2@6 e1@2 e2@6", AB: "eb2@5 ~ eb2@5 ~ e2@6 gb2@6",
  AC: "[f2@6 b1@4 bb1@6 ~@2 bb1@3 ~ eb2@7 ~ eb2@6 g2@4 g1@2 g2@6]/2",
  AD: "[ab2@4 ab1@2 d2@6 db2@5 ~ db2@4 eb2@6 eb1@2 eb2@6 c2@5 ~ c2@6]/2",
  AE: "[f2@4 f1@2 b1@6 bb1@5 ~ bb1@4 g2@6 ~@2 g2@3 ~@3 c2@6 gb2@6]/2",
  AF: "[f2@5 ~ f2@6 bb1@6 e2@4 eb2@6 ~@2 eb2@3 ~@3 e2@5 ~@5 gb2@2, ~@7 e2]/2", AG: "f2@5 ~ f2@6 gb2@4 gb1@2 gb2@6",
  AH: "g2@4 g1@2 g2@6 bb1@5 ~ a1@5 ~", AI: "ab3 eb3 ab2 d2@2 c2 db2@2 db1 db2@3",
  AJ: "eb2@5 ~ eb2@6 c2@5 ~@5 gb2@2, ~@3 c2", AK: "f2@2 f1 b1@3 bb1@3 e2@3", AL: "eb2@2 eb1 gb2@3 f3 c3 f2 g2@2 f2",
  AM: "gb2@5 ~ gb2@4 g2@2 ~@4 g1@7 ~", AN: "c2 ~@11", AO: "ab2 ~@11", AP: "f2 ~@11",
  AQ: "~@10 d2@2 eb2@4 eb2@5 ~ bb1@2", AR: "~@2 bb1@4 b1@3 d2@2 b1",
  AS: "[c2@4 c1@2 c2@6 f2@4 f2@2 ~@4 bb1@7 ~ b1@6 c2@4 c1@2 c2@6]/2", AT: "f2@5 ~ b1@5 ~ bb1@5 ~ bb1@4 ~@2",
  AU: "eb2@5 ~ eb2@5 ~ c2@4 c1@2 c2@6", AV: "f2@4 f1@2 b1@6 bb1@5 ~ bb1@6",
  AW: "bb2@2 f2@2 bb1@2 e2@4 d2@2 eb2@4 eb1 ~ a1@4 a0 ~", AX: "ab2@2 ab2@3 db2@3 db2@2 db2@2",
  AY: "[~ bb1@13 ~@4 c2@9 f1@13 bb1@13 ~ bb2@11 bb2@2 bb1@11 bb1@2 bb1@13 ab1@3]/4",
  AZ: "[~@2 a1@4 bb1@4 ~ eb2@56 ~@5]/3",
})).s("gm_acoustic_bass").gain(0.31).pan(0.4)

// bass · acoustic bass · "Jazz Bass" · soft notes
const bass_soft = note("<~@10 A ~@3 B ~@3 C D ~@4 E F G ~@3 H ~@6 I ~@4 J ~ D ~@10 K ~@3 L ~@11>".pickRestart({
  A: "~@10 db1 ~@13", B: "~@16 bb0 ~@5 a0 ~", C: "~@5 eb1@2 ~@10 db1@2 ~@5", D: "~@5 eb1@2 ~@17",
  E: "~@4 bb0 ~@5 bb0 ~@13", F: "~@5 c1@2 ~@9 f1 ~@7", G: "~@4 bb0 ~@5 b0 ~@13", H: "~@5 bb0@2 ~@17",
  I: "~@17 bb0@2 ~@5", J: "~@5 g1@2 ~@17", K: "~@2 c2 d2@2 ~@7", L: "~@22 bb0 ~",
})).s("gm_acoustic_bass").gain(0.22).pan(0.4)

// chords · piano
const piano = note(`<
  A B C D E@4 F@3 G H I J K@7 L M N O@2 P Q R@2 S T U V W X Y Z@2 AA@2 AB AC AD AE@2 AF@2 AG AH AI AJ AK AL AM AN AO@2
  AP@3 AQ AR AS@2 AT@2 AU@3
>`.pickRestart({
  A: "[bb3,eb4,g4,d5]@23 ~", B: "[c4,gb4,bb4,f5]@23 ~", C: "[eb4,eb5,eb6]", D: "~@8 bb5 bb4@3",
  E: "[~@4 [g3,bb3,c4,eb4]@5 ~ [g3,db4,e4,bb4]@4 ~@8 [ab3,eb4,f4,c5]@11 ~ [ab3,d4,g4,c5]@11 ~ [g3,bb3,c4,f4]@12 ~@2 [f3,b3,eb4,g4]@6 b3@2 ~@2 [c4,eb4,ab4]@11 ~@3 [f3,b3,eb4,bb4]@3 ~@9]/4", // Cm7 Gdim Fm7 Abmaj7 Gm7 Ebaug Ab Ebsus2
  F: "[~@4 [g3,eb4,bb4]@5 ~@7 [e3,bb3,db4,g4]@5 ~ [eb3,f3,ab3,c4]@11 ~ [ab3,d4,g4,c5]@7 ~ d4@2 ~@2 [f3,b3,e4,a4]@8 [f3,b3,eb4,bb4]@4 [e3,a3,bb3,d4]@7 ~ bb3@2 e4@2 g4 ~]/3", // Eb Edim Fm7 Abmaj7 Fmaj7 Ebsus2 Dsus2
  G: "[eb3,a3,d4,g4]@10 ~@6 [ab3,d4,gb4,b4]@5 ~@3", // Ebmaj7 Abm7b5
  H: "~@5 eb2 ~@5 e2, eb2@5 ~ e2@5 ~, ~ [g3,bb3,c4]@2 ~ [g3,bb3,db4]@2", // C7 Gdim
  I: "~@5 f2 ~@2 [eb3,bb3,c4]@4, f2@5 ~ gb2@6, ~ [eb3,ab3,c4]@2 ~@3", // Cm7 Ab
  J: "[bb3,f4,a4,d5]@3 ~@7 [ab3,db4,f4,c5]@8 [g3,db4,gb4,b4]@4 ~@2", // Bbmaj7 Dbmaj7 Gmaj7
  K: "[~@4 [f3,c4,eb4,ab4]@5 ~@3 [f3,b3,eb4,bb4]@10 [g3,eb4,bb4]@7 ~ eb4@2 g4@2 bb4 ~ [e3,bb3,db4,g4]@6 bb3@2 ~@2 [eb3,f3,ab3,c4]@4 ~@10 [ab3,c4,d4,g4]@10 [g3,bb3,c4,f4]@11 ~@3 [f3,b3,eb4,ab4]@3 ~@7 [g3,bb3,c4,eb4]@4 ~@10 [f3,b3,eb4,ab4]@3 ~@7 [eb3,g3,bb3,d4]@21 ~@3 [gb3,bb3,c4,eb4]@11 ~ [gb3,bb3,c4,eb4]@2 ~@12]/7", // Fm7 Ebsus2 Eb Edim Fm7 Abmaj7 Gm7 Fm7b5 …
  L: "[bb3,eb4,g4,c5]@9 ~ [bb3,eb4,g4,c5]@2 ~@12", // Cm7
  M: "[bb3,d4,e4,g4]@6 bb3@2 e4@2 g4 ~ [bb3,c4,e4,g4]@4 [d4,a4,c5,f5]@8", // Em7b5 C7 Dm7
  N: "[d4,f4,a4,c5]@3 [d4,a4,c5,f5]@3 [d4,ab4,b4,f5]@5 ~", // Dm7 Ddim
  O: "[[bb3,eb4,g4,c5]@10 [a3,b3,eb4,g4,d5]@5 ~ [a3,eb4,gb4,db5]@5 ~ [ab3,d4,f4,c5]@8 [a3,eb4,ab4,db5]@6 [bb3,d4,e4,a4]@6 bb3@2 e4@2 g4 ~]/2", // Cm7 G Ebm7b5 Dm7b5 Amaj7 Bbmaj7
  P: "[a3,eb4,g4,c5]@3 [a3,db4,eb4,ab4]@3 [ab3,d4,g4,c5]@5 ~", Q: "~@4 [g3,eb4,bb4]@5 ~ [g3,db4,e4,bb4]@7 ~ g3@2 ~@4",
  R: "[~@4 [ab3,eb4,g4,c5]@5 ~ [ab3,d4,gb4,c5]@11 ~ [ab3,bb3,db4,f4]@4 ~@8 [g3,db4,gb4,b4]@5 ~ [g3,c4,eb4,bb4]@8]/2", // Abmaj7 Ab7 Bbm7 Gmaj7 Cm7
  S: "[g3,c4,eb4,bb4]@6 c4@2 g4@2 bb4 ~ [f3,b3,eb4,bb4]@3 ~@9", // Cm7 Ebsus2
  T: "~@4 [eb3,eb4]@2 [f3,f4]@4 [eb3,eb4]@2 [bb3,bb4]@3 [a3,a4] [bb3,bb4]@8", // Eb F Eb Bb A Bb
  U: "~@4 [f3,f4]@2 [g3,g4]@4 [f3,f4] [b3,b4] [c4,c5]@3 [b3,b4] [c4,c5]@4 [bb3,bb4]@4", // F G F B C B C Bb
  V: "[g3,bb3,c4,f4]@6 c4@2 g4@2 bb4 ~ [e3,bb3,db4,ab4]@10 ~@2", // Gm7 Bbm7b5
  W: "[eb3,a3,d4,g4]@6 [eb3,a3,d4,g4,b4]@4 [ab3,d4,f4,c5]@11 ~@3", // Ebmaj7 G Dm7b5
  X: "[g3,c4,f4,bb4]@6 c4@2 ~@2 [g3,db4,e4,bb4]@11 ~@3", Y: "[ab3,eb4,g4,c5]@10 [ab3,d4,g4,c5]@11 ~@3",
  Z: "[[g3,eb4,bb4]@10 [f3,g3,b3,eb4]@11 ~ [g3,c4,eb4,bb4]@4 ~@10 [f3,b3,eb4,bb4]@6 b3@2 f4@2 ab4 ~]/2", // Eb Ebaug Cm7 Ebsus2
  AA: "[[g3,eb4,bb4]@10 [bb3,e4,ab4,db5]@11 ~ [ab3,c4,eb4,g4]@4 ~@14 [ab3,c4,d4,g4]@5 ~@3]/2", // Eb Bbm7b5 Abmaj7
  AB: "[f3,ab3,b3,eb4]@5 [e3,bb3,d4,a4]@6 ~", AC: "~@4 [eb3,g3,a3,db4]@5 ~@3 [ab3,c4,d4,g4]@3 ~@9",
  AD: "[g3,eb4,bb4]@6 eb4@2 g4@2 bb4 ~ [g3,db4,e4,bb4]@10 ~@2", // Eb Gdim
  AE: "[[ab3,c4,eb4,f4]@10 [a3,c4,eb4,gb4]@11 ~ [bb3,f4,g4,d5]@11 ~@3 [db4,ab4,bb4,f5]@4 [db4,gb4,g4,b4]@8]/2", // Fm7 Adim Gm7 Bbm7 Gbsus4
  AF: "[[c4,g4,bb4,eb5]@3 ~@13 [b3,eb4,f4,bb4]@5 ~ [g4,bb4,eb5]@4 ~@8 [bb3,e4,ab4,db5]@11 ~@3]/2", // Cm7 Bmaj7 Eb Bbm7b5
  AG: "~@4 [ab3,eb4,g4,c5]@5 ~@3 [ab3,d4,g4,c5]@3 ~@9", AH: "~@4 [g3,eb4,bb4]@5 ~@7 [eb3,ab3,c4,g4]@5 ~@3",
  AI: "[eb3,gb3,a3,c4]@4 [g3,eb4,bb4]@5 ~ [f3,b3,eb4,g4]@11 ~@3", AJ: "[eb3,g3,bb3,d4] ~@11",
  AK: "[gb3,bb3,c4,f4] ~@11", AL: "[a3,eb4,g4,d5] ~@11",
  AM: "~@2 [c2,c3,g3,bb3,e4] [d2,d3,g3,bb3,f4]@2 [d2,d3,g3,bb3,f4] [eb2,c4,gb4,a4,eb5]@3 [eb2,bb3,c4,e4,g4]@2 ~", // C7 Gm7 Ebdim C7
  AN: "~@4 [d4,f4,a4,c5]@5 ~ [d4,f4,ab4,b4]@4 ~@10", // Dm7 Ddim
  AO: "[c2@5 ~ c2@6 f2@4 f2@2 ~@4 bb1@7 ~ [a3,eb4,ab4,db5]@6 ~@4 [bb3,d4,e4,a4]@5 ~@3]/2", // Amaj7 Bbmaj7
  AP: "[[a3,b3,d4,eb4,g4]@6 [a3,b3,eb4,gb4]@6 [ab3,d4,g4,c5]@6 [ab3,d4,g4,c5]@4 [g3,c4,f4,bb4]@7 ~ c4@2 g4@2 bb4 ~ [e3,bb3,db4,ab4]@3 ~@7 [eb3,ab3,c4,g4]@4 ~@10 [ab3,c4,d4,g4]@3 ~@9]/3", // G B7 Abmaj7 Gm7 Bbm7b5 Abmaj7
  AQ: "[ab3,db4,f4,c5] ~@3 [g3,db4,f4,c5]@2 [g3,db4,gb4,b4]@2", // Dbmaj7 Csus4 Gmaj7
  AR: "[f3,c4,eb4,ab4]@2 [f3,b3,eb4,a4]@3 [db3,ab3,b3,eb4,g4]@3 [db3,ab3,b3,eb4,gb4]@2 [db3,ab3,b3,eb4,f4]@2", // Fm7 F7 Abm Abm7 Db7
  AS: "[~@5 [eb3,eb4]@2 [f3,f4]@4 ~ [eb3,eb4]@2 [bb3,bb4]@3 ~ [bb3,bb4]@8 ~@6 [f3,f4]@2 [g3,g4]@4 [f3,f4] ~ [c4,c5]@3 ~ [b3,b4] [c4,c5]@3, ~@18 [a3,a4] ~@21 [b3,b4] ~@7]/2", // Eb F Eb Bb F G F C …
  AT: "[~ [bb3,bb4]@4 ~ [eb3,eb4]@12 ~@12 bb2@2 [bb1,eb3,ab3,c4,ab4,c5]@13 [ab2,gb3,c4,f4,c5]@3, ~@19 bb2@11 ~@18, ~@23 [e3,db4]@9 ~@16]/2", // Bb Eb Ab Fm Dbm
  AU: "[~@2 [a2,g3,db4,gb4,c5]@4 [bb2,ab3,d4,g4,c5]@4 ~ [eb2,bb2,g3,c4,f4,a4,c5]@56 ~@5]/3", // Gbm Gm Cm7
})).s("gm_piano").gain(0.26).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  A B C@2 ~@4 D E@2 F ~@2 G@2 D H I D A ~ J@3 K@2 L ~@7 M N ~@13 O P Q R S@2 T U V W@2 X Y@2 ~@2 Z@2 ~@3
>`.pickRestart({
  A: "eb4", B: "f4", C: "[~@4 eb4@4 c4@4 eb4@3 ~@3 c4@4 ab3@26]/2", D: "~ gb4",
  E: "[~@4 c4@2 c4@4 c4@2 g4@4 g4@2 g4@4 eb4@6 [e4,f4,gb4] [g4,ab4] bb4@4 g4@14, ~@30 a4 ~@17]/2", // Abmaj7
  F: "~ a3 c4 a3 c4 a3 b3@2 d4@4", G: "[bb3@12 db4@3 ~@3 db4@4 c4@12 b3@14]/2", H: "~@2 c4 c4@2 c4 g4@2 g4@2 g4@2",
  I: "bb4 ~", J: "[eb4@11 e4@12 d4@6 ~@7]/3", K: "[d5@3 ~@3 c5@4 d5@2 g4@4 gb4@2 ~@4 f4@8 gb4@4 g4@11 [f4,gb4] ~@2]/2",
  L: "~@2 a3 ~@9", M: "~@12 d4@4 g4@7 ~", N: "f4 ~@11", O: "~ bb3@2 ~ c4@2", P: "~@4 c4@2 a3@4 c4@2 ~@4 f4@7 ~",
  Q: "~@2 bb4 bb4@2 g4 bb4@2 g4@4", R: "~@2 bb4 bb4@2 gb4 bb4@2 gb4@4",
  S: "[~@2 a4@2 g4@2 a4@2 g4@2 a4@2 g4@4 a4@2 g4@4 c5@5 [a4,bb4] [gb4,g4,ab4] [e4,f4] d4@4 d4@2 eb4@4 e4@8, ~@30 eb4 ~@17]/2", // Bbmaj7 Fmaj7
  T: "~@2 d4@4 d4@5 d4", U: "eb4@2 eb4 eb4@2 eb4 eb4@2 eb4 ~@3", V: "~@2 f4 gb4@2 g4@7", W: "[~@11 bb4@7 ab4@6]/2",
  X: "g4@10 gb4@9 ~@5", Y: "[~@2 f4 f4@2 f4 bb4@2 bb4 b4@2 c5@3 ab4 f4@2 eb4@3 eb4@2 eb4@2]/2",
  Z: "[~@6 f4@13 e4@13 ~@16]/2",
})).s("gm_alto_sax").gain(0.48).pan(0.4)

// other · alto sax · soft notes · Emaj7 Dmaj7 Fmaj7 Ebmaj7 Dbmaj7 Bmaj7
const alto_sax_soft = note(`<
  ~@26
  [~@22 [eb4,e4] [db4,d4]]
  ~@28
  [~@3 b4 ~@20]
  ~@5
  [~@18 [e4,f4] [d4,eb4] [c4,db4] [bb3,b3] a3 ~]
  ~@9
>`).s("gm_alto_sax").gain(0.24).pan(0.4)

// other · tenor sax
const tenor_sax = note(`<
  A B C@2 D E F G H I@2 J ~@2 K@2 H L M N A ~ O@3 P@2 Q@2 E R S ~@2 T@2 ~@16 U V W@2 X Y Z AA@2 AB AC@2 ~@2 AD@5
>`.pickRestart({
  A: "bb3", B: "c4", C: "[~@4 a3@4 a3@4 a3@3 ~@3 a3@4 eb3@14 d3@12]/2", D: "~@2 eb3 f3@2 eb3 bb3@6",
  E: "f3@2 g3 f3@2 c4@7", F: "~@2 bb3 c4@2 bb3 eb4@5 d4", G: "f4@4 eb4@2 c4@4 g3@3 ~@3 gb3@2 f3@3 ~@3",
  H: "~@3 eb3 f3 eb3 db4@6",
  I: "[~@4 ab3@2 ab3@4 ab3@2 d4@4 d4@2 d4@4 b3@6 [c4,db4] [d4,eb4] f4@4 e4@14, ~@30 e4 ~@17]/2", // Dbmaj7 Ebmaj7
  J: "~ g3 a3 g3 a3 g3 ab3@2 b3@4", K: "[f3@12 ab3@3 ~@3 g3@4 gb3@12 gb3@14]/2", L: "~@2 ab3 ab3@2 ab3 d4@2 d4@2 d4@2",
  M: "f4@6 ~ g4 bb4 ab4 eb4 gb4", N: "f4 eb4 f4@2 c4 eb4 eb4@6", O: "[bb3@11 bb3@12 c4@6 ~@2 f3 g3 ab3 b3 d4]/3",
  P: "[g4@3 ~@3 g4@4 g4@2 eb4@4 eb4@2 ~@4 d4@8 eb4@4 e4@11 [d4,eb4] ~@2]/2", // Ebmaj7
  Q: "[~@2 eb3 ~@5 bb2 c3@2 eb3@4 f3@2 eb3 bb3@6]/2", R: "~@2 bb3 c4@2 bb3 eb4@6",
  S: "~@4 f4@2 eb4@2 c4@2 eb3@2 g3@4 gb3@2 f3@3 ~@3", T: "[~@3 b4 c5 b4 c5@4 bb4@2 c5@24 ~@12]/2",
  U: "~@2 g4 g4@2 eb4 g4@2 eb4@4", V: "~@2 gb4 gb4@2 eb4 gb4@2 eb4@4",
  W: "[~@2 gb4@2 eb4@2 gb4@2 eb4@2 gb4@2 eb4@4 gb4@2 eb4@4 g4@5 [f4,gb4] [d4,eb4,e4] [c4,db4] bb3@4 bb3@2 a3@4 bb3@8, ~@30 b3 ~@17]/2", // Gbmaj7 Dbmaj7
  X: "~@2 c4@4 b3@5 b3", Y: "bb3@2 bb3 bb3@2 bb3 a3@2 a3 ~@3", Z: "~@2 d4 eb4@2 e4@7",
  AA: "[~@4 f3@2 gb3@4 g3@3 ~@3 bb3@2 c4@4 f4@14 eb4@12]/2", AB: "eb4@10 d4@9 ~@5",
  AC: "[~@2 db4 db4@2 db4 g4@2 g4 g4@2 ab4@3 f4 eb4@2 b3@3 b3@2 b3@2]/2",
  AD: "[~@6 c4@13 db4@13 c4@13 c4@5 db4@4 d4@5 ~@7 bb3@5 a3@9 g3@3 ~@2 bb2@31 ~@4, ~@42 b2 ~@17]/5",
})).s("gm_tenor_sax").gain(0.48).pan(0.4)

// other · tenor sax · soft notes · Dbmaj7 Bmaj7 Dbmaj7 Bmaj7 Amaj7 Gmaj7 Ebsus2
const tenor_sax_soft = note(`<
  ~@26
  [~@22 [c4,db4] [bb3,b3]]
  ~@34
  [~@18 [c4,db4] [bb3,b3] [ab3,a3] [gb3,g3] f3 ~]
  ~@7
  [~@6 db3 ~@5, ~@11 [eb3,f3]@2 ~@11]
  ~
>`).s("gm_tenor_sax").gain(0.24).pan(0.4)

// other · tenor sax
const tenor_sax_2 = note(`<
  A B C@2 ~@4 D E@2 F ~@2 G@2 H I J K L ~ M@3 N@2 O ~@7 P Q ~@5 R S ~@6 T U V@2 W@2 X Y Z AA@2 AB AC@2 ~@2 AD@3 ~@2
>`.pickRestart({
  A: "g3", B: "gb3", C: "[~@4 c4@4 g3@4 c4@3 ~@3 g3@4 g3@26]/2", D: "~ bb3",
  E: "[~@4 f3@2 g3@4 f3@2 c4@4 b3@2 c4@4 g3@5 ab3 [a3,bb3,b3] [c4,db4] eb4@4 d4@14, ~@30 d4 ~@17]/2", // Dbmaj7
  F: "~ eb3 f3 eb3 f3 eb3 e3@2 ab3@4", G: "[d3@12 f3@3 ~@3 e3@4 eb3@12 ab2@14]/2", H: "~ c4",
  I: "~@2 g3 a3@2 g3 d4@2 d4@2 d4@2", J: "d4 ~", K: "~ db4", L: "a3", M: "[g3@11 g3@12 a3@6 ~@7]/3",
  N: "[eb4@3 ~@3 eb4@4 eb4@2 d4@4 c4@2 ~@4 c4@8 db4@4 d4@11 [c4,db4] ~@2]/2", O: "~@2 g3 ~@9", P: "~@12 ab3@4 ab3@7 ~",
  Q: "g3 ~@11", R: "f4 e4", S: "eb4 d4", T: "~ g3@2 ~ ab3@2", U: "~@4 a3@2 gb3@4 bb3@2 ~@4 b3@7 ~",
  V: "~@2 eb4 eb4@2 c4 eb4@2 c4@4",
  W: "[~@2 eb4@2 c4@2 eb4@2 c4@2 eb4@2 c4@4 eb4@2 c4@4 d4@5 [c4,db4] [a3,bb3,b3] [g3,ab3] f3@4 f3@2 gb3@4 g3@8, ~@30 gb3 ~@17]/2", // Dbmaj7 Abmaj7
  X: "~@2 f3@4 f3@5 f3", Y: "g3@2 g3 g3@2 g3 d4@2 c4 ~@3", Z: "~@2 c4 db4@2 d4@7", AA: "[~@11 c4@7 bb3@6]/2",
  AB: "ab3@10 ab3@8 g3 ~@5", AC: "[~@2 bb3 c4@2 bb3 eb4@2 eb4 e4@2 f4@3 eb4 c4@2 g3@3 g3@2 g3@2]/2",
  AD: "[~@6 g3@26 ab3@13 gb3@5 g3@4 ab3@5 ~@13]/3",
})).s("gm_tenor_sax").gain(0.48).pan(0.4)

// other · tenor sax · soft notes · Bmaj7 Amaj7 Fmaj7 Ebmaj7 Dbmaj7
const tenor_sax_soft_2 = note("<~@26 [~@22 [bb3,b3] [ab3,a3]] ~@34 [~@18 gb3 [e3,f3] [d3,eb3] [c3,db3] b2 ~] ~@9>")
  .s("gm_tenor_sax").gain(0.24).pan(0.4)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  A B C@2 D E F G H I@2 J K L M@2 H N O P A ~ Q@3 R@2 S@2 E T U V W X Y Z ~@5 AA W ~@6 AB AC AD AE AF@2 AG AH AI AJ@2 AK
  AL@2 AM@7
>`.pickRestart({
  A: "c3", B: "ab2", C: "[~@4 f2@4 f2@4 f2@3 ~@3 f2@4 f2@14 bb2@12]/2", D: "~@2 eb3 f3@2 eb3 bb3@6",
  E: "f3@2 g3 f3@2 c4@7", F: "~@2 bb3 c4@2 bb3 eb4@5 d4", G: "f4@4 eb4@2 c4@4 g3@3 ~@3 gb3@2 f3@3 ~@3",
  H: "~@3 eb3 f3 eb3 e3@6", I: "[~@4 eb3@2 eb3@4 eb3@2 ab3@4 ab3@2 ab3@4 g3@7 [ab3,a3] b3@4 bb3@14, ~@30 bb3 ~@17]/2",
  J: "~ c3 eb3 c3 eb3 c3 d3@2 g3@4", K: "eb2@5 eb2 e2@5 e2", L: "f2@5 f2 gb2@6",
  M: "[g2@12 bb2@3 ~@3 a2@4 ab2@12 db2@14]/2", N: "~@2 eb3 eb3@2 eb3 ab3@2 ab3@2 ab3@2", O: "g3 db2",
  P: "eb2@12 g2@10 [ab2,a2] [bb2,b2]", Q: "[c3@11 c3@12 bb2@6 ~@2 f3 g3 ab3 b3 d4]/3",
  R: "[bb3@3 ~@3 bb3@4 bb3@2 a3@4 a3@2 ~@4 ab3@8 a3@4 bb3@11 [ab3,a3] ~@2]/2", // Amaj7
  S: "[~@2 f2 ~@5 bb2 c3@2 eb3@4 f3@2 eb3 bb3@6]/2", T: "~@2 bb3 c4@2 bb3 eb4@6",
  U: "~@4 f4@2 eb4@2 c4@2 eb3@2 g3@4 gb3@2 f3@3 ~@3", V: "bb2@3 ~ c3@2", W: "f2 bb2", X: "eb2@5 eb2 c2@5 c2",
  Y: "f2@10 f2@2 bb2@4 e2@7 ~", Z: "eb2 ~@11", AA: "g2 c2", AB: "eb2@5 eb2 f2@5 f2",
  AC: "gb2@5 ~ gb2@4 g2@2 ~@4 g2@7 ~", AD: "~@2 c4 c4@2 bb3 c4@2 bb3@4", AE: "~@2 c4 c4@2 ab3 c4@2 ab3@4",
  AF: "[~@2 c4@2 a3@2 c4@2 a3@2 c4@2 a3@4 c4@2 a3@4 bb3@5 a3 [gb3,g3,ab3] [e3,f3] d3@4 d3@2 eb3@4 e3@8, ~@30 eb3 ~@17]/2", // Fmaj7
  AG: "~@2 bb2@4 b2@5 b2", AH: "c3@2 c3 c3@2 c3 f2@2 f2 ~@3", AI: "~@2 ab3 a3@2 bb3@7",
  AJ: "[~@4 f3@2 gb3@4 g3@3 ~@3 bb3@2 c4@4 g3@14 e3@12]/2", AK: "eb3@10 bb2@8 a2 ~@5",
  AL: "[~@2 ab3 ab3@2 ab3 db4@2 db4 db4@2 eb4@3 c4 ab3@2 g3@3 gb3@2 f3@2]/2",
  AM: "[~ bb2@13 ~@4 c3@9 f2@13 bb2@13 ~ bb2@39 ab2@5 a2@4 bb2@5 ~@7 bb3@5 a3@9 g3@3 ~@2 bb2@31 ~@4]/7",
})).s("gm_baritone_sax").gain(0.48).pan(0.4)

// other · baritone sax · "Bari Sax" · soft notes · Gmaj7 Fmaj7 Gmaj7 Fmaj7 Ebmaj7 Bsus2 Ebsus2
// … 296 more lines

More by Basie