Strudelify

Keep on Smiling

Wet Willie

KeyA majorTempo92 bpm
0:00/0:00
// Keep on Smiling — Wet Willie
// 92 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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(`<
  ~ A@5 B@2 A@2 B@2 C D E F B@2 C F@2 B@2 C F@2 G H I F G H J K F B@2 L A B@2 A@2 B@2 M N O P@2 Q O@2 R@2 S O@2 T U V O
  T U W X@3 P@2 X@2 P@2 V O Y
>`.pickRestart({
  A: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~", // A F#m A F#m A F#m
  B: "~@2 [g#4,b4,d5] ~ [g#4,b4,d5] ~@3 [g#4,b4,d5] ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5]!2 ~", // G#dim
  C: "~@2 [g#4,b4,d5] ~ [g#4,b4,d5] ~@3 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", // G#dim A F#m
  D: "[a4,c#5,e5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5]!2 ~ [a4,c#5,e5]", // A F#m A F#m A
  E: "[a4,c#5,e5] ~@7 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", // A F#m
  F: "[a4,c#5,e5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", // A F#m A F#m A F#m
  G: "[a4,c#5,e5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~ [a4,c#5,e5] [a4,c#5,f#5] ~@3 [g#4,b4,d5] ~ [g#4,b4,d5] ~@3", // A F#m A F#m G#dim
  H: "[g#4,b4,d5] ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5]!2 ~@3 [g#4,b4,d5] ~ [g#4,b4,d5] ~@3", // G#dim
  I: "[g#4,b4,d5] ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5]!2 ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", // G#dim A F#m
  J: "[g#4,b4,d5] ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5] ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5]!2 ~", // G#dim
  K: "[e4,a4,c#5] ~@7 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", L: "~@2 [g#4,b4,d5] ~ [g#4,b4,d5] ~@11",
  M: "[g#4,b4,d5] ~ [g#4,b4,d5]!2 ~ [g#4,b4,d5]!2 ~@9", N: "~@8 [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,g5] ~@3",
  O: "[a#4,d5,f5] ~ [a#4,d5,f5] [a#4,d5,g5] ~ [a#4,d5,f5] [a#4,d5,g5] ~ [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,g5] ~@3", // A# Gm A# Gm A# Gm
  P: "~@2 [a4,c5,d#5] ~ [a4,c5,d#5] ~@3 [a4,c5,d#5] ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5]!2 ~", // Adim
  Q: "~@2 [a4,c5,d#5] ~ [a4,c5,d#5] ~@3 [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,g5] ~@3", // Adim A# Gm
  R: "[a4,c5,d#5] ~ [a4,c5,d#5] ~ [a4,c5,d#5] ~@3 [a4,c5,d#5] ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5]!2 ~", // Adim
  S: "[a4,c5,d#5] ~ [a4,c5,d#5] ~ [a4,c5,d#5] ~@3 [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,g5] ~@3", // Adim A# Gm
  T: "[a#4,d5,f5] ~ [a#4,d5,f5] [a#4,d5,g5] ~ [a#4,d5,f5] [a#4,d5,g5] ~@3 [a4,c5,d#5] ~ [a4,c5,d#5] ~@3", // A# Gm A# Gm Adim
  U: "[a4,c5,d#5] ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5]!2 ~@3 [a4,c5,d#5] ~ [a4,c5,d#5] ~@3", // Adim
  V: "[a4,c5,d#5] ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5]!2 ~ [a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,g5] ~@3", // Adim A# Gm
  W: "[a4,c5,d#5] ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5] ~ [a4,c5,d#5]!2 ~ [a4,c5,d#5]!2 ~", // Adim
  X: "[a#4,d5,f5] ~ [a#4,d5,f5] ~ [a#4,d5,g5] ~@3 [a#4,d5,f5] ~ [a#4,d5,f5] [a#4,d5,g5] ~ [a#4,d5,f5] [a#4,d5,g5] ~", // A# Gm A# Gm A# Gm
  Y: "[a#4,d5,f5] ~ [a#4,d5,f5] [a#4,d5,g5] ~ [a#4,d5,f5] [a#4,d5,g5] ~@9", // A# Gm A# Gm
})).s("gm_piano").gain(0.39)

// bass · electric bass finger
const bass = note(`<
  ~@3 A@3 B@2 A@2 B@2 C D E A B@2 C A@2 B@2 C A@2 F B C A F B@2 G A B@2 C A B@2 A@2 B@2 H I J K@2 L M@2 K@2 L M@2 N K L
  M N K@2 M@3 K@2 M@2 K@2 L M O
>`.pickRestart({
  A: "a1 ~ e2 ~ a1 ~ e2 ~", B: "e2 ~ b1 ~ e2 ~ b1 ~", C: "e2 ~ b1 ~ a1 ~ e2 ~",
  D: "a1@2 ~@2 e2@2 ~@2 a1 ~ a1 ~ e2!2 ~ e2", E: "a1 ~@7 a1@2 ~@2 e2@2 ~@2", F: "a1 ~ e2 ~ e2 ~ b1 ~",
  G: "a1 ~@3 a1 ~ e2 ~", H: "e2@2 ~@2 b1@2 ~@6 a1!2 ~ a1", I: "a#1@4 a#1 ~ f2 ~",
  J: "a#1@2 ~@2 f2@2 ~@2 a#1@2 ~ a#1 e2 ~ f2 ~", K: "f2 ~ c2 ~ f2 ~ c2 ~", L: "f2 ~ c2 ~ a#1 ~ f2 ~",
  M: "a#1 ~ f2 ~ a#1 ~ f2 ~", N: "a#1 ~ f2 ~ f2 ~ c2 ~", O: "a#1 ~ f2 ~@5",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@14 A@2 B@3 C@2 D@5 ~@20 E@2 F@3 G@2 H@4 ~@20>".pickRestart({
  A: "[~ [a4,c#5]@3]/2", B: "[[e4,g#4] [f#4,a4] [g4,a#4] [g#4,b4]@7 [a4,c#5] [b4,d5]]/3", C: "[[c5,d#5] [c#5,e5]@7]/2",
  D: "[[e4,g#4] [f#4,a4] [g4,a#4] [g#4,b4]@7 [a4,c#5]@7 ~@3]/5", E: "[~ [a#4,d5]@3]/2",
  F: "[[f4,a4] [g4,a#4] [g#4,b4] [a4,c5]@7 [a#4,d5] [c5,d#5]]/3", G: "[[c#5,e5] [d5,f5]@7]/2",
  H: "[[f4,a4] [g4,a#4] [g#4,b4] [a4,c5]@7 [f4,a#4]@6]/4", // F Gm G#m Am A#5
})).s("gm_string_ensemble_1").gain(0.17)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B@3 C@2 B@2 C@2 D E F G C@2 D G@2 C@2 D G@2 H I J G H I@2 K G C@2 L B C@2 B@2 C@2 M N O P@2 Q O@2 P@2 Q O R S T
  U V S T W X@3 Y@2 X@2 Y@2 U V Z
>`.pickRestart({
  A: "[e3,a3,c#4,e4,a4]!4 [e3,a3,c#4,f#4,a4]!4 [e3,a3,c#4,e4,a4]!3 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!2 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]", // A F#m7 A F#m7 A F#m7 A
  B: "[e3,a3,c#4,e4,a4]!4 [e3,a3,c#4,f#4,a4]!4 [e3,a3,c#4,e4,a4]!3 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!2 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4], ~@3 e2", // A F#m7 A F#m7 A F#m7 A
  C: "[e3,g#3,b3,e4,g#4]!4 [e3,g#3,b3,f#4,g#4]!4 [e3,g#3,b3,e4,g#4]!3 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4]!2 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4], ~@3 e2", // E
  D: "[e3,g#3,b3,e4,g#4]!4 [e3,g#3,b3,f#4,g#4]!4 [e3,a3,c#4,e4,a4]!4 [e3,a3,c#4,f#4,a4]!4", // E A F#m7
  E: "[e3,a3,c#4,e4,a4]!3 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!2 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!2 ~ [e3,a3,c#4,e4,a4] ~ [e3,a3,c#4,e4,a4]!2 ~ [e3,a3,c#4,e4,a4], ~ e2 ~@2", // A F#m7 A F#m7 A
  F: "[e3,a3,c#4,e4,a4] ~@7 [e3,a3,c#4,e4,a4]!4 [e3,a3,c#4,f#4,a4]!4", // A F#m7
  G: "[e3,a3,c#4,e4,a4]!3 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!2 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!5 [e3,a3,c#4,f#4,a4]!4, ~ e2 ~@2", // A F#m7 A F#m7 A F#m7
  H: "[e3,a3,c#4,e4,a4]!3 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4]!2 [e3,a3,c#4,f#4,a4] [e3,a3,c#4,e4,a4] [e3,g#3,b3,e4,g#4]!4 [e3,g#3,b3,f#4,g#4]!4, ~ e2 ~@2", // A F#m7 A F#m7 A E
  I: "[e3,g#3,b3,e4,g#4]!3 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4]!2 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4]!5 [e3,g#3,b3,f#4,g#4]!4, ~ e2 ~@2", // E
  J: "[e3,g#3,b3,e4,g#4]!3 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4]!2 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4] [e3,a3,c#4,e4,a4]!4 [e3,a3,c#4,f#4,a4]!4, ~ e2 ~@2", // E A F#m7
  K: "~@8 [e3,a3,c#4,e4,a4]!4 [e3,a3,c#4,f#4,a4]!4", L: "[e3,g#3,b3,e4,g#4]!4 [e3,g#3,b3,f#4,g#4]!4 ~@8",
  M: "[e3,g#3,b3,e4,g#4]!3 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4]!2 [e3,g#3,b3,f#4,g#4] [e3,g#3,b3,e4,g#4] [e3,a3,c#4,e4] ~@7, ~ e2 ~@2", // E A
  N: "~@8 [d3,f3,a#3,d4,f4]!8", O: "[d3,f3,a#3,d4,f4]!16", P: "[c3,f3,a3,c4,f4]!16",
  Q: "[c3,f3,a3,c4,f4]!8 [d3,f3,a#3,d4,f4]!8", R: "[d3,f3,a#3,d4,f4]!8 [f3,a#3,d4,f4,a#4]!4 [f3,a#3,d4,g4,a#4]!4",
  S: "[f3,a#3,d4,f4,a#4]!3 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4]!2 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4] [f3,a3,c4,f4,a4]!4 [f3,a3,c4,g4,a4]!4, ~ f2 ~@2", // A# Gm7 A# Gm7 A# F
  T: "[f3,a3,c4,f4,a4]!3 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!2 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!5 [f3,a3,c4,g4,a4]!4, ~ f2 ~@2", // F
  U: "[f3,a3,c4,f4,a4]!3 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!2 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4] [f3,a#3,d4,f4,a#4]!4 [f3,a#3,d4,g4,a#4]!4, ~ f2 ~@2", // F A# Gm7
  V: "[f3,a#3,d4,f4,a#4]!3 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4]!2 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4]!5 [f3,a#3,d4,g4,a#4]!4, ~ f2 ~@2", // A# Gm7 A# Gm7 A# Gm7
  W: "[f3,a3,c4,f4,a4]!3 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!2 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!4 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!2 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4], ~ f2 ~ f2", // F
  X: "[f3,a#3,d4,f4,a#4]!4 [f3,a#3,d4,g4,a#4]!4 [f3,a#3,d4,f4,a#4]!3 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4]!2 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4], ~@3 f2", // A# Gm7 A# Gm7 A# Gm7 A#
  Y: "[f3,a3,c4,f4,a4]!4 [f3,a3,c4,g4,a4]!4 [f3,a3,c4,f4,a4]!3 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4]!2 [f3,a3,c4,g4,a4] [f3,a3,c4,f4,a4], ~@3 f2", // F
  Z: "[f3,a#3,d4,f4,a#4]!3 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4]!2 [f3,a#3,d4,g4,a#4] [f3,a#3,d4,f4,a#4] ~@8, ~ f2 ~@2", // A# Gm7 A# Gm7 A#
})).s("gm_acoustic_guitar_steel").gain(0.25)

// chords · marimba
const marimba = note(`<
  ~ A@5 B@2 A@2 B@2 C D E F B@2 C F@2 B@2 C F@2 G H I F G H J K F L M N A B@2 A@2 O B P Q R S@2 T U@2 S@2 T U V W X Y Z
  AA AB AC AD@3 AE@2 AD@2 AF AE AG Z AH
>`.pickRestart({
  A: "[a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~@3 [a4,c#5] ~ [a4,c#5]!2 ~@4", // A
  B: "[g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~@3 [g#4,b4] ~ [g#4,b4]!2 ~@4", // G#m
  C: "[g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~@3 [a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~@3", D: "[a4,c#5] ~ [a4,c#5]!2 ~@12",
  E: "~@8 [a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~@3", F: "[a4,c#5] ~ [a4,c#5]!2 ~@4 [a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~@3",
  G: "[a4,c#5] ~ [a4,c#5]!2 ~@4 [g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~@3", // A G#m
  H: "[g#4,b4] ~ [g#4,b4]!2 ~@4 [g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~@3", // G#m
  I: "[g#4,b4] ~ [g#4,b4]!2 ~@4 [a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~@3", // G#m A
  J: "[g#4,b4] ~ [g#4,b4]!2 ~@4 [g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~ [g#4,b4] ~", // G#m
  K: "[a4,c#5] ~@7 [a4,c#5] ~ [a4,c#5] ~ [a4,c#5] ~@3", // A
  L: "g#4 [e4,g#4]!2 e4 a4 [f#4,a4]!2 f#4 a#4 [g4,a#4]!2 g4 b4 [g#4,b4]!3", // E F#m Gm G#m
  M: "[g#4,b4,e5] [g#4,b4] [g#4,b4,e5] [g#4,b4] [g#4,b4,f#5] [g#4,b4]!3 [g#4,b4,e5] [g#4,b4] [g#4,b4,e5] [g#4,b4,f#5] [g#4,b4] [g#4,b4,e5] [g#4,b4,f#5] [g#4,b4]", // E G#m E G#m G#m7 G#m E G#m …
  N: "[g#4,b4,e5] ~ [b4,e5] ~ [b4,f#5] ~@11", // E E5 B5
  O: "[g#4,b4] ~ [g#4,b4,e5] ~ [g#4,b4,f#5] ~@3 [g#4,b4,e5] ~ [g#4,b4,e5] [g#4,b4,f#5] ~ [g#4,b4,e5] [g#4,b4,f#5] ~", // G#m E G#m7 E G#m7 E G#m7
  P: "[g#4,b4] ~ [g#4,b4]!5 ~ [a4,c#5] ~@7", Q: "~@8 [d5,f5] ~ [d5,f5] ~ [d5,g5] ~@3",
  R: "[d5,f5] ~@2 [d5,g5] ~ [d5,g5]!2 ~ [d5,f5] ~ [d5,f5] ~ [d5,g5] ~@3", // Dm G5 Dm G5
  S: "[d#5,f5] ~ [d#5,f5] ~ [d#5,g5] ~@3 [d#5,f5] ~ [d#5,f5] [d#5,g5] ~ [d#5,g5]!2 ~", // D#sus2 D# D#sus2 D#
  T: "[d#5,f5] ~ [d#5,f5] ~ [d#5,g5] ~@3 [d5,f5] ~ [d5,f5] ~ [d5,g5] ~@3", // D#sus2 D# Dm G5
  U: "[d5,f5] ~ [d5,f5] [d5,g5] ~ [d5,g5]!2 ~ [d5,f5] ~ [d5,f5] ~ [d5,g5] ~@3", // Dm G5 Dm G5
  V: "[d5,f5] ~ [d5,f5] [d5,g5] ~ [d5,g5]!2 ~ [a#4,d5] ~ [a#4,d5] ~ [a#4,d5] ~@3", // Dm G5 A#
  W: "[a#4,d5] ~ [a#4,d5]!2 ~@4 [a4,c5] ~ [a4,c5] ~ [a4,c5] ~@3", // A# Am
  X: "[a4,c5] ~ [a4,c5]!2 ~@4 [a4,c5] ~ [a4,c5] ~ [a4,c5] ~@3", // Am
  Y: "[a4,c5] ~ [a4,c5]!2 ~@4 [a#4,d5] ~ [a#4,d5] ~ [a#4,d5] ~@3", // Am A#
  Z: "[a#4,d5] ~ [a#4,d5]!2 ~@4 [a#4,d5] ~ [a#4,d5] ~ [a#4,d5] ~@3", // A#
  AA: "[a#4,d5] ~ [a#4,d5]!2 ~@4 [a4,c5] ~ [a4,c5,f5] ~ [a4,c5,g5] ~@3", // A# Am F Am7
  AB: "[a4,c5,f5] ~ [a4,c5,f5] [a4,c5,g5] ~ [a4,c5,f5] [a4,c5,g5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~@3", // F Am7 F Am7 Am
  AC: "[a4,c5] ~ [a4,c5]!2 ~@4 [a4,c5] ~ [a4,c5]!2 ~ [a4,c5]!2 ~", // Am
  AD: "[a#4,d5] ~ [a#4,d5] ~ [a#4,d5] ~@3 [a#4,d5] ~ [a#4,d5]!2 ~@4", // A#
  AE: "[a4,c5] ~ [a4,c5] ~ [a4,c5] ~@3 [a4,c5] ~ [a4,c5]!2 ~@4", // Am
  AF: "[a4,c5] ~ [a4,c5,f5] ~ [a4,c5,g5] ~@3 [a4,c5,f5] ~ [a4,c5,f5] [a4,c5,g5] ~ [a4,c5,f5] [a4,c5,g5] ~", // Am F Am7 F Am7 F Am7
  AG: "[a4,c5] ~ [a4,c5]!2 ~ [a4,c5]!2 ~ [a#4,d5] ~ [a#4,d5] ~ [a#4,d5] ~@3", AH: "[a#4,d5] ~ [a#4,d5]!2 ~@12",
})).s("gm_marimba").gain(0.43)

// chords · trombone
const trombone = note(`<
  ~@3 A@3 ~ B ~ A ~ C D E ~@9 F G@2 E H I D E J@2 ~@5 K L@2 ~ K ~ M ~ N ~@10 O P Q R O S T@2 ~@2 U V@2 ~ U ~ W ~@3
>`.pickRestart({
  A: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 [a3,c#4,e4]!2 ~@4", // A
  B: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,f#4] ~@3 [g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,f#4] ~@4", C: "e2@3 ~",
  D: "~@8 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3", E: "[a3,c#4,e4]@2 [a3,c#4,e4]!2 ~@12",
  F: "~@10 [a3,c#4,e4] ~ [a3,c#4,e4] ~@3", // A
  G: "[a3,c#4,e4]@2 [a3,c#4,e4]!2 ~@4 [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~@3", // A
  H: "~@8 [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,f#4] ~@3", I: "[g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,f#4] ~@12",
  J: "[~@2 e2@5 ~]/2", K: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,f#4] ~@3 [a3,c#4,e4]@2 ~ [a3,c#4,f#4] ~@4",
  L: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,f#4] ~@3 [g#3,b3,e4]@2 ~ [g#3,b3,f#4] ~@4", M: "e2", N: "[f3,a#3] ~",
  O: "~@8 [a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,g4] ~@3", // A# Gm
  P: "[a#3,d4,f4]@2 ~ [a#3,d4,g4] ~@4 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,g4] ~@3", // A# Gm F Am7
  Q: "[a3,c4,f4]@2 ~ [a3,c4,g4] ~@4 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,g4] ~@3", R: "[a3,c4,f4]@2 ~ [a3,c4,g4] ~@12",
  S: "[a#3,d4,f4]@2 ~ [a#3,d4,g4] ~@12", T: "[~ f2@2 ~]/2",
  U: "[a#3,d4,f4] ~ [a#3,d4,f4] ~ [a#3,d4,g4] ~@3 [a#3,d4,f4]@2 ~ [a#3,d4,g4] ~@4", // A# Gm A# Gm
  V: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,g4] ~@3 [a3,c4,f4]@2 ~ [a3,c4,g4] ~@4", W: "f2",
})).s("gm_trombone").gain(0.36).pan(0.4)

// chords · trumpet
const trumpet = note(`<
  ~@3 A@2 ~ B ~ C ~@2 D E F G ~@3 H@2 ~ I@2 J K L M N J L ~ O@2 P@3 Q R S B T C S ~ U V W ~@3 X@2 ~ Y@2 Z AA AB AC AD AE
  AB AF AG@2 AH@2 AI AJ AK AH AI ~ AL Z AA AM
>`.pickRestart({
  A: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3 [a4,c#5,e5]@3 [a4,c#5,f#5] ~@4", // A F#m A F#m
  B: "~@2 [g#4,b4,e5] ~ [g#4,b4,f#5] ~@3 [g#4,b4,e5]@3 [g#4,b4,f#5] ~@4", // E G#m7 E G#m7
  C: "~@2 [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3 [a4,c#5,e5]@3 [a4,c#5,f#5] ~@4", D: "e2@3 ~",
  E: "~@8 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", F: "[a4,c#5,e5]@3 [a4,c#5,f#5] ~@8 e4!2 ~ e4", G: "a3 ~@15",
  H: "[~@11 a4 b4 c#5@2 e4@11 ~@6]/2",
  I: "[~@3 [a4,c#5] [b4,d5] [c#5,e5] ~ [b4,d5] ~ [a4,c#5] ~ [g#4,b4] ~ [f#4,a4] ~ [e4,g#4]@9 ~@8]/2", // A Bm C#m Bm A G#m F#m E
  J: "~@10 [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", // A F#m
  K: "[a4,c#5,e5]@3 [a4,c#5,f#5] ~@4 [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,f#5] ~@3", // A F#m A F#m
  L: "[a4,c#5,e5]@3 [a4,c#5,f#5] ~@12", M: "~@10 [g#4,b4,e5] ~ [g#4,b4,f#5] ~@3", N: "[g#4,b4,e5]@3 [g#4,b4,f#5] ~@12",
  O: "[~@2 e2@5 ~]/2",
  P: "[~@3 [a4,c#5]!2 ~ [a4,c#5] ~ [a4,c#5]@3 [g#4,b4] [f#4,a4] [d4,f#4] ~ [c#4,e4]@4 ~ [a4,c#5] ~ [a4,c#5] ~ [a4,c#5]@3 [f#4,a4] [g#4,b4] [a4,c#5] ~ [b4,d5]@10 ~@3 [b4,d5] ~ [c#5,e5] ~]/3", // A G#m F#m D C#m A F#m G#m …
  Q: "[d5,f#5]@3 [c#5,e5] [b4,d5] [a4,c#5] ~ [g#4,b4]@3 ~ [a4,c#5] [g#4,b4] [f#4,a4] ~ [e4,g#4]", // D C#m Bm A G#m A G#m F#m …
  R: "~ [d5,f#5] ~ [c#5,e5] ~ [b4,d5] [a4,c#5]@10", // D C#m Bm A
  S: "~@2 [c#4,e4] [d4,f#4] [e4,g#4] [f#4,a4] ~ [a4,c#5] ~ [b4,d5] ~ [c#5,e5] ~@4", // C#m D E F#m A Bm C#m
  T: "~@2 [c#4,e4] [d4,f#4] [e4,g#4] [f#4,a4] ~ [g#4,b4] ~ [a4,c#5] ~ [b4,d5] ~@4", U: "e2",
  V: "~@12 [a3,c#4,e4,e5]!2 ~ [a3,c#4,e4,e5]", W: "[a#3,d4,f4,f5] ~", X: "[~@11 a#4 c5 d5@2 f4@11 ~@6]/2",
  Y: "[~@3 [a#4,d5] [c5,d#5] [d5,f5] ~ [c5,d#5] ~ [a#4,d5] ~ [a4,c5] ~ [g4,a#4] ~ [f4,a4]@9 ~@8]/2", // A# Cm Dm Cm A# Am Gm F
  Z: "~@10 [a#4,d5,f5] ~ [a#4,d5,g5] ~@3", AA: "[a#4,d5,f5]@3 [a#4,d5,g5] ~@6 [a#4,d5,f5] ~ [a#4,d5,g5] ~@3",
  AB: "[a#4,d5,f5]@3 [a#4,d5,g5] ~@6 [d4,f4] [d#4,g4] [f4,a4] [g4,a#4] ~ [a#4,d5]", // A# Gm Dm D# F Gm A#
  AC: "~ [c5,d#5] ~ [d5,f5] ~@6 [a4,c5,f5] ~ [a4,c5,g5] ~@3", // Cm Dm F Am7
  AD: "[a4,c5,f5]@3 [a4,c5,g5] ~@6 [d4,f4] [d#4,g4] [f4,a4] [g4,a#4] ~ [a4,c5]", // F Am7 Dm D# F Gm Am
  AE: "~ [a#4,d5] ~ [c5,d#5] ~@6 [a#4,d5,f5] ~ [a#4,d5,g5] ~@3", AF: "~ [c5,d#5] ~ [d5,f5] ~@12", AG: "[~ f2@2 ~]/2",
  AH: "~@2 [a#4,d5,f5] ~ [a#4,d5,g5] ~@3 [a#4,d5,f5]@3 [a#4,d5,g5] ~@4", // A# Gm A# Gm
  AI: "~@2 [d4,f4] [d#4,g4] [f4,a4] [g4,a#4] ~ [a#4,d5] ~ [c5,d#5] ~ [d5,f5] ~@4", // Dm D# F Gm A# Cm Dm
  AJ: "~@2 [a4,c5,f5] ~ [a4,c5,g5] ~@3 [a4,c5,f5]@3 [a4,c5,g5] ~@4", // F Am7 F Am7
  AK: "~@2 [d4,f4] [d#4,g4] [f4,a4] [g4,a#4] ~ [a4,c5] ~ [a#4,d5] ~ [c5,d#5] ~@4", AL: "f2",
  AM: "[a#4,d5,f5]@3 [a#4,d5,g5] ~@12", // A# Gm
})).s("gm_trumpet").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@3 A@10 B C A@18 D A@11 B E A@29 B>".pickRestart({
  A: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", B: "x ~@2 x!2 ~@11", C: "~@7 x!2 ~@2 x!2 ~@3", D: "x ~@7 x ~@2 x!2 ~@3",
  E: "~@8 x ~@2 x!2 ~@3",
})).gain(0.52)

// drums · rim
const rim = s("rim").struct("<~@30 [~@5 x ~ x] [~ x ~ x ~ x ~ x]!2 ~@44>").gain(0.52)

// drums · snare
const snare = s("sd").struct("<~@2 A B@10 C D B@10 E B@7 F B@3 G B@7 H I B@9 J E B@18 K>".pickRestart({
  A: "~@7 x", B: "~ x ~ x ~ x ~ x", C: "~@2 x ~@3 x ~ x ~ x ~ x!2 ~ x", D: "x ~@2 x!3 ~@4 x ~@3 x ~",
  E: "~@2 x!2 ~@6 x ~@3 x ~", F: "x ~@4 x ~ x", G: "~@2 x ~@3 x ~ x!2 ~@6", H: "~@2 x ~@3 x ~ x!4 ~@4",
  I: "~@3 x!2 ~@5 x ~@3 x ~", J: "~@2 x ~@3 x!2 ~@2 x ~@3 x ~", K: "~ x ~ x ~@4",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@2 A ~@22 B ~@11 C ~@8 D ~@10 B ~@19>".pickRestart({
  A: "~@7 x", B: "~@6 x!2 ~@8", C: "~@12 x!4", D: "x ~@2 x ~@4",
})).gain(0.46)

// … 31 more lines