Strudelify

Tuxedo Junction

Hawkins Erskine

KeyC majorTempo114 bpm
0:00/0:00
// Tuxedo Junction — Hawkins Erskine
// 114 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 94 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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(`<
  ~ A B C D E F G H I B C J E K G L M N O P Q R E S I B C T E F U V W X Y Z AA@2 AB AC W X Y Z AD AE AB AF AG X AG AH AI
  AJ AK AL@5 AI AM AK AN AO AP AQ AR AI AM AK AN AO AP AQ AR AI AM AK AN AO AP AQ AR AI AM AK AN AO AP AQ AS ~
>`.pickRestart({
  A: "a#1@4 a#2@7 ~ d2@4 ~@2 d2@6", B: "d#2@4 ~@2 d#2@5 ~ f2@4 ~@2 f2@6", C: "a#1@3 ~@3 a#1@6 d2@4 ~@2 d2@6",
  D: "d#2@2 ~ d#2@3 f2@2 ~ f1@3", E: "a#1@2 ~ a#1@3 d2@2 ~ d2@3", F: "d#2@4 ~@2 d#2@5 ~ e2@4 ~@2 e2@6",
  G: "f2@2 ~ f2@3 d2@2 ~ d2@3", H: "d#2@4 ~@2 d#2@3 ~ e2@8 f2@5 ~", I: "a#1@3 ~@3 a#1@4 ~@2 d2@4 ~@2 d2@6",
  J: "d#2@2 ~ d#2@3 f2@2 ~ f2@3", K: "d#2@4 ~@2 d#2@5 ~ e2@4 ~@2 e2@4 a#1 ~", L: "d#2@4 ~@2 d#2@3 ~ e2@8 f2@6",
  M: "d#2 g1 c2 a#1", N: "d#2 f2 f#2 d#2", O: "a#1 d2 d#2 e2", P: "f2@6 g2@6 g#2@6 a#2@5 ~", Q: "d#2 d2 c2 a#1",
  R: "d#2 f#2 a#2 d#2", S: "d#2@5 ~ d#2@4 f2@3 ~@3 f1@2 f1@5 ~", T: "d#2@2 ~ d#2@3 f2@2 ~ f2@2 ~",
  U: "f2 ~@2 f2@3 d2@3 c2@3", V: "a#1 g#1 g1 f#1", W: "b1@3 ~@3 b1@4 ~@2 d#2@4 ~@2 d#2@6",
  X: "e2@4 ~@2 e2@5 ~ f#2@4 ~@2 f#2@6", Y: "b1@3 ~@3 b1@6 d#2@4 ~@2 d#2@6", Z: "e2@2 ~ e2@3 f#2@2 ~ f#2@3",
  AA: "[b1@4 ~@2 b1@6 d#2@4 ~@2 d#2@3 ~ e2@5 ~ b1@2 e2@4 f2@6 b1@2 f2@6]/2", AB: "f#2@2 ~ f#2@3 d#2@2 ~ d#2@3",
  AC: "e2@4 ~@2 e2@3 ~ f2@6 b1@2 f#2@6", AD: "b1@2 ~ b1@3 d#2@2 ~ d#2@3", AE: "e2@4 ~@2 e2@5 ~ f2@4 ~@2 f2@6",
  AF: "e2@4 ~@2 e2@2 ~@2 f2@6 b1 ~ f#2@6", AG: "b1@2 b2 ~ d#2@2 d#2 ~", AH: "e2@2 ~ e2@3 f#2@2 ~ g2@3",
  AI: "c2@3 ~@3 c2@4 ~@2 e2@4 ~@2 e2@6", AJ: "f2@4 ~@2 f2@5 ~ g2@4 ~@2 g2@6", AK: "c2@3 ~@3 c2@6 e2@4 ~@2 e2@6",
  AL: "[f2@4 ~@2 f2@6 g2@4 ~@2 g2@4 c2@41 ~@6 g1@45 g1@6]/5", AM: "f2@4 ~@2 f2@5 ~ g2@2 ~@4 g2@6",
  AN: "f2@2 ~ f2@3 g2 ~@2 g2@3", AO: "c2@2 ~ c2@3 e2 ~@2 e2@3", AP: "f2@4 ~@2 f2@5 ~ f#2@2 ~@4 f#2@6",
  AQ: "g2@2 ~ g2@3 e2@2 ~ e2@3", AR: "f2@4 ~@2 f2@3 ~ f#2@7 ~ g2@6", AS: "f2 ~@5",
})).s("gm_acoustic_bass").gain(0.4)

// other · trumpet
const trumpet = note("<~@16 A B C D A E F G H ~@69>".pickRestart({
  A: "~@8 c#5 c5 ~@2", B: "a#4@5 g4@4 ~@3", C: "~@16 c#5@7 ~", D: "a#4 f4@2 ~", E: "a#4@5 g4@6 ~",
  F: "~@16 c#5@2 c5@3 ~@3", G: "a#4@12 d5@11 ~", H: "d#5@9 ~ f5@3 ~@11",
})).s("gm_trumpet").gain(0.36).pan(0.8)

// other · tenor sax
const tenor_sax = note("<~@9 A@4 B@2 C@2 D ~ E@2 F ~@11 G@4 H@4 I@6 ~@22 J@4 K@4 J@4 L@4 J@4 L@4 ~>".pickRestart({
  A: "[~@22 c#4@7 ~@19]/2", B: "[~@22 c#4@7 ~@5 g4@8 ~@6]/2", C: "[c#4@6 ~@4 f4@5 ~@3 f4@2 ~@2 c4@16 ~@10]/2",
  D: "~@2 a#4", E: "[~@23 g4@7 ~@18]/2", F: "~@2 c#5", G: "[~@22 d4@7 ~@19]/2",
  H: "[~@22 d4@7 ~@5 g#4@8 ~@4 d4@7 ~@5 f#4@5 ~@3 f#4@2 ~@2 c#4@16 ~@10]/4", I: "[~@5 f#3@16 ~@3]/2",
  J: "[~@22 d#4@7 ~@19]/2", K: "[~@22 d#4@7 ~@5 a4@8 ~@4 d#4@6 ~@6 g4@5 ~@3 g4@3 ~ d4@16 ~@10]/4",
  L: "[~@22 d#4@7 ~@5 a4@8 ~@4 d#4@6 ~@6 g4@5 ~@3 g4@2 ~@2 d4@16 ~@10]/4",
})).s("gm_tenor_sax").gain(0.38).pan(0.8)

// other · trumpet
const trumpet_2 = note(`<
  ~@9 A@2 B@2 C@2 D@2 ~@8 E ~ F ~ G ~ H I ~@8 J@4 K@2 ~@2 L@2 M@2 N@2 O@2 P Q ~@2 R ~@7 S@2 T@2 U@4 S@2 T@2 V@4 S@2 T@2
  W@4 ~
>`.pickRestart({
  A: "[~@10 b4 c5 c#5 d5@3 f5@2 ~@4 f4@19 ~@7]/2", B: "[~@10 b4 c5 c#5 d5@3 f5 ~@5 f4@23 ~@3]/2",
  C: "[~@10 b4 c5 c#5 d5@3 f5@2 ~@4 a#4@22 ~@2 a#4@2]/2", D: "[c#5@6 a#4@3 ~ f5@8 f5@4 a#4@18 ~@8]/2",
  E: "~@4 [a#3,a#4]@2 ~@6 [a#3,f4,a#4] ~@11, ~@4 f4 ~@19", F: "~@3 [a#3,f4,g#4,a#4] ~@8 [f4,a#4]@2 ~@10, ~@12 a#3 ~@11",
  G: "~@4 [a#3,f4,a#4] ~@7 [a#3,f4,a#4]@2 ~@10", H: "~@4 [a#3,f4,a#4] ~@7 [a#3,f4,a#4] ~@11",
  I: "~@4 [a#3,f4,a#4] ~@11 [a#3,f4,a#4]@8", J: "[~@10 f#2@31 ~@7]/2", K: "[~@5 f#2@14 ~@5]/2",
  L: "[~@12 [f#5,a5,b5]@3 ~@9 [f#5,g#5,b5]@9 ~ [f#5,a5,b5]@2 ~@12, ~@10 f#2@31 ~@7]/2", // B7 G#m7 B7
  M: "[~@12 [f#5,a5,b5]@3 ~@9 [f#5,g#5,b5]@8 ~@2 b5@2 ~@12, ~@10 f#2@31 ~@7, ~@11 [f#5,a5] ~@4]/2", // B7 G#m7 F#m
  N: "[~@12 [g5,a#5,c6]@3 ~@9 [g5,c6]@10 [g5,a#5,c6]@2 ~@12, ~@5 g2@12 ~@7, ~@3 a5 ~@2]/2", // C7 C5 C7
  O: "[~@12 [g5,a#5,c6]@3 ~@9 [g5,a5,c6]@9 ~ c6@2 ~@12, ~@10 g2@31 ~@7, ~@11 [g5,a#5] ~@4]/2", // C7 Am7 Gm
  P: "g4 ~ g4 ~ g4 ~ g4@2 a4@2 b4@2 c5 ~ g4 ~ g4 ~ g4 ~@2 f4@2 ~, ~@10 g4 ~",
  Q: "e4@2 c4 ~ c4 ~ c4 ~ c4 ~ c4@2 a3@2 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~", R: "c3 ~@23",
  S: "[~@10 c#5 d5 d#5 e5@3 g5@2 ~@4 g4@19 ~@7]/2", T: "[~@10 c#5 d5 d#5 e5@3 g5 ~@5 g4@23 ~@3]/2",
  U: "[~@10 c#5 d5 d#5 e5@3 g5@2 ~@4 c5@15 ~@5 c5@3 ~ d#5@6 ~@2 c5@3 ~ g5@7 ~ g5@4 c5@18 ~@8]/4",
  V: "[~@10 c#5 d5 d#5 e5@3 g5@2 ~@4 c5@16 ~@4 c5@3 ~ d#5@6 ~@2 c5@3 ~ g5@7 ~ g5@4 c5@18 ~@8]/4",
  W: "[~@10 c#5 d5 d#5 e5@3 g5@2 ~@4 c5@16 ~@4 c5@2 ~@2 d#5@6 ~@2 c5@3 ~ g5@7 ~ g5@4 c5@18 ~@8]/4",
})).s("gm_trumpet").gain(0.48).pan(0.7)

// chords · trombone
const trombone = note(`<
  ~@9 A@6 ~@2 B C D E F G H I ~@7 J K J K L M ~@3 N@2 O@2 P@2 ~@2 Q@2 R@2 S T U@2 V W@3 X ~@7 Y@2 Z@4 ~@2 Y@2 Z@4 ~@2
  Y@2 Z@4 ~@3
>`.pickRestart({
  A: "[~@22 [f3,f4]@27 ~@21 [f3,f4]@28 ~@20 [f3,f4]@24 ~@2]/6", B: "~@2 [a#3,a#4]",
  C: "[f#3,f#4]@4 [d#3,d#4]@2 [c3,c4] ~@3 [a#2,a#3]@9 ~@5", D: "~@9 [a#2,a#3] [c3,c4] [d3,d4]",
  E: "[g3,g4]@6 [d3,d4]@3 ~ [f3,f4]@6 ~@8", F: "~@2 [c#4,c#5]",
  G: "[g3,g4]@3 ~ [a#3,a#4]@2 [f#3,f#4]@3 ~ [d#3,d#4]@2 [c3,c4]@8 ~@4", // G A# F# D# C
  H: "~@4 [a#2,a#3]@2 [a#2,a#3]@2 ~@2 [a#2,a#3]@5 ~ [a#2,a#3]@6 ~@2", I: "[d#3,d#4]@3 ~ f4 ~ a#3@2 ~@2 c4@2 ~@4 c4@7 ~",
  J: "~@8 f#3 g#3 ~@2", K: "b3 ~@7", L: "~@9 g#3 ~@2", M: "b3 ~@11", N: "[~@4 [f#2,f#3]@9 ~@3]/2",
  O: "[~@5 [f#2,f#3]@15 ~@4]/2", P: "[~@5 [f#2,f#3]@16 ~@3]/2",
  Q: "[~@12 [b4,d#5]@3 ~@9 [b4,d5]@9 ~ [b4,d#5]@2 ~@12, ~@10 f#4@31 ~@7]/2", // B Bm B
  R: "[~@12 [b4,d#5]@3 ~@9 [b4,d5]@7 ~@2 [b4,d#5]@3 ~@12, ~@10 f#4@31 ~@7]/2", S: "~@4 [e5,c6] ~@3",
  T: "[d#5,c6]@9 ~ [e5,c6]@2 ~@12", U: "[~@12 [e5,c6]@3 ~@9 [d#5,c6]@8 ~@2 c6@3 ~@11, ~@10 g4@31 ~@7, ~@11 e5 ~@4]/2",
  V: "g4 ~ g4 ~ g4 ~ g4@2 a4@2 b4 ~ c5 ~ g4 ~ g4 ~ g4 ~ g4@2 f4@2",
  W: "[e4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4@2 a3@2 g3 ~ g3 ~ g3@2 ~ g2@50 ~]/3", X: "c3 ~@11",
  Y: "[~@3 [e5,g5,a5,c6]@2 ~@6 [g3,g4]@13, ~@6 c3@31 ~@11]/2", // Am7 G
  Z: "[~@6 [g5,a5]@4 ~@12 [g3,g4]@28 ~@4 a2 ~@15 [g3,g4]@24 ~@2, ~@5 [e5,c6]@5 ~@43 [e5,g5,a5,c6]@4 ~@39, ~@6 c3@38 ~@10 c3@41 ~]/4", // Gsus2 G C Am7
})).s("gm_trombone").gain(0.32).pan(0.8)

// other · muted trumpet
const muted_trumpet = note(`<
  ~@9 A@2 B@2 C@2 D@2 ~@8 E ~ F ~ G ~ E H ~@17 I ~ I ~ J ~ K L M ~@10 N@2 O@2 P@4 N@2 O@2 Q@4 N@2 O@2 R@4 ~
>`.pickRestart({
  A: "[~@10 b4 c5 c#5 d5@3 f5@2 ~@4 f4@19 ~@7]/2", B: "[~@10 b4 c5 c#5 d5@3 f5 ~@5 f4@23 ~@3]/2",
  C: "[~@10 b4 c5 c#5 d5@3 f5@2 ~@4 f4@22 ~@2 a#4@2]/2", D: "[c#5@6 a#4@3 ~ f5@8 f5@3 ~ a#4@18 ~@8]/2",
  E: "~@4 [a#3,f4,a#4] ~@7 [a#3,f4,a#4] ~@11", F: "~@3 [a#3,f4,g#4,a#4] ~@8 [f4,a#4]@2 ~@10, ~@12 a#3 ~@11",
  G: "~@4 [a#3,f4,a#4] ~@7 [a#3,f4,a#4]@2 ~@10", H: "~@4 [a#3,f4,a#4] ~@11 [a#3,f4,a#4]@8", I: "[g#4,b4]@9 ~ b4@2 ~@12",
  J: "a4@5 c5 ~@6, c5@3 ~@5", K: "[a4,c5]@9 ~ c5@2 ~@12",
  L: "g5 ~ g5 ~ g5 ~ g5 ~ a5 ~ b5 ~ c6 ~ g5 ~ g5 ~ g5 ~ g5@2 f5@2",
  M: "e5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5@2 a4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~",
  N: "[~@6 [e5,g5,a5,c6]@4 c#5 d5 d#5 e5@3 g5@2 ~@4 g4@19 ~@7]/2", // Am7
  O: "[~@6 [g5,a5]@4 c#5 d5 d#5 e5@3 g5 ~@5 g4@23 ~@3, ~@5 [e5,c6]@5 ~@38]/2", // Gsus2 C
  P: "[~@5 [e5,g5,a5,c6]@4 ~ c#5 d5 d#5 e5@3 g5@2 ~@4 c5@19 ~ c5@3 ~ d#5@6 ~@2 c5@3 ~ g5@7 ~ g5@4 c5@18 ~@8]/4", // Am7
  Q: "[~@5 [e5,g5,a5,c6]@4 ~ c#5 d5 d#5 e5@3 g5@2 ~@4 c5@16 ~@4 c5@2 ~@2 d#5@6 ~@2 c5@3 ~ g5@6 ~@2 g5@4 c5@18 ~@8]/4", // Am7
  R: "[~@5 [e5,g5,a5,c6]@4 ~ c#5 d5 d#5 e5@3 g5@2 ~@4 c5@17 ~@3 c5@2 ~@2 d#5@6 ~@2 c5@3 ~ g5@8 g5@3 ~ c5@18 ~@8]/4", // Am7
})).s("gm_muted_trumpet").gain(0.25).pan(0.3)

// other · piano
const piano = note(`<
  ~ A B ~ C ~ D ~@2 E F ~ G ~ H ~@2 I ~ J@2 K L M N E F ~ G ~ H ~@2 O P ~ Q ~ R ~ S T U T V W X Y Z AA U T V AB AC AD AE
  ~ AF@3 AG AH ~ AI ~ AJ ~@2 AK AL ~ AM AN@2 ~@2 AK AL ~ AM AN@2 ~@2 AK AL ~ AM AN@2 ~@3
>`.pickRestart({
  A: "~@4 a#6 ~@3", B: "~@10 e6@2 f6@2 ~ f5@7 ~@2, ~@9 d#6@2 ~@13", C: "~@10 e6 ~ f6@3 f7@3 ~@6, ~@9 d#6@2 ~@13",
  D: "a#7@3 g7 ~@2 d#7 ~@2 f7 d#7 f7 a#6 e7@5 ~@6", E: "~@4 a#5 ~@3", F: "~@10 e5@2 f5@2 ~ f4@7 ~@2, ~@9 d#5@2 ~@13",
  G: "~@10 e5 ~ f5@3 f6@3 ~@6, ~@9 d#5@2 ~@13", H: "a#6@3 g6 ~@2 d#6 ~@2 f6 d#6 f6 a#5 e6@5 ~@6", I: "~@4 g4 d#4 ~@2",
  J: "[~@10 a#4@2 c5 ~ d5 ~ f5@2 g5@3 ~ a#5@4 ~ a#5 ~@20]/2", K: "~@5 a#5 c#6 a#5 c#6 a#5 c#6 a#5",
  L: "c#6 a#5 c#6 a#5 c#6 a#5 c#6 a#5 c#6 a#5 ~@2", M: "[a#4,a#5] ~@3 [a#4,a#5] ~@7 [a#4,a#5] ~@3 [a#4,a#5] ~@7",
  N: "[d#5,d#6] ~@3 [d#5,d#6]@2 [a#4,a#5]@3 ~ [c5,c6] ~@5 [f2,f3]@7 ~", O: "~@4 b5 ~@3",
  P: "~@10 f5@2 f#5@2 ~ f#4@7 ~@2, ~@9 e5@2 ~@13", Q: "~@10 f5 ~ f#5@3 f#6@3 ~@6, ~@9 e5@2 ~@13",
  R: "b6@3 g#6 ~@2 e6 ~@2 f#6 e6 f#6 b5 f6@5 ~@6", S: "~@17 g#5@3 ~@4, ~@8 f#5 ~@3", T: "b5@3 ~ b5 ~@11 [f#6,b6] ~@7",
  U: "[f#6,b6] ~@8 [f#6,b6] ~@6 f#5 ~ g#5@2 ~@4", V: "[f#6,b6] ~@8 [f#6,b6] ~@6 f#5 ~@7",
  W: "b5@2 ~@2 b5 ~@11 [f#6,b6] ~@7", X: "[f#6,b6] ~@9 [f#6,b6] ~@13", Y: "b5@2 ~@2 b5 ~@7 b5 ~@3 b5 ~@7",
  Z: "b5 ~@3 b5 ~@5 b5 ~@13", AA: "~@4 b5 ~@11 [f#6,b6] ~@7", AB: "b5@2 ~@2 c6 ~@11 [g6,c7] ~@7",
  AC: "[g6,c7] ~@8 [g6,c7] ~@6 g5 ~ a5@2 ~@4", AD: "c6@3 ~ c6 ~@11 [g6,c7] ~@7", AE: "[g6,c7] ~@8 [g6,c7] ~@14",
  AF: "[~@22 [c5,d#5,f#5]@7 [d#5,f#5,a5,c6]@6 ~ [d#5,f#5,a5]@3 a5 ~ [d#5,f#5]@4 [c5,d#5,f#5,a5]@7 a4@2 a4 ~@3 f#4@2 ~@3 d#4@2 ~ [f#4,a4,c5]@4 c4 ~, ~@22 a5@5 ~@8 c6@3 ~ c6@7 ~@26, ~@39 [d#5,f#5]@2 ~@13 [c5,d#5,f#5]@6 [f#4,a4,c5,d#5]@6 d#4 ~@5, ~@40 a5@5 ~@27]/3", // Cdim D#dim D#m Cdim F#dim D#m Cdim F#dim
  AG: "~@4 c7 ~@3", AH: "~@10 f#6@2 g6@2 ~ g5@7 ~@2, ~@9 f6@2 ~@13", AI: "~@10 f#6 ~ g6@3 g7@3 ~@6, ~@9 f6@2 ~@13",
  AJ: "c8@3 a7 ~@2 f7 ~@2 g7 f7 g7 c7 f#7@5 ~@6", AK: "~@4 c6 ~@3", AL: "~@10 f#5@2 g5@2 ~ g4@7 ~@2, ~@9 f5@2 ~@13",
  AM: "~@10 f#5 ~ g5@3 g6@3 ~@6, ~@9 f5@2 ~@13", AN: "[~@22 c7@4 ~ a6 ~@2 f6 ~@2 g6 f6 g6 c6 f#6@5 ~@6]/2",
})).s("gm_piano").gain(0.25).pan(0.3)

// other · piano · soft notes
const piano_soft = note("<~@6 A ~@7 B ~@15 B ~@7 C ~@5 D ~@7 D ~@6 E ~@6 F ~@7 G ~@7 G ~@7 G ~@3>".pickRestart({
  A: "~@6 f7 ~@5 d#7 ~@11", B: "~@6 f6 ~@5 d#6 ~@11", C: "~@6 f#6 ~@5 e6 ~@11", D: "~@9 g#5 ~@2", E: "~@3 a5@2 ~@19",
  F: "~@6 g7 ~@5 f7 ~@11", G: "~@6 g6 ~@5 f6 ~@11",
})).s("gm_piano").gain(0.14).pan(0.3)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~ A B C D E F G H I J C K E L G H M N@2 O P Q R S T@6 U V W X Y Z AA AB AC AD W AE@5 AF@2 AG AH AI@3 AJ@2 AK@2 ~@3 AL
  AM AN AO AP AQ AR AS AT@6 AR AU AT@6 AR AU AT@6 AR AV ~
>`.pickRestart({
  A: "~@6 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2", B: "[a#3,d#4,g4] ~@2 [a#3,d#4,g4]@3 [a3,c4,d#4,f4] ~@2 [a3,c4,d#4,f4] ~@2",
  C: "[a#3,d4,f4,g4] ~@2 [a#3,d4,f4,g4] ~@2 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2", // Gm7 A#
  D: "[a#3,d#4,g4]@6 [a#3,d#4,g4]@2 ~@4 [a3,c4,d#4,f4]@2 ~@4 [a3,c4,d#4,f4]@3 ~@3", // D# F7
  E: "[a#3,d4,f4,g4]@3 ~@3 [a#3,d4,f4,g4]@2 ~@4 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4]@2 ~@4", // Gm7 A#
  F: "[a#3,d#4,g4]@6 [a#3,d#4,g4]@2 ~@4 [c#4,e4,g4,a#4]@5 ~ [c#4,e4,g4,a#4]@2 ~@4", // D# C#dim
  G: "[a#3,d4,f4]@5 ~ [a#3,d4,f4]@2 ~@4 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4]@3 ~@3", // A#
  H: "[d#4,g4,a#4]@4 [g4,a#4] ~ [d#4,g4,a#4] ~@3 [c#4,e4,g4,a#4]@10 ~@4", // D# Gm D# C#dim
  I: "[a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~@2", // A#
  J: "[a#3,d#4,g4] ~@2 [a#3,d#4,g4] ~@2 [a3,c4,d#4,f4] ~@2 [a3,c4,d#4,f4] ~@2", // D# F7
  K: "[a#3,d#4,g4]@2 ~@4 [a#3,d#4,g4]@2 ~@4 [a3,c4,d#4,f4]@2 ~@4 [a3,c4,d#4,f4]@3 ~@3", // D# F7
  L: "[a#3,d#4,g4] ~@2 [a#3,d#4,g4] ~@2 [c#4,e4,g4,a#4] ~@2 [c#4,e4,g4,a#4] ~@2", // D# C#dim
  M: "[a#3,d#4,g4]@3 ~@3 [a#3,d#4,g4]@4 ~@2 [a#3,d#4,g4]@3 ~@3 [a#3,d#4,g4]@4 ~@2", // D#
  N: "[[a#3,d#4,f#4]@4 ~@2 [a#3,d#4,f#4]@3 ~@3 [a#3,d#4,f#4]@3 ~@2 [a#3,d#4,f#4]@3 ~@4 [d4,g4]@3 ~@3 f4@3 ~@3 [a#3,d4,f4,g4]@3 ~@3 [a#3,d4,f4,g4]@3 ~@3, ~@23 [a#3,f4]@3 ~@3 [a#3,d4,g4]@3 ~@16]/2", // D#m G5 Gm7 A#5 Gm
  O: "[a#3,d4,f4,g4]@3 ~@3 [a#3,d4,f4,g4]@3 ~@3 [a#3,d4,f4,g4]@3 ~@3 [a#3,d4,f4,g4]@4 ~@2", // Gm7
  P: "[a#3,d#4,g4]@3 ~@3 [a#3,d#4,g4]@3 ~@3 [a#3,d#4,g4]@3 ~@2 [a#3,d#4,g4]@4 ~@3", // D#
  Q: "[a#3,d#4,g4]@3 ~@3 [a#3,d#4,g4]@3 ~@3 [a#3,d#4,f#4]@3 ~@3 [a#3,d#4,f#4]@4 ~@2", // D# D#m
  R: "[a#3,d4,f4]@2 ~ [a#3,d4,f4]@2 ~ [a#3,d4,f4]@2 ~ [a#3,d4,f4]@2 ~", // A#
  S: "[a#3,d#4,g4]@4 ~@2 [a#3,d#4,g4]@3 ~ [c4,f4,a4]@2 ~@4 [c4,f4,a4]@8", // D# F
  T: "[[d4,f4,g4]@2 ~@4 [a#3,d4,f4,g4]@2 ~@4 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4]@2 ~@4 g4@2 ~@4 [d#4,g4]@2 ~@4 [a3,c4,d#4,f4]@2 ~@4 [a3,c4,d#4,f4]@2 ~@4 g4@2 ~@4 [a#3,d4,f4,g4]@2 ~@4 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4]@2 ~@3 [d#4,g4]@2 ~@5 [a#3,d#4,g4]@2 ~@4 [a3,c4,d#4,f4]@2 ~@4 [a3,c4,d#4,f4]@3 ~@3 g4@2 ~@4 [a#3,d4,f4,g4]@2 ~@4 [a#3,d4,f4]@2 ~@4 [a#3,d4,f4]@2 ~@4 g4@2 ~@4 [d#4,g4]@2 ~@4 a#4@2 ~@4 [c#4,e4,g4,a#4]@2 ~@4, ~@23 [a#3,d#4]@2 ~@4 a#3@3 ~@14 a#3@2 ~@22 a#3@3 ~@22 [a#3,d4,f4]@3 ~@21 [a#3,d#4]@3 ~@3 a#3@3 ~@3 [e4,g4]@2 ~@11, ~@47 [d4,f4]@2 ~@81 c#4@3 ~@11]/6", // G7 Gm7 A# D# F7 Gm7 A# D# …
  U: "[a#3,d4,f4,g4]@3 ~@3 [a#3,d4,f4,g4]@2 ~@4 [a#3,d4,f4,g4]@2 ~@4 [a#3,d4,f4,g4]@2 ~@4", V: "[a#3,d4,f4,g4] ~@11",
  W: "[d#4,f#4,g#4] ~@2 [b3,d#4,f#4,g#4] ~@2 [b3,d#4,f#4] ~@2 [b3,d#4,f#4] ~@2", // G#7 G#m7 B
  X: "[b3,e4,g#4] ~@2 [b3,e4,g#4] ~@2 [a#3,c#4,e4,f#4] ~@2 [a#3,c#4,e4,f#4] ~@2", // E F#7
  Y: "[b3,d#4,f#4,g#4] ~@2 [b3,d#4,f#4,g#4] ~@2 [b3,d#4,f#4] ~@2 [b3,d#4,f#4] ~@2", // G#m7 B
  Z: "[b3,e4,g#4]@2 ~@4 [b3,e4,g#4]@2 ~@4 [a#3,c#4,e4,f#4]@2 ~@4 [a#3,c#4,e4,f#4]@3 ~@3", // E F#7
  AA: "[b3,d#4,f#4,g#4]@3 ~@3 [b3,d#4,f#4,g#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4", // G#m7 B
  AB: "[b3,e4,g#4] ~@2 [b3,e4,g#4] ~@2 [d4,f4,g#4,b4] ~@2 [d4,f4,g#4,b4] ~@2", // E Ddim
  AC: "[b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@3 ~@3", // B
  AD: "[e4,g#4,b4]@3 ~@3 [e4,g#4,b4] ~@3 [d4,f4,g#4,b4]@9 ~@5", // E Ddim
  AE: "[[b3,e4,g#4]@2 ~@4 [e4,g#4]@2 ~@4 [a#3,c#4,e4,f#4]@2 ~@4 [a#3,c#4,e4,f#4]@2 ~@4 g#4@2 ~@4 [b3,d#4,f#4,g#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@3 [e4,g#4]@2 ~@5 [b3,e4,g#4]@2 ~@4 [a#3,c#4,e4,f#4]@2 ~@4 [a#3,c#4,e4,f#4]@3 ~@3 g#4@2 ~@4 [b3,d#4,f#4,g#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 g#4@2 ~@4 [e4,g#4]@2 ~@4 b4@2 ~@3 [d4,f4,g#4,b4]@2 ~@5, ~@5 b3@3 ~@14 b3@3 ~@21 b3@3 ~@22 [b3,d#4,f#4]@3 ~@21 [b3,e4]@3 ~@3 b3@3 ~@3 [f4,g#4]@2 ~@11, ~@23 [d#4,f#4]@2 ~@81 d4@3 ~@11]/5", // E F#7 G#m7 B E F#7 G#m7 B …
  AF: "[[b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@3 ~@3 [g#4,b4]@3 ~@3 [e4,g#4,b4] ~@3 [d4,f4,g#4,b4]@10 ~@4, ~@23 e4@3 ~@22]/2", // B G#m E Ddim
  AG: "[d#4,f#4,g#4] ~@5 [b3,d#4,f#4,g#4]@2 ~@4 [b3,f#4]@2 ~@4 [b3,d#4,f#4]@2 ~@4", // G#7 G#m7 B5 B
  AH: "[b3,e4,g#4] ~@2 [e4,g#4] ~@2 [a#3,e4,f#4] ~@2 [c#4,e4,f#4] ~@2", // E F#7
  AI: "[[b3,d#4,f#4,g#4]@2 ~@4 [b3,d#4,f#4,g#4] ~@5 [b3,f#4]@2 ~@4 [b3,f#4]@2 ~@3 [e4,g#4]@2 ~@5 [b3,g#4]@2 ~@4 [a#3,e4,f#4]@2 ~@4 [b3,d4,g4]@3 ~@3 a4@2 ~@4 [c4,e4,g4,a4]@2 ~@4 g4@2 ~@4 g4@3 ~@3, ~@22 b3@3 ~@22 [c4,e4,g4]@2 ~@23]/3", // G#m7 B5 E F#7 G Am7 C
  AJ: "a4 ~@2 a4 ~@2 g4 ~@2 g4 ~@2", AK: "[a4@2 ~@4 a4@2 ~@10 g4@3 ~ g4@11 ~@15]/2",
  AL: "[e4,g4,a4]@2 ~@4 [c4,e4,g4,a4]@5 ~ [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4", // A7 Am7 C
  AM: "[c4,f4,a4]@2 ~@4 [c4,f4,a4]@5 ~ [b3,d4,f4,g4]@2 ~@4 [b3,d4,f4,g4]@2 ~@4", // F G7
  AN: "[c4,e4,g4,a4]@2 ~@4 [c4,e4,g4,a4]@5 ~ [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4", // Am7 C
  AO: "[c4,f4,a4]@2 ~@4 [c4,f4,a4]@5 ~ [b3,d4,f4,g4]@2 ~@4 [b3,d4,f4,g4]@3 ~@3", // F G7
  AP: "[c4,e4,g4,a4]@3 ~@3 [c4,e4,g4,a4]@2 ~@4 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4", // Am7 C
  AQ: "[c4,f4,a4] ~@2 [c4,f4,a4] ~@2 c5 ~@2 [d#4,f#4,a4,c5] ~@2, ~@10 d#4@3 ~@11, ~@11 [f#4,a4]@2 ~@11", // F D#dim F#m
  AR: "[c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@3 ~@3", // C
  AS: "[f4,a4,c5]@3 ~@3 [f4,a4,c5] ~@3 [d#4,f#4,a4,c5]@9 ~@5", // F D#dim
  AT: "[[e4,g4,a4]@2 ~@4 [c4,e4,g4,a4]@2 ~@4 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4 a4@2 ~@4 [c4,f4,a4]@2 ~@4 [b3,d4,f4,g4]@2 ~@4 [b3,d4,f4,g4]@2 ~@4 [g4,a4]@2 ~@4 [c4,e4,g4,a4]@2 ~@4 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@3 [f4,a4]@2 ~@5 [c4,f4,a4]@2 ~@4 [b3,d4,f4,g4]@2 ~@4 [b3,d4,f4,g4]@3 ~@3 [g4,a4]@2 ~@4 [c4,e4,g4,a4]@2 ~@4 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@4 a4@2 ~@4 [c4,f4,a4]@2 ~@4 [a4,c5]@2 ~@4 [a4,c5]@2 ~@4, ~@23 [c4,f4]@2 ~@22 [c4,e4]@3 ~@20 c4@3 ~@22 [c4,e4]@3 ~@21 [c4,f4]@3 ~@9 [d#4,f#4]@3 ~@3 [d#4,f#4]@3 ~@4]/6", // A7 Am7 C F G7 Gsus2 Am7 C …
  AU: "[f4,a4,c5]@3 ~@3 [f4,a4,c5] ~@3 [d#4,f#4,c5]@10 ~@4, ~@9 a4@10 ~@5", AV: "[f4,a4,c5]@3 ~@3 [f4,a4,c5] ~@17",
})).s("gm_electric_guitar_jazz").gain(0.1).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@6 C D@7 C D C D B D@2 E F D@12 G H D I D@7 I G J K F L M@2 N ~@4 D@7 I O P@3 Q C P R S@4 Q C P T S@4 Q C P U ~
>`.pickRestart({
  A: "~@5 x!2 ~@2 x ~@2", B: "x ~@2 x ~ x!2 ~@2 x ~@2", C: "x ~@2 x ~ x ~@2 x!2 ~@2", D: "x!4",
  E: "x ~ x ~@2 x!2 ~ x ~@2 x", F: "x ~@2 x ~ x ~@2 x!2 ~ x", G: "x ~@2 x ~@2 x ~@2 x ~ x",
  H: "~@2 x!2 ~ x ~@2 x!2 ~@2", I: "x ~@2 x ~ x ~@3 x ~@2", J: "x ~@2 x ~@4 x!2 ~ x", K: "x ~@2 x ~ x!2 ~@2 x ~ x",
  L: "x ~@2 x ~ x!2 ~@4 x", M: "x ~@4 x!2 ~@4 x", N: "x ~@5 x ~@4 x", O: "x ~ x!2 ~@2 x ~@2 x ~@2",
  P: "x ~@2 x ~@2 x ~ x!2 ~@2", Q: "x ~@2 x ~@2 x ~ x!2 ~ x", R: "x ~@2 x ~ x ~ x ~ x ~ x",
  S: "x ~ x!2 ~@2 x ~ x!2 ~@2", T: "x ~ x!2 ~ x ~@2 x!2 ~@2", U: "x!2 ~@4",
})).gain(0.18)
// … 70 more lines