Strudelify

Moonlight Serenade

Glenn Miller

KeyE♭ majorTempo84 bpm
0:00/0:00
// Moonlight Serenade — Glenn Miller
// 84 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: Full arrangement: all 68 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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
const bass = note(`<
  ~@2 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 Z AA AB AC AD AE AF A AG AH AI AJ AK AL AM U AN AO AP AQ AR AS ~
  AT AU AV AW A AX AY AZ BA BB BC BD BE BF BG BH@3
>`.pickRestart({
  A: "eb2 f2 g2 bb2", B: "c3 c2 eb2 gb2", C: "f2@8 e2@8 f2@8 f2@6 f1 ~", D: "bb1!4",
  E: "eb2@8 bb2@8 eb2@5 ~ eb2@2 d2@8", F: "eb2@8 bb2@8 eb2@6 bb1 ~ bb2@5 bb1 ~@2",
  G: "eb2@8 d2@8 eb2@6 bb1 ~ bb2@5 bb1 ~@2", H: "c2@6 c1 ~ c2@8 c2@6 c1 ~ f2@6 f1 ~",
  I: "eb2@4 ~@2 eb2@2 bb2@8 eb2@6 eb1 ~ eb2@8", J: "f2@8 f2@4 ~@2 f2@2 b2@8 f2@6 f1 ~",
  K: "bb1@8 b1@8 bb1@5 ~ bb1@2 d2@8", L: "eb2@6 eb1 ~ db2@8 f2@8 bb1@6 bb0 ~",
  M: "eb2@6 bb1@2 bb2@7 ~ g2@8 eb2@3 ~@3 bb1@2", N: "c2 gb2 eb2 c2", O: "f2@8 gb2@8 f2@8 f2@6 f1 ~",
  P: "bb1@6 bb0 ~ bb1@6 bb0 ~ bb1@6 bb0 ~ bb1@8", Q: "eb2@5 ~ eb2@2 d2@8 eb2@4 ~@2 eb2@2 bb2@8",
  R: "eb2@8 d2@8 eb2@5 ~ eb2@2 d2@8", S: "eb2@4 ~@2 eb2@2 bb2@8 eb2@6 bb1 ~ bb2@5 bb1 ~@2", T: "c2!3 f2",
  U: "eb2@6 bb1 ~ bb2@5 bb1 ~@2 eb2@6 eb1 ~ eb2@8", V: "f2@8 f2@6 f1@2 gb2@8 f2@6 f1 ~", W: "bb1@3 bb0 b1@4 bb1@4 e2@4",
  X: "eb2@6 bb1 ~ bb2@5 bb1 ~@2 eb2@5 ~ eb2@2 g2@8", Y: "ab2@8 g2@8 ab2@6 ab1 ~ ab2@6 ab1 ~",
  Z: "f2@4 ~@2 f2@2 b2@8 f2@6 f1 ~ b1@8", AA: "g2@6 g1 ~ g2@8 ~@16", AB: "db2@6 db1@2 db2@8 db2@8 db2@6 db1 ~",
  AC: "c2@6 g1 ~ g2@5 g1 ~@2 c2@6 c1 ~ d2@6 d1 ~", AD: "d2@5 ~ d2@2 db2@8 d2@8 d2@8", AE: "g2@4 g2@4 c2@2 ~ c2 g2@4",
  AF: "f2 c3 bb2 f2", AG: "c2@3 gb1 d2@4 eb2@3 gb1 eb2@4", AH: "f2@8 gb2@8 f2@6 f1 ~ f2@8",
  AI: "bb1@6 bb0 ~ bb1@8 bb1@8 bb1@8", AJ: "eb2@2 ~ eb2 bb2@4 eb2@3 eb1 eb2@4",
  AK: "eb2@6 bb1 ~ bb2@5 bb1 ~@2 eb2@8 eb2@8", AL: "eb2@5 ~ eb2@2 d2@8 eb2@8 b1@8", AM: "c2@6 c1 ~ c2@6 c1 ~ c2@8 f2@8",
  AN: "f2@6 f1 ~ f2@4 ~@2 f2@2 b2@8 f2@8", AO: "bb1 f2 bb1!2", AP: "eb2@5 ~ eb2@2 d2@8 eb2@8 g2@7 ~",
  AQ: "ab2 bb2 c3 eb3", AR: "f2@8 f2@8 f2@6 f1 ~ b1@6 b0 ~", AS: "g2@6 g1 ~ g2@6 ~@18",
  AT: "c2@3 c1 eb2@4 d2@3 d1 d2@4", AU: "d2@8 a2@8 d2@5 ~ d2@2 gb2@8", AV: "g2@2 ~ g2 db3@4 c2@4 e2@4",
  AW: "f2@3 f1 b1@4 bb1@2 ~ bb1 f2@4", AX: "c2@6 gb1 ~ d2@8 eb2@5 ~ gb1 ~ gb2@5 ~ gb1 ~",
  AY: "f2@8 e2@8 f2@6 f1 ~ f2@6 f1 ~", AZ: "bb1@6 bb0 ~ bb1@8 bb1@6 bb0 ~ bb1@6 bb0 ~",
  BA: "eb2@6 bb1 ~ bb2@5 bb1 ~@2 eb2@8 d2@8", BB: "eb2@4 ~@2 eb2@2 bb2@8 eb2@5 ~ eb2@2 d2@8",
  BC: "eb2@4 bb2@4 eb2@2 ~ eb2 bb2@4", BD: "c2@6 c1 ~ c2@6 c1 ~ c2@6 c1 ~ f2@6 f1 ~",
  BE: "eb2@6 eb1@2 eb2@8 eb2@6 eb1 ~ eb2@6 eb1 ~", BF: "f2@8 f2@6 b1 ~ b2@5 b1 ~@2 f2@8", BG: "bb1",
  BH: "[~@2 eb2@34 ~ eb2@39 ~@20]/3",
})).s("gm_acoustic_bass").gain(0.12).pan(0.3)

// chords · piano
const piano = note(`<
  ~@2 A@2 B@3 C@4 D@2 E@2 F@4 G H I@2 J K@4 L M@2 N@6 O@2 P@3 Q@2 R@2 S@3 ~ T@2 U@4 V@2 W X@2 Y Z@2 AA AB@3
>`.pickRestart({
  A: "[[g3,bb3,c4,eb4]@29 ~ [eb3,gb3,a3,c4]@34]/2", // Cm7 Ebdim
  B: "[[eb3,ab3,c4,f4]@13 ~ [eb3,f3,ab3,c4]@7 ~ [eb3,ab3,b3,f4]@7 ~ [ab3,bb3,d4,f4]@7 ~ [ab3,d4,f4,c5]@10 [ab3,d4,f4,b4]@5 ~ [ab3,bb3,d4,gb4]@7 ~ [g3,d4,f4,bb4]@15 ~ [g3,c4,eb4,bb4]@18]/3", // Fm7 Fm7b5 Bb7 Dm7b5 Abdim Daug Gm7 Cm7
  C: "[[g3,c4,eb4,bb4]@16 [g3,d4,f4,bb4]@13 ~ [g3,bb3,d4,f4]@15 ~ [g3,db4,eb4,bb4]@15 ~ [e3,bb3,c4,g4]@10 [e3,bb3,db4,g4]@8 [e3,bb3,c4,g4]@5 ~ [eb3,ab3,b3,f4]@7 ~ [g3,eb4,bb4]@18 [g3,eb4,bb4]@8 [gb3,bb3,c4,eb4]@8]/4", // Cm7 Gm7 Eb7 C7 Edim C7 Fm7b5 Eb …
  D: "[[eb3,f3,ab3,c4]@5 ~ [eb3,ab3,b3,f4]@18 [eb3,ab3,c4,f4]@5 ~ [ab3,d4,g4,c5]@15 ~ [ab3,d4,gb4,bb4]@18]/2", // Fm7 Fm7b5 Fm7 Abmaj7 Daug
  E: "[~@3 b5 c6@2 ~ g5 ~ bb5@2 ab5@2 g5 ~ f5@2 eb5 ~ db5 ~ c5@2 bb4@2 ab4@2 g4@2 ~ [g3,c4,eb4,bb4]@34]/2", // Cm7
  F: "[[a3,eb4,gb4,c5]@29 ~ [ab3,eb4,f4,c5]@15 ~ [ab3,eb4,f4,c5]@7 ~ [ab3,b3,eb4,f4]@7 ~ [ab3,d4,f4,bb4]@7 ~ [ab3,d4,f4,c5]@7 ~ [ab3,b3,d4,f4]@10 [ab3,d4,gb4,bb4]@5 ~ [g3,d4,f4,bb4]@15 ~ [g3,c4,eb4,bb4]@18]/4", // Adim Fm7 Fm7b5 Bb7 Dm7b5 Abdim Daug Gm7 …
  G: "[g3,c4,eb4,bb4]@13 ~ [g3,d4,f4,bb4]@18", H: "[g3,bb3,d4,f4] [g3,db4,eb4,bb4]",
  I: "[[bb3,e4,g4,c5]@5 ~ [bb3,e4,g4,db5]@7 ~ [bb3,e4,g4,c5]@7 ~ [ab3,b3,eb4,f4]@7 ~ [g3,eb4,bb4]@18 [g3,eb4,bb4]@5 ~ [gb3,bb3,c4,eb4]@10]/2", // C7 Bbdim C7 Fm7b5 Eb Cm7b5
  J: "[ab3,eb4,f4,c5]@8 [ab3,eb4,f4,b4]@13 ~ [ab3,c4,eb4,f4]@10", // Fm7 Fm7b5 Fm7
  K: "[[ab3,c4,d4,g4]@16 [ab3,d4,gb4,bb4]@13 ~@10 bb3 ~ c4 db4 ~ f4 ~ g4 ~ bb4 c5 ~@2 eb5 ~ f5@2 g5@2 ab5@2 bb5@2 ~ eb5@2 bb5@2 ~ c6@9 ~ [g3,c4,eb4,bb4]@10 [f3,c4,eb4,ab4]@5 ~ [ab3,eb4,f4,b4]@18 [ab3,eb4,f4,b4]@5 ~ [ab3,b3,eb4,gb4]@10, ~@30 [g3,eb4,bb4]@13 eb4@2 ~ [g3,c4,db4,f4]@15 ~ [g3,c4,eb4,bb4]@15 ~@51, ~@47 ab4@2 ~@2 db5@2 ~@14 b5@2 ~@59]/4", // Abmaj7 Daug Cm7 Fm7 Fm7b5 Abm7 Eb Csus4 …
  L: "[b3,g4,d5]!2 ~@2", // G
  M: "[[bb3,e4,g4,db5]@13 ~ [bb3,e4,g4,db5]@10 [bb3,db4,e4,ab4]@5 ~ [a3,eb4,g4,c5]@15 ~ [a3,c4,eb4,g4]@10 [c4,gb4,a4,d5]@8]/2", // Bbdim Bbm7b5 Am7b5 D7
  N: "[[c4,gb4,bb4,d5]@13 ~ [c4,gb4,bb4,d5]@7 ~ [c4,gb4,a4,eb5]@7 ~ [bb3,f4,g4,db5]@18 [bb3,e4,g4,c5]@13 ~ [ab3,eb4,f4,c5]@18 ~ ab6 ~ ab6 gb6 d6 db6 ~ b5 bb5 ab5 g5 f5 eb5 d5 c5@2 bb4@28 ~ [eb3,a3,c4,gb4]@31 ~ [eb3,ab3,c4,f4]@15 ~ [eb3,ab3,c4,f4]@10 [eb3,ab3,b3,f4]@8, ~@80 [ab3,d4,f4,b4]@13 ~ [g3,c4,eb4]@31 ~@67, ~@41 bb6 ~@54]/6", // Daug Cdim Gm7b5 C7 Fm7 Ebdim Fm7 Fm7b5 …
  O: "[[ab3,d4,f4,bb4]@5 ~ [ab3,d4,f4,c5]@10 [ab3,d4,f4,b4]@8 [ab3,d4,gb4,bb4]@5 ~ [g3,d4,f4,bb4]@18 [g3,c4,eb4,bb4]@16]/2", // Bb7 Dm7b5 Abdim Daug Gm7 Cm7
  P: "[[g3,c4,eb4,bb4]@16 [g3,bb3,d4,f4]@13 ~ [g3,bb3,d4,f4]@15 ~ [g3,bb3,db4,eb4]@15 ~ [e3,bb3,c4,g4]@7 ~ [e3,bb3,db4,g4]@7 ~ [e3,bb3,c4,g4]@10 [eb3,f3,ab3,b3]@8]/3", // Cm7 Gm7 Eb7 C7 Edim C7 Fm7b5
  Q: "[[g3,eb4,bb4]@13 ~ [g3,eb4,bb4]@7 ~ [gb3,c4,eb4,bb4]@7 ~ [eb3,f3,ab3,c4]@7 ~ [eb3,ab3,b3,f4]@15 ~ [eb3,f3,ab3,c4]@10]/2", // Eb Cm7b5 Fm7 Fm7b5 Fm7
  R: "[[ab3,d4,g4,c5]@13 ~ [ab3,bb3,d4,gb4]@15 ~ [g3,bb3,eb4]@15 ~ [g3,c4,db4,f4]@18]/2", // Abmaj7 Daug Eb Csus4
  S: "[[g3,c4,eb4,bb4]@29 ~ [eb3,ab3,b3,f4]@15 ~ [eb3,ab3,b3,f4]@10 [ab3,b3,eb4,gb4]@5 ~ [b3,d4,g4]@10 [b3,g4,d5]@8 ~@16]/3", // Cm7 Fm7b5 Abm7 G
  T: "[[a3,eb4,g4,c5]@13 ~ [c4,gb4,a4,d5]@15 ~ [c4,d4,gb4,bb4]@15 ~ [c4,gb4,a4,eb5]@18]/2", // Am7b5 D7 Daug Cdim
  U: "[[bb3,f4,g4,db5]@16 [bb3,c4,e4,g4]@13 ~ [ab3,eb4,f4,c5]@18 [ab3,b3,d4,f4]@13 ~ [g3,c4,eb4,bb4]@31 ~ [eb3,a3,c4,gb4]@34]/4", // Gm7b5 C7 Fm7 Abdim Cm7 Ebdim
  V: "[[eb3,f3,ab3,c4]@13 ~ [eb3,ab3,c4,f4]@7 ~ [eb3,ab3,b3,f4]@7 ~ [ab3,d4,f4,bb4]@7 ~ [ab3,d4,f4,c5]@7 ~ [ab3,d4,f4,b4]@10 [ab3,d4,gb4,bb4]@8]/2", // Fm7 Fm7b5 Bb7 Dm7b5 Abdim Daug
  W: "[g3,d4,f4,bb4] [g3,c4,eb4,bb4]", // Gm7 Cm7
  X: "[[g3,c4,eb4,bb4]@13 ~ [g3,d4,f4,bb4]@15 ~ [g3,d4,f4,bb4]@15 ~ [g3,bb3,db4,eb4]@18]/2", // Cm7 Gm7 Eb7
  Y: "[e3,g3,bb3,c4]@5 ~ [e3,bb3,db4,g4]@7 ~ [e3,bb3,c4,g4]@10 [eb3,ab3,b3,f4]@8", // C7 Edim C7 Fm7b5
  Z: "[[g3,eb4,bb4]@13 ~ [g3,eb4,bb4]@10 [gb3,bb3,c4,eb4]@5 ~ [eb3,ab3,c4,f4]@7 ~ [eb3,ab3,b3,f4]@15 ~ [eb3,f3,ab3,c4]@10]/2", // Eb Cm7b5 Fm7 Fm7b5 Fm7
  AA: "[ab3,d4,g4,c5]@15 ~@2 [ab3,d4,gb4,bb4]@15", AB: "[~@2 [g3,eb4,bb4]@34 ~ [g3,c4,f4,bb4]@40 ~@19]/3",
})).s("gm_piano").gain(0.1).pan(0.3)

// other · alto sax
const alto_sax = note(`<
  ~@2 A B C D E F G H I J ~@2 A B C D E F G H I J ~@5 K L M N O P@2 Q R S@2 T U V W ~@2 X@2 Y Z AA AB AC AD A B C D E F
  G H I J ~ AE AF@2
>`.pickRestart({
  A: "bb4@26 ~ b4@2 c5@3", B: "a4@26 ~ b4@2 c5@3", C: "ab4@10 ~ b4@2 c5@3 ab4@10 ~ b4@2 c5@3", D: "d5@2 d5@3 ~ d5@2",
  E: "f5@16 eb5@11 f5@2 g5@3", F: "eb5@26 ~ f5@2 g5@3", G: "f5@10 ~ f5@2 g5@3 f5@10 ~ f5@2 g5@3",
  H: "g5@8 db5@8 c5@5 ~@3 eb5@8", I: "g5 bb4@2 c5", J: "f5 ab4@2 ab4", K: "~@3 db5", L: "c5@5 c5@2 ~ c5@16 c5@8",
  M: "gb5@5 gb5@2 ~ gb5@13 ~@3 gb5@8", N: "f5@8 f5@5 f5@2 ~ c5@13 c5@2 ~", O: "eb5@8 eb5@5 eb5@2 ~ ab4@15 ~",
  P: "c4@26 ~ d4@2 eb4@3", Q: "c4@10 ~ d4@2 eb4@3 c4@10 ~ d4@2 eb4@3", R: "e4@2 f4@3 ~ gb4@2", S: "g4@26 ~ ab4@2 bb4@3",
  T: "g4@10 ~ ab4@2 bb4@3 g4@10 ~ ab4@2 bb4@3", U: "c5@2 e4@3 ~ f4@2", V: "bb4 d4@2 eb4", W: "ab4 b3@2 c4", X: "eb4/2",
  Y: "d4@13 ~@3 d4@3 ~@2 eb4@3 ~@3 f4@3 ~@2", Z: "g4@17 ~@15", AA: "g4 gb4", AB: "bb4@16 a4@15 ~",
  AC: "bb4@8 bb4@5 bb4@2 ~ bb4@12 bb4@4", AD: "ab4@8 ab4@5 ab4@2 ~ ab4@15 ~",
  AE: "~@2 bb4@4 bb4@2 ~ bb4@3 ~@2 c5@2 eb5@3 ~ f5 ~ eb5@2 eb5 ~ f5 g5@2 ~@3, ~@8 c5@2 ~@3 bb4@2 ~@4 eb5@2 ~@11",
  AF: "[~@5 f5@40 ~@19]/2",
})).s("gm_alto_sax").gain(0.25).pan(0.7)

// other · alto sax
const alto_sax_2 = note(`<
  ~@2 A B C D E F G H I J ~@2 A B C D E F G H I J ~@5 K L M N O ~@12 P Q@2 R S T U V A B C D E F G H I J ~ W X@2
>`.pickRestart({
  A: "g4@26 ~ ab4@2 bb4@3", B: "gb4@26 ~ ab4@2 a4@3", C: "f4@10 ~ g4@2 ab4@3 f4@10 ~ g4@2 ab4@3",
  D: "bb4@2 bb4@3 ~ bb4@2", E: "d5@16 c5@11 d5@2 f5@3", F: "c5@26 ~ d5@2 eb5@3",
  G: "d5@10 ~ eb5@2 f5@3 db5@10 ~ db5@2 f5@3", H: "e5@2 bb4@3 ~ b4@2", I: "eb5 g4@2 bb4", J: "eb5 f4@2 f4",
  K: "~@3 bb4", L: "a4@5 a4@2 ~ a4@16 a4@8", M: "d5@5 d5@2 ~ d5@13 ~@3 c5@8", N: "bb4@8 bb4@5 bb4@2 ~ bb4@13 bb4@2 ~",
  O: "ab4@8 ab4@5 ab4@2 ~ f4@15 ~", P: "c4", Q: "[b3@44 ~@4 b3@3 ~@2 c4@3 ~@3 d4@3 ~@2]/2", R: "e4@17 ~@15",
  S: "eb4 d4", T: "gb4@31 ~", U: "f4@8 f4@5 f4@2 ~ e4@12 e4@4", V: "eb4@8 eb4@5 eb4@2 ~ d4@15 ~",
  W: "~@2 g4@4 g4@2 ~ g4@3 ~@2 bb4@2 c5@3 ~ eb5 ~ c5@2 c5 ~ eb5 eb5@2 ~@3, ~@8 bb4@2 ~@3 g4@2 ~@4 c5@2 ~@11",
  X: "[~@5 c5@40 ~@19]/2",
})).s("gm_alto_sax").gain(0.25).pan(0.8)

// other · tenor sax
const tenor_sax = note(`<
  ~@2 A B C D E@2 F G H I ~@2 A B C D E@2 F G H I ~@5 J K L M N O@2 P Q R@2 S T U V ~@2 W@2 X Y Z AA AB AC A B C D E@2 F
  G H I ~ AD AE@2
>`.pickRestart({
  A: "eb4@26 ~ f4@2 g4@3", B: "eb4@26 ~ f4@2 gb4@3", C: "eb4@10 ~ e4@2 f4@3 eb4@10 ~ e4@2 f4@3",
  D: "ab4@2 ab4@3 ~ ab4@2", E: "bb4@26 ~ b4@2 c5@3", F: "bb4@10 ~ c5@2 d5@3 bb4@10 ~ bb4@2 db5@3",
  G: "bb4@2 g4@3 ~ ab4@2", H: "c5 f4@2 gb4", I: "c5 eb4@2 eb4", J: "~@24 g4@5 gb4@3", K: "g4@5 g4@2 ~ g4@16 gb4@8",
  L: "bb4@5 bb4@2 ~ bb4@13 ~@3 a4@8", M: "g4@8 g4@5 g4@2 ~ g4@13 g4@2 ~", N: "f4@8 f4@5 f4@2 ~ d4@15 ~",
  O: "c3@26 ~ d3@2 eb3@3", P: "c3@10 ~ d3@2 eb3@3 c3@10 ~ d3@2 eb3@3", Q: "e3@2 f3@3 ~ gb3@2", R: "g3@26 ~ ab3@2 bb3@3",
  S: "g3@10 ~ ab3@2 bb3@3 g3@10 ~ ab3@2 bb3@3", T: "c4@2 e3@3 ~ f3@2", U: "bb3 d3@2 eb3", V: "ab3 b2@2 c3", W: "ab3/2",
  X: "g3@13 ~@3 g3@3 ~@2 eb3@3 ~@3 b3@3 ~@2", Y: "bb3@17 ~@15", Z: "a3", AA: "d4@16 eb4@15 ~",
  AB: "db4@8 db4@5 db4@2 ~ c4@12 c4@4", AC: "c4@8 c4@5 c4@2 ~ b3@15 ~",
  AD: "~@2 eb4@4 f4@2 ~ eb4@3 ~@2 g4@2 ab4@3 ~ c5 ~ ab4@2 bb4 ~ c5 c5@2 ~@3, ~@8 g4@2 ~@3 f4@2 ~@4 bb4@2 ~@11",
  AE: "[~@5 g4@40 ~@19]/2",
})).s("gm_tenor_sax").gain(0.25)

// other · tenor sax
const tenor_sax_2 = note(`<
  ~@2 A@2 B C D@2 E F G H ~@2 A@2 B C D@2 E F G H ~@5 I J K L M ~@12 N O P Q R S T U A@2 B C D@2 E F G H ~ V W@2
>`.pickRestart({
  A: "c4@26 ~ d4@2 eb4@3", B: "c4@10 ~ d4@2 eb4@3 c4@10 ~ d4@2 eb4@3", C: "e4@2 f4@3 ~ gb4@2", D: "g4@26 ~ ab4@2 bb4@3",
  E: "g4@10 ~ ab4@2 bb4@3 g4@10 ~ ab4@2 bb4@3", F: "c5@2 e4@3 ~ f4@2", G: "bb4 d4@2 eb4", H: "ab4 b3@2 c4", I: "~@3 e4",
  J: "eb4@5 eb4@2 ~ eb4@16 d4@8", K: "gb4@5 gb4@2 ~ gb4@13 ~@3 eb4@8", L: "db4@8 db4@5 db4@2 ~ c4@13 c4@2 ~",
  M: "c4@8 c4@5 c4@2 ~ b3@15 ~", N: "eb3", O: "f3@3 gb3", P: "g3@13 ~@14 d3@3 ~@2", Q: "db3@17 ~@15", R: "c3",
  S: "d3@31 ~", T: "g3@8 g3@5 g3@2 ~ g3@12 g3@4", U: "f3@8 f3@5 f3@2 ~ f3@15 ~",
  V: "~@2 c4@4 d4@2 ~ c4@3 ~@2 eb4@2 f4@3 ~ ab4 ~ f4@2 g4 ~ ab4 bb4@2 ~@3, ~@8 eb4@2 ~@3 d4@2 ~@4 g4@2 ~@11",
  W: "[~@5 eb4@40 ~@19]/2",
})).s("gm_tenor_sax").gain(0.25).pan(0.4)

// other · muted trumpet
const muted_trumpet = note("<~@2 A B C D E F G H I ~ J K A B C D E F G H I ~ J L M N O P ~@38>".pickRestart({
  A: "~@5 bb4@2 ~ bb4@5 g4@2 ~ bb4@5 g4@10 ~", B: "~@5 a4@2 ~ a4@5 gb4@2 ~ a4@5 gb4@10 ~", C: "~@5 ab4@11 eb5@15 ~",
  D: "d5@4 ~ c5@5 ~@3 b4@5 ~@3 bb4@10 ~", E: "~@5 f5@2 ~ f5@5 f5@2 ~ eb5@5 g4@10 ~",
  F: "~@5 eb5@2 ~ eb5@5 eb5@2 ~ d5@5 g4@10 ~", G: "~@5 d5@11 db5@15 ~", H: "c5 db5 c5 b4", I: "bb4@13 ~@19",
  J: "g4@8 g4@5 g4@2 ~ bb4@13 bb4@2 ~", K: "g4@31 ~", L: "bb4@16 c5@15 ~", M: "g4@5 g4@2 ~ g4@16 f4@8",
  N: "bb4@5 bb4@2 ~ bb4@13 ~@3 ab4@8", O: "g4@15 ~ d4@3 ~@2 eb4@3 ~@3 f4@3 ~@2", P: "g4@21 ~@11",
})).s("gm_muted_trumpet").gain(0.25).pan(0.6)

// other · trumpet
const trumpet = note("<~@34 A B C D E F G H I ~ J K ~@2 L M ~@2 N O A B C D E F G H I ~ P@2 Q@2>".pickRestart({
  A: "~@5 bb4@2 ~ bb4@5 g4@2 ~ bb4@5 g4@10 ~", B: "~@5 a4@2 ~ a4@5 gb4@2 ~ a4@5 gb4@10 ~", C: "~@5 ab4@11 eb5@15 ~",
  D: "d5@4 ~ c5@5 ~@3 b4@5 ~@3 bb4@10 ~", E: "~@5 f5@2 ~ f5@5 f5@2 ~ eb5@5 g4@10 ~",
  F: "~@5 eb5@2 ~ eb5@5 eb5@2 ~ d5@5 g4@10 ~", G: "~@5 d5@11 db5@15 ~", H: "c5 db5 c5 b4", I: "bb4@13 ~@19",
  J: "g4@8 g4@5 g4@2 ~ bb4@13 bb4@2 ~", K: "bb4@16 c5@15 ~", L: "~@16 d5@3 ~@2 eb5@3 ~@3 f5@3 ~@2", M: "g5@17 ~@15",
  N: "f5@8 f5@5 f5@2 ~ e5@12 e5@4", O: "eb5@8 eb5@5 eb5@2 ~ d5@15 ~", P: "[g4@8 g4@5 ~ g4@3 bb4@14 bb4@3 bb4@27 ~@3]/2",
  Q: "[~@5 c5@40 ~@19]/2",
})).s("gm_trumpet").gain(0.3).pan(0.6)

// other · muted trumpet
const muted_trumpet_2 = note("<~@2 A B C D E F G H ~@4 A B C D E F G H ~@3 I ~ J ~ K ~@38>".pickRestart({
  A: "~@5 g4@2 ~ g4@5 eb4@2 ~ g4@5 eb4@10 ~", B: "~@5 gb4@2 ~ gb4@5 eb4@2 ~ gb4@5 eb4@10 ~", C: "~@5 f4@11 c5@8 b4@8",
  D: "bb4@4 ~ ab4@5 ~@3 ab4@5 ~@3 ab4@10 ~", E: "~@5 d5@2 ~ d5@5 d5@2 ~ c5@5 eb4@10 ~",
  F: "~@5 c5@2 ~ c5@5 c5@2 ~ bb4@5 eb4@10 ~", G: "~@5 bb4@11 bb4@15 ~", H: "a4@3 ab4", I: "~@16 g4@15 ~",
  J: "f4@5 f4@2 ~ f4@13 ~@11", K: "e4@21 ~@11",
})).s("gm_muted_trumpet").gain(0.2)

// other · trumpet
const trumpet_2 = note("<~@34 A B C D E F G H ~@3 I ~@3 J ~@2 K L A B C D E F G H ~@4 M@2>".pickRestart({
  A: "~@5 g4@2 ~ g4@5 eb4@2 ~ g4@5 eb4@10 ~", B: "~@5 gb4@2 ~ gb4@5 eb4@2 ~ gb4@5 eb4@10 ~", C: "~@5 f4@11 c5@8 b4@8",
  D: "bb4@4 ~ ab4@5 ~@3 ab4@5 ~@3 ab4@10 ~", E: "~@5 d5@2 ~ d5@5 d5@2 ~ c5@5 eb4@10 ~",
  F: "~@5 c5@2 ~ c5@5 c5@2 ~ bb4@5 eb4@10 ~", G: "~@5 bb4@11 bb4@15 ~", H: "a4@3 ab4", I: "~@16 g4@15 ~",
  J: "e5@17 ~@15", K: "db5@8 db5@5 db5@2 ~ c5@12 c5@4", L: "c5@8 c5@5 c5@2 ~ b4@15 ~", M: "[~@5 bb4@40 ~@19]/2",
})).s("gm_trumpet").gain(0.25)

// other · muted trumpet
const muted_trumpet_3 = note("<~@2 A@2 B C D E F G H ~ I J A@2 B C D E F G H ~ I K L M N O ~@38>".pickRestart({
  A: "~@5 eb4@2 ~ eb4@5 c4@2 ~ eb4@5 c4@10 ~", B: "~@5 eb4@11 ab4@15 ~", C: "ab4@4 ~ f4@5 ~@3 f4@5 ~@3 gb4@10 ~",
  D: "~@5 bb4@2 ~ bb4@5 bb4@2 ~ bb4@5 c4@10 ~", E: "~@5 bb4@2 ~ bb4@5 bb4@2 ~ g4@5 d4@10 ~", F: "~@5 g4@11 g4@15 ~",
  G: "g4@3 f4", H: "g4@13 ~@19", I: "d4@8 d4@5 d4@2 ~ gb4@13 gb4@2 ~", J: "~@8 e4@8 eb4@8 d4@7 ~", K: "g4@16 f4@15 ~",
  L: "eb4@5 eb4@2 ~ eb4@16 eb4@8", M: "eb4@5 eb4@2 ~ eb4@13 ~@3 eb4@8", N: "d4@15 ~ b3@3 ~@2 c4@3 ~@3 d4@3 ~@2",
  O: "db4@21 ~@11",
})).s("gm_muted_trumpet").gain(0.2).pan(0.4)

// other · trumpet
const trumpet_3 = note("<~@34 A@2 B C D E F G H ~ I J ~@2 K L ~@2 M N A@2 B C D E F G H ~ O@2 P@2>".pickRestart({
  A: "~@5 eb4@2 ~ eb4@5 c4@2 ~ eb4@5 c4@10 ~", B: "~@5 eb4@11 ab4@15 ~", C: "ab4@4 ~ f4@5 ~@3 f4@5 ~@3 gb4@10 ~",
  D: "~@5 bb4@2 ~ bb4@5 bb4@2 ~ bb4@5 c4@10 ~", E: "~@5 bb4@2 ~ bb4@5 bb4@2 ~ g4@5 d4@10 ~", F: "~@5 g4@11 g4@15 ~",
  G: "g4@3 f4", H: "g4@13 ~@19", I: "d4@8 d4@5 d4@2 ~ gb4@13 gb4@2 ~", J: "g4@16 f4@15 ~",
  K: "~@16 b4@3 ~@2 c5@3 ~@3 d5@3 ~@2", L: "db5@17 ~@15", M: "bb4@8 bb4@5 bb4@2 ~ bb4@12 bb4@4",
  N: "ab4@8 ab4@5 ab4@2 ~ ab4@15 ~", O: "[d4@8 d4@5 ~ d4@3 gb4@14 gb4@3 g4@27 ~@3]/2", P: "[~@5 g4@40 ~@19]/2",
})).s("gm_trumpet").gain(0.25).pan(0.4)

// other · muted trumpet
const muted_trumpet_4 = note("<~@2 A B C D E F G H I ~ J K A B C D E F G H I ~ J L M N O P ~@38>".pickRestart({
  A: "~@5 c4@2 ~ c4@5 bb3@2 ~ c4@5 bb3@10 ~", B: "~@5 c4@2 ~ c4@5 a3@2 ~ c4@5 a3@10 ~", C: "~@5 c4@11 f4@15 ~",
  D: "f4@4 ~ d4@5 ~@3 d4@5 ~@3 d4@10 ~", E: "~@5 g4@2 ~ g4@5 g4@2 ~ g4@5 bb3@10 ~",
  F: "~@5 g4@2 ~ g4@5 g4@2 ~ eb4@5 bb3@10 ~", G: "~@5 eb4@11 eb4@15 ~", H: "e4@3 eb4", I: "eb4@13 ~@19",
  J: "c4@8 c4@5 c4@2 ~ d4@13 d4@2 ~", K: "eb4@8 db4@8 c4@8 c4@7 ~", L: "eb4@16 db4@15 ~", M: "c4@5 c4@2 ~ c4@16 c4@8",
  N: "b3@5 b3@2 ~ b3@13 ~@3 b3@8", O: "b3@15 ~@17", P: "bb3@21 ~@11",
})).s("gm_muted_trumpet").gain(0.2).pan(0.3)

// other · trumpet
const trumpet_4 = note("<~@34 A B C D E F G H I ~ J K ~@2 L M ~@2 N O A B C D E F G H I ~ P@2 Q@2>".pickRestart({
  A: "~@5 c4@2 ~ c4@5 bb3@2 ~ c4@5 bb3@10 ~", B: "~@5 c4@2 ~ c4@5 a3@2 ~ c4@5 a3@10 ~", C: "~@5 c4@11 f4@15 ~",
  D: "f4@4 ~ d4@5 ~@3 d4@5 ~@3 d4@10 ~", E: "~@5 g4@2 ~ g4@5 g4@2 ~ g4@5 bb3@10 ~",
// … 101 more lines

More by Glenn Miller