Strudelify

I'm Beginning to See the Light

Ellington

KeyC majorTempo128 bpm
0:00/0:00
// I'm Beginning to See the Light — Ellington
// 128 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 76 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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 D E F G H I J K L M N O P Q R S T U V W X Y@2 Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN J K AO AP AQ AR AS AT
  R S T AU@2 AV AW Y AX AY@2 AZ BA BB BC BD BE BF BG BF BH BI ~@2 BJ@3
>`.pickRestart({
  A: "f#2 e2 f2 d#2", B: "~@6 b1@5 ~ a#1@6 a1@6, e2 ~@2", C: "~@6 d#2@5 ~ g2@6 b1@6, d2 ~@2",
  D: "c2 ~ c2 g2@2 ~ a#1@3 a1@3", E: "d2@5 ~ d2@6 ~@6 f2@5 ~, ~@3 g2@2 ~", F: "~@6 a#1@5 ~ a1@6 c#2@6, e2 ~@2",
  G: "d2@4 ~@2 d2@2 e2@2 f2@2 ~@6 e2@5 ~, ~@3 g2@2 ~", H: "g#2@2 ~@2 g#2@2 a#2@4 ~@2 g#2@5 ~ g#2@6",
  I: "d2@2 ~@2 d2@2 a2@4 ~@8 f2@5 ~, ~@3 g2@2 ~", J: "e2 ~ e2 b2@2 ~ a1@3 c#2@3", K: "d2 c#2 g2!2",
  L: "c2@6 g#1@6 ~@6 d#2@5 ~, ~@3 a1@2 ~", M: "d2 f#2 g2 d#2", N: "e2@2 ~@2 e2@2 b2@4 ~@8 d#2@5 ~, ~@3 a1@2 ~",
  O: "d2 ~ d2 a2@2 ~ g2@3 d2@3", P: "g#2@5 ~ g#2@6 g#2@6 c#2@6", Q: "d2@4 ~@2 d2@2 e2@2 f2@2 ~@6 f2@5 ~, ~@3 g2@2 ~",
  R: "e2 g#1 a1 c#2", S: "d2 ~ d2 a2@2 ~ g2@3 g2@3", T: "c2 c#2 d2 d#2", U: "e2@3 ~ e2@2 b2@6 g#2@6 e2@5 ~",
  V: "e2@5 ~ e2@6 b2@5 ~ b2@6", W: "d#3 g2 g#2 a#2", X: "d#2@3 ~ d#2@2 a#2@6 g2@6 d#2@5 ~",
  Y: "d2@3 ~ d2@2 a2@6 f#2@6 d2@5 ~", Z: "g#2@5 ~ g#2@6 d#3@5 ~ d#3@6", AA: "g2@3 g#1@3 a1@3 a2 e2 a1",
  AB: "f#2@6 f#2@5 ~ f2@6 d#2@6", AC: "~@6 a#1@5 ~@7 d#2@5 ~, e2@2 ~ a1@2 ~", AD: "d2@2 ~@2 d2@2 a2@4 ~@2 g2@5 ~ g2@6",
  AE: "g#2@5 ~ g#2@6 g#2@6 g#3@2 d#3@2 g#2@2", AF: "d2@6 f#2@6 ~@6 f2@5 ~, ~@3 g2@2 ~", AG: "e2 ~ e2 b2@2 ~ a#1@3 a1@3",
  AH: "~@6 d#2@5 ~ g2@6 g2@6, d2 ~@2", AI: "~@6 f2@5 ~ e2@6 d#2@6, c2 ~@2", AJ: "~@6 g#2@5 ~ g2@5 ~ g2@6, d2 ~@2",
  AK: "~@6 a#1@5 ~ a1@5 ~ a1@6, e2 ~@2", AL: "d2@6 f#2@6 ~@6 a2@5 ~, ~@3 g2@2 ~", AM: "g#2 a1 g#2 d#2",
  AN: "d2@2 ~ d2 e2 f2 g2@3 d#2@3", AO: "~@6 a#1@5 ~ a1@6 f2@6, c2 ~@2", AP: "f#2 ~ f#2 c3@2 ~ f2@3 d#2@3",
  AQ: "e2 a#1 a1 c#2", AR: "d2 a1 g#2 g2", AS: "g#2!2 a#2 d#2", AT: "d2 f#2 g2 f2", AU: "e3 g#2 a2 b2",
  AV: "d#2@5 ~ d#2@6 a#2@5 ~ a#2@6", AW: "d#2 d#3 a#2 d#2", AX: "d2 e2 f#2 a2",
  AY: "[~@6 d#2@5 ~ g#1@6 g#1@4 g1@6 g#1@2 a1@4 a#1@2 ~@4 a#1@7 ~, g#2 ~@5]/2", AZ: "a1 g2 g#2 f#2",
  BA: "~@6 c#2@5 ~ c2@6 e2@6, g2 ~@2", BB: "f2 e2 a#1!2", BC: "b2 d#2 e2 f#2", BD: "a1 ~ a1 d#2@2 ~ g#2@3 f#2@3",
  BE: "g2@2 ~@2 g2@2 d3@4 ~@8 f#2@5 ~, ~@3 c2@2 ~", BF: "~@6 f#2@5 ~ a#1@6 a#1@6, f2 ~@2",
  BG: "~@6 c#2@5 ~@7 f#2@5 ~, g2@2 ~ c2@2 ~", BH: "g2@5 ~ g2@6 ~@6 f#2@5 ~, ~@3 c2@2 ~",
  BI: "f2@5 ~ c2@4 f1@6 g1@2 g#1@4 a#1@2", BJ: "[~ d#2@3]/3",
})).s("gm_acoustic_bass").gain(0.22).pan(0.3)

// chords · piano
const piano = note(`<
  ~@3 A B C D@2 ~ E F@3 G H@2 I J K ~ L M N O P Q R S@4 T U V W ~@4 X Y Z@2 ~@2 AA@2 ~@2 AB AC AD AE AF AG@2 AH AI AJ@2
  AK@2 AL AM AN AO AP@2 AQ AR AS ~ AT@4
>`.pickRestart({
  A: "~@11 [f3,c4,d4,a4]", B: "~@10 [f3,b3,e4,a4]@3 ~@9 [g3,d4,e4,b4]@2", C: "~@10 [g3,c#4,f4,b4]@13 ~",
  D: "[~@4 [f3,a3,c4,e4] ~@17 [f#3,a#3,c#4,f4]@13 ~@11 [f3,a3,c4,e4]@2]/2", // Fmaj7 F#maj7 Fmaj7
  E: "[g3,d4,e4,b4] ~ [g3,d4,e4,b4] ~@3 [a#3,c#4,f4] ~@5, ~@12 g3 ~@11", // Em7 A#m
  F: "[[f#3,c4,e4,b4]@2 ~@10 g6@6 g6@4 [e3,g3,a3,d4]@12 [g3,c#4,f4,a4]@3 ~@9 [f3,c4,e4,a4]@13 ~@5 [f3,b3,d4,a4] ~@7]/3", // Esus2 Em7 C#aug Fmaj7 Bm7b5
  G: "[g3,d4,e4,b4]@10 [g3,c#4,f4,a#4]@3 ~@11", // Em7 Gm7b5
  H: "[[f3,a3,c4,d4]@12 [f3,b3,e4,a4]@2 ~@2 [f3,b3,e4,a4]@2 ~@4 [f#3,a#3,c#4,f4]@13 ~ [f#3,a#3,c4,f4]@12]/2", // Dm7 Fmaj7 F#maj7
  I: "~@4 [f3,a3,c4,e4] ~@7 [f3,b3,d4,a4]@12", J: "[g3,d4,e4,b4]@6 ~@5 [f#3,g#3,b3,c4,e4]", K: "~@2 g6 ~",
  L: "[g#3,d4,f#4,b4]@14 ~@2 [g#3,d4,f#4,b4]@3 ~@5", M: "[g#3,d4,f#4]@2 ~@8 [g#3,d4,f#4,c#5] ~@13, c#5 ~@23",
  N: "[g3,c4,c#4,f4]@14 ~@2 [g3,c4,c#4,f4]@3 ~@5", O: "~@4 [g3,c#4,f4,a#4]@2 ~@10 [g3,c#4,f4,a#4] ~@7",
  P: "[c4,a4]@2 ~@8 [f#3,c4,e4,a4] ~@13, [f#3,e4] ~@23", Q: "~@4 [f#3,c4,e4,a4]@2 ~@10 [f#3,c4,e4,a4] ~@7",
  R: "[f#3,a#3,c4,d#4]@14 ~@2 [f#3,a#3,c4,d#4]@3 ~@5", // Cm7b5
  S: "[[f3,b3,a4] ~@11 [g3,c#4,f#4,b4]@10 [a3,c4,e4,f#4]@13 ~@5 [a3,d#4,g4,d5] ~@5 [g3,b3,d4,e4]@12 [g3,a#3,c#4,f4]@3 ~@9 [f3,c4,d4,a4]@13 ~ [f3,b3,e4,a4]@12, e4 ~@47]/4", // Bm7b5 Gmaj7 F#m7b5 Dsus4 Em7 Gm7b5 Dm7 Fmaj7
  T: "[c#4,f4,a#4] ~@9 [f#3,c4,f4,a#4]@3 ~@11, f#3 ~@11", U: "~@11 [g3,d4,e4,b4]", V: "~@2 d#6 d6",
  W: "[d3,f#3,c4,e4,a4]@11 ~ [g2,f3,c4,e4,a4]@4 [g2,f3,b3,e4,g#4]@2 ~@4 [c3,e3,a3,d4,g4]@2", X: "~ d6 ~@2",
  Y: "~@4 [f3,c4,e4,a4] ~@5 [f3,a3,b3,d4]@3 ~@9 [g3,d4,e4,b4]@2", // Fmaj7 Bm7b5 Em7
  Z: "[~@16 [g3,a#3,c#4,f4] ~@5 [d3,f#3,c4,e4]@13 ~ [g2,f3,c4,e4]@3 ~ [g2,f3,b3,e4]@2 ~@4 [c3,e3,a3,c4]@2]/2", // Gm7b5 D7 C Em Am
  AA: "[~@8 c4 a#3@2 a3@7 ~@6]/2", AB: "[g#3,d4,f4,c5]@2 ~@2 [g#3,d4,f4,c5]@2 ~@4 [g3,c#4,f4,a#4]@3 ~@11",
  AC: "[f#3,a3,c4,e4]@2 ~ g6", AD: "~ f#6 ~ d#6", AE: "~@4 [g#3,c#4,d4,f#4]@2 ~@10 [g#3,c#4,d4,f#4] ~@7",
  AF: "[d4,f#4]@2 ~@8 [g#3,b3,d4,f#4] ~@13, [g#3,b3] ~@23", AG: "~@4 [g3,c#4,f4,c5]@2 ~@10 [g3,c#4,f4,c5] ~@7",
  AH: "~@4 [f#3,c4,e4,b4]@2 ~@10 [f#3,c4,e4,b4] ~@7", // Esus2
  AI: "[c4,e4,b4] ~@9 [f#3,c4,e4,b4] ~@11 [f#3,a#3,c4,f4]@2, f#3 ~@11", // Cmaj7 Esus2 F#maj7
  AJ: "[~@22 [g2,f3,b3,e4,g4]@6 [g#2,f#3,c4,f4,g#4]@2 [a2,g3,c#4,f#4,a4]@4 [a#2,g#3,d4,g4,a#4]@2 ~@4 [a#2,g#3,d4,g4,b4]@7 ~]/2", // Em Fm F#m Gm G
  AK: "[[g3,c4,d#4,a4]@12 ~@10 [f3,b3,d#4,g#4]@13 ~@13]/2", AL: "[d#3,g#3,c4,g4]@2 f6 ~",
  AM: "[a3,d#4,f#4] ~@9 [a3,c#4,d#4,f#4] ~@11 [c4,g4,a4,d#5]@2, c#4 ~@11", AN: "~@10 [c4,f#4,a#4,f5]@13 ~",
  AO: "~@6 [a#3,e4,g#4,c#5] ~ [a#3,e4,g#4,c#5] ~@3", // A#m7b5
  AP: "[[g#3,g4]@2 ~@10 [a#2,g#3,c4,d#4]@3 ~ [g#2,g#3,d4,f4] ~@5 [g2,f3,b3,d#4,g4]@11 ~ [c3,e3,a#3,d#4,g#4]@13 ~, [c4,d#4] ~@47]/2", // G#maj7 G# Ddim Gaug G# Cm
  AQ: "[g#3,d#4,f4,c5] ~@11", AR: "~@4 [f3,b3,d#4,g#4] ~@5 [e3,a#3,c#4,g#4]@13 ~",
  AS: "[f3,g#3,c4,d#4,g4]@5 [f3,g#3,c4,d#4,g4]@3 [g2,f3,b3,d#4,g4] [g#2,f#3,c4,f4,g#4]@2 [a#2,g#3,d4,g4,a#4]", // Fm7 Gaug Fm Gm
  AT: "[~@2 [d#3,g3,c#4,f#4] ~@3 [d#3,g3,c#4,f#4]@2 [d#3,g3,c#4,f#4] ~@2 [f#2,e3,a#3,d#4,g4]@3 [f2,d#3,a3,d4,f4] [e2,d3,g#3,c#4,e4]@2 [d#2,d#3,g3,c4,d#4] ~@3 [d#2,a#2,g3,a#3,d4,f4]@27]/4", // D#7 D# Dm C#m Cm D#maj7
})).s("gm_piano").gain(0.2).pan(0.3)

// other · alto sax
const alto_sax = note(`<
  A B C D E F E G ~ H I ~ J ~ J ~ J K L ~ M N O P Q R S ~ T ~ U V W X L Y Z AA@3 ~ AB@2 ~ AC@2 AD@2 AE AF AG ~ M N O P Q
  R AH@2 AI AJ AK AL AK U ~ AM ~ AN AO ~ AP@2 ~@2
>`.pickRestart({
  A: "c4@4 e4@2 ~@4 g4@7 ~ g4@2 ~@4", B: "e4@4 g4@2 ~@4 f4@2 ~@4 e4@7 ~", C: "d4 ~@2 d4@2 d4 d4@2 d4 ~@2 d4",
  D: "~@5 c5 ~@2 a4 ~@2 g#4", E: "a4 ~@11", F: "~@5 a4 ~@2 a4 ~@2 g#4", G: "~@10 a#4@6 b4 a#4 g#4@4 a4@2",
  H: "~@10 c5@6 c#5 c5 a4@2 ~@4", I: "e4 ~@11", J: "c4 ~@4 e4 ~@6", K: "~@10 a4@7 ~ f4@2 ~@4",
  L: "e4@11 ~ e4@4 e4@2 ~@4 c4@2", M: "~ b4", N: "g#4@5 e4 ~@6", O: "~ a#4", P: "g4@5 e4 ~@6", Q: "~ a4",
  R: "f#4@5 d4 ~@2 d4@4", S: "d#4@2 d#4 ~@9", T: "e4 ~@4 f4 ~@6", U: "e4 ~@4 e4 ~@6", V: "~@11 g#3",
  W: "a3@2 c4 a3 ~@2 c4 ~@2 d4 ~@2", X: "e4@2 ~@4 g4@4 a#4@7 ~ a4@2 ~@4", Y: "~@6 e4@4 g4@7 ~ a4@2 ~@4",
  Z: "f4@11 ~ e4@4 e4@2 ~@4 g4@2",
  AA: "[~@10 a4@2 ~@10 f4@7 ~ f4@4 f4@2 g4@4 g4@2 ~@4 g#4@7 ~ g4@4 g#4@2 ~@4 g#4@2 ~@4 a4@2]/3",
  AB: "[~@10 c5@6 c#5 c5 a4@4 e4@13 ~ e4@4 e4@2 ~@4 c4@2]/2",
  AC: "[~@2 a3 c4 ~@2 d4@2 c4 ~@2 e4@3 ~ g4@2 g4 ~@6, ~@14 f4 ~@9, ~@29 f#4@2 ~@17]/2",
  AD: "[~@4 d4@4 f4@4 f4@4 e4@2 ~@4 d#4@6 [e4,f4] [f#4,g4] g#4@4 g#4@2 ~@6 g#4@4 a4@2]/2", AE: "~@2 c5 ~@3 c5@2 c5 ~@3",
  AF: "c5@10 a4@7 ~@7", AG: "~@2 e4 ~@3 e4@2 e4 ~@2 c4", AH: "[d#4@4 d#4@2 ~@16 g4@6 g#4@2 a4@4 a#4@2 ~@4 a#4@7 ~]/2",
  AI: "~@6 c4@2 d#4@2 c4@2 d#4@9 ~ c4@2", AJ: "d#4@10 c4@7 ~@7", AK: "~@3 c4 d#4 c4 d#4@5 c4", AL: "d#4@10 b3@7 ~@7",
  AM: "~@10 d#4@13 ~", AN: "~@10 g#4@13 ~", AO: "~@5 g4@3 g4 f4@2 g4",
  AP: "[~@2 f#4 ~@3 f#4@2 f#4 ~@2 f#4@3 f4 e4@2 f4 ~@6]/2",
})).s("gm_alto_sax").gain(0.45).pan(0.6)

// other · alto sax
const alto_sax_2 = note(`<
  A B C D E F E G ~ H I ~ J ~ J ~ J K L ~ M N O P Q R S ~ T ~ U V W X L Y Z AA@3 ~ AB@2 ~ AC@2 AD@2 AE AF AG ~ M N O P Q
  R AH@2 AI AJ AI AK AI AL ~ AM ~ AN AO ~ AP@2 ~@2
>`.pickRestart({
  A: "a3@4 c4@2 ~@4 d4@7 ~ c4@2 ~@4", B: "d4@4 e4@2 ~@4 d4@2 ~@4 c#4@7 ~", C: "c4 ~@2 c4@2 c4 c4@2 c4 ~@2 c4",
  D: "~@5 g4 ~@2 f4 ~@2 d#4", E: "e4 ~@11", F: "~@5 f4 ~@2 f4 ~@2 d#4", G: "~@10 f4@7 ~ f4@4 e4@2",
  H: "~@10 a4@6 a#4 a4 f4@2 ~@4", I: "c4 ~@11", J: "a3 ~@4 b3 ~@6", K: "~@10 f4@7 ~ c#4@2 ~@4",
  L: "c4@11 ~ c4@4 b3@2 ~@4 a3@2", M: "~ f#4", N: "d4@5 c#4 ~@6", O: "~ f4", P: "c#4@5 c4 ~@6", Q: "~ e4",
  R: "c4@5 b3 ~@2 b3@4", S: "b3@2 b3 ~@9", T: "c4 ~@4 d4 ~@6", U: "c4 ~@4 b3 ~@6", V: "~@11 g#3",
  W: "a3@2 c4 a3 ~@2 c4 ~@2 d4 ~@2", X: "e4@2 ~@4 g4@4 g4@7 ~ f4@2 ~@4", Y: "~@6 c4@4 d4@7 ~ f4@2 ~@4",
  Z: "c4@11 ~ b3@4 b3@2 ~@4 d4@2",
  AA: "[~@10 f4@2 ~@10 c4@7 ~ c4@4 c4@2 e4@4 e4@2 ~@4 f4@7 ~ e4@4 f4@2 ~@4 f4@2 ~@4 e4@2]/3",
  AB: "[~@10 a4@6 a#4 a4 f4@4 c4@13 ~ c4@4 b3@2 ~@4 a3@2]/2",
  AC: "[~@4 f#3@2 a3@2 ~@4 a3@4 a3@2 ~@4 d4@7 ~ e4@4 e4@2 ~@12, ~@29 d#4@2 ~@17]/2",
  AD: "[~@4 c4@4 c#4@4 c4@4 c4@2 ~@4 c#4@7 [d4,d#4] f4@4 f4@2 ~@6 f4@4 e4@2, ~@30 e4 ~@17]/2", // D#maj7
  AE: "~@2 g4 ~@3 g4@2 g4 ~@3", AF: "g4@10 f4@7 ~@7", AG: "~@2 c4 ~@3 c4@2 b3 ~@2 a3",
  AH: "[b3@4 b3@2 ~@16 e4@6 f4@2 f#4@4 g4@2 ~@4 g4@7 ~]/2", AI: "~@3 c4 d#4 c4 d#4@5 c4", AJ: "d#4@10 c4@7 ~@7",
  AK: "d#4@10 b3@7 ~@7", AL: "d#4 ~@4 d#4 ~@6", AM: "~@10 a#3@13 ~", AN: "~@10 d#4@13 ~", AO: "~@5 d#4@3 d#4 c4@2 d4",
  AP: "[~@2 c#4 ~@3 c#4@2 c#4 ~@2 d#4@3 d4 c#4@2 c4 ~@6]/2",
})).s("gm_alto_sax").gain(0.36).pan(0.7)

// other · tenor sax
const tenor_sax = note(`<
  A B C D E F E G ~ H I ~ J ~ J ~ J K L ~ M N O P Q R S ~ T ~ J U V W L X Y Z@3 ~ AA@2 ~ AB@2 AC@2 AD AE AF ~ M N O P Q
  R AG@2 AH AI AH AJ AH AK ~ AL ~ AM AN ~ AO@2 ~@2
>`.pickRestart({
  A: "f#3@4 a3@2 ~@4 a3@7 ~ a3@2 ~@4", B: "b3@4 d4@2 ~@4 c4@2 ~@4 a#3@7 ~", C: "a3 ~@2 a3@2 a3 a3@2 a3 ~@2 a3",
  D: "~@5 d4 ~@2 c#4 ~@2 b3", E: "c4 ~@11", F: "~@5 c#4 ~@2 c#4 ~@2 b3", G: "~@10 c4@7 ~ c4@4 c4@2",
  H: "~@10 f4@6 f#4 f4 c#4@2 ~@4", I: "a3 ~@11", J: "f3 ~@4 f3 ~@6", K: "~@10 c#4@7 ~ a#3@2 ~@4",
  L: "f#3@11 ~ f3@4 f3@2 ~@4 e3@2", M: "~ d4", N: "b3@5 g#3 ~@6", O: "~ c#4", P: "a#3@5 g3 ~@6", Q: "~ c4",
  R: "a3@5 f#3 ~@2 f#3@4", S: "f#3@2 f#3 ~@9", T: "a3 ~@4 a3 ~@6", U: "~@11 g#3", V: "a3@2 c4 a3 ~@2 c4 ~@2 d4 ~@2",
  W: "e4@2 ~@4 d4@4 g#3@7 ~ g3@2 ~@4", X: "~@6 a3@4 b3@7 ~ c#4@2 ~@4", Y: "a#3@11 ~ a3@4 a3@2 ~@4 c4@2",
  Z: "[~@10 c#4@2 ~@10 a#3@7 ~ a#3@4 a#3@2 b3@4 b3@2 ~@4 c4@7 ~ c#4@4 c4@2 ~@4 c#4@2 ~@4 c4@2]/3",
  AA: "[~@10 c#4@7 ~ c#4@4 a3@13 ~ a3@4 g#3@2 ~@4 g3@2]/2",
  AB: "[~@4 e3@2 f#3@2 ~@4 g3@4 g3@2 ~@4 b3@6 ~ c#4 d4@4 c#4@2 ~@12, ~@14 c4 ~@9]/2",
  AC: "[~@4 a3@4 c4@4 a#3@4 a3@2 ~@4 b3@7 ~ c4@4 c4@2 ~@6 c4@4 c4@2]/2", AD: "~@2 e4 ~@3 e4@2 d4 ~@3",
  AE: "d4@10 c#4@7 ~@7", AF: "~@2 a3 ~@3 a3@2 g#3 ~@2 g3", AG: "[f#3@4 f#3@2 ~@16 b3@6 c4@2 c#4@4 d4@2 ~@4 d4@7 ~]/2",
  AH: "~@3 c4 d#4 c4 d#4@5 c4", AI: "d#4@10 c4@7 ~@7", AJ: "d#4@10 b3@7 ~@7", AK: "b3 ~@4 a#3 ~@6", AL: "~@10 g#3@13 ~",
  AM: "~@10 a#3@13 ~", AN: "~@5 c4@3 b3 a#3@2 c4", AO: "[~@2 g3 ~@3 g3@2 g3 ~@2 a#3@3 a3 g#3@2 g3 ~@6]/2",
})).s("gm_tenor_sax").gain(0.38).pan(0.4)

// other · tenor sax
const tenor_sax_2 = note(`<
  A B C D E F E G ~ H I ~ J ~ J ~ J K L ~ M N O P Q R S ~ T ~ U V W X L Y Z AA@3 ~ AB@2 ~ AC@2 AD@2 AE AF AG ~ M N O P Q
  R AH@2 AI AJ AI AK AI AL ~ AM ~ AM AN ~ AO@2 ~@2
>`.pickRestart({
  A: "e3@4 e3@2 ~@4 e3@7 ~ e3@2 ~@4", B: "g3@4 a#3@2 ~@4 g#3@2 ~@4 g3@7 ~", C: "f3 ~@2 f3@2 f3 f3@2 f3 ~@2 e3",
  D: "~@5 g#3 ~@2 g3 ~@2 e3", E: "f3 ~@11", F: "~@5 g3 ~@2 g3 ~@2 d#3", G: "~@10 f#3@7 ~ f#3@4 f3@2",
  H: "~@10 c#4@6 d4 c#4 g3@2 ~@4", I: "f#3 ~@11", J: "d3 ~@4 a3 ~@6", K: "~@10 g3@7 ~ g3@2 ~@4",
  L: "a3@11 ~ a3@4 g#3@2 ~@4 g3@2", M: "~ b3", N: "g#3@5 f#3 ~@6", O: "~ a#3", P: "g3@5 f3 ~@6", Q: "~ a3",
  R: "f#3@5 e3 ~@2 a3@4", S: "a#3@2 a#3 ~@9", T: "e3 ~@4 d#3 ~@6", U: "a3 ~@4 a3 ~@6", V: "~@11 g#3",
  W: "a3@2 c4 a3 ~@2 c4 ~@2 d4 ~@2", X: "e4@2 ~@4 d4@4 d4@7 ~ c#4@2 ~@4", Y: "~@6 g3@4 g3@7 ~ g3@2 ~@4",
  Z: "f#3@11 ~ f3@4 f3@2 ~@4 g#3@2",
  AA: "[~@10 g3@2 ~@10 f#3@7 ~ f#3@4 f#3@2 f3@4 f3@2 ~@4 f#3@7 ~ g3@4 f#3@2 ~@4 f#3@2 ~@4 f3@2]/3",
  AB: "[~@10 g3@7 ~ g3@4 f#3@13 ~ f3@4 f3@2 ~@4 e3@2]/2",
  AC: "[~@4 e3@2 e3@2 ~@4 d#3@4 d#3@2 ~@4 g3@6 [g#3,a3] [a#3,b3] c4@4 b3@2 ~@12]/2", // Amaj7 Bmaj7
  AD: "[~@4 f3@4 g3@4 f#3@4 f3@2 ~@4 g3@7 ~ f#3@4 f#3@2 ~@6 f#3@4 f3@2]/2", AE: "~@2 c4 ~@3 c4@2 c4 ~@3",
  AF: "g#3@10 g3@7 ~@7", AG: "~@2 f#3 ~@3 f3@2 f3 ~@2 e3", AH: "[a#3@4 a#3@2 ~@16 f3@6 f#3@2 g3@4 g#3@2 ~@4 g#3@7 ~]/2",
  AI: "~@3 c4 d#4 c4 d#4@5 c4", AJ: "d#4@10 c4@7 ~@7", AK: "d#4@10 b3@7 ~@7", AL: "f3 ~@4 d#3 ~@6", AM: "~@10 e3@13 ~",
  AN: "~@5 g#3@3 f3 f#3@2 g#3", AO: "[~@2 a#3 ~@3 a#3@2 a#3 ~@2 e3@3 d#3 d3@2 a#2 ~@6]/2",
})).s("gm_tenor_sax").gain(0.36).pan(0.4)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  A B C D E F E G ~ H E ~ I ~ I ~ I H J ~ K L M N O P Q ~ R ~ I ~@2 S J T U V@3 ~ W@2 ~ X@2 Y@2 Z AA AB ~ K L M N O P
  AC@2 ~@5 AD ~ AE ~ AE AF ~ AG@2 ~@2
>`.pickRestart({
  A: "f#2@4 f#2@2 ~@4 f2@7 ~ f2@2 ~@4", B: "e2@4 e2@2 ~@4 a#2@2 ~@4 a2@7 ~", C: "d2 ~@2 d2@2 d2 d2@2 d2 ~@2 c2",
  D: "~@5 a#2 ~@2 a2 ~@2 c#2", E: "d2 ~@11", F: "~@5 a2 ~@2 a2 ~@2 c#2", G: "~@10 g#2@6 a2 g#2 d#2@4 d2@2",
  H: "~@10 a2@7 ~ a2@2 ~@4", I: "d2 ~@4 g2 ~@6", J: "d2@11 ~ g2@4 g2@2 ~@4 c2@2", K: "~ g#3", L: "e3@5 d3 ~@6",
  M: "~ g3", N: "d#3@5 c#3 ~@6", O: "~ f#3", P: "d3@5 c3 ~@2 a2@4", Q: "g#2@2 g#2 ~@9", R: "f#2 ~@4 f2 ~@6",
  S: "~@10 a#2@7 ~ a2@2 ~@4", T: "~@6 c3@4 e2@7 ~ d#2@2 ~@4", U: "d2@11 ~ g2@4 f2@2 ~@4 e2@2",
  V: "[~@10 a2@2 ~@10 d2@7 ~ d2@4 d2@2 g2@4 g2@2 ~@4 g#2@7 ~ a2@4 g#2@2 ~@4 d#2@2 ~@4 d2@2]/3",
  W: "[~@10 a2@7 ~ d#2@4 d2@13 ~ g2@4 g2@2 ~@4 c2@2]/2", X: "[~@2 f#2!2 ~@2 f2@2 f2 ~@2 e2@4 a#2@2 a2 ~@6]/2",
  Y: "[~@4 d3@4 a2@4 g#2@4 g2@2 ~@4 a2@7 ~ g#2@4 g#2@2 ~@6 d#2@4 d2@2]/2", Z: "~@2 d2 ~@3 g2@2 f2 ~@3",
  AA: "e2@10 a2@7 ~@7", AB: "~@2 d2 ~@3 g2@2 g2 ~@2 c2", AC: "[g#2@4 g#2@2 ~@16 g2@6 g#2@2 a2@4 a#2@2 ~@4 a#2@7 ~]/2",
  AD: "g2 ~@4 c2 ~@6", AE: "~@10 c2@13 ~", AF: "~@5 f2@3 g2 g#2@2 a#2",
  AG: "[~@2 d#2 ~@3 d#2@2 d#2 ~@2 f#2@3 f2 e2@2 d#2 ~@6]/2",
})).s("gm_baritone_sax").gain(0.44).pan(0.8)

// other · trumpet · "Trumpet 1"
const trumpet = note(`<
  A B C D ~@13 E ~ F G H I J ~ K L M N M N M O P ~ Q R S@3 ~@4 T@2 U@2 ~@3 F G H I J ~ K V@2 W X Y Z AA AB ~@4 AC ~ AD@2
  ~@2
>`.pickRestart({
  A: "a4@4 c5@2 ~@4 d5@6 d#5 d5 c5@2 ~@4", B: "e5@4 g5@2 ~@4 f5@2 ~@4 e5@7 ~", C: "c5 ~@2 c5@2 c5 c5@2 c5 ~@2 c5",
  D: "~@5 c5 ~@2 a4 ~@3", E: "~@10 c5@7 ~ a4@2 ~@4", F: "~@2 c5 c#5@2 d5 ~@2 d#5 ~@2 d#5", G: "e5 ~@11",
  H: "~@16 e5@7 ~", I: "d#5 ~@11", J: "~@8 e5 d#5@2 d5", K: "~@16 d5@7 ~", L: "d#5@2 d#5 ~@9",
  M: "~@5 c5 ~@2 c5 ~@2 c5", N: "c5 ~@11", O: "c5 ~@7 d5 ~@3", P: "~@10 g5@7 ~ f5@2 ~@4", Q: "~@6 e5@4 g5@7 ~ a5@2 ~@4",
  R: "f5@11 ~ e5@4 e5@2 ~@4 g5@2",
  S: "[~@10 a5@2 ~@10 f5@7 ~ f5@4 f5@2 g5@4 g5@2 ~@4 g#5@7 ~ g5@4 g#5@2 ~@4 g#5@2 ~@4 a5@2]/3",
  T: "[~@4 a4@2 c5@2 ~@4 d5@4 c5@2 ~@4 e5@6 f5 ~ g5@4 g5@2 ~@12, ~@29 f#5@2 ~@17]/2",
  U: "[~@4 a4@4 c5@4 d5@4 c5@2 ~@4 d#5@6 e5 [f5,f#5] g#5@4 g#5@2 ~@6 g#5@4 a5@2, ~@30 g5 ~@17]/2", // F#maj7
  V: "[d#5@4 d#5@2 ~@16 g4@6 g#4@2 a4@4 a#4@2 ~@4 b4@7 ~]/2", W: "c5 ~@5 d#5 ~@5", X: "g5@2 ~@8 d#5@7 ~@7",
  Y: "~@2 d#5 ~@3 g5 ~@5", Z: "f#5@2 ~@8 d#5@7 ~@7", AA: "d#5 ~@5 f5 ~@5", AB: "g5 ~@4 g#5 ~@6",
  AC: "~@5 g5@3 d#5 c5@2 a#4", AD: "[~@2 f#5 ~@3 f#5@2 f#5 ~@2 f#5@3 f5 e5@2 d#5 ~@6]/2",
})).s("gm_trumpet").gain(0.64).pan(0.6)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
  A B C D ~@13 E ~ F G H I J ~ K L M N M N O P Q ~ R S T@3 ~@4 U@2 V@2 ~@3 F G H I J ~ K W@2 X Y Z AA AB AC ~@4 AD ~
  AE@2 ~@2
>`.pickRestart({
// … 193 more lines

More by Ellington