Strudelify

Do Nothin' Till You Hear From Me

Ellington

KeyB♭ majorTempo76 bpm
0:00/0:00
// Do Nothin' Till You Hear From Me — Ellington
// 76 bpm, 4/4, key A# 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 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(76/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@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 E AC AD@2 AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY@3 AZ BA@5
>`.pickRestart({
  A: "[~@41 f3@26 ~@29]/2", B: "bb2@4 f2@4 bb1@4 b1@8 a1@4 bb1@10 ~@2 bb1@9 bb0 ~@2",
  C: "f2@8 f1@3 ~ b1@12 bb1@10 ~@2 bb1@9 bb0 ~@2", D: "eb2@11 ~ d2@11 ~ c2@12 bb1@8 eb2@4",
  E: "ab2@11 ~ bb2@10 ~@2 b2@11 ~ c3@8 b1@3 ~", F: "bb1@9 bb0 ~@2 ab2@10 ~@2 g2@10 ~@2 g2@9 g1 ~@2", G: "c2 gb2 f2 b1",
  H: "bb1@7 ~ bb0@2 ~@2 ab1@10 ~@2 g1@12 f1@8 bb1@4", I: "bb1 ~@5 ab2@2 gb2@2 b1 a1",
  J: "bb1@10 ~@2 eb2@9 eb1 ~@2 d2@9 d1 ~@2 f2@9 f1 ~@2", K: "bb1@8 bb0@3 ~ b1@12 bb1@8 bb0@3 ~ e2@12",
  L: "eb2@8 eb1@2 ~@2 d2@11 ~ c2@12 bb1@8 a2@4", M: "ab2@11 ~ bb2@11 ~ b2@11 ~ c3@8 ab2@4",
  N: "bb1@10 ~@2 ab2@9 ab1 ~@2 g2@10 ~@2 g2@10 ~@2", O: "c2@5 ~ c2@6 f2@6 b1@6",
  P: "bb1@9 bb0 ~@2 db2@10 ~@2 bb1@9 bb0 ~@2 ab2@10 ~@2", Q: "bb1@8 bb0@3 ~ a2@12 ab2@10 ~@2 db2@9 db1 ~@2",
  R: "gb3@4 db3@4 gb2@4 e2@8 d2@4 eb2@8 eb1@3 ~ eb2@12", S: "ab2@6 b2@4 ab2@2 db2@5 ~ db2@5 ~",
  T: "gb2@3 bb2@2 gb2 ab2@3 b2@2 ab2", U: "bb1@8 bb0@3 ~ c2@12 b1@8 b0@3 ~ b1@12",
  V: "bb1@8 bb0@3 ~ bb1@12 g2@8 g1@3 ~ b1@12", W: "d2@9 d1 ~@2 ab2@10 ~@2 g3@4 d3@4 g2@4 ab2@8 gb2@4",
  X: "g2@10 ~@2 g2@9 g1 ~@2 c2@8 c1@3 ~ db2@12", Y: "f2 c2 b1!2", Z: "bb1@7 ~ bb0@2 ~@2 a1@10 ~@2 g1@12 f1@8 bb1@4",
  AA: "f2@10 ~@2 f2@11 ~ bb1@10 ~@2 bb1@12", AB: "eb2@11 ~ f2@11 ~ gb2@11 ~ g2@8 eb2@4",
  AC: "bb1@9 bb0 ~@2 ab2@9 ab1 ~@2 g2@10 ~@2 g2@12",
  AD: "[c2@9 ~@3 c2@8 gb2@4 f3@4 c3@4 f2@4 c2@8 ~ b2@7 f2@4 b1@4 b1@8 a1@4 bb1@9 ~@3 bb1@8 bb1@4]/2",
  AE: "a1@8 a0@3 ~ b1@12 bb1@10 ~@2 bb1@12", AF: "e2@3 ab2@2 e2 eb2@3 g2@2 eb2",
  AG: "d2@10 ~@2 d2@11 ~ db2@9 db1 ~@2 g2@10 ~@2", AH: "gb2@10 ~@2 gb2@11 ~ eb2@12 a2@12",
  AI: "ab2@5 ~ ab2@6 ab2@5 ~ db2@5 ~", AJ: "gb2@9 ~@3 gb2@8 a2@4 ab2@8 ab1@3 ~ ab2@12",
  AK: "bb1@9 ~@3 bb1@8 c2@4 b1@12 b1@12", AL: "bb2 f2 bb1 ab2@2 gb2 g3 d3 g2 b1@2 a1",
  AM: "d2@9 d1 ~@2 ab2@9 ab1 ~@2 g2@12 ab2@12", AN: "c2@8 c1@3 ~ c2@12 c2@10 ~@2 c2@11 ~",
  AO: "c2@11 ~ d2@10 ~@2 eb2@11 ~ g2@8 c2@3 ~", AP: "eb2@7 ~ eb1@2 ~@2 f2@11 ~ gb2@11 ~ bb2@8 eb2@4",
  AQ: "g2@9 g1 ~@2 g2@10 ~@2 g2@10 ~@2 g2@9 g1 ~@2", AR: "g2@8 g1@3 ~ g2@12 g2@10 ~@2 g2@12",
  AS: "c2@8 c1@3 ~ db2@12 c2@10 ~@2 c2@10 ~@2", AT: "g3@2 d3@2 g2@2 db2@4 b1@2 c2@5 ~ c2@6",
  AU: "f2@11 ~ g2@11 ~ ab2@11 ~ a2@8 f2@4", AV: "bb1@11 ~ ab1@11 ~ g1@12 f1@8 bb1@4",
  AW: "c2@5 ~ bb1@5 ~ a1@5 ~ a1@5 ~", AX: "f2@10 ~@2 f2@11 ~ g3@4 d3@4 g2@4 d2@8 c2@4", AY: "[db2@107 ~@37]/3",
  AZ: "~@25 db2@12 c2@11", BA: "[~@2 b1@12 bb1@13 ab1@13 ~ e2@13 d2@14 db2@55 bb1@9 a1@74 ~@34]/5",
})).s("gm_acoustic_bass").gain(0.31).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 AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV AW AX AY AZ@3 ~@2 BA@4
>`.pickRestart({
  A: "[~@21 f4@49 ~@26]/2", B: "[a3,d4,f4,c5]@11 ~ d4@4 a4@4 ~ c5@2 ~ [a3,d4,f4,c5]@12 [g3,d4,f4,bb4]@12",
  C: "[ab3,c4,eb4,g4]@7 ~ [ab3,b3,d4,f4]@4 [ab3,eb4,f4,c5]@4", // Abmaj7 Abdim Fm7
  D: "~@21 eb3@3 [g3,d4,f4,bb4]@7 ~@2 eb3@3 [g3,d4,f4,bb4]@6 ~@6", E: "[gb3,bb3,d4,f4]@11 ~@5",
  F: "[a3,c4,d4,f4] [gb3,c4,f4,bb4] [f3,b3,e4,a4] [f3,ab3,b3,eb4]", // Dm7 Gbmaj7 Fmaj7 Fm7b5
  G: "[e3,ab3,bb3,db4]@20 ~@4 [eb3,b3,d4,g4]@11 ~ a3@4 eb4@4 ~ g4@2 ~", // Bbm7b5 G
  H: "~@2 [b3,d4,e4,g4,bb4,bb5] ~@3 [b3,d4,e4,g4,bb4,bb5]@6", // Em7
  I: "[a3,c4,d4,f4] [g3,d4,f4,bb4] [f3,c4,e4,a4] [eb3,a3,d4,gb4]", // Dm7 Gm7 Fmaj7 D
  J: "[eb3,ab3,c4,g4]@11 ~ ab3@4 eb4@4 ~ g4@2 ~ [ab3,d4,g4,b4]@5 ~@19", K: "[g3,d4,f4,bb4]@13 ~@3",
  L: "[gb3,d4,f4,bb4]@6 ~ [gb3,d4,f4,bb4] bb6@4 ~@4", M: "[a3,c4,d4,f4] [gb3,c4,f4,bb4] [f3,b3,e4,a4] [f3,a3,b3,eb4]",
  N: "[e3,bb3,db4,ab4]@11 ~ bb3@4 e4@4 ~ gb4@2 ~ [eb3,b3,d4,g4]@21 ~@3", // Bbm7b5 G
  O: "[c-1,d4,f4,bb4] [f3,bb3,db4,ab4] [g3,d4,f4,bb4] [c4,f4,ab4,eb5]", // Bb Bbm7 Gm7 Fm7
  P: "[d4,f4,g4,bb4]@5 ~ [b3,gb4,bb4,eb5]@3 [b3,f4,bb4,d5]@3", Q: "[a3,e4,ab4,db5]@21 ~@12 [gb3,bb3,db4,eb4]@11 ~@4",
  R: "[gb3,b3,eb4,ab4]@7 ~ [f3,b3,eb4,bb4]@4 [f3,a3,b3,d4]@4", S: "[f3,bb3,db4,ab4]@5 ~@19 [gb3,b3,eb4,bb4]@21 ~@3",
  T: "[ab3,c4,db4,f4]@20 ~@4 [bb3,eb4,gb4,db5]@21 ~@3", U: "[a3,d4,f4,c5]@21 ~@3 [bb3,f4,a4,d5]@20 ~@4",
  V: "[d4,f4,g4,bb4]@12 [c4,f4,gb4,bb4]@12 [b3,e4,f4,a4]@11 ~ b3@4 f4@4 ~ a4@2 ~", // Gm7 Fsus4 Esus4
  W: "[c-1,bb3,d4,g4]@12 [bb3,f4,a4,d5]@12 [bb3,d4,e4,a4]@11 ~ bb3@4 e4@4 ~ g4@2 ~", // Gm Bbmaj7
  X: "~@9 [bb3,c4,eb4,g4]@11 ~@4 [a3,eb4,g4,c5]@20 ~@4", Y: "[a3,d4,f4,c5]@13 ~@3",
  Z: "~@9 [ab3,eb4,g4,c5]@11 ~@4 [ab3,d4,g4,b4]@21 ~@3", AA: "[g3,d4,f4,bb4]@11 ~@5", AB: "[gb3,d4,f4,bb4]@13 ~@3",
  AC: "[g3,d4,f4,bb4]@12 [gb3,bb3,c4,f4]@12 [f3,a3,b3,e4]@11 ~ b3@4 f4@4 ~ a4@2 ~", // Gm7 Gbmaj7 Fmaj7
  AD: "[e3,bb3,db4,ab4]@5 ~@19 [eb3,b3,d4,g4]@5 ~@19", // Bbm7b5 G
  AE: "~@9 [ab3,d4,f4,b4]@11 ~@4 [g3,db4,e4,bb4]@11 ~ db4@4 g4@4 ~ bb4@2 ~", // Abdim Gdim
  AF: "[gb3,c4,eb4,a4]@7 ~ [d4,f4,bb4]@7 ~, ~@2 c-1 ~", AG: "[ab3,db4,d4,f4]@5 ~@19 [g3,c4,db4,f4]@5 ~@19",
  AH: "[gb3,c4,eb4,bb4]@5 ~@19 [gb3,b3,eb4,ab4]@12 [f3,b3,eb4,ab4]@12", // Cm7b5 Abm7 Fm7b5
  AI: "[f3,bb3,db4,ab4]@20 ~@4 [gb3,db4,eb4,bb4]@11 ~ db4@4 gb4@4 ~ bb4@2 ~", // Bbm7 Ebm7
  AJ: "[gb3,ab3,b3,eb4]@5 ~ [gb3,c4,e4,a4]@3 [f3,b3,e4,ab4]@3", AK: "[f3,ab3,bb3,db4]@20 ~@4 [gb3,b3,eb4,ab4]@5 ~@19",
  AL: "[ab3,db4,f4,bb4]@21 ~@3 [bb3,eb4,gb4,db5]@11 ~ eb4@4 bb4@4 db5@2 ~@2", // Bbm7 Ebm7
  AM: "~@8 [a3,d4,f4,c5]@11 ~@13 [f3,a3,bb3,d4]@11 ~@5", // Dm7 Bbmaj7
  AN: "[g3,d4,f4,bb4]@12 [gb3,c4,f4,bb4]@12 ~@8 [f3,b3,e4,a4]@11 ~@5", // Gm7 Gbmaj7 Fmaj7
  AO: "[f3,a3,bb3,d4]@20 ~@4 [e3,bb3,db4,a4]@21 ~@3", // Bbmaj7 A
  AP: "[eb3,g3,bb3,d4]@21 ~@3 [eb3,g3,bb3,d4]@7 ~ f3@3 ~ [eb3,g3,bb3,d4]@4 ~@8", AQ: "[gb3,bb3,db4,f4]@11 ~@5",
  AR: "[f3,c4,d4,a4] [e3,bb3,db4,g4] [f3,c4,d4,a4] [e3,bb3,db4,g4]", // Dm7 Edim Dm7 Edim
  AS: "[f3,a3,c4,e4]@5 ~@19 [f3,ab3,b3,e4]@11 ~ b3@4 f4@4 ab4@2 ~@2", // Fmaj7 E
  AT: "[e3,b3,d4,g4]@5 ~ [e3,b3,d4,g4]@3 [e3,g3,a3,c4]@3", AU: "~@8 [f3,bb3,d4,a4]@11 ~@13 [e3,bb3,db4,ab4]@11 ~@5",
  AV: "[e3,a3,c4,g4]@9 ~ [e3,a3,c4,g4]@2 ~@12", AW: "~@20 bb2@4 [ab3,e4,g4,c5]@7 ~ bb2@3 ~ [ab3,e4,g4,c5]@6 ~@6",
  AX: "[c-1,e4,g4,c5] [d4,ab4,c5,g5] [db4,g4,a4,f5] [db4,g4,b4,gb5]", // C Csus2 Dbaug Gbsus4
  AY: "[a3,eb4,gb4,db5]@20 ~@4 [b3,f4,a4,e5]@5 ~@19", AZ: "[[c4,eb4,f4,ab4]@107 ~@37]/3",
  BA: "[~@27 [e5,e6]@6 ~ [db5,db6]@7 [d5,d6]@6 [e5,e6]@7 ~ [g5,g6]@6 [e5,e6]@7 ~ [d5,d6]@6 [e5,e6]@90 ~@27]/4", // E Db D E G E D E
})).s("gm_piano").gain(0.3).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  A B C D E F G H I ~ J K L M N O P Q@2 R ~@5 S ~ T U V G W X ~@2 Y Z@2 ~@5 AA AB AC AD@2 AE AF AG AH AI AJ AK@3 AL AM@5
>`.pickRestart({
  A: "~@21 db4 d4 eb4 e4 f4 gb4 g4 ab4 a4 ~ ab4 ~@16", B: "~@17 eb4@10 c4@11 db4@10",
  C: "~@2 d4@11 f4@11 eb4@12 db4@12", D: "d4@8 ~ bb3@3", E: "g4@8 ~ eb4@3", F: "d4@3 bb3", G: "f4@11 ~",
  H: "~@2 bb4 ab4", I: "gb4 g4", J: "~@2 eb4 c4@2 db4 d4@2 f4@2 eb4 db4", K: "d4 f4 g4 d5", L: "c5 g4",
  M: "f4@32 ~@4 bb3@7 [b3,c4] [db4,d4] [eb4,e4] [f4,gb4] [g4,ab4]", N: "bb4@11 ~, a4 ~@47", O: "~ eb4", P: "db4 d4",
  Q: "[~@8 f4@4 ab4@7 ~ ab4@4 f4@7 ~ c4@4 eb4@4 bb3@4 f4@27 ~ eb4@5 ~@7 b3@12]/2", R: "bb3@2 ~", S: "gb4 g4 a4@2",
  T: "~@4 f4 gb4 f4@4 ~@2", U: "g4!2", V: "~@12 bb4@8 b4@4 bb4@7 ~@17", W: "~@2 f4 c4@2 b3@6 ~",
  X: "db4@12 db4@12 d4@5 ~@19", Y: "~@32 bb3@4 bb3@7 ~ bb3@4", Z: "[f4@5 ~@7 f4@11 ~ eb4@6 ~@6 d4@8 db4@52]/2",
  AA: "a4!2", AB: "f4@5 ~@7 f4@7 ~ f4@28", AC: "ab4@5 ~@7 ab4@7 ~ ab4@28",
  AD: "[~@8 g4@4 e4@8 f4@11 gb4@2 f4@3 db4@8 d4@24 eb4@4 e4@8 e4@16]/2", AE: "~@3 b4@2 c5 b4@2 g4@2 e4 c4", AF: "a4 g4",
  AG: "~@2 c4 g4@3 c4@2 g4@3 c4", AH: "g4@11 gb4 g4@7 gb4 g4@28", AI: "~ f4", AJ: "eb4 e4", AK: "[c4@133 ~@11]/3",
  AL: "~@25 eb4@12 d4@11", AM: "[~@2 db4@12 c4@13 c4@13 ~ db4@13 eb4@14 e4@138 ~@34]/5",
})).s("gm_alto_sax").gain(0.4).pan(0.4)

// other · tenor sax
const tenor_sax = note(`<
  A B C D E F G H I ~ J K L M N O P Q@2 R ~@5 S ~ T U V G W X Y Z@2 AA@2 ~@5 AB AC AD AE@2 AF AG AH AI AJ AK AL@3 AM
  AN@5
>`.pickRestart({
  A: "~@21 c4 db4 d4 eb4 e4 f4 gb4 g4 ab4 ~ ab4 ~ eb4 ~ bb3 ~ f3 ~ c3 ~@8", B: "~@17 bb3@10 a3@11 ab3@10",
  C: "~@2 g3@11 bb3@11 bb3@12 ab3@12", D: "a3@8 ~ bb3@3", E: "eb4@8 ~ c4@3", F: "bb3@3 bb3", G: "c4@11 ~",
  H: "~@2 d4 c4", I: "f3 gb3", J: "~@2 bb3 a3@2 ab3 g3@2 bb3@2 bb3 ab3", K: "a3 d4 c4 gb4", L: "g4 d4",
  M: "d4@8 ~ bb3@3", N: "f4@11 ~", O: "~ b3", P: "bb3 a3",
  Q: "[~@8 c4@4 eb4@7 ~ eb4@4 c4@7 ~ g3@4 bb3@4 f3@4 c4@27 ~ b3@5 ~@7 f3@12]/2", R: "f3@2 ~", S: "d4",
  T: "~@4 d4 eb4 d4@4 f4 d4", U: "eb4 d4", V: "~@12 g4@8 ab4@4 g4@7 ~ bb3@8 g3@4 eb3@4", W: "~@2 c4 gb3@2 f3@6 d3",
  X: "e3@12 e3@12 eb3@5 ~@19", Y: "~@31 a3 bb3@3 a3 bb3@7 a3 bb3@4",
  Z: "[f4@9 g4 f4 e4 f4@8 bb3@52 ~@8 bb3@4 bb3@7 ~ bb3@4]/2", AA: "[c4@5 ~@7 c4@11 ~ b3@6 ~@6 b3@8 bb3@52]/2",
  AB: "f4 gb4", AC: "c4@5 ~@7 c4@7 ~ c4@28", AD: "eb4@5 ~@7 eb4@7 ~ eb4@28",
  AE: "[~@8 d4@4 db4@8 d4@11 eb4@2 d4@3 bb3@8 c4@24 c4@4 db4@8 c4@16]/2", AF: "~@3 g4@2 ab4 g4@2 e4@2 e4 c4",
  AG: "f4 e4", AH: "~@2 c4 e4@3 c4@2 e4@3 c4", AI: "e4@11 eb4 e4@7 eb4 e4@28", AJ: "~ db4", AK: "c4 b3",
  AL: "[f3@133 ~@11]/3", AM: "~@25 c4@12 b3@11",
  AN: "[~@2 bb3@12 a3@13 bb3@13 ~ ab3@13 c4@14 b3@55 a3@9 ab3@74 ~@34]/5",
})).s("gm_tenor_sax").gain(0.4).pan(0.4)

// other · tenor sax
const tenor_sax_2 = note(`<
  A B C D E F G H I ~ J K L M N H I O@2 P ~@5 Q ~ R L S G T U ~@3 V@2 ~@5 W X Y Z@2 AA AB AC AD AE AF AG@3 AH AI@5
>`.pickRestart({
  A: "~@21 ab3 a3 bb3 b3 c4 db4 d4 eb4 e4 ~ a4 ~@16", B: "~@17 gb3@10 f3@11 e3@10",
  C: "~@2 eb3@11 ab3@11 gb3@12 db3@12", D: "d3@2 ~", E: "ab3@8 ~ ab3@3", F: "g3@3 ~", G: "gb3@11 ~", H: "~ f3",
  I: "e3 eb3", J: "~@2 gb3 f3@2 e3 eb3@2 db3@2 gb3 e3", K: "f3 g3 f3 a3", L: "ab3!2", M: "g3@2 ~", N: "c4@11 ~",
  O: "[~@8 g3@4 bb3@7 ~ bb3@4 g3@7 ~ d3@4 f3@4 c3@4 g3@27 ~ gb3@5 ~@7 g3@12]/2", P: "ab3@2 ~", Q: "bb3",
  R: "~@4 c4 db4 c4@4 ~@2", S: "~@12 f4@8 gb4@4 f4@7 ~@17", T: "~@2 g3 bb3@2 a3@6 f3", U: "bb3@12 bb3@12 a3@5 ~@19",
  V: "[gb3@5 ~@7 gb3@11 ~ f3@6 ~@6 f3@8 ab3@52]/2", W: "d4 db4", X: "bb3@5 ~@7 bb3@7 ~ bb3@28",
  Y: "db4@5 ~@7 db4@7 ~ db4@28", Z: "[~@8 c4@4 bb3@8 c4@11 db4@2 c4@3 g3@8 a3@24 bb3@4 ab3@8 ab3@16]/2",
  AA: "~@3 e4@2 f4 e4@2 d4@2 ~@2", AB: "bb3!2", AC: "~@2 c3 a3@3 c3@2 a3@3 c3", AD: "ab3@11 g3 ab3@7 g3 ab3@28",
  AE: "~ g3", AF: "gb3 f3", AG: "[db3@133 ~@11]/3", AH: "~@25 f3@12 e3@11",
  AI: "[~@2 eb3@12 d3@13 eb3@13 ~ d3@13 gb3@14 f3@55 d3@9 db3@74 ~@34]/5",
})).s("gm_tenor_sax").gain(0.4).pan(0.4)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  A B C D E F G H I ~ J K L M G N@2 O@2 P ~@5 Q ~ R S T G U V W@2 X Y@2 ~@5 Z AA AB AC@2 AD AE AF AG AH AI AJ@3 AK AL@5
>`.pickRestart({
  A: "~@37 f4 ~ c4 ~ f3 ~@6", B: "~@17 b3@10 bb3@11 a3@10", C: "~@2 ab3@11 gb3@11 b3@12 e3@12", D: "f3@8 ~ bb3@3",
  E: "f3@6 bb3@2 ~ bb3@3", F: "eb3@3 bb3", G: "ab3@11 ~", H: "~ g3", I: "c3 f3", J: "~@2 b3 bb3@2 a3 ab3@2 gb3@2 b3 a3",
  K: "bb3 eb3 d3 f3", L: "bb3!2", M: "eb3@8 ~ bb3@3",
  N: "[~@4 g3@3 ~ c3@4 f3@4, ~@21 gb3 e3 d3 ~@24, ~@43 f3@2 eb3@2 db3@2 ~@47]/2",
  O: "[~@8 d4@4 f4@7 ~ f4@4 d4@7 ~ bb3@4 c4@4 ab3@4 d4@27 ~ ab3@5 ~@7 db3@12]/2", P: "gb3@2 ~",
  Q: "g3@18 gb3 f3 e3 eb3 d3 db3 c3@24", R: "~@4 a4 bb4 a4@4 f4 d4", S: "f3 bb3",
  T: "~@12 d5@8 eb5@4 d5@7 ~ bb4@8 g4@4 eb4@4", U: "~@2 d4 ab3@2 g3@6 d4", V: "c4@12 c4@12 a3@5 ~@19", W: "bb3/2",
  X: "d4@7 ~ bb3@4 bb3@7 ~ bb3@4 db4@7 ~ bb3@4 bb3@7 ~ bb3@4", Y: "[d3@5 ~@7 d3@11 ~ db3@6 ~@6 g3@8 gb3@52]/2", Z: "c4",
  AA: "~@9 f3@3 c4@7 ~ f3@28", AB: "~@9 ab3@3 eb4@7 ~ ab3@28", AC: "[g3@35 ~ g3@8 g3@24 ab3@4 g3@8 g3@16]/2",
  AD: "~@3 d5@2 eb5 d5@2 c5@2 g4 e4", AE: "g3 c4", AF: "~@2 c4 f3@3 c4@2 f3@3 c4", AG: "bb3@11 a3 bb3@7 a3 bb3@28",
  AH: "~ a3", AI: "d3 g3", AJ: "[ab3@133 ~@11]/3", AK: "~@25 ab3@12 g3@11",
  AL: "[~@2 gb3@12 f3@13 ab3@13 ~ e3@13 a3@14 ab3@55 bb3@9 a3@74 ~@34]/5",
})).s("gm_baritone_sax").gain(0.4).pan(0.4)

// other · trumpet · "Trumpet 1"
const trumpet = note("<A ~@12 B C D E F@2 G ~@6 H I J@2 H K L@3 M N@3 ~@8 O P Q R@2 S T ~@9>".pickRestart({
  A: "~@21 c5 db5 d5 eb5 e5 f5 gb5 g5 ab5 ~@18", B: "~@4 bb4 g4 bb4@4 g4 d4", C: "f4@11 ~", D: "~@25 bb4@11 ab4@12",
  E: "gb4 g4", F: "[~@8 bb4@4 db5@7 ~ db5@4 bb4@7 ~ f4@4 ab4@4 f4@4 bb4@27 ~ bb4@5 ~@7 d4@12]/2", G: "db4@2 ~",
  H: "~@2 eb5 c5@2 db5 d5@2 f5@2 eb5 db5", I: "d5", J: "[~@3 eb5 c5 db5 d5@2 f5 eb5 db5 d5@13]/2",
  K: "d5@2 f5 ab5@2 g5@7", L: "[~@2 db5@4 d5@2 f4 g4@2 bb4@15 ~@10]/3", M: "~@8 bb4 bb4@2 bb4",
  N: "[f5@5 ~@6 e5 f5@11 ~ db5@2 c5@2 b4@2 bb4@72 ~@42]/3", O: "~@8 f5@4 d5@8 eb5@4 e5@7 ~ g5@8 f5@4 eb5@4", P: "e5",
  Q: "~@12 f5@4 d5@4 eb5@4 e5@7 ~ g5@8 f5@4 eb5@4", R: "[e5@4 c5 a4 c5@17 ~]/2",
  S: "~@12 e4@7 [f4,gb4] g4 ab4 [a4,bb4] b4 c5@12 bb4@12", T: "ab4 a4",
})).s("gm_trumpet").gain(0.64).pan(0.6)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note("<A ~@14 B C D@2 ~@7 E F G@2 E H I ~@14 J K L M@2 ~@11>".pickRestart({
  A: "~@21 ab4 a4 bb4 b4 c5 db5 d5 eb5 e5 ~@18", B: "~@25 g4@11 f4@12", C: "bb3 b3",
  D: "[~@8 f4@4 ab4@7 ~ ab4@4 f4@7 ~ d4@4 f4@4 c4@4 f4@27 ~ gb4@5 ~@19]/2", E: "~@2 eb4 c4@2 db4 d4@2 f4@2 eb4 db4",
  F: "d4", G: "[~@3 eb4 c4 db4 d4@2 f4 eb4 db4 d4@13]/2", H: "d4@2 f4 ab4@2 g4@7", I: "~ db4@2 d4 ~@2",
  J: "~@8 f4@4 d4@8 eb4@4 e4@7 ~ g4@8 f4@4 eb4@4", K: "e4", L: "~@12 f4@4 d4@4 eb4@4 e4@7 ~ g4@8 f4@4 eb4@4",
  M: "[e4@4 c4 a3 c4@17 ~]/2",
})).s("gm_trumpet").gain(0.36).pan(0.6)

// other · muted trumpet · "Trumpet 3"
const muted_trumpet = note("<A@2 ~@7 B C ~@52>".pickRestart({
  A: "[~@21 f4@49 ~@26]/2", B: "~@7 e5 eb5 db5 bb4 ab4", C: "bb4",
})).s("gm_muted_trumpet").gain(0.48).pan(0.6)

// other · trumpet · "Trumpet 3"
const trumpet_3 = note("<~@17 A@2 ~@44>".pickRestart({
  A: "[~@8 d4@4 f4@7 ~ f4@4 d4@7 ~ c4@4 eb4@4 bb3@4 d4@27 ~ eb4@5 ~@19]/2",
})).s("gm_trumpet").gain(0.4).pan(0.6)

// other · muted trumpet · "Trumpet 4"
const muted_trumpet_2 = note("<~@9 [~@7 e4 eb4 db4 bb3 ab3] bb3 ~@52>").s("gm_muted_trumpet").gain(0.31).pan(0.6)

// other · trumpet · "Trumpet 4"
const trumpet_4 = note("<~@17 A@2 ~@44>".pickRestart({
  A: "[~@8 bb3@4 db4@7 ~ db4@4 bb3@7 ~ bb3@4 c4@4 ab3@4 bb3@27 ~ b3@5 ~@19]/2",
})).s("gm_trumpet").gain(0.26).pan(0.6)

// other · trombone
const trombone = note(`<
  ~ A B C D E F G H ~ I J K L F ~@2 M@2 N@2 O@2 P ~@2 Q R S T F U V W X Y Z@5 P ~ AA AB AC AD@2 AE AF AG AH ~@2 AI@3 AJ
// … 144 more lines

More by Ellington