Strudelify

Tobacco Road

Nashville Teens

KeyD majorTempo133 bpm
0:00/0:00
// Tobacco Road — Nashville Teens
// 133 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: metre changes (4/4 at bar 1, 2/4 at bar 19, 4/4 at bar 19, 2/4 at bar 27, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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 · "A.PIANO 2"
const piano = note("<~@26 A B C D E@2 F G H ~@2 I J K L M N@2 O P Q ~@20 R@3 S T U V@2 W ~@10>".pickRestart({
  A: "~@8 [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  B: "[g4,b4,d5]!2 ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5]", // G
  C: "~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5]!2 ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  D: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g#5,a5] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] g#5 a5 [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6]", // G Amaj7 F#dim
  E: "[~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ g#5 a5 [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ g5@4 f5@2 d5@3 ~@3 [f#4,a4,c5]!2 ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5]!2, ~@17 g#5 ~@30]/2", // F#dim
  F: "~ c5 e5 [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [c5,e5] ~ [c5,e5]", // Dm C Bm C
  G: "[c5,e5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [c5,e5] c5 e5 [c5,e5]", // C Dm C Bm C
  H: "~ [b4,d5] ~@22", I: "~@22 [g#5,c6] ~",
  J: "[a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [g#5,c6] ~ [a5,c6] ~ [a5,c6] ~", // Am G# Am
  K: "[g#5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [g#5,c6] ~ [a5,c6] ~ [a5,c6] ~", // G# Am G# Am
  L: "[g#5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ [a5,c6] ~ g#5 g5@5 d5@3 ~ c5 ~", // G# Am
  M: "d5@3 ~ d5@2 c5 d5 c5@2 a4 ~ g#4 a4 g#4@2 f4 ~ d4@4 c4 ~", N: "d4@4 ~@2 g#4 a4 ~ g#4@2 g4 f4@5 ~ c4@5 ~",
  O: "d4@3 ~ d5 ~ c5 d5 c5@2 a4 ~ g#4 a4 g#4@2 f4 ~ d4@4 c4@2",
  P: "d4@2 ~@2 d5 ~ c5 d5 c5@2 a4 ~ g#4 a4 g#4@2 f4 ~ d4@4 c4@2", Q: "d4 ~@11",
  R: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  S: "g#5 a5 [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ g#5 a5 [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~", // F#dim
  T: "g#5 a5 [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ [f#5,a5,c6] ~ g5@4 f5@2 d5@3 ~ c5 ~, ~@12 g#5 ~@11", // F#dim
  U: "[f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [f#4,a4,c5] ~ [c5,e5] ~", // F#dim C
  V: "[d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5] ~ [b4,d5] ~ [b4,d5] ~ [b4,d5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5] ~", // Dm C Bm C
  W: "[b4,d5] ~@23", // Bm
})).s("gm_piano").gain(0.38).pan(0.6)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@7 B C D E F G@2 ~@2 H I@4 J K ~@2 L@3 M N@6 O P Q R@2 S T R@3 U@2 V B C B C B U W ~@2 X Y Z AA Y Z AB ~@2 AC AD AE
  AF AG AH AI AJ AK AL AM P Q R@2 S T R AN ~
>`.pickRestart({
  A: "[~@21 d2@5 ~@19 g#2@6 ~@19 d2@6 ~@12 c2@5 ~ d2@4 ~@2 d2@4 a1@2 d2@3 ~@4 c2@5 d2@4 ~@3 d2@4 a1@2 d2@4 ~@2 c2@6 d2@3 ~@3 d2@4 a1@2 ~ d2@5 ~ c2@5 ~]/7",
  B: "d2@3 ~@3 d2@3 ~ a1@2 d2@3 ~@3 c2@6", C: "d2@3 ~@3 d2@3 ~ a1@2 d2@4 ~@2 c2@6",
  D: "d2@3 ~@4 d2@4 a1@2 d2@3 ~@3 c2@5", E: "~ d2@3 ~@3 d2@3 ~ a1@2 d2@4 ~@2 c2@5",
  F: "~ d2@3 ~@3 d2@3 ~ a1@2 d2@3 ~@3 c2@5", G: "[~@2 d2@3 ~@3 d2@4 a1@2 d2@3 ~@3 c2@6 d2@4 ~@18]/2",
  H: "~@9 c2@6 d2@3 ~@4 d2@2",
  I: "[~ a1@2 ~ d2@3 ~@3 c2@6 d2@3 ~@3 d2@4 a1@2 d2@3 ~@3 c2@6 ~ d2@2 ~@4 d2@4 a1@2 d2@3 ~@3 c2@6 d2@3 ~@3 d2@4 a1@2 d2@3 ~@3 c2@6 d2@3 ~@4]/4",
  J: "d2@4 a1@2 d2@3 ~@3 c2@6 d2@2 ~@4", K: "d2@3 ~ a1@2 d2@3 ~@3 c2@6 d2@4 ~@2",
  L: "[~@14 e2@6 f2@6 f#2@6 g2@5 ~ b1@6 d2@5 e2@6 f2@6 e2@6 d2@5]/3", M: "~ b1@5 g1@6 b1@6 d2@6",
  N: "[b1@6 d2@6 f#2@5 g2@6 g#2@6 a2@6 g2@6 f#2@6 e2@5 d2@6 f#2@6 a2@6 f#2@5 g2@6 f2@6 e2@6 d2@5 c2@6 b1@5 ~ g2@6 e2@5 g2@5 ~@18]/6",
  O: "~ d2@5 ~@18", P: "g#2 ~@3", Q: "d2@3 ~@3 d2@3 ~ a1@2 d2@5 ~ c2@6", R: "d2@3 ~@3 d2@4 a1@2 d2@4 ~@2 c2@6",
  S: "d2@4 ~@2 d2@4 a1@2 d2@3 ~@3 c2@6", T: "d2@2 ~ d2@2 a1 d2@2 ~ c2@3", U: "d2@3 ~@3 d2@4 a1@2 d2@3 ~@3 c2@6",
  V: "d2@3 ~@3 d2@3 ~ a1@2 d2@3 ~@3 c2@5 ~", W: "d2 ~@5", X: "~@6 c2@6 d2@3 ~@3 d2@3 ~ a1@2",
  Y: "d2@3 ~@3 c2@6 d2@3 ~@3 d2@4 a1@2", Z: "d2@3 ~@3 c2@6 d2@2 ~@4 d2@3 ~ a1@2",
  AA: "d2@3 ~@3 c2@5 ~ d2@3 ~@3 d2@3 ~ a1@2", AB: "d2@3 ~@3 c2@6 d2@4 ~@8", AC: "~ e2 f2 f#2", AD: "g2 b1 d2 e2",
  AE: "f2 e2 d2 b1", AF: "g1 b1 d2 b1", AG: "d2 f#2 g2 g#2", AH: "a2 g2 f#2 e2", AI: "d2 f#2 a2 f#2", AJ: "g2 f2 e2 d2",
  AK: "c2@6 b1@5 ~ g2@6 e2@6", AL: "g2@5 ~@19", AM: "d2@5 ~@19", AN: "d2 ~@7",
})).s("gm_acoustic_bass").gain(0.44)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A@2 B@5 C D E F G H I ~@2 J K L M N O N ~@12 P Q R C@2 S@3 T U V T S@3 T U V T W ~@2 X@2 Y Z X AA X ~@12 AB Q R C@2
  S@3 W ~
>`.pickRestart({
  A: "[~@21 a4@6 d5@4 a4@2 g4@4 f4@2 d4@4 f4@2 g4@3]/2",
  B: "[~@3 g4@2 ~@2 g4@5 ~ f4@2 d4@3 ~ c4@2 d4@7 ~@12 [g3,c4]@5 ~ [a3,d4,f#4]@4 ~@15 [g3,c4,e4]@5 ~ [a3,d4,f#4]@4 ~@14 [g3,c4,e4]@5 ~ [a3,d4,f#4]@4 ~@15 [g3,c4,e4]@5 ~, ~@40 e4@3 ~@77]/5", // C5 D C D C D C
  C: "[a3,d4,f#4]@4 ~@14 [g3,c4,e4]@5 ~", D: "[a3,d4,f#4]@3 ~@16 e4@4 ~, ~@18 [g3,c4]@5 ~",
  E: "~ [a3,d4,f#4]@3 ~@15 [g3,c4,e4]@5", F: "~ [a3,d4,f#4]@3 ~@15 [g3,c4]@4 ~, ~@19 e4@2 ~@3",
  G: "~ [a3,f#4]@5 ~@14 [g3,c4,e4]@4, ~ d4@3 ~@20", H: "~@2 [a3,d4,f#4]@3 ~@15 [g3,c4,e4]@4",
  I: "~@2 [a3,d4,f#4]@3 ~@19", J: "~@9 [g3,c4,e4]@5 ~@2 [a3,d4,f#4]@3 ~@5", K: "~@10 [g3,c4,e4]@5 ~ [a3,d4,f#4]@3 ~@5",
  L: "~@10 [g3,c4]@5 ~@2 [a3,d4,f#4]@3 ~@4, ~@10 e4@3 ~@11", M: "~@11 [g3,c4,e4]@5 ~ [a3,d4,f#4]@4 ~@3",
  N: "~@12 [g3,c4,e4]@5 ~ [a3,d4,f#4]@3 ~@3", O: "~@12 [g3,c4,e4]@4 ~@2 [a3,d4,f#4]@3 ~@3",
  P: "~ a4@6 d5@3 a4@2 ~ g4@3 f4@2 d4@4 f4@2", Q: "g4@4 ~@2 g4@2 ~@2 g4@5 ~ f4@2 d4@3 ~ c4@2",
  R: "d4@6 ~@12 [g3,c4]@5 ~, ~@6 e4 ~", S: "[a3,d4,f#4]@3 ~@15 [g3,c4,e4]@5 ~",
  T: "[a3,d4,f#4]@3 ~@15 [g3,c4]@5 ~, ~@6 e4 ~", U: "[a3,d4,f#4]@3 ~@15 [g3,c4]@4 ~@2, ~@9 e4 ~@2",
  V: "[a3,d4,f#4]@2 ~@7 [g3,c4,e4]@2 ~", W: "[a3,d4,f#4] ~@7", X: "~@6 [g3,c4,e4]@5 ~ [a3,d4,f#4]@3 ~@9",
  Y: "~@6 [g3,c4]@5 ~ [a3,d4,f#4]@3 ~@9, ~@2 e4 ~@5", Z: "~@6 [g3,c4]@5 ~ [a3,d4,f#4]@4 ~@8, ~@2 e4 ~@5",
  AA: "~@6 [g3,c4,e4]@4 ~@2 [a3,d4,f#4]@3 ~@9", AB: "a4@3 d5@2 a4 g4@2 f4 d4@2 f4",
})).s("gm_overdriven_guitar").gain(0.44).pan(0.3)

// other · ocarina
const ocarina = note(`<
  ~@7 A B C@2 D E F G@7 H I J K@2 L M@2 N O@2 P ~ Q@2 ~@12 R S T U V W X Y@2 Z AA AB AC@2 AD AE AF@4 AG AH@2 AI@2 AJ
  AK@3 ~@9
>`.pickRestart({
  A: "~@3 d4@2 d4 f4@2 d4@2 ~@2", B: "~@3 d4@2 d4 f4@2 d4 ~@3",
  C: "[~@6 d4@4 d4@2 ~ f4@4 d4@3 ~@3 d4@2 d4@4 d4@2 d4@6 c4@7 ~@4]/2", D: "~@7 d4@4 d4@2 f4@4 d4@2 ~ d4@4",
  E: "~@7 d4@4 d4@2 ~@2 d4@4 ~@5, ~@7 f4 ~@4", F: "~@4 d4@2 d4 d4@2 d4 d4@2",
  G: "[d4@2 d4@6 d4@4 c4@26 c4@6 ~ c4@6 b3@4 a3@2 f3@5 ~@8 d4@4 d4@2 f4@3 ~ d4@3 ~@11 d4@4 d4@2 f4@2 d4@5 ~@12 d4@4 d4@2 ~ d4@3 ~@2 d4@4 ~@2 c4@4 c4@2 d4@4 d4@2 a3@7 ~@12, ~@125 f4@2 ~@41]/7",
  H: "d4@4 d4@2 f4@4 d4@2 d4@3 ~@9", I: "d4@2 d4 f4 d4@2 ~@6", J: "d4@6 ~ d4@6 d4@4 c4@2 c4@5",
  K: "[~ a3@4 a3@33 ~@10]/2", L: "c4 c4@2 b3@7 ~@2", M: "[~@23 d4@5 d4@2 ~ d4@8 ~ d4@4 ~@2 c4@2]/2",
  N: "b3@4 a3@11 ~@9", O: "[~@21 b3@2 a3@2 ~ d4@16 ~@2 b3@2 a3@2]/2", P: "~ b3@2 ~ b3@19 ~",
  Q: "[~@17 a3@2 b3@4 d4@2 d4@8 ~@15]/2", R: "~@3 [d4,f#4]@2 [d4,f#4] [c4,f4]@2 [d4,f#4]@2 ~@2",
  S: "~@3 [d4,f#4]@2 [d4,f#4] c4 d4@2 ~@3, ~@2 f#4 ~", // D
  T: "~@6 [d4,f#4]@4 [d4,f#4]@2 [d4,f#4]@4 ~@2 [d4,f#4]@3 ~ [d4,f#4]@2", // D
  U: "[c4,f#4]@3 [d4,f#4]@2 [d4,f4] [c4,f#4]@3 ~@3", V: "~@3 [d4,f#4]@2 [d4,f#4] [c4,f4]@2 [d4,f#4] [d4,f#4]@2 ~",
  W: "~@3 [d4,f#4]@2 [d4,f#4] f4 [d4,f#4]@2 ~@3, ~@12 d4 ~@11", X: "~@6 d4@4 d4@2 d4@5 ~ d4@4 d4@2",
  Y: "[d4@6 d4@4 c4@26 c4@5 ~ c4@6]/2", Z: "b3@4 a3@2 f3@5 ~@7 [d4,f#4]@4 ~@2",
  AA: "[c4,e4]@2 [d4,f#4] [d4,f#4]@3 ~@3 [d4,f#4]@2 [d4,f#4]", AB: "[c4,f4] [d4,f#4]@2 ~@6 [d4,f#4]@2 [d4,f#4]",
  AC: "[[c4,a4]@2 ~ [d4,f#4]@2 f#4 [c4,f#4]@2 [d4,f#4] [d4,f4]@2 [c4,f#4]@4 ~@6 [d4,f#4]@2 [d4,f#4], ~@10 d4 ~@37]/2", // F D Cdim D Dm Cdim D
  AD: "c4@2 [d4,f#4]@3 ~ [d4,f#4]@4 ~@8 [d4,f#4]@4 f#4@2, f4 ~@21 c4 ~", AE: "f4 [d4,f#4]@2 ~@6 d4@2 d4, d4 ~@23",
  AF: "[d4@10 d4@2 d4@6 d4@4 c4@31 ~@11 c4@2 c4@4 b3@13 ~@13]/4", AG: "~@8 d4 d4@2 d4",
  AH: "[d4@3 ~@2 d4@2 ~ c4 b3@2 a3@6 ~@7]/2", AI: "[~@16 b3@2 a3@2 ~@2 d4@17 ~ b3@2 a3@4 b3@2]/2", AJ: "b3@5 ~",
  AK: "[~@16 g4@2 g4@3 ~ g4@6 d4@6 ~@6 d4@2 d4@4 d4@12 ~@14]/3",
})).s("gm_ocarina").gain(0.3).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~ A@2 ~@22 B C D E F@3 G@2 H ~ I ~@29 J K L@2 M N O P Q R ~ S ~@8>".pickRestart({
  A: "[~@21 b4@5 ~ b4@3 ~ b4@5 ~ a4@3 ~@8]/2", B: "~@7 e2@3 f2@2",
  C: "~@2 f#2@4 ~@2 g2@6 e3@3 ~ d3@2 [g2,d3]@4, ~@4 d3@2 ~ g2@3 ~@2", // G5
  D: "~ [g2,e3]@4 ~ [g2,d3] [g2,d3]@4 g2 ~ g2@6 [g2,d3]@5, ~@13 e3@3 ~@8", // C G5
  E: "~ e3@3 ~@3 d3@4 ~@2 e3@3 ~@2 d3@4 d3 ~, ~ g2@11 g2@6 g2@6",
  F: "[[g2,e3]@3 ~@3 d3@6 d3@5 ~ d3@4 d3 d3@5 ~ d3@5 ~ [d3,b3]@4 ~@2 d3@6 [d3,b3]@4 ~ d3@4 ~@2 d3@6 [d3,b3]@4 ~@2 [d3,b3]@2, ~@12 b3@3 ~@3 c4@2 ~@3 b3@3 ~@3 c4@3 ~@9 c4@3 ~@8 c4@2 ~@4 b3@3 ~@11]/3", // C G
  G: "[~@4 d3@3 ~@2 g2@5 ~ g2@6 e3@3 d3@2 [g2,d3]@5 ~ [g2,e3]@4 [g2,d3]@2 [g2,d3]@4 g2 ~ [g2,e3]@4, ~@3 g2@5 ~ e3@3 ~@3 d3@4 ~@2 g2@5 ~@22]/2", // G5 C G5 C
  H: "~ [g2,d3]@3 ~@20", I: "~ b4@4 ~ b4@2 ~@2 b4@5 ~ a4@3 ~@5", J: "~@6 e2@6 f2@5 ~ f#2@4 ~@2",
  K: "g2@6 e3@4 d3@2 g2@6 [g2,e3]@4 [g2,d3] ~, d3@2 ~ g2@3 d3@2 ~@4", // C G5
  L: "[[g2,d3]@4 g2 ~ g2@6 g2@6 e3@3 ~@3 d3@4 ~@2 g2@6 d3@4 d3 ~ [g2,e3]@3 ~@3, ~@6 e3@3 ~@3 d3@4 ~@2 g2@12 e3@3 ~@3 g2@6 ~@6]/2", // G5 C
  M: "d3@6 d3@6 d3@4 d3 ~ d3@6, ~@6 b3@3 ~@3 c4@2 ~@4 b3@3 ~@3", N: "d3@3 [d3,b3]@2 ~ d3@3 [d3,b3]@2 ~, c4 ~@3 c4 ~@3",
  O: "d3@4 ~@2 d3@6 [d3,b3]@4 ~@2 [d3,b3]@3 ~@3, c4@2 ~@4 b3@3 ~@15", // G
  P: "g2@6 g2@6 g2@6 e3@3 ~ d3@2, d3@3 ~@3 e3@3 ~@3 d3@4 ~@2 g2@6",
  Q: "[g2,d3]@5 ~ [g2,e3]@4 [g2,d3]@2 [g2,d3]@4 g2 ~ g2@5 ~, ~@6 e3 ~", R: "[g2,d3] ~@7",
  S: "b4@4 ~@2 b4@2 ~@2 b4@5 ~ a4@3 ~@5",
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note("<~@27 A ~ B C D E ~@35 F ~ G H I F ~@12>".pickRestart({
  A: "~@17 d3@2 ~@5", B: "~@6 a3@6 ~@4 a3 ~@5 a3 ~", C: "~@15 a3 ~@8", D: "~@10 a3 ~", E: "~ d3 ~@11 d3@2 ~@9",
  F: "~@5 d3 ~@6", G: "a3@6 ~@4 a3 ~@5 a3 ~@7", H: "~@10 a3 ~@13", I: "~@16 a3@2 ~@4 d3 ~",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(0.3)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_3 = note(`<
  A@2 B@5 C D E@2 F G H ~@2 I J K L M N M ~@9 O@2 P Q R S T U C V T C@2 V C W V T C@2 V C X ~@2 Y Z AA@3 AB AA ~@8 AC AD
  AE AF AG R S T U C V T AH ~
>`.pickRestart({
  A: "[~@21 a3@6 d4@4 a3@2 g3@4 f3@2 d3@4 f3@2 g3@3]/2",
  B: "[~@3 g3@4 g3@5 ~ f3@2 d3@4 c3@2 d3@6 ~@13 [c3,g3,c4]@5 ~ [d3,a3,d4]@4 ~@15 [c3,g3,c4]@4 ~@2 [d3,a3]@4 ~@14 [c3,g3,c4]@4 ~@2 [d3,a3,d4]@4 ~@15 [c3,g3,c4]@4 ~@2]/5", // C5 D5 C5 D5 C5 D5 C5
  C: "[d3,a3,d4]@3 ~@15 [c3,g3,c4]@4 ~@2", D: "[d3,a3,d4]@4 ~@15 [g3,c4]@4 ~, ~@9 c3@2 ~",
  E: "~ [d3,a3,d4]@3 ~@15 [c3,g3,c4]@4 ~", F: "~ [d3,a3,d4]@3 ~@16 [c3,g3,c4]@4",
  G: "~@2 [d3,a3,d4]@3 ~@15 [c3,g3,c4]@4", H: "~@2 [d3,a3,d4]@3 ~@19",
  I: "~@9 [c3,g3,c4]@3 ~@4 a3@2 ~@6, ~@15 [d3,d4]@2 ~@7", J: "~@10 [c3,g3,c4]@5 ~ [d3,a3,d4]@3 ~@5",
  K: "~@10 [c3,g3,c4]@4 ~@3 [d3,a3,d4]@4 ~@3", L: "~@11 [c3,g3,c4]@4 ~@2 [d3,a3,d4]@3 ~@4",
  M: "~@12 [c3,g3,c4]@4 ~@2 [d3,a3,d4]@3 ~@3", N: "~@12 [c3,g3]@5 ~ [d3,a3]@4 ~@2, ~@6 c4 ~@2 d4 ~@2",
  O: "[~@2 [c4,e4]@2 [d4,f4]@2 f4 [d4,f4] ~@3 c4@2 e4 ~ b3@2 d4 ~ d4 ~@3 e4 e4@2 d4@2 f4@2 [d4,f4] ~ e4@2 c4@2 e4 ~ [b3,d4]@2 ~@2 d4@2 ~@2 e4!2, ~@9 e4@4 ~@2 d4 ~@2 b3@2 ~ e4@2 ~@3 f4 ~@14 b3@2 ~ [c4,e4]@2 ~@2, ~@22 c4@4 ~@14 d4@2 ~@3 c4@3]/2", // C Dm Bm C
  P: "~@2 [b3,d4]@3 ~@19", Q: "~ a3@5 ~ d4@4 a3@2 g3@3 f3@2 d3@4 f3@2", R: "g3@4 ~@2 g3@4 g3@5 ~ f3@2 d3@4 c3@2",
  S: "d3@3 ~@6 [c3,g3,c4]@2 ~", T: "[d3,a3,d4]@2 ~@7 [c3,g3,c4]@2 ~", U: "[d3,a3]@2 ~@7 [c3,g3,c4]@2 ~",
  V: "[d3,a3,d4] ~@5 [c3,g3,c4] ~", W: "[d3,a3,d4] ~@8 [c3,g3,c4]@2 ~", X: "[d3,a3,d4] ~@11",
  Y: "~@6 [c3,g3,c4]@3 ~@3 [d3,a3,d4]@2 ~@10", Z: "~@6 [c3,g3,c4]@5 ~ [d3,a3,d4]@3 ~@9",
  AA: "~@6 [c3,g3,c4]@4 ~@2 [d3,a3,d4]@3 ~@9", AB: "~@6 [c3,g3]@5 ~ [d3,a3]@4 ~@8, ~@3 c4 ~@2 d4 ~@5",
  AC: "~@11 [c4,e4]", // C
  AD: "[d4,f4]@2 f4 ~ [d4,f4] ~@3 c4@2 e4 ~ b3@2 d4 ~ [b3,d4]@2 e4@2 e4 ~ e4@2, ~@6 e4@4 ~@2 d4 ~@7 c4@4", // Dm Bm
  AE: "f4 ~ f4@2 [d4,f4] ~ e4@2 c4@2 e4 ~ d4@2 d4@2 [b3,d4]@2 [c4,e4]@2 c4@2 e4 ~, d4@4 ~@8 b3@4 ~@4 e4 ~@3", // Dm Bm C
  AF: "[b3,d4] ~@7", AG: "a3@5 ~ d4@4 a3@2 g3@4 f3@2 d3@4 f3@2", AH: "[d3,a3,d4] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.38).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A@2 B ~ C D@2 E@2 F@3 G ~@3 A H I J K L@2 ~@3 M N O P Q R S T U@2 V E@17 ~@3 W X@5 V ~@3 Y@8 V@3 E@6 ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@11 x", C: "~@2 x ~@2 x ~@6", D: "~@5 x ~@5 x ~@12", E: "~ x!2 ~", F: "~@7 x ~@5 x ~@10",
  G: "~@4 x ~@2 x ~@4", H: "~@2 x ~@8 x", I: "~@4 x ~@18 x", J: "~@5 x ~@17 x", K: "~@5 x ~@18", L: "x!2 ~@2",
  M: "~@2 x ~@2 x", N: "~@7 x ~@11 x ~@4", O: "~@7 x ~@10 x ~@5", P: "~ x ~ x", Q: "~@5 x ~@11 x ~@6", R: "~ x ~@2 x ~",
  S: "~ x ~@3 x ~@2", T: "~ x ~@5 x ~@4", U: "~ x ~@22", V: "x", W: "~@3 x", X: "x ~@2 x", Y: "x!2",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  A@2 B C D E F G@2 H I@2 J K ~@2 L M@2 N O P@2 ~@2 Q R S T U V W X Y ~ Z AA G@17 AA ~@2 AB@7 ~@2 AC AD@3 AE AD@4 ~ AA@2
  G@6 AA ~
>`.pickRestart({
  A: "~@7 x", B: "~@11 x", C: "~@8 x ~@2 x", D: "~@16 x ~@6 x", E: "~@17 x ~@5 x", F: "~@3 x", G: "x ~@2 x",
  H: "x ~@18 x ~@4", I: "~ x ~@17 x ~@4", J: "~ x ~@8 x ~", K: "~ x ~@10", L: "~@3 x ~ x ~@2", M: "~@5 x ~@2 x ~@3",
  N: "~@11 x ~@5 x ~@6", O: "~@11 x ~@6 x ~@5", P: "~@2 x!2", Q: "~@7 x ~ x!2 ~", R: "x!2 ~ x ~@3 x ~@4",
  S: "~ x ~@11 x ~@10", T: "~ x ~@10 x ~@11", U: "x ~@11 x ~@10 x", V: "~@4 x ~@6 x ~@11 x", W: "~@5 x ~@5 x",
  X: "~@3 x ~@3 x", Y: "~@2 x ~@2 x", Z: "~ x ~@22", AA: "x", AB: "~ x!2 ~", AC: "~@3 x ~ x!2 ~ x!2 ~ x", AD: "~ x ~ x",
  AE: "~@6 x ~@11 x ~@3 x!2",
})).gain(0.49)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B C D E@2 F G@2 H I ~@2 J K B C L E@2 ~@14 E@17 M ~@2 N E@5 O ~@14 E@6 M ~
>`.pickRestart({
  A: "~@8 x ~@2 x", B: "~@4 x ~@5 x ~@5 x ~@6 x", C: "~@5 x ~@5 x ~@5 x ~@5 x", D: "~@5 x ~@5 x ~@6 x ~@5", E: "x!4",
  F: "x ~@6 x ~@5 x ~@5 x ~@4", G: "~ x ~@5 x ~@5 x ~@5 x ~@4", H: "~ x ~@2 x ~@2 x ~@2 x ~", I: "~ x ~@10",
  J: "~@3 x ~ x ~ x", K: "~@2 x ~@2 x ~@2 x ~@2 x", L: "~@5 x ~@5 x ~@5 x ~@6", M: "x", N: "~ x!3", O: "x!3 ~",
})).gain(0.44)

// drums · crash
const crash = s("cr").struct("<[~@7 x]!3 ~@32 [~ x ~@22] x ~@39 x!2 ~@8>").gain(0.38)

// drums · ride
const ride = s("rd").struct("<~@25 A B C D E F G H I J ~@31 K L@8 M ~@10>".pickRestart({
  A: "~@7 x ~ x!2 ~", B: "x!2 ~ x!2 ~ x!2 ~ x!2 ~", C: "x ~ x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x",
  D: "~ x ~@3 x ~ x ~@2 x ~ x ~@3 x ~ x ~@3 x ~", E: "x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2 x ~ x",
  F: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x", G: "~@3 x ~ x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~",
  H: "~@2 x ~ x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@2", I: "~ x ~ x ~@2 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3", J: "x!2 ~@10",
  K: "~@3 x ~ x!2 ~ x!2 ~ x", L: "x ~ x!2 ~ x!2 ~ x!2 ~ x", M: "x",
})).gain(0.27)

stack(
// … 3 more lines