Strudelify
I Can Help cover art

1974 · I Can Help

I Can Help

Billy Swan

KeyC majorTempo120 bpm
0:00/0:00
// I Can Help — Billy Swan
// 120 bpm, 4/4, key C major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 118 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): OD-Gtr.U.
setcpm(120/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 · electric bass finger · "Bass"
const bass = note(`<
  ~@2 A B@4 C@2 D E B F G@2 H I G J K L D M B F G@2 H I G J K L D M N O P Q R S T U B F G@2 H I G J K L D M B@4 C@2 D V
  N O P Q R S T U B F G@2 H I G J K L D M B@4 C@2 W X@2 ~@4 Y@2 Z@2 AA AB AC AD AE@2 ~@4 AF@2 AG@2 AH AI AJ AK
>`.pickRestart({
  A: "d2 ~ d2@2 d#2@2 e2@2 f2@2 f#2 ~ g2@4 ~@8", B: "c2@7 ~@3 g1@2 a1@7 ~@5", C: "g1@7 ~@3 d2@2 e2@7 ~@5",
  D: "c2@7 ~@3 g1@2 a1@8 ~@4", E: "c2@8 ~@2 g1@2 a1@7 ~@5", F: "c2@7 ~@2 g1@2 ~ a1@7 ~@5", G: "c2@4 ~ g1 a1@4 ~@2",
  H: "f2@7 ~@3 c2@2 d2@8 ~@4", I: "f2@4 ~ c2 d2@4 ~@2", J: "c2@8 ~ g1@2 ~ a1@9 ~@3", K: "g1@3 ~ g1@3 ~",
  L: "a#1@5 ~ f1@4 ~@2 g1@5 ~@7", M: "c2@8 ~ g1@2 ~ a1@7 ~@5", N: "f1@7 ~@3 f1@2 f1@10 ~@2",
  O: "g1@7 ~@2 g1 ~@2 g1@10 ~@2", P: "c2@8 ~ g1@2 ~ a1@8 ~@4", Q: "c2@8 ~@2 g1@2 a1@5 ~ g1@5 ~",
  R: "f1@7 ~@2 f1@2 ~ f1@10 ~@2", S: "d2@7 ~@3 d2@2 d2@10 ~@2", T: "g1@8 ~@2 g1 ~ g1@10 ~@2",
  U: "d2 ~ d2 ~ d#2 ~ e2 ~ f2 ~ f#2 ~ g2@2 ~@10", V: "c2@8 ~@2 c2@2 c2@7 ~@5", W: "c2@6 e1@5 ~ f1@5 ~ f#1@5 ~",
  X: "[g1@3 ~ a1@2 b1@3 ~ c2@23 ~@15]/2", Y: "[~@28 g1@2 a1@7 ~@5 c2@6, ~@3 c2@4 ~]/2", Z: "~@4 g1@2 a1@7 ~@5 c2@6",
  AA: "~@4 g1@2 a1@7 ~@5 g1@6", AB: "~@4 d2@2 e2@7 ~@5 g1@6", AC: "~@4 d2@2 e2@7 ~@5 c2@6",
  AD: "e1@5 ~ f1@5 ~ f#1@5 ~ g1@3 ~ a1@2", AE: "[b1@3 ~ c2@25 ~@19]/2",
  AF: "[~@22 g1@2 a1@7 ~@5 c2@7 ~@3 g1@2, ~ c2@2 ~]/2", AG: "a1@7 ~@5 c2@7 ~@3 g1@2", AH: "a1@7 ~@5 g1@7 ~@3 d2@2",
  AI: "e2@7 ~@5 g1@7 ~@3 d2@2", AJ: "e2@7 ~@5 c2@6 e1@5 ~", AK: "f1@5 ~ f#1@5 ~@13",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@3 A@2 B@6 C@5 D@4 E F@2 C@5 G@4 H I@2 J K L@3 M N@2 O P@8 E F@2 Q@2 R@2 S@4 J K L@3 M N@2 C@5 D@4 E F@2 Q@2 R@2 T@3
  U@8 V@6 W@8 X@5 ~
>`.pickRestart({
  A: "[g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@3 ~ c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2, [c5,e5]@15 ~, g5@9 ~ a5@12 g5@12 a5@6 g5@6 ~@2]/2", // C
  B: "[g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@3 ~ g3@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2, [c5,e5]@45 ~ [b4,d5]@47 ~ [c5,e5]@48 ~@2, g5@10 a5@12 g5@12 a5@6 g5@6 g5@12 a5@12 g5@12 a5@6 g5@5 ~ g5@11 ~ a5@12 g5@12 a5@6 g5@7 ~]/6", // C Bm C
  C: "[g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 c4@2 f3 d4@2 f3 c4@2 f3 d4@2 [f3,c5], [c5,e5]@45 ~ [c5,e5]@47 ~ [a4,f5]@26, g5@9 ~ a5@12 g5@11 ~ a5@6 g5@5 ~ g5@12 a5@12 g5@11 ~ a5@6 g5@5 ~ c5@11 ~ d5@12 ~@2]/5", // F5 C Dm
  D: "[c4@4 f3@2 d4@4 f3@2 c4@4 f3@2 d4@3 ~ [f3,c4] ~ g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@3 ~ c4@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@3 ~ g3@2, ~@10 d5@6 c5@5 ~ [c5,e5]@47 ~ [b4,d5,g5]@25 ~, ~@22 g5@11 ~ a5@12 g5@12 a5@6 g5@6 ~@26]/4", // F5 C G
  E: "[a#3,a#4,d5,f5]@6 [f3,f5]@6 [b4,d5,g5]@7 ~@5, ~@6 [a4,c5]@4 ~@2 g3@5 ~@7", // A# F G Am
  F: "[g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@3 ~ c4@2, [c5,e5]@47 ~, g5@10 a5@12 g5@11 ~ a5@6 g5@8]/2", // C
  G: "[c4@4 f3@2 d4@4 f3@2 c4@4 f3@2 d4@3 ~ f3@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2, ~@10 d5@6 c5@5 ~ [c5,e5]@47 ~ [b4,d5,g5]@25 ~, ~@22 g5@11 ~ a5@12 g5@12 a5@6 g5@6 ~@26, ~@22 c4 ~@73]/4", // C G
  H: "[a#3,a#4,d5,f5]@5 ~ [f3,a4,c5,f5]@5 ~ [g3,b4,d5,g5]@7 ~@5", // A# F G
  I: "g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4, [c5,e5]@23 ~, g5@5 a5@6 ~", // C
  J: "c4@4 f3@2 d4@3 ~ f3@2 c4@4 f3@2 d4@4 f3@2, [f4,a4]@23 ~, c5@5 d5@3 c5@4", // F
  K: "d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 [f3,g3] ~, [g4,b4]@23 ~, d5@10 e5@5 ~ d5@7 ~", // Fsus2 G
  L: "[g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 ~@6 f3@2 d4@3 ~ f3@2 c4@4 f3@2 d4@4 f3@2, [c5,e5]@23 c4@3 ~@10, g5@9 ~ a5@14 g5@9 ~ a5@6 g5@8 [f4,a4]@23 ~, ~@48 c5@10 d5@13 ~]/3", // C F
  M: "a3@4 d3@2 b3@4 d3@2 a3@4 d3@2 b3@4 d3 ~, [f#4,a4]@23 ~, d5@5 e5@7", // F#m
  N: "[d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@3 ~@9, [g4,b4]@37 ~@11, d5@24 d#5@13 ~@11]/2", // G
  O: "g4@2 c4 a4@2 c4 g4@2 c4 a4@2 [c4,g5], ~@5 a5@6 ~", // C5
  P: "[g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 c4@4 f3@2 d4@4 f3@2 c4@4 f3@2 d4@4 f3@2 c4@4 f3@2 d4@4 f3@2 c4@4 f3@2 d4@3 ~ [f3,c4] ~ g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@3 ~ c4@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@3 ~ g3@2, ~@10 a5@6 g5@5 ~ [c5,e5]@47 ~ [a4,f5]@47 ~ g5@11 ~ a5@12 g5@12 a5@6 g5@6 ~@26, ~@22 g5@12 a5@12 g5@11 ~ a5@6 g5@5 ~ c5@11 ~ d5@12 c5@11 ~ d5@6 c5@5 ~ [c5,e5]@47 ~ [b4,d5,g5]@25 ~]/8", // F5 C Dm C G
  Q: "[g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4, [c6,e6]@47 ~, g6@9 ~ a6@14 g6@9 ~ a6@6 g6@8]/2", // C
  R: "[g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4, [c6,e6]@47 ~, g6@9 ~ a6@14 g6@9 ~ a6@8 ~@6, ~@40 g6@7 ~]/2", // C
  S: "[d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@3 ~ g3@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 [a4,d6,f6]@4 c4@2 g4@4 c4@2 [a4,e6,g6]@4 c4@2, [b5,d6]@47 ~ c6@47 ~, g6@10 a6@12 g6@12 a6@6 g6@17 ~ a6@12 g6@8 ~@18, ~@48 e6@29 ~@7 [d#6,f#6]@6 ~@6]/4", // Dm A7 Bm D#m
  T: "[d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3 ~ [c4,c5,e5,g5,c6]@6 [e3,c5,e5,g5,a#5]@6 [f3,f5,a5]@6 [f#3,c5,f5,g#5]@6, [b5,d6]@47 ~@13 c5@4 ~@8, g6@10 a6@12 g6@12 a6@6 g6@17 ~@15]/3", // C C7 F Fm Bm
  U: "[[g3,g4,g5]@3 ~ [a3,a5]@2 [b3,b4,b5]@3 ~@56 d#5@48 e5@47 ~@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2, ~@4 a4 ~@15 [c3,a#4,c5,g5]@144 ~@22 g6@6, ~@10 e5@24 ~@47 [c6,e6]@15, ~@162 g6@9 ~ a6@15 ~@5]/8", // G A B C7 C
  V: "[a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3@2 d4@4 g3@2 e4@4 g3 ~ [c4,c5,e5,g5,c6]@6 [e3,c5,e5,g5,a#5]@6 [f3,f5,a5]@6 [f#3,c5,f5,g#5]@6 [g3,g4,g5]@3 ~ [a3,a5]@2, ~@4 a6@6 g6@8 [c6,e6]@47 ~ [b5,d6]@47 ~@13 c5@4 ~@12 a4 ~, ~@18 g6@9 ~ a6@14 g6@9 ~ a6@8 ~@16 a6@13 ~@11 a6@6 ~@38, ~@58 g6@7 ~ g6@10 ~@12 g6@12 ~@6 g6@17 ~@21]/6", // C C7 F Fm G A C Bm
  W: "[[b3,b4,b5]@3 ~ e5@83 d#5@69 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 c4@2 g4@4 c4@2 a4@4 [c4,a6]@2, ~@4 [c3,c4,g5,a#5]@156 ~@20 g6@9 ~@3, ~@13 [c6,e6]@3, ~@156 g6@9 ~ a6@15 ~@11]/8", // B F C7 C
  X: "[g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 g4@2 c4 a4@2 c4 d4@2 g3 e4@2 g3 d4@2 g3 e4@2 g3 d4@2 g3 e4@2 ~@13, ~@4 g6@8 [c6,e6]@47 ~ [b5,d6]@47 ~@13, ~@12 g6@9 ~ a6@14 g6@9 ~ a6@8 ~@16 a6@13 ~@37, ~@52 g6@7 ~ g6@10 ~@12 g6@12 ~@26]/5", // C Bm
})).s("gm_drawbar_organ").gain(0.4)

// other · electric guitar muted · "mute Gtr"
const electric_guitar_muted = note(`<
  ~@2 A B C D E F G H I C@2 J E K L C M N O M J C@2 J E K L C M N O M@2 P Q M@2 R S T ~ C@2 J E K L C M N O M J B C D E
  F G H U P Q M@2 R S T V C@2 J E K L C M N O M J B C D E F G W X ~@5 Y Z AA AB AC AD AE AF AG ~@5 AH AI AJ AK AL AM AN
  AO
>`.pickRestart({
  A: "[b3,d#4,g4] ~ [b3,d#4,g4] ~ [b3,d#4,g4] ~ [b3,d#4,g4] ~ [b3,d#4,g4] ~ [b3,d#4,g4] ~ [b3,d#4,g4] ~@11", // Baug
  B: "c3@6 c4@2 ~@2 g2@2 a2@6 g2@5 ~", C: "c3@6 c4@2 ~@2 g2@2 a2@5 ~ g2@5 ~", D: "c3@3 c4 ~ g2 a2@3 g2@2 ~",
  E: "c3@6 c4@2 ~@2 g2@2 a2@5 ~ g2@4 ~@2", F: "g2@6 g3@2 ~@2 d3@2 e3@6 d3@3 ~@3", G: "g2@6 g3@2 ~@2 d3@2 e3@6 d3@5 ~",
  H: "c3@3 c4 ~ g2 ~@3 g2@2 ~, ~@3 a2@2 ~", I: "c3@6 c4@2 ~@2 g2@2 a2@5 ~ g2@3 ~@3",
  J: "c3@6 c4 ~@3 g2@2 a2@5 ~ g2@5 ~", K: "~@6 f4@2 ~@2 c3@2 d3@5 ~ c3@5 ~, f3 ~@2",
  L: "f3@6 f4@2 ~@2 c3@2 d3@5 ~ c3@4 ~@2", M: "c3@6 c4 ~@3 g2@2 a2@5 ~ g2@4 ~@2", N: "g2@6 g4 ~@3 d3@2 e3@5 ~ d3@4 ~@2",
  O: "a#2@2 ~ f2@2 ~ g2@3 ~@3", P: "f2@6 f3 ~@3 c3@2 d3@5 ~ c3@5 ~", Q: "g2@6 g3 ~@3 d3@2 e3@5 ~ d3@4 ~@2",
  R: "f2@6 f3@2 ~@2 c3@2 d3@5 ~ c3@4 ~@2", S: "d3@6 d4 ~@3 a2@2 b2@4 ~@2 a2@4 ~@2",
  T: "g2@6 g3@2 ~@2 d3@2 e3@4 ~@2 d3@5 ~", U: "c3@6 c4@2 ~@2 c3@2 c3@5 ~ c3@3 ~@3",
  V: "g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ g3 ~@11", W: "c3@5 ~ a#2@6 a2@5 ~ g#2@5 ~",
  X: "g2@3 ~ a2@2 b2@3 ~ c3@3 ~@11, ~@6 a2 ~@17", Y: "~@3 c3", Z: "c4@2 ~@2 g2@2 a2@6 g2@5 ~ c3@6",
  AA: "c4@2 ~@2 g2@2 a2@5 ~ g2@5 ~ c3@6", AB: "c4 ~ g2 a2@3 g2@2 ~ c3@3", AC: "c4@2 ~@2 g2@2 a2@5 ~ g2@4 ~@2 g2@6",
  AD: "g3@2 ~@2 d3@2 e3@6 d3@3 ~@3 g2@6", AE: "g3@2 ~@2 d3@2 e3@6 d3@5 ~ c3@5 ~",
  AF: "a#2@6 a2@5 ~ g#2@5 ~ g2@3 ~ a2@2", AG: "b2@3 ~ c3@3 ~@17, a2 ~@23", AH: "~@6 c3@3 c4 ~ g2",
  AI: "a2@6 g2@5 ~ c3@6 c4@2 ~@2 g2@2", AJ: "a2@5 ~ g2@5 ~ c3@6 c4@2 ~@2 g2@2", AK: "a2@3 g2@2 ~ c3@3 c4 ~ g2",
  AL: "a2@5 ~ g2@4 ~@2 g2@6 g3@2 ~@2 d3@2", AM: "e3@6 d3@3 ~@3 g2@6 g3@2 ~@2 d3@2", AN: "e3@6 d3@5 ~ c3@5 ~ a#2@6",
  AO: "a2@5 ~ g#2@5 ~@13",
})).s("gm_electric_guitar_muted").gain(0.45).pan(0.2)

// chords · acoustic guitar steel · "A-Gtr."
const acoustic_guitar_steel = note(`<
  ~@3 A B@2 C D E F G B@3 H I J K L@2 M ~@2 B@3 H I J K L@2 M ~@2 N O B P Q R S T B@3 H I J K L@2 M ~@2 A B@2 C D E F G
  N O B P Q R S T B@3 H I J K L@2 U ~@2 A B@2 C D E P ~@6 V@2 W@2 X Y Z ~@7 AA AB@2 AC AD AE AF ~
>`.pickRestart({
  A: "[c3,g3]@5 ~@6 [b2,f#3]", B: "[c3,g3]@3 ~@8 [b2,f#3]", C: "[c3,g3]@7 ~@15 [f#2,c#3]@2",
  D: "[g2,d3]@3 ~@8 [f#2,c#3]", E: "[g2,d3]@5 ~@17 [b2,f#3]@2", F: "[c3,g3]@5 ~@17 b2@2, ~@7 f#3", G: "[c3,g3] ~@3",
  H: "[c3,g3]@3 ~@8 [e2,b2]", I: "[f2,c3]@3 ~@8 [e2,b2]", J: "[f2,c3]@3 ~@8 [b2,f#3]",
  K: "[c3,g3]@5 ~@17 [b2,f#3]@2, b2 ~@23", L: "[[c3,g3]@7 ~@15 c#3@2 d3@7 ~@17, ~@22 g2@9 ~@17]/2",
  M: "[a#2,f3]@5 ~ [f2,c3]@5 ~ [d3,g3]@4 ~@8", N: "[f2,c3]@3 ~@8 [f#2,c#3]", O: "[g2,d3]@3 ~@8 [b2,f#3]",
  P: "[c3,g3]@5 ~@19", Q: "[f2,c3]@7 ~@17", R: "[d3,a3] ~@3", S: "[g2,d3]@7 ~@17",
  T: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2 ~@10", U: "[a#2,f3]@5 ~ [f2,c3]@5 ~ [c3,g3]@4 ~@8",
  V: "[~@9 [c3,g3]@5 ~@6 [b2,f#3] [c3,g3]@3]/2", W: "~@8 [b2,f#3] [c3,g3]@3", X: "~@8 [f#2,c#3] [g2,d3]@3",
  Y: "~@16 [f#2,c#3]@2 [g2,d3]@5 ~", Z: "~@16 [b2,f#3]@2 [c3,g3]@5 ~", AA: "~@6 [c3,g3]@5 ~",
  AB: "~@5 [b2,f#3] [c3,g3]@3 ~@3", AC: "~@10 [b2,f#3]@2 [c3,g3]@7 ~@5", AD: "~@5 [f#2,c#3] [g2,d3]@3 ~@3",
  AE: "~@10 [f#2,c#3]@2 [g2,d3]@5 ~@7", AF: "~@10 [b2,f#3]@2 [c3,g3]@5 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.48)

// chords · electric guitar jazz · "Jazz-Gtr"
const electric_guitar_jazz = note(`<
  ~ A B ~@32 C D E@2 F G H I ~@11 J K L K M N O K P C D E@2 F G D I ~@11 Q K L K M N O K R ~@3 S T U V W V X Y Z AA AB
  ~@5 AC AD AE AD AF AG AH AI
>`.pickRestart({
  A: "b4 g4 c#4 b3 f4 a4 g4 d#4 a3 g3 c#4 f4",
  B: "[b3,d#4] ~ [b3,d#4] ~ [b3,d#4] ~ [b3,d#4] ~ [b3,d#4] ~ [b3,d#4] ~ [b3,d#4] ~@11", // B
  C: "~@10 [f4,a4,c5]@2 [f4,a4,c5] ~@11", D: "~@5 [g4,b4,d5]!2 ~@5", E: "~@5 [g4,c5,e5]!2 ~@5",
  F: "~@5 [f4,a4,c5]!2 ~@5", G: "~@5 [f#4,a4,d5]!2 ~@5", H: "~@10 [g4,b4,d5] ~ [g4,b4,d5]@2 ~@10",
  I: "[g4,b4,d#5] ~ [g4,b4,d#5] ~ [g4,b4,d#5] ~ [g4,b4,d#5] ~ [g4,b4,d#5] ~ [g4,b4,d#5] ~ [g4,b4,d#5] ~@11", // Gaug
  J: "~@10 [c5,e5]!2", K: "[c5,e5] [a#4,d5]!3 [a4,c5]!3 [g4,a#4]!3 [f4,a4]!2",
  L: "[f4,a4] [e4,g4]!3 [d4,f4]!3 [c4,e4]!3 [c5,e5]!2", M: "[f4,a4] [e4,g4]!3 [d4,f4]!3 [c4,e4]!3 [b4,d5]!2",
  N: "[b4,d5] [a4,c5]!3 [g4,b4]!3 [f4,a4]!3 [e4,g4]!2", O: "[e4,g4] [d4,f4]!3 [c4,e4]!3 [b3,d4]!3 [c5,e5]!2",
  P: "[e4,g4]@3 [f4,g#4]@3 [f#4,a4]@3 [g4,a#4]@2 ~", Q: "~@20 [c5,e5] ~ [c5,e5]@2", R: "g4@3 ~ a4@2 b4@3 ~ c5@3 ~@11",
  S: "g4@11 ~@2 f4@5 d#4@2 c4@4", T: "~ d#4@2 c4@9 ~@12", U: "~@14 [c5,e5] ~ [c5,e5]@2 [c5,e5]@2 [a#4,d5]@2 [a#4,d5]@2",
  V: "[a#4,d5] [a4,c5]!3 [g4,a#4]!3 [f4,a4]!3 [e4,g4]!2", W: "[e4,g4] [d4,f4]!3 [c4,e4]!3 [c5,e5]!3 [a#4,d5]!2",
  X: "[e4,g4] [d4,f4]!3 [c4,e4]!3 [b4,d5]!3 [a4,c5]!2", Y: "[a4,c5] [g4,b4]!3 [f4,a4]!3 [e4,g4]!3 [d4,f4]!2",
  Z: "[d4,f4] [c4,e4]!3 [b3,d4]!3 [c5,e5]!3 [a#4,d5]!2", // Dm C Bm C A#
  AA: "[a#4,d5]@2 [a4,c5]@2 [a4,c5]@2 [a4,c5]@2 [g4,a#4]@2 [g4,a#4]@2 [g4,a#4]@2 [f4,a4]@2 [f4,a4]@2 g4@3 ~ a4@2", // A# Am Gm F
  AB: "b4@3 ~ c5@3 ~@17",
  AC: "[c5,e5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5] ~ [c5,e5]@2 [c5,e5]@2 [a#4,d5]@2 [a#4,d5]@2 [a#4,d5]@2 [a4,c5]@2 [a4,c5]@2", // C A# Am
  AD: "[a4,c5] [g4,a#4]!3 [f4,a4]!3 [e4,g4]!3 [d4,f4]!2", AE: "[d4,f4] [c4,e4]!3 [c5,e5]!3 [a#4,d5]!3 [a4,c5]!2",
  AF: "[d4,f4] [c4,e4]!3 [b4,d5]!3 [a4,c5]!3 [g4,b4]!2", AG: "[g4,b4] [f4,a4]!3 [e4,g4]!3 [d4,f4]!3 [c4,e4]!2",
  AH: "[c4,e4] [b3,d4]!3 [c5,e5]!3 [a#4,d5]!3 [a4,c5]!2", // C Bm C A# Am
  AI: "[a4,c5]@2 [g4,a#4]@2 [g4,a#4]@2 [g4,a#4]@2 [f4,a4]@2 [f4,a4]@2 g4@3 ~@9", // Am Gm F
})).s("gm_electric_guitar_jazz").gain(0.48)

// chords · overdriven guitar · "OD-Gtr.U"
const overdriven_guitar = note(`<
  ~
  [d#5 b4 g4 f4 a4 c#5 b4 g4 d#4 c#4 f4 a4]
  [g4@2 g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~@11]
  ~@115
>`).s("gm_overdriven_guitar").gain(0.56).pan(0.7)

// chords · electric guitar clean · "E-Gtr."
const electric_guitar_clean = note(`<
  ~@3 A@4 B@2 A@2 C@4 D@2 C@2 E ~ C@6 D@2 C@2 E ~ C@2 ~@8 C@4 D@2 C@2 E ~ C@2 ~@16 C@4 D@2 C@2 E ~ C@2 ~@35
>`.pickRestart({
  A: "~@3 [c4,e4,g4,c5] ~@8", B: "~@3 [b3,d4,g4,b4] ~@8", C: "~@3 [e4,g4,c5] ~@8", D: "~@3 [f4,a4,c5] ~@8",
  E: "~@3 [g4,b4,d5] ~@8", // G
})).s("gm_electric_guitar_clean").gain(0.48).pan(0.8)

// chords · whistle · "Audience"
const whistle = note("<~@91 A@2 B@2 C@2 ~@7 D@3 E@2 F@2 ~@7>".pickRestart({
  A: "[~@7 c7@4 ~ c7@2 ~ c7@2 c7@5 ~ b7@9 ~@10 g7@3 ~ g7@2, ~@3 f#7@17 ~@12 f#7@5 ~ f#7@10, ~@11 b7@3 ~@2]/2",
  B: "[g7 ~@2 g7@2 g7 ~@2 g7 ~ g7 ~ g7@2 ~@14 a#6@12 ~@5 f#7@2 ~, ~@15 d7@12 ~@16 a#7@5, ~@11 f#7@8 ~@2 f#7 ~@2]/2",
  C: "[f#7 ~ a#7@2 f#7 a#7 f#7 ~@2 f#7 ~@5 g7@5 f7@2 ~ c8@11 ~@14, ~@2 f#7 ~@5 e7@7 ~@33, ~@3 f#7@2 ~@7]/2",
  D: "[~@25 c7@4 ~ c7@2 ~ c7@2 c7@5 ~ b7@9 ~@10 g7@3 ~ g7@2 g7 ~@2 g7@2 g7, ~@21 f#7@17 ~@12 f#7@5 ~ f#7@10 ~@6, ~@17 b7@3 ~@4]/3",
  E: "[~@2 g7 ~ g7 ~ g7@2 ~@14 a#6@12 ~@5 f#7@2 ~ f#7 ~ a#7@2 f#7 a#7, ~@9 d7@12 ~@16 a#7@6 ~@5, ~@16 f#7@16 ~@4 f#7@2 ~@6 f#7 ~@3]/2",
  F: "[f#7 ~@2 f#7 ~@5 g7@5 f7@2 ~ c8@11 ~@20, ~@2 e7@7 ~@39, ~@3 f#7@4 ~@17]/2",
})).s("gm_whistle").gain(0.32)

// chords · whistle · "Audience" · soft notes
const whistle_soft = note("<~@92 A ~@2 B ~@9 C ~@3 D ~@8>".pickRestart({
  A: "~ f#7@2 ~@9", B: "~@8 f7 ~@15, ~@7 a#7@2 ~@15", C: "~@5 f#7", D: "~@2 f7 ~@21, ~ a#7@2 ~@21",
})).s("gm_whistle").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B@17 C B@11 C B@9 ~ B@9 C B@17 ~ B@9 C B@8 D E ~@2 F ~ G H I@6 J K ~@5 L M@5 D@2
>`.pickRestart({
  A: "~ x ~@4 x ~@5", B: "x ~@4 x!2 ~@5", C: "x!3 ~", D: "x!2", E: "x ~ x ~@2 x ~@6", F: "~@5 x ~@6", G: "~@3 x",
  H: "x!4", I: "~@2 x!2 ~@5 x ~@2", J: "~@3 x ~@5 x ~ x", K: "~ x ~@4", L: "~@6 x ~@4 x", M: "x ~@5 x ~@4 x",
})).gain(0.56)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@117>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@2 A B@17 ~ B@11 ~ B@9 A B@9 ~ B@17 A B@9 ~ B@9 C ~@6 D@7 E ~@5 F B@6 C>".pickRestart({
  A: "x!7 ~@5", B: "~ x ~ x", C: "~ x ~@2", D: "x!2", E: "x", F: "~@3 x",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct(`<
  ~@3 A@17 ~ A@11 ~ A@2 B@7 ~ A@9 ~ A@10 B@7 ~ A@9 ~ A@8 ~@8 C@6 ~@7 D E@5 F ~
>`.pickRestart({
  A: "~@3 x ~ x ~@3 x ~@2", B: "~ x ~ x", C: "x!2 ~ x ~@2", D: "~@9 x ~ x", E: "~@3 x ~@5 x ~ x", F: "~ x ~@2",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@2 A ~@39 A ~@27 A ~@19 B ~ C D ~@10 E ~@5 F ~@7>".pickRestart({
  A: "x!7 ~@5", B: "~ x ~@2", C: "~@5 x!3", D: "~ x ~@3 x ~@18", E: "x", F: "x ~ x!2 ~ x ~@6",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B@17 ~ B@11 ~ B@9 C B@9 ~ B@17 C B@9 ~ B@8 ~@7 D B@5 E ~@7 F B@5 G ~
>`.pickRestart({
  A: "~@3 x", B: "x!12", C: "x ~@2 x", D: "~@9 x!3", E: "x!9 ~@3", F: "~@6 x!6", G: "x!6 ~@6",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~@39 A ~@27 A ~@18 B ~@3 C D ~@8 E ~@12 F G>".pickRestart({
  A: "~@2 x", B: "~ x ~ x", C: "~@13 x ~ x ~ x ~ x ~ x!3", D: "x!4 ~ x!9 ~@10", E: "x!2", F: "~@3 x", G: "~ x ~@2",
// … 23 more lines