Strudelify

It's Only a Paper Moon

Nat King Cole

KeyE♭ majorTempo136 bpm
0:00/0:00
// It's Only a Paper Moon — Nat King Cole
// 136 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 113 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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.

// chords · piano
const piano = note(`<
  ~@4 A@2 B@6 C@7 D@5 E@3 F@3 G@3 ~@7 H@2 I J K@4 L M N O P Q@2 R@2 S T U V W@4 X ~ Y Z AA@4 AB AC AD AE AF AG AH AI ~@3
  AJ@2 AK AL@2 AM AN AO AP AQ AR@3 AS AT AU AV@5 ~ AW ~ AX ~@3 AY
>`.pickRestart({
  A: "[~@6 d6@4 ~@2 d6@5 ~ eb6@6 d6@6 g5@6 bb5@11 ~, [c4,eb4,g4]]/2", // Cm
  B: "[~@7 eb6@5 ~@2 eb6@6 e6@7 eb6@7 ~ ab5@7 b5@23 ~@4 [bb2,ab3,d4]@12 [bb2,g3,eb4]@12 [bb2,ab3,d4]@12 [bb2,g3,eb4]@12 [bb2,ab3,d4]@12 [bb2,eb3,ab3,eb4]@14 ~, [db4,e4,ab4]@65 ~@79]/6", // Bb7 Eb Bb7 Eb Bb7 Ebsus4 Dbm
  C: "[[bb2,eb3,g3,c4,eb4]@27 ~@3 db4@6 d4@17 ~@13 c6@12 [bb2,ab3,eb4]@11 ~ [bb2,ab3,d4]@35 ~@17 bb5@19 ~@7, ~@30 [bb2,ab3]@23 ~ [eb2,bb2,g3,c4]@24 ~@47 eb2@39 ~@4, ~@64 c5@13 ~@49 [bb2,f3]@36 ~@6, ~@127 g3@35 ~@6, ~@64 bb3@17 ~@3]/7", // Cm7 Ebsus4 Bb7 Cm7 Bb5
  D: "[~ [bb3,db4,gb4]@17 [a3,c4,g4]@17 ~ [ab3,c4,g4]@17 [g3,bb3,eb4]@16 ~ [bb3,db4,e4]@17 [ab3,c4,eb4]@16 ~ [ab3,bb3,d4]@16]/5", // Gb Am7 Abmaj7 Eb Bbdim Ab Bb7
  E: "[~@2 [g3,c4,eb4]@17 [bb3,db4,e4]@18 [a3,c4,eb4]@18 [ab3,bb3,d4]@17]/3", // Cm Bbdim Adim Bb7
  F: "[~ [g3,c4,eb4]@17 ~ [bb3,db4,e4,ab4]@21 ~ [ab3,c4,eb4,g4]@31]/3", // Cm Bbm7b5 Abmaj7
  G: "[~@2 [ab3,c4,eb4]@21 [a3,db4,e4]@33 ~@16]/3", // Ab A
  H: "[~@21 [g4,c5,eb5,bb5]@10 ~@6 [db5,bb5]@2 ~@6 [ab4,c5,f5,bb5]@2 ~, ~@37 [g4,e5] ~@10]/2", // Cm7 Gb Fm C
  I: "~@7 [f4,ab4,c5,eb5] ~@5 [f4,ab4,c5,eb5]@7 ~ [f4,ab4,b4,d5]@2 ~", // Fm7 Fdim
  J: "~@7 [f4,ab4,b4,d5] ~@5 [f4,ab4,b4,d5]@5 ~ [g4,bb4,c5,eb5] ~@4", // Fdim Cm7
  K: "[~@7 [f4,ab4,c5,eb5] ~@5 [f4,ab4,c5,eb5]@3 ~@3 [g4,c5,eb5,bb5]@14 [db4,f4,g4,bb4]@11 ~ [c4,eb4,f4,ab4]@11 ~ [eb4,f4,a4,c5]@11 ~ [ab3,c4,d4,g4]@20 ~@2 [g3,bb3,c4,eb4]@2 ~@3]/4", // Fm7 Cm7 Gm7b5 Fm7 F7 Abmaj7 Cm7
  L: "~@7 [gb2,bb3,db4]@2 ~@4 [f2,a3,c4]@2 ~@4 [e2,ab3,b3]@2 [eb2,g3,bb3]@2 ~", M: "~@9 [g4,db5,e5,bb5]@5 ~@10",
  N: "~@7 [ab4,c5,f5,bb5] ~@5 [ab4,c5,f5,bb5] ~@10", O: "~@13 [ab4,d5,f5,bb5]@4 ~@4 [g4,c5,eb5,bb5] ~@2",
  P: "~@7 [f4,ab4,c5,eb5] ~@5 [f4,ab4,c5,eb5] ~@7 [f4,g4,bb4,d5]@3", // Fm7 Gm7
  Q: "[~@9 [bb3,db4,eb4,g4]@11 ~ [c4,eb4,f4,ab4]@10 ~@2 [c4,eb4,f4,a4]@11 ~@4]/2", // Eb7 Fm7 F7
  R: "[~ [ab3,bb3,d4,f4] ~@7 [ab3,bb3,d4,f4]@6 ~@6 [g3,bb3,c4,eb4]@5 ~@11 [g4,db5,eb5,bb5] ~@7 [eb4,ab4,c5,f5]@2 ~]/2", // Bb7 Cm7 Eb7 Fm7
  S: "~@9 [ab4,b4,eb5,gb5]@2 ~@10 [g4,bb4,d5,f5]@2 ~", T: "~@9 [g4,bb4,db5,e5]@11 ~ [f4,ab4,c5,eb5]@2 ~",
  U: "~@7 [ab4,d5,f5,bb5]@2 ~@15", V: "~ [g4,c5,eb5]@2 ~@4 [g4,b4,eb5]@2 ~@12 [f4,ab4,c5,eb5]@2 ~",
  W: "[~@9 [a3,db4,eb4,gb4]@11 ~ [g3,bb3,d4]@11 ~ [bb2,eb3,g3,c4]@11 ~ [f3,ab3,b3,eb4]@11 ~ [e3,g3,bb3,d4]@10 ~@2 [eb3,g3,a3,d4]@12 ~@4 [f3,ab3,c4,eb4]@7 ~ [g3,bb3,c4,eb4]@2 ~, ~@7 f4@3 ~@22]/4", // Ebm7b5 Gm Cm7 Fm7b5 Em7b5 Ebmaj7 Fm7 Cm7
  X: "~@9 [g4,db5,e5,bb5]@2 ~@4 [g4,db5,e5,bb5]@2 ~@4 [f4,c5,eb5,ab5]@3", // Gdim Fm7
  Y: "~@7 [f4,ab4,c5,eb5]@2 ~@4 [f4,ab4,c5,eb5]@2 ~@6 [g4,bb4,c5,eb5]@2 ~", // Fm7 Cm7
  Z: "~@7 [f4,ab4,c5,eb5] ~@5 [f4,ab4,c5,eb5] ~ [f4,ab4,c5,eb5]@2 ~@4 [g4,bb4,c5,eb5]@2 ~", // Fm7 Cm7
  AA: "[~@9 [db4,g4,bb4,eb5]@11 ~ [c4,eb4,f4,ab4]@11 ~ [c4,eb4,f4,a4]@11 ~ [ab3,d4,g4,bb4]@20 ~@2 [g4,c5,eb5,bb5]@13 ~@5 [g4,c5,eb5,bb5]@5 ~@3 [g4,c5,eb5,bb5]@3]/4", // Eb7 Fm7 F7 Gm Cm7
  AB: "~@3 [g4,c5,eb5,bb5] ~ [g4,c5,eb5,bb5] ~ [f4,c5,eb5,ab5]", // Cm7 Fm7
  AC: "~@6 [e4,bb4,db5,g5]@2 ~@6 [f4,c5,eb5,ab5]@3 ~@3 [ab4,c5,eb5,f5]@3 ~", // Edim Fm7
  AD: "~@12 [ab4,c5,eb5,f5]@2 [ab4,c5,eb5,f5] ~@4 [ab4,c5,eb5]@2 ~@3, ~@19 f4 ~@4", // Fm7 Ab
  AE: "~ [a4,c5,eb5] ~@3 [g4,bb4,c5,eb5]@4 ~@2 [g4,bb4,c5,eb5]@2 ~@6 [g3,bb3,c4,eb4]@3 ~@2, ~ gb4@2 ~@21", // Adim Cm7
  AF: "~@11 [g3,b3,db4,eb4]@6 ~ [ab3,c4,eb4]@3 ~@3", // Gaug Ab
  AG: "[g3,bb3,e4]@2 ~@2 [ab3,c4,f4]@8 ~@4 [ab3,d4,f4]@5 ~ [ab3,d4,f4]@2", AH: "~@4 [b3,f4,ab4]@9 ~@3 [a3,eb4,gb4]@8",
  AI: "~@4 [ab3,d4,f4]@7 ~ [c4,eb4,f4,ab4]@3 ~ [bb3,c4,eb4,g4]@2 ~@6", // Ddim Fm7 Cm7
  AJ: "[~@18 [db5,f5,bb5,eb6]@12 ~@4 [db5,f5,bb5,eb6]@7 ~ [eb4,ab4,c5,f5]@2 ~@4]/2", AK: "~@4 [eb4,f4,a4,c5]@13 ~@7",
  AL: "[~@4 [ab4,d5,g5,bb5] ~@5 [c5,f5,ab5,d6] ~@5 [c5,g5,bb5,eb6]@13 ~@5 [bb3,db4,eb4,g4]@7 ~@7]/2", // Gm Dm7b5 Cm7 Eb7
  AM: "[f3,ab3,c4,eb4]@2 ~@4 [gb3,a3,c4,eb4]@3 ~@3 [gb3,a3,c4,eb4]@2 ~@4 [g3,bb3,c4,eb4]@2 ~@4", // Fm7 Gbdim Cm7
  AN: "~@4 [e4,g4,bb4,c5] ~@5 [e4,g4,bb4,c5]@7 ~ [ab3,c4,eb4,g4]@2 ~@4", // C7 Abmaj7
  AO: "~@4 [ab3,c4,eb4,g4]@2 ~@6 [ab3,c4,d4,g4]@3 ~ [g3,bb3,c4,eb4]@2 ~@6", // Abmaj7 Cm7
  AP: "[g4,bb4,db5,eb5]@3 ~ [db4,f4,g4,c5] ~@5 [g4,bb4,db5,eb5]@7 ~ [f3,ab3,c4,eb4]@3 ~@3", // Eb7 Dbmaj7 Eb7 Fm7
  AQ: "~@4 [gb3,a3,c4,eb4]@2 ~@6 [gb3,a3,c4,eb4]@5 ~ [g3,bb3,c4,eb4]@2 ~@4", // Gbdim Cm7
  AR: "[~@4 [bb3,d4,f4,g4]@2 ~@4 [bb3,d4,f4,g4]@7 ~ [b3,eb4,f4,ab4]@11 ~ [bb3,d4,e4,g4]@11 ~ [a3,c4,eb4,g4]@8 ~@2 [ab3,c4,eb4,g4]@2 ~@4 [ab3,c4,d4,g4]@8 [g3,bb3,c4,eb4]@2 ~@4]/3", // Gm7 Fm7b5 Em7b5 Am7b5 Abmaj7 Cm7
  AS: "~@3 [g4,db5,e5,bb5]@5 ~ [f4,c5,eb5,bb5]@3", AT: "~@4 [f4,c5,eb5,bb5]@7 ~ [f4,ab4,c5,eb5]@2 ~@10",
  AU: "[f4,ab4,c5,eb5]@11 ~ [f4,ab4,c5,eb5]@2 ~@8 [g4,bb4,c5,eb5]@2", // Fm7 Cm7
  AV: "[~@4 [c4,eb4,g4,bb4]@12 ~@2 [g4,bb4,c5,eb5]@9 ~@3 [f4,g4,bb4,db5]@11 ~ [eb4,f4,ab4,c5]@9 ~ [eb4,g4,a4,c5]@11 ~@3 [ab3,d4,g4,bb4]@12 ~@4 [ab3,d4,g4,bb4]@2 ~@6 [g3,bb3,c4,eb4]@8 ~@2 [b3,eb4,f4,ab4]@2 ~@4 [ab3,b3,eb4,f4]@7 ~@7]/5", // Cm7 Gm7b5 Fm7 Am7b5 Gm Cm7 Fm7b5
  AW: "~@5 [db4,db6]@4 ~@3", AX: "~@10 [db4,db6]@2 ~@4 [db4,db6]@5 ~@3", AY: "~@3 [bb4,eb5,gb5,db6] ~@2",
})).s("gm_piano").gain(0.35)

// bass · acoustic bass
const bass = note(`<
  ~@19 A@5 B@3 C@6 D E@7 F@8 G@5 H@3 I@8 J@8 K@2 L@2 M N O P@2 Q@2 R S T U V W@2 X Y Z AA AB AC AD AE AF AG AH AI AJ AK
  AL AM AN AO AP AQ AR AS
>`.pickRestart({
  A: "[~ c2@16 ~ eb2@16 ~@2 d2@17 c2@17 gb2@16 ~ f2@16 ~ bb1@16]/5", B: "[~@2 eb2@16 ~ gb2@18 f2@18 e2@17]/3",
  C: "[~ eb2@18 c2@21 ~ f2@32 ~ bb1@21 b1@33 ~@16]/6", D: "~@3 b1@6 bb1@10 c2@2 ~@3",
  E: "[~ eb2@7 ~ c2@6 g1@5 ~ gb1@5 ~ gb2@6 g1@6 g2@4 c2@8 e2@6 a1@5 ~ bb1@5 ~ b1@5 ~ b1@6 bb1@6 d2@4 eb2@8 db2@6 c2@6 gb2@6 f2@10 gb2@8 g2@2 ~@4 d2@6 g2@6 gb2@3 ~ f2@2 ~@4 e2@2 eb2@3]/7",
  F: "[~@3 eb2@6 e2@5 ~ e2@5 ~ f2@6 g2@6 ab2@6 a2@6 bb2@5 ~ e2@6 f2@6 e2@6 eb2@6 c2@6 bb1@6 d2@6 eb2@6 bb2@6 g2@5 ~ g2@6 ab2@5 ~ ab2@6 a2@5 ~ a2@6 bb2@6 e2@6 f2@6 e2@6 eb2@6 bb1@4 gb2@2 ~@4 f2@2 ~@4 e2@2 eb2@3]/8",
  G: "[~@3 c2@5 ~ e1@5 ~ e2@6 f2@5 ~ c2@5 ~ b1@6 a1@6 bb1@6 f2@5 ~ g2@6 e2@5 ~ eb2@6 e2@5 ~ f2@5 ~ bb1@6 eb2@5 ~ eb2@5 ~ g2@5 ~ g2@5 ~ ab2@3]/5",
  H: "[~@3 ab2@6 a2@5 ~ a2@5 ~ bb2@6 ab2@6 g2@6 f2@6 eb2@6 c2@6 bb1@5 ~ a1@5 ~ ab1@3]/3",
  I: "[~@3 ab1@6 b1@5 ~ b1@6 g1@6 g2@6 c2@6 e2@6 f2@6 b1@5 ~ bb1@6 d2@6 eb2@6 bb2@6 a2@5 ~ a2@6 f2@6 c2@5 ~ b1@5 ~ b1@5 ~ g2@6 d2@5 ~ eb2@6 g2@4 eb2@2 db2@6 ab2@6 c2@6 g2@6 f2@6 a1@5 ~ bb1@6 d2@5 ~ eb2@3]/8",
  J: "[~@3 eb2@6 e2@5 ~ e2@5 ~ f2@5 ~ g2@6 ab2@5 ~ a2@6 bb2@5 ~ bb1@6 c2@5 ~ d2@5 ~ eb2@5 ~ e2@6 f2@6 e2@5 ~ eb2@5 ~ bb2@5 ~ g2@6 bb2@5 ~ ab2@5 ~ f2@5 ~ a1@5 ~ c2@6 bb1@6 f2@6 bb2@6 e2@6 eb2@5 ~ c2@5 ~ bb1@6 c2@5 ~ eb2@3]/8",
  K: "[~@3 g1@6 c2@5 ~ bb1@5 ~ f1@5 f1@5 ~ g1@6 ab1@6 bb1@4]/2",
  L: "[~@2 b1@5 ~ c2@6 b1@5 ~ bb1@5 gb2@4 g2@8 bb1@5 ~ eb2@5]/2", M: "~ g2@6 f2@6 eb2@5 ~ ab1@5",
  N: "g1@3 ~ ab1@6 ~@2 bb1@11 ~", O: "bb1@11 ~ b1@11 ~", P: "[bb1@11 ~ bb1@4 eb2@26 ~@6]/2", Q: "[~@2 c2@5 ~]/2",
  R: "~@3 eb2", S: "bb1@6 g2@6 eb2@5 ~ ab2@5 ~", T: "f2@6 a2@6 a1@5 ~ bb1@6", U: "b1 c2 d2 eb2",
  V: "e2@6 f2@5 ~ g2@5 ~ ab2@6", W: "[eb2@6 a2@6 a1@6 bb1@9 ~ bb1 ~ c2@9 ~ c2@2 f2@6]/2",
  X: "b2@5 ~ bb2@5 ~ d2@6 eb2@5 ~", Y: "c2@5 ~ bb1@6 g1@5 ~ ab1@5 ~", Z: "c2@6 a1@5 ~ gb2@6 bb1@5 ~",
  AA: "f2@6 ~@4 g2@8 db2@5 ~", AB: "db2@5 ~ c2@6 g2@5 ~ f2@6", AC: "c3@6 bb1@6 f2@5 ~ eb2@6",
  AD: "bb1@6 e2@5 ~ g1@6 f1@5 ~", AE: "g1@6 ab1@6 a1@5 ~ bb1@6", AF: "b1@6 c2@5 ~ d2@6 eb2@6",
  AG: "e2@6 f2@6 e2@5 ~ eb2@5 ~", AH: "bb1 g1 bb1 ab1", AI: "c2@2 a1@4 a1@3 bb1@3", AJ: "f2@5 ~ g2@6 e2@6 eb2@6",
  AK: "bb1@3 ~ db2@2 ~@4 db2@7 ~ gb1@5 ~", AL: "gb1@5 ~ bb1@5 ~ bb1@6 ab1@5 ~", AM: "ab1@5 ~ b1@5 ~@5 b1@2 db2@6",
  AN: "f1@5 ~ ab1@5 ~ g1@5 ~ gb1@4 e2@2", AO: "f2@4 gb2@2 ~@4 db2@3 ~@3 db2@4 ~@2 gb1 ~",
  AP: "gb1@5 ~ bb1@5 ~ bb1@5 ~ b1@5 ~", AQ: "b1@3 ~ d2@7 ~ d2@3 ~ db2 ~@7", AR: "~@11 e2",
  AS: "f2@3 ~ gb2@2 ~@6 gb1@6 ~@6",
})).s("gm_acoustic_bass").gain(0.35)

// chords · synth brass 2
const synth_brass_2 = note(`<
  A@2 B@2 C@2 D@3 ~@15 E@3 F@3 G@3 ~@8 H@3 ~ I@3 ~ J@4 K@4 ~@7 L@5 M@4 ~@7 N@5 ~@28
>`.pickRestart({
  A: "[d5 c5 [g4,d5] [f4,c5], eb3]/2", B: "[[g3,d4] f3 [g3,d4] [c4,g4], c3]/2", C: "[bb2,g4]/2",
  D: "[[b2,a3,ab4]@65 ~@7]/3", E: "[~@19 [bb3,db4,e4]@17 ~ [a3,c4,eb4]@18 [ab3,bb3,d4]@17]/3",
  F: "[~ [g3,c4,eb4]@18 [db4,e4,ab4]@21 ~ [c4,eb4,g4]@31]/3", G: "[~@2 [c4,eb4,g4]@21 [a3,db4,gb4]@33 ~@16]/3",
  H: "[~@9 [db4,e4,g4]@12 [c4,eb4,ab4]@23 ~ [f4,ab4,b4]@21 ~ [eb4,g4,bb4]@2 ~@3]/3", // Dbdim Ab Fdim Eb
  I: "[~@9 [bb3,db4,g4]@11 ~ [c4,eb4,ab4]@12 [eb4,a4,c5]@12 [ab3,d4,g4]@21 ~ [g3,eb4]@2 ~@3, ~@67 c4 ~@4]/3", // Gdim Ab Adim G Cm
  J: "[~@9 [db4,e4,g4]@11 ~ [c4,f4,ab4]@11 ~ [ab4,c5,eb5]@11 ~ [ab4,b4,d5]@23 ~ [bb3,d4,g4]@6 [c4,eb4,ab4]@4 [d4,g4,bb4]@2 ~@15]/4", // Dbdim Fm Ab Abdim Gm Ab Gm
  K: "[~@9 [bb3,db4,g4]@11 ~ [c4,eb4,ab4]@12 [eb4,a4,c5]@11 ~ [ab3,d4,f4]@23 ~ [g3,c4,eb4]@12 ~@15]/4", // Gdim Ab Adim Ddim Cm
  L: "[~@21 [g4,bb4]@23 ~ [ab4,c5]@11 ~ [c5,eb5]@12 [ab4,c5]@23 ~ [g4,bb4]@11 ~ [ab4,c5]@11 ~@4, ~@93 eb5@23 ~@4]/5", // Gm Ab Cm Ab Gm Ab
  M: "[~@9 [bb3,db4,g4]@11 ~ [c4,eb4,ab4]@11 ~ [eb4,a4,c5]@11 ~ [ab3,d4,g4]@23 ~ [c4,eb4,bb4]@23 ~@4]/4", // Gdim Ab Adim G Cm7
  N: "[~@3 bb4@4 ab4@12 ~, ~@18 [bb3,c4,eb4]@95 ~@7]/5", // Cm7
})).s("gm_synth_brass_2").gain(0.2)

// chords · synth brass 2 · soft notes
const synth_brass_2_soft = note("<A B C D E@2 F@3 ~@104>".pickRestart({
  A: "[bb3,g4] [ab3,f4]", B: "bb3 ab3", C: "bb4 [eb4,g4]", D: "bb4 eb3", E: "[ab3,c4,eb4]/2", F: "[[db4,e4]@65 ~@7]/3",
})).s("gm_synth_brass_2").gain(0.1)

// chords · alto sax
const alto_sax = note(`<
  ~@19 A@5 B ~@7 C@2 D@2 E@2 F@2 G ~@15 H@4 I J@4 ~ K@3 ~@9 L@3 ~@6 M N ~@5 O@3 P Q R S@3 ~ T U V W X Y Z AA AB
>`.pickRestart({
  A: "[~ db4@17 c4@16 ~@2 c4@16 ~ bb3@16 ~ bb3@17 ab3@17 ab3@16]/5", B: "~ g3@8 ~@3",
  C: "[~@15 [c4,eb4]@3 ~@3 [eb4,gb4]@12 [eb4,g4]@10 [c4,eb4] ~@4]/2", // Cm Ebm Eb Cm
  D: "[~ [c4,eb4]@13 ~ [c4,eb4] ~@5 [db4,gb4]@12 [d4,g4]@9 ~ [d4,g4]@2 ~@3]/2", // Cm Gb5 G5
  E: "[~@15 [d4,gb4]@2 ~@4 [eb4,gb4]@11 ~ [eb4,g4]@10 [c4,eb4]@2 ~@3]/2", // D Ebm Eb Cm
  F: "[~ [c4,eb4]@14 [eb4,gb4]@2 ~@4 [eb4,ab4]@10 [e4,a4]@8 [f4,bb4]@2 ~@7]/2", G: "~ b4@2 bb4@18 ~@3",
  H: "[~@3 eb4@4 ~ f4!2 ~ gb4 f4 ~ eb4 eb4@4 ~ db4 c4@12 b3@12 bb3@12 c4@12 eb4@12 d4@11 ~@4]/4",
  I: "~ eb4@2 f4@3 ~ eb4@2 gb4@6 eb4@3 ~@6",
  J: "[~ [g4,c5]@2 [gb4,b4]@4 [f4,bb4]@4 [d4,g4]@4 [ab4,db5]@4 [g4,c5]@4 [d4,g4]@4 ~@5]/4", // C5 B5 Bb5 G5 Db5 C5 G5
  K: "[~@13 c4 ~ c4@4 bb3@2 c4@17 ~ c4@4 bb3@2 eb4@6 f4@4 eb4@8 ~@9]/3",
  L: "[~@3 [f4,bb4]@4 [ab4,db5]@3 [gb4,b4]@3 [f4,bb4]@2 ~@3]/3", M: "~@11 gb4", N: "g4@3 ~ c4@2 ~@18",
  O: "[~@3 [ab4,db5]@2 [g4,c5]@2 [d4,g4]@2 ~@3]/3", P: "~@6 c4@12 c4@5 ~", Q: "c4@2 bb3 c4@2 eb4@4 ~@3",
  R: "~@3 c4@6 c4@2 ~", S: "[c4@4 bb3@2 c4@3 eb4@2 ~ f4 gb4 ~ f4 c4 ~ eb4@12 db4@12 c4@24 ~@6]/3",
  T: "~@2 [b3,eb4] ~@2 [b3,db4]@4 ~@2 [db4,eb4]", // B Bsus2 Dbsus2
  U: "~@4 eb4@2 [db4,eb4]@3 ~@3 [db4,eb4]@3 ~@3 [b3,eb4]@6, ~@4 db4 ~@19", V: "[b3,eb4]@2 [b3,eb4] ~@9",
  W: "~@2 [b3,eb4] ~@2 [b3,eb4]@4 [db4,eb4]@2 [b3,db4]", X: "[c4,d4]@2 [db4,eb4] ~@8 [db4,eb4]",
  Y: "~@4 [db4,eb4] ~ [db4,eb4]@4 ~@2 [db4,eb4]@4 ~@2 [b3,eb4]@5 ~", // Dbsus2 B
  Z: "[b3,eb4]@3 ~ [c4,d4]@7 ~ c4@4 [b3,eb4]@2 ~@4 [eb5,e5,bb5,b5] ~, ~@11 d4@4 ~@9", // B Csus2 B Emaj7
  AA: "[eb5,bb5] ~@3 [b4,db5,gb5,ab5] ~ [b4,gb5] ~@3 [gb4,ab4,eb5,e5] ~ [gb4,eb5] ~@3 [eb4,e4,b4,db5] ~ [eb4,b4] ~@3 [eb4,gb4]@2", // Eb5 Bsus2 B5 Emaj7 Ebm Dbm7 Abm Ebm
  AB: "[e4,g4]@4 [f4,ab4]@3 ~@17", // Em Fm
})).s("gm_alto_sax").gain(0.35).pan(0.4)

// chords · tenor sax
const tenor_sax = note(`<
  ~@32 A@2 B@2 C@2 D@2 E ~@15 F@4 G H@4 ~ I@3 ~@9 J@3 ~@6 K L ~@5 M@3 N O P Q@3 ~ R S T U V W X Y Z
>`.pickRestart({
  A: "[~@15 [g3,bb3]@3 ~@3 [a3,db4]@12 [ab3,c4]@10 bb3@2 ~@3, ~@43 g3 ~@4]/2", // Gm A Ab
  B: "[~ [g3,bb3]@13 ~ [g3,bb3]@2 ~@4 [ab3,bb3]@12 [a3,b3]@10 [g3,bb3]@2 ~@3]/2", // Gm Absus2 Asus2 Gm
  C: "[~@15 [bb3,c4]@2 ~@4 [a3,db4]@12 [ab3,c4]@9 ~ [g3,bb3]@2 ~@3]/2", // Bbsus2 A Ab Gm
  D: "[~ [g3,bb3]@14 [bb3,c4]@2 ~@4 [ab3,c4]@10 [a3,db4]@8 [bb3,d4]@3 ~@6]/2", E: "~ b3@2 bb3@18 ~@3",
  F: "[~@3 eb4@4 ~ f4!2 ~ gb4 f4 ~ eb4 eb4@4 ~ db4 c4@12 b3@12 bb3@12 c4@12 eb4@12 d4@11 ~@4]/4",
  G: "~ eb4@2 f4@4 eb4 ~ gb4@6 eb4@2 ~@7",
  H: "[~ [ab3,eb4]@2 [a3,db4]@4 [g3,c4]@4 [eb3,bb3]@4 [b3,eb4]@4 [bb3,d4]@4 [a3,c4]@4 ~@5]/4", // Ab5 A C5 Eb5 B Bb Am
  I: "[~@13 c3 ~ c3@4 bb2@2 c3@17 ~ c3@4 bb2@2 eb3@6 f3@4 eb3@8 ~@9]/3",
  J: "[~@12 [g3,c4]@15 ~ [bb3,eb4]@12 [ab3,db4]@12 [g3,c4]@8 ~@12]/3", K: "~@11 gb3", L: "g3@3 ~ c3@2 ~@18",
  M: "[~@3 [b3,eb4]@2 [bb3,d4]@2 [a3,c4]@2 ~@3]/3", N: "~@6 c3@12 c3@5 ~", O: "c3@2 bb2 c3@2 eb3@4 ~@3",
  P: "~@3 c3@6 c3@2 ~", Q: "[c3@4 bb2@2 c3@3 eb3@2 ~ f3 gb3 ~ f3 c3 ~ eb3@12 db3@12 c3@24 ~@6]/3",
  R: "~@4 [f3,ab3]@2 ~@3 [f3,ab3]@8 ~@5 [gb3,bb3]@2", S: "~@4 [gb3,bb3] ~ [gb3,bb3]@3 ~@3 [gb3,bb3]@4 ~@2 [gb3,ab3]@6",
  T: "[gb3,ab3]@2 [gb3,ab3] ~@9", U: "~@4 [gb3,ab3]@3 ~@3 [gb3,ab3]@8 [gb3,bb3]@4 [e3,ab3]@2",
  V: "[f3,a3]@3 ~ gb3@2 ~@16 [gb3,bb3]@2, ~@4 bb3 ~@19", // F Gb
  W: "~@4 [gb3,bb3] ~ [gb3,bb3]@3 ~@3 [gb3,bb3]@4 ~@2 [gb3,ab3]@5 ~", // Gb Gbsus2
  X: "[gb3,ab3]@3 ~ [gb3,a3]@7 ~ [gb3,a3]@3 ~ [gb3,ab3]@2 ~@4 [b4,db5] ~", // Gbsus2 Gbm Gbsus2 Bsus2
  Y: "b4 ~@3 [eb4,e4] ~ eb4 ~@3 [bb3,b3] ~ bb3 ~@3 [ab3,bb3] ~ ab3 ~@3 [ab3,b3]@2", // Emaj7 Bmaj7 Absus2 Abm
  Z: "[a3,c4]@4 [bb3,db4]@3 ~@5 gb3@4 ~@8", // Am Bbm
})).s("gm_tenor_sax").gain(0.35).pan(0.4)

// other · baritone sax
const baritone_sax = note("<~@32 A@2 B@2 C@2 D@2 ~@21 E@4 ~@13 F G H ~@13 I@3 ~@7 J K L M N O P Q R>".pickRestart({
  A: "[~@15 eb3@3 ~@3 gb3@12 f3@10 eb3@2 ~@3]/2", B: "[~ eb3@13 ~ eb3 ~@5 e3@12 f3@9 ~ e3@3 ~@2]/2",
  C: "[~@15 gb3@2 ~@4 gb3@12 f3@10 eb3@2 ~@3]/2", D: "[~ eb3@14 ab3@2 ~@4 f3@10 gb3@8 g3@2 ~@7]/2",
  E: "[~@3 f3@6 eb3@11 ~ d3@11 ~ bb2@11 ~ f3@12 e3@12 eb3@12 ~@15]/4", F: "~@12 bb2@11 ~", G: "bb2@11 ~ b2@11 ~",
  H: "bb2@11 ~ bb2@3 ~ eb2@2 ~@6", I: "[~@3 f3@2 e3@2 eb3@2 ~@3]/3", J: "~@2 db3 ~@2 db3@4 ~@2 eb3",
  K: "~@4 eb3@2 eb3@3 ~@3 eb3@3 ~@3 eb3@6", L: "eb3@4 eb3@3 ~@17", M: "~@4 eb3@2 ~@4 eb3@7 ~ eb3@4 db3@2",
  N: "d3@2 eb3 ~@8 eb3", O: "~@4 eb3 ~ eb3@4 ~@2 eb3@3 ~@3 eb3@5 ~", P: "eb3@3 ~ d3@7 ~ d3@3 db3@3 ~@6", Q: "~@11 e3",
  R: "f3@3 ~ gb3@2 ~@6 gb2@4 ~@8",
})).s("gm_baritone_sax").gain(0.35).pan(0.3)

// other · brass section · Bb Gb G Ab G Ab A Bb …
const brass_section = note(`<
  ~@76
  [~@13 [bb3,bb4]@3 ~@8]
  ~@15
  [[gb3,gb5] [g3,g5] [ab3,ab5] [g3,g5] [ab3,ab5] [a3,a5] [bb3,bb5] ~@5]
  ~@9
  [~@6 c5 d5 eb5 g5@2 ~]
  ~@9
  [~@3 [gb3,gb4] ~@2]
>`).s("gm_brass_section").gain(0.45)

// chords · trumpet
const trumpet = note(`<
  ~@32 A@2 B@2 C@2 D@2 ~@24 E ~@7 F G@2 H@2 I J ~ K ~@3 L ~@4 M N ~@2 M O ~ L ~ P ~ L ~ Q ~ R S T U V W X Y Z
>`.pickRestart({
  A: "[~@15 [eb4,bb4]@3 ~@3 [db5,gb5]@12 [c5,g5]@10 [bb4,eb5]@2 ~@3]/2", // Eb5 Gb5 C5 Eb5
  B: "[~ [g4,c5]@14 [eb4,bb4]@2 ~@4 [db5,gb5]@12 [d5,g5]@9 ~ [d5,g5]@2 ~@3]/2", // C5 Eb5 Gb5 G5
  C: "[~@15 [e4,bb4]@2 ~@4 [db5,gb5]@12 [c5,g5]@10 [bb4,eb5]@2 ~@3]/2", // Edim Gb5 C5 Eb5
  D: "[~ [g4,c5]@14 [bb4,eb5]@2 ~@4 [eb5,ab5]@10 [e5,a5]@8 [f5,bb5]@2 ~@7]/2", E: "~@13 [ab4,eb5]@7 ~ [bb4,eb5]@3",
  F: "~ [c5,g5]@5 ~@2", // C5
  G: "[~ [eb4,bb4]@2 c5 ~ bb4@2 [c5,g5]@2 [eb5,bb5]@2 ~@4 [c5,g5]@2 ~@3 [eb5,ab5]@9 ~ [db5,g5]@2 ~@4 [db5,g5]@2 [c5,f5]@2 ~@8, ~@3 g4@2 ~@43, ~@2 eb5 ~@21]/2", // Eb5 C5 Eb5 C5 Ab5 Dbdim F5
  H: "[~@8 c5@2 ~@2 [c5,g5] ~ [c5,gb5]@2 ~ [c5,f5] ~ [c5,gb5]@4 [c5,g5]@2 ~@4 [bb4,eb5]@7 ~ bb4@2 ~@9, ~@8 gb5 ~@39]/2", // C5 Cdim F5 Cdim C5 Eb5
  I: "~@5 [c5,g5]@2 [eb5,bb5]@3 ~ [eb5,bb5] ~ [f5,b5]@2 ~@3 [g5,c6]@6", J: "[db5,g5] [c5,f5]@2 ~@3",
  K: "~@12 eb5@3 ~ [bb4,eb5] ~@7, ~@11 ab4@4 ~@9", L: "~@6 [bb4,eb5] ~", M: "[ab4,eb5] ~@3 [a4,eb5] ~@3",
  N: "[bb4,eb5]@3 ~@7 [g4,eb5]@8 ~@6", O: "[bb4,eb5]@3 ~@7 [g4,d5]@8 ~@6", P: "~@6 [ab4,eb5] ~", Q: "~@9 [c5,g5]@2 ~",
  R: "~@11 [db5,gb5]", S: "~@4 [db5,gb5]@2 [db5,gb5]@3 ~@3 [db5,gb5]@3 ~@3 [b4,gb5]@5 ~",
  T: "[b4,gb5]@3 ~ [b4,gb5]@2 ~@18", U: "~@4 [b4,gb5]@2 ~@4 [b4,gb5]@7 ~ [db5,gb5]@3 ~ [b4,e5]@2",
  V: "[c5,f5]@3 ~ [db5,gb5]@2 ~@16 [db5,gb5]@2", W: "~@4 [db5,gb5]@2 [db5,gb5]@2 ~@4 [db5,gb5]@3 ~@3 [b4,gb5]@4 ~@2",
  X: "[b4,gb5]@2 ~@2 [c5,gb5]@8 [c5,gb5]@3 ~ [b4,gb5]@2 ~@6", Y: "~@11 [ab4,eb5]", Z: "[a4,e5]@2 [bb4,f5] ~@9",
})).s("gm_trumpet").gain(0.5).pan(0.6)
// … 157 more lines

More by Nat King Cole