Strudelify

I'm So Excited

Hooker John Lee

KeyG minorTempo179 bpm
0:00/0:00
// I'm So Excited — Hooker John Lee
// 179 bpm, 4/4, key G minor. 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 191 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(179/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(`<
  ~@7 A@4 B@2 C@6 D@2 E@3 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@3 N O@2 P Q R@5 S@5 T@7 U@5 F@2 G@2 H@2 I@2 J@2 K@2 L@2 V W@5
  T@7 X@5 Y@3 Z@2 AA@3 AB AC@4 AD@3 AE N O@2 P Q R@5 S@5 T@7 AF@5 ~@8 AG AH@2 AI@4 AJ@2 AK@2 AL@4 AM@2 AN@2 AO@5 AP AK@2
  AL@4 AM@2 AN@2 AQ@3 ~
>`.pickRestart({
  A: "[~@16 g1@2 ~@2 g1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~@3 c2@2 ~@2 [c2,g3,bb3,eb4]@2 ~@2 [c2,f3,bb3,d4]@2 ~@2 [c2,g3,bb3,eb4]@2 ~@2, ~@14 [f3,bb3,d4]@30 ~@2 [f3,bb3,d4]@5 ~@13]/4", // Cm7 Bb Cm7 Bb
  B: "[[f3,bb3,d4]@4 c2 ~@3 c2@2 ~@2 c2 ~@3 eb1@2 ~@2 [g3,bb3,eb4]@2 ~@2 [eb1,f3,bb3,d4]@2 ~@2 [eb1,g3,bb3,eb4]@3 ~, c2@2 ~@4 [g3,bb3,eb4]@6 ~@2 [f3,bb3,d4]@5 ~ eb1 ~@11]/2", // Bb Eb Bb Eb Bb
  C: "[[f3,bb3,d4]@4 eb1@2 ~@2 eb1@2 ~@2 eb1 ~@3 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~ bb1@2 ~@2 bb1@2 ~@2 a1@2 ~@2 g1@3 ~ g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~@3 g1 ~@3 c1@3 ~ [c1,g3,bb3,eb4]@2 ~@2 [c1,f3,bb3,d4]@2 ~@2 [c1,g3,bb3,eb4]@2 ~@2, eb1@2 ~@4 [g3,bb3,eb4]@7 ~ [g3,c4,eb4]@7 ~ [f3,bb3,d4]@23 ~ [f3,bb3,d4]@30 ~@2 [f3,bb3,d4]@5 ~@13]/6", // Bb Cm7 Bb Cm7 Eb Cm Bb
  D: "[[f3,bb3,d4]@4 c1@2 ~@2 c1@2 ~@2 c1@2 ~@2 eb1@2 ~@2 [eb1,g3,bb3,eb4]@3 ~ [eb1,f3,bb3,d4]@2 ~@2 [eb1,g3,bb3,eb4]@2 ~@2, c1@2 ~@4 [g3,bb3,eb4]@6 ~@2 [f3,bb3,d4]@5 ~@13]/2", // Bb Eb Bb Eb Bb
  E: "[[f3,bb3,d4]@4 eb1@2 ~@2 eb1@2 ~@2 eb1 ~@3 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2, eb1@2 ~@4 [g3,bb3,eb4]@6 ~@2 [g3,c4,eb4]@7 ~ [f3,bb3,d4]@12 ~@14]/3", // Bb Eb Cm Bb
  F: "[g1@2 ~@2 g1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2, [f3,bb3,d4]@31 ~]/2", // Bb
  G: "[[f3,bb3,d4]@4 c1 ~@3 c1 ~@3 c1@2 ~@2 c1@2 ~@2 c1@2 ~@2 c1@2 ~@2 c1@2 ~@2, c1@2 ~@4 [g3,bb3,eb4]@25 ~]/2", // Bb Eb
  H: "[[f3,bb3,d4]@4 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1 ~ f1 ~, eb1@2 ~@4 [g3,bb3,eb4]@25 ~]/2", // Bb Eb
  I: "[[g3,bb3,eb4]@4 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 f1@2 ~@2 gb1@3 ~, bb1@2 ~@4 [f3,bb3,d4]@25 ~]/2", // Eb Bb
  J: "[g1@3 ~ g1@3 ~ g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2, [f3,bb3,d4]@31 ~]/2", // Bb
  K: "[[f3,bb3,d4]@4 c2 ~@3 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2 ~@3, c2@2 ~@4 [g3,bb3,eb4]@25 ~]/2", // Bb Eb
  L: "[[f3,bb3,d4]@4 eb1 ~@3 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2, eb1@2 ~@4 [g3,bb3,eb4]@25 ~]/2", // Bb Eb
  M: "[[g3,bb3,eb4]@4 bb1 ~@3 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 d2@2 f2@2 bb1 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@3 ~, bb1@2 ~@4 [f3,bb3,d4]@18 ~@6 [c4,e4,a4]@7 ~ [c4,e4,g4]@10]/3", // Eb Bb Am C
  N: "a1@3 ~ a1@2 ~@2 a1@2 ~@2 a1@3 ~, [c4,e4,a4]@3 [c4,e4,g4]@5", // Am C
  O: "[g1@2 ~@2 g1@3 ~ [g1,bb3,d4,g4]@4 g1@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@3 ~, [bb3,d4,g4]@7 ~@7 [a3,c4,f4]@15 ~@3]/2", // Gm F
  P: "[c4,e4,a4]@2 a1 ~ a1 ~ a1 ~, a1 ~@2 [c4,e4,g4]@5", // Am C
  Q: "[c4,e4] ~@3 a1@2 ~@2 a1@2 ~@2 a1@3 ~, a4@2 ~ g4@5, a1 ~@2 [c4,e4]@2 ~@3", // C
  R: "[g1@3 ~ g1@4 g1@4 ~@4 g1@4 ~@8 g1@2 ~@2 c2@14 [d2,c4,f4,a4]@16 [eb4,g4,bb4]@14 ~@4, d4@10 g1 [bb3,bb4] g1 [c4,c5]@2 [bb3,eb4,g4]@6 ~@19, bb3@20 [a3,a4]@11 ~@49, g4@14 [f3,f4]@17 ~@31 f2@17 ~, ~@12 g1@4 [g3,g4]@15 ~@49]/5", // Dm7 Eb Bb C Eb A F G
  S: "[[f2,f4,f5]@2 ~@14 g1@3 ~ g1 ~@3 g1 ~@3 g1 ~@3 g1 ~@3 g1 ~ [f3,bb3,d4] ~ g1 ~ [f3,bb3,d4]@2 g1 ~@3 eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1 ~ [g3,bb3,eb4]@2 eb1 ~@3 eb1@2 ~@2, ~@14 [f3,bb3,d4]@23 ~@9 [g3,bb3,eb4]@22 ~@6 [a3,c4,f4]@5 ~]/5", // F Bb Eb Bb Eb F
  T: "[eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 [f3,a3,c4] ~ g1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1 ~ [f3,bb3,d4]@2 f1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2, [g3,bb3,eb4]@6 ~ [a3,c4,f4]@7 ~ [f3,g3,bb3,d4]@13 ~@3 [f3,bb3,d4]@13 ~@3 [g3,bb3,eb4]@9]/7", // F Bb Eb F Gm7 Bb Eb
  U: "[eb1 ~ eb1 ~ eb1 [a3,c4,f4] eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ f1 ~ f1 ~ f1 ~ f1 ~ g1 ~ g1 ~ g1 ~ g1 f1 g1 ~ g1 ~ g1 ~ g1 ~, ~@14 [g3,bb3,eb4]@15 ~ [a3,c4,f4]@14 ~@2 [f3,g3,bb3,d4]@19 ~@15]/5", // F Eb F Gm7
  V: "[g3,bb3,eb4]@4 bb1 ~@3 bb1@2 ~@2 bb1@2 ~@2, bb1 ~@2 [f3,bb3,d4]@5", // Eb Bb
  W: "[[bb2,bb4,f5]@2 ~@14 g1@3 ~ g1 ~@3 g1 ~@3 g1 ~@3 g1 ~@3 g1 ~ [f3,bb3,d4] ~ g1 ~ [f3,bb3,d4]@2 g1 ~@3 eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1 ~ [g3,bb3,eb4]@2 eb1 ~@3 eb1@2 ~@2, ~@14 [f3,bb3,d4]@23 ~@9 [g3,bb3,eb4]@22 ~@6 [a3,c4,f4]@5 ~]/5", // Bb5 Bb Eb Bb Eb F
  X: "[eb1 ~ eb1 ~ eb1 [a3,c4,f4] eb1 ~ eb1 ~ eb1 ~ eb1 ~ eb1 ~ f1 ~ f1 ~ f1 ~ f1 ~ g1 ~ g1 ~ g1 ~ g1 f1 ~ [c3,c4] [db3,db4] [d3,d4] [f3,f4] [g3,g4] [bb3,bb4] [c4,c5], ~@14 [g3,bb3,eb4]@15 ~ [a3,c4,f4]@14 ~@2 [f3,g3,bb3,d4]@19 ~@15]/5", // F C Db D F G Bb C …
  Y: "[[bb4,bb5] ~ [bb4,bb5] ~@5 bb4@2 bb4@2 ~@16 [d5,d6]@2 f5@4 ~@2 [g5,bb5,eb6]@4 [f5,bb5,d6]@4 [g5,bb5,eb6]@4, ~@2 [bb4,bb5]@2 bb5@2 [bb4,bb5]@2 [bb4,bb5]@4 [bb4,bb5]@3 bb5@3 ~@6, ~@3 [g4,g5]@4 [g4,g5]@3 [g4,g5]@5 ~@2 f5@3 ~@4, ~@9 [f4,f5]@2 [f4,f5]@4 ~@9, ~@13 [c5,c6]@2 d6@5 ~@4]/3", // Bb D Eb Bb Eb Bb G F …
  Z: "[[f5,bb5,d6]@3 ~@3 [g4,g5] [f5,bb5,d6]@2 [f5,bb5,d6] [g5,bb5,eb6]@2 [f5,bb5,d6]@2 [g5,bb5,eb6]@2, ~@3 [bb5,eb6]@4 ~@9, ~@3 g5@3 ~@10, ~@5 [f4,f5]@2 bb4@3 ~@6]/2", // Bb G Bb Eb Bb Eb Eb5 F
  AA: "[[f5,bb5,d6]@3 bb5@2 [bb5,d6,f6]@2 c6@2 c6@2 bb5@2 bb5!2 ~@8 [c5,c6], ~@3 [g5,eb6]@4 [c5,eb6,g6]@4 [bb4,d6,f6]@4 [bb4,bb5]@3 [db4,db5]@2 [f4,f5] [g4,g5] [bb4,bb5]@2, ~@14 b5 ~@15 [d6,f6]@18, ~@17 c4@7, ~@17 c5@2 [d4,d5]@5]/3", // Bb C Cm Bb Db F G Bb …
  AB: "[db5,db6,d6,f6] ~ [d6,f6]@2 [d6,f6]@2 [d6,f6]@2 db6 d6 [d6,f6]@2 [d6,f6]@2 [d6,f6]@2, ~@4 f6 ~@3", // Db Dm
  AC: "[[d6,f6]@2 [d6,f6]@2 db6 ~@7 c6@2 [d6,f6]@4 [d6,f6]@2 [d6,f6]@2 [d6,f6]@2 [d6,f6]@2 [d6,f6]@2 [d6,f6]@2 f6@2 f6@2 [d6,f6]@2 f6@2 ~@4 g5@4 ~@16 c6@2, db6 ~@3 f6@10 ~@24 f6@14 g5@2 bb5@2 c6@2 g5@2 bb5@4, ~@4 c6@8 ~@2 [db6,a6] ~@9 db6 ~@5 d6@4 ~@4 c6@13 gb5@13, ~@3 bb5@2 bb5@2 ~@9 db6@2 db6@14, ~@4 g5@3 ~@13 bb5@3 g5@2 f5@7]/4", // Dm Gbm
  AD: "[db6 ~@13 c7@2 eb6@2 eb6@2 ~@2 d6@2 d6@2 d6@2 ~@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6]@2 [bb4,bb5,bb6] ~, d6@3 d6@8 ~@3 d6@9 ~, ~ f6@3 f6@7 [f6,bb6]@2 f6@10 ~, ~@2 g6@3 g6@2 g6 c7@2 [eb6,g6,c7]@13 ~, ~@6 bb6@5 ~@2 bb6@2 ~@9]/3", // Bb Bb5 Cm
  AE: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@3 ~, ~@3 [c4,e4,g4]@5", // C
  AF: "[eb1@2 ~@2 eb1@2 ~@2 eb1@2 [a3,c4,f4]@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 f1@2 g1@2 ~@2 g1@2 ~@2 g1@2 [f3,a3,c4] ~ g1 ~ [f3,bb3,d4]@2, ~@14 [g3,bb3,eb4]@15 ~ [a3,c4,f4]@14 ~@2 [f3,g3,bb3,d4]@19 ~@15]/5", // F Bb Eb F Gm7
  AG: "g1 ~ g1 ~ [g1,d4,a4,c5] ~ [g1,d4,g4,bb4] ~", // Gsus4 Gm
  AH: "[[d4,a4,c5]@4 g1@2 ~@2 g1@2 ~@2 g1 ~@3 eb1@2 ~@2 eb1@2 ~@2 [eb1,d4]@2 ~@2 [eb1,d4,g4,bb4]@2 ~@2, g1@2 ~@4 [d4,g4,bb4]@6 ~@2 [bb3,eb4,g4]@6 ~@4 [a4,c5] ~@7]/2", // D7 Ebmaj7 Gm Eb Am
  AI: "[[d4,a4,c5]@4 eb1 ~@3 eb1@2 ~@2 eb1 ~@3 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1 ~@3 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~@3 g1@2 ~@2 g1@2 ~@2 [g2,a2,g3,a3] ~ [g2,g3] ~ [a2,a3] ~ [a2,a3] ~, eb1@2 ~@4 [d4,eb4,g4,bb4]@4 ~@4 [bb3,eb4,g4]@14 ~@2 [c4,f4,a4]@14 ~@2 [d4,g4,bb4]@7 ~@11]/4", // D7 Gsus2 G A Ebmaj7 Eb F Gm
  AJ: "[[bb2,bb3] ~ [bb2,bb3] ~ [c3,c4] ~ [c3,c4] ~ [d3,d4] ~ [f3,f4]@2 ~@4 g1@3 ~ g1@2 ~@2 [d4,a4,c5] ~@3 [g1,d4]@2 ~@2, ~@14 [g3,g4]@6 ~@4 g1@2 ~@2 [g4,bb4] ~@3]/2", // Bb C D F D7 G5 G Gm
  AK: "[[d4,a4,c5]@4 g1 ~@3 g1@2 ~@2 g1 ~@3 eb1@2 ~@2 eb1@2 ~@2 [d4,e4,a4,c5] ~@3 [eb1,g4,bb4] ~@3, g1@2 ~@4 [d4,g4,bb4]@6 ~@2 [bb3,eb4,g4]@7 ~@3 eb1@2 ~@2 d4@2 ~@2]/2", // D7 Am Eb Gm Eb
  AL: "[[d4,a4,c5]@4 eb1@2 [eb4,g4,bb4]@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 eb1 ~@3 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2, eb1 ~@6 [bb3,eb4,g4]@7 ~ [c4,f4,a4]@7 ~ [d4,g4,bb4]@9]/4", // D7 Eb F Gm
  AM: "[g1@2 [d4,g4]@2 g1@2 g4@2 g1@2 [g3,g4]@2 g1@2 c4 ~ g1@2 ~@2 g1@2 ~@2 [g1,d4,a4]@2 ~@2 [g1,d4]@2 ~@2, ~@10 a3 ~@3 [d4,g4,bb4]@9 ~ c5 ~@3 [g4,bb4] ~@3]/2", // G5 G Gsus2 G5 Gm
  AN: "[[d4,a4,c5]@4 g1 ~ [d4,g4]@2 g1 ~@3 g1 ~@3 eb1@2 ~@2 eb1@2 ~@2 [d4,a4,c5] ~@3 [eb1,d4]@2 ~@2, g1@2 ~@4 bb4 ~@7 [bb3,eb4,g4]@6 ~@4 eb1@2 ~@2 [g4,bb4] ~@3]/2", // D7 G5 D7 Ebmaj7 Eb Gm
  AO: "[[d4,a4,c5]@4 eb1@2 [eb4,bb4] ~ eb1 ~@3 eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2, eb1@2 ~@4 g4@2 ~@6 g4@15 ~@51, ~@14 [bb3,eb4]@13 ~@3 [c4,f4,a4]@14 ~@2 [d4,g4,bb4]@32 ~@2]/5", // D7 Eb5 F Gm
  AP: "g1@3 ~ g1@2 ~@2 [d4,a4,c5] ~@3 [g1,d4]@2 ~@2, ~@8 g1@2 ~@2 [g4,bb4] ~@3", // D7 G5 Gm
  AQ: "[[d4,a4,c5]@4 eb1@2 [eb4,bb4] ~ eb1 ~@3 eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 [c4,f4,a4]@4 [c4,f4,a4]@2 f1@2 ~@2 [c4,f4,a4]@4 ~@2 [g1,d4,g4,bb4]@2, eb1@2 ~@4 g4@2 ~@6 g4@15 ~@19, ~@14 [bb3,eb4]@13 ~@13 f1@2 ~@6]/3", // D7 Eb5 F Gm Eb5
})).s("gm_piano").gain(0.27).pan(0.2)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@7 A@4 B@2 C@6 D@2 E@2 ~@16 F@5 G@7 H@4 I@5 J@7 K ~@15 H@4 I@5 L@7 M@4 N@2 O@6 P@2 Q@7 G@7 H@4 I@5 J@7 K ~@7 R@8 S@8
  T U@7 V ~ W@7 X@5 Y ~
>`.pickRestart({
  A: "[~@14 [f3,bb3,d4]@31 ~ [f3,bb3,d4]@5 ~ [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [g3,bb3,eb4] ~@3]/4", // Bb Eb Bb Eb
  B: "[[f3,bb3,d4]@5 ~ [g3,bb3,eb4]@6 ~@2 [f3,bb3,d4]@5 ~ [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [g3,bb3,eb4] ~@3]/2", // Bb Eb Bb Eb Bb Eb
  C: "[[f3,bb3,d4]@4 ~@2 [g3,bb3,eb4]@6 ~@2 [g3,c4,eb4]@7 ~ [f3,bb3,d4]@23 ~ [f3,bb3,d4]@26 bb3@2 c4@2 d4 ~ [f3,bb3,d4]@5 ~ [bb3,eb4] ~@3 [f3,bb3] ~@3 [bb3,eb4] ~@3, ~@42 g3 ~ d4 ~ g3 ~]/6", // Bb Eb Cm Bb Eb5 Bb5 Eb5
  D: "[[f3,bb3,d4]@4 ~@2 [g3,bb3,eb4]@7 ~ [f3,bb3,d4]@5 ~ [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [bb3,eb4] ~@3, ~@14 g3 ~]/2", // Bb Eb Bb Eb Bb Eb5
  E: "[[f3,bb3,d4]@2 ~ [g3,bb3,eb4]@3 ~ [eb4,g4,c5]@3 ~ [d4,f4,bb4]@5]/2", // Bb Eb Cm Bb
  F: "[~@14 [c4,e4,a4]@31 ~ [bb3,d4,g4]@14 ~@2 [a3,c4,f4]@15 ~@3]/5", // Am Gm F
  G: "[[c4,e4,a4]@27 ~@3 [bb3,d4,g4]@32 [bb3,eb4,g4]@16 [c4,f4,a4]@16 [eb4,g4,bb4]@18]/7", // Am Gm Eb F Eb
  H: "[[eb4,g4,bb4] ~@13 [d4,g4,bb4]@27 ~ [c4,f4,a4] ~@3 [bb3,eb4,g4]@18]/4", // Eb Gm F Eb
  I: "[~@6 [bb3,eb4,g4] ~@3 [c4,f4,a4] ~@3 [bb3,eb4,g4]@15 ~ [c4,f4,a4]@14 ~@2 [d4,g4,bb4]@27 ~ [f4,a4] ~@5, ~@37 c4 ~@2]/5", // Eb F Eb F Gm F
  J: "[[bb3,d4,g4]@24 ~@2 [c4,f4,a4] ~@3 [bb3,eb4,g4]@27 ~ [c4,f4,a4] ~@3 [bb3,eb4,g4]@14 ~@2 [c4,f4,a4]@15 ~ [d4,g4,bb4]@14 [f4,g4] [a4,bb4] [c5,d5] [eb5,f5]]/7", // Gm F Eb F Eb F Gm Fsus2 …
  K: "[bb4,d5,g5] ~@7", // Gm
  L: "[[bb3,d4,g4]@24 ~@2 [c4,f4,a4] ~@23 g5@2 a5 ~ bb5@2 ~@2 [c4,f4,a4] ~@3 [bb3,eb4,g4,bb5]@14 ~@2 [c4,f4,a4,c6]@15 ~ [d4,g4,bb4]@14 [f4,g4] [a4,bb4] [c5,d5] [eb5,f5], ~@30 [bb3,eb4,g4]@27 ~ c6@2 ~@34 g6@18]/7", // Gm F Eb F Gm Fsus2 Bbmaj7 Csus2 …
  M: "[[bb4,d5,g5]@2 ~@12 [f3,bb3,d4]@29 ~@3 [bb3,d4,f4]@5 ~ [bb3,g4]@2 ~@2 [d4,f4]@2 ~@2 [bb3,eb4] ~@3, ~@52 eb4 ~@3 bb3 ~@3 g4@2 ~@2]/4", // Gm Bb Eb Dm Eb5
  N: "[[bb3,d4,f4]@5 ~ [bb3,eb4,g4]@6 ~@2 [bb3,d4,f4]@5 ~ [bb3,g4]@2 ~@2 [bb3,f4]@2 ~@2 [bb3,eb4,g4]@2 ~@2, ~@20 eb4 ~@3 d4 ~@7]/2", // Bb Eb Bb Eb Bb5 Eb
  O: "[[bb3,d4,f4]@4 ~@2 [bb3,eb4,g4]@6 ~@2 [c4,eb4,g4]@6 ~@2 [bb3,d4,f4]@19 ~ [bb3,d4,f4] ~@3 [f3,bb3,d4]@29 ~@3 [bb3,d4,f4]@5 ~ [bb3,eb4,g4] ~@3 [bb3,d4] ~@3 [eb4,g4]@2 ~@2, ~@88 f4@2 ~@2 bb3 ~@3]/6", // Bb Eb Cm Bb Eb Bb Eb
  P: "[[bb3,d4,f4]@5 ~ [bb3,eb4,g4]@6 ~@2 [bb3,d4,f4]@5 ~ [bb3,eb4,g4]@2 ~@2 [bb3,d4,f4]@2 ~@2 [bb3,eb4,g4]@2 ~@2]/2", // Bb Eb Bb Eb Bb Eb
  Q: "[[bb3,d4,f4]@5 ~ [bb3,eb4,g4]@6 ~@2 [c4,eb4,g4]@6 ~@2 [bb3,d4,f4]@23 ~ [c4,e4,a4]@31 ~ [bb3,d4,g4]@14 ~@2 [a3,c4,f4]@15 ~@3]/7", // Bb Eb Cm Bb Am Gm F
  R: "[~@24 [d4,c5]@2 ~@2 [g4,bb4] ~@3 [d4,a4,c5]@5 ~ [d4,g4]@2 ~@34 [c4,f4,a4] ~@3 [bb3,eb4,g4]@16 ~@2 f2@13 ~ [g2,d4,g4,bb4]@18, ~@14 [d4,g4,bb4]@9 ~ a4 ~@3 d4@2 ~@8 bb4 ~@7 [bb3,eb4,g4]@26 ~@22 [c4,f4,a4]@14 ~@20, ~@16 g2@31 ~ eb2@47 ~@33]/8", // D7 Gm D7 G5 F Eb Gm Eb …
  S: "[[g4,bb4,d5] ~ [g4,bb4,d5] ~ [f4,a4,c5]@2 ~@2 [d4,g4,bb4]@2 ~@2 [c4,f4,a4] ~ [d4,g4,bb4]@26 [f4,a4,c5]@4 ~@2 [eb4,g4,bb4]@26 ~@2 [c4,f4,a4] ~@3 [bb3,eb4,g4]@15 ~ [c4,f4,a4]@14 ~@2 [d4,g4,bb4]@18]/8", // Gm F Gm F Gm F Eb F …
  T: "~@8 [d4,g4,bb4] ~ [f4,a4,c5] ~@5", // Gm F
  U: "[[d4,g4,bb4]@22 ~@2 [f4,a4,c5]@4 ~@2 [eb4,g4,bb4]@26 ~@2 [f4,a4] ~@3 [bb3,eb4,g4]@14 ~@2 [c4,f4,a4]@14 ~@2 [d4,g4,bb4]@17 ~, ~@29 c4 ~@26]/7", // Gm F Eb F Eb F Gm
  V: "[g4,bb4,d5] ~ [g4,bb4,d5] ~ [a4,c5] ~@3 [g4,bb4] ~@3 [c4,f4,a4]@4, ~@2 f4 ~ d4 ~@3", // Gm Am Gm F
  W: "[~@8 [f4,a4,c5]@4 ~@2 [eb4,g4,bb4]@26 ~@2 [c4,f4,a4] ~@3 [bb3,eb4,g4]@15 ~ [c4,f4,a4]@14 ~@2 [d4,g4,bb4]@25 ~ [d4,g4,bb4] ~ [f4,a4,c5] ~@5]/7", // F Eb F Eb F Gm F
  X: "[[d4,g4,bb4]@22 ~@2 [f4,a4,c5]@4 ~@2 [eb4,g4,bb4]@26 ~@2 [f4,a4] ~@3 [bb3,eb4,g4]@14 ~@2 [c4,f4,a4]@2, ~@29 c4 ~@10]/5", // Gm F Eb F Eb F
  Y: "[c4,f4,a4] ~@6 [d4,g4,bb4]", // F Gm
})).s("gm_synth_brass_1").gain(0.32)

// bass · electric bass finger
const bass = note(`<
  ~@7 A@2 B C D E F G H I J C K L@2 M N O B C D E F G P I J C K L@2 M Q R S T U S@2 T V W X Y Z AA AB AC AD AE AF O AG
  AA AH AC AI AE AJ AA AK O B C D E F G P I J C K L@2 M AL AA AB AC AD AE AF O AG AA AH AC AI AE AJ AA AK O B C D E F G
  P I J C K L@2 M Q R S T U S@2 T V W X Y Z AA AB AC AD AE AF O AG AA AH AC AI AE AJ AA AG AA AB AC AD AE AF O AG AM ~@6
  AN AO AP AQ AR AQ AJ AS AT AU AV AW AX AY AZ T BA AO AP AQ AR AQ AJ AS AT AU AV AW AX AY BB ~
>`.pickRestart({
  A: "[~@14 g1@5 ~ g1@2 ~@2 g1@3 ~ g1@2 ~@2]/2", B: "g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@3 ~", C: "c2 ~ c2 ~ c2 ~ c2 ~",
  D: "c2@2 ~@2 c2@2 ~@2 c2@2 c2 ~ d2@2 ~@2", E: "eb2@2 ~@2 eb2@3 ~ eb2@3 ~ eb2@3 ~",
  F: "eb2@3 ~ eb2@2 ~@2 eb2@2 ~@2 eb2@2 f2@2", G: "bb1@3 ~ bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~",
  H: "bb1@2 ~@2 bb1@3 ~ bb1@4 a1@3 ~", I: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~", J: "g1@3 ~ g1@2 ~@2 g1@2 ~@2 g1 ~ bb1@2",
  K: "c2@2 ~@2 c2@2 ~@2 c2 ~ c2 ~ d2@3 ~", L: "eb2 ~ eb2 ~ eb2 ~ eb2 ~", M: "bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  N: "bb1@2 bb2 ~ bb1@2 bb2 ~ bb1@2 bb2 ~ bb1@2 bb2 ~", O: "g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 ~@2",
  P: "bb1@2 ~@2 bb1@2 ~@2 f1@3 ~ gb1@2 ~@2", Q: "bb1@2 ~@2 bb1@2 ~@2 d2 ~ f2@2 ~@2 a1@2",
  R: "a1 ~@3 a1@2 ~@2 a1@2 ~@2 a1@2 ~@2", S: "a1@3 ~ a1@2 ~@2 a1@2 ~@2 a1@2 ~@2", T: "g1@3 ~ g1@3 ~ g1@3 ~ g1@2 ~@2",
  U: "d2@3 ~ d2@2 ~@2 d2@2 ~@2 d2@2 g1@2", V: "g1@2 ~@2 g1@3 ~ a1@3 ~ bb1@3 ~", W: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 ~@2",
  X: "d2@3 ~ d2@3 ~ d2@3 ~ d2@2 ~@2", Y: "f2@3 ~ f2@2 ~@2 f2@3 ~ f2@2 c2 ~", Z: "f1 ~@7", AA: "g1 ~ g1 ~ g1 ~ g1 ~",
  AB: "g1 ~ g1 ~ g1 ~ f1 ~", AC: "eb1 ~ eb1 ~ eb1 ~ eb1 ~", AD: "eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ f1@3 ~",
  AE: "eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@3 ~", AF: "f1 ~ f1 ~ f1 ~ f1@2", AG: "g1 ~ g1 ~ g1 ~ g1 f1",
  AH: "g1@2 ~@2 g1@2 ~@2 g1@4 f1@3 ~", AI: "eb1@2 ~@2 eb1@3 ~ eb1@2 ~@2 eb1 ~ f1@2",
  AJ: "f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@3 ~", AK: "g1 ~ g2 ~ g1@2 f1 ~ g1@2 g2 ~ g1 ~ f1 ~", AL: "bb1 ~@7", AM: "g1 ~@7",
  AN: "~@8 g1 ~ g1@2 f1 ~ f1 ~", AO: "g1@3 ~ g1@2 ~@2 g1@2 ~@2 g1@2 ~@2", AP: "g1@3 ~ g1@3 ~ g1@2 ~@2 f1@2 ~@2",
  AQ: "eb1@3 ~ eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2", AR: "eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2 f1@3 ~",
  AS: "g1@2 g2@2 g1@2 ~@2 g1@2 ~@2 g1@2 g2 ~", AT: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 f1@3 ~",
  AU: "g1@2 g2 ~ g1@2 ~@2 g1@2 ~@2 g1@2 g2 ~", AV: "g1@2 ~@2 g1@2 ~@2 g1@2 g2 ~ f1@2 ~@2",
  AW: "eb1@2 eb2 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 ~@2", AX: "eb1@2 ~@2 eb1@2 ~@2 eb1@2 eb2 ~ f1@2 f2@2",
  AY: "eb1@3 ~ eb1@2 ~@2 eb1@2 ~@2 eb1@2 eb2 ~", AZ: "f1@2 ~@2 f1@2 ~@2 f1@2 f2 ~ f1@3 ~",
  BA: "g1@2 ~@2 g1@3 ~ g1 ~ f1@2 g1 ~ f1 ~", BB: "f1@2 ~@2 f1@2 ~@2 f1@5 ~ g1@2",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · rock organ
const rock_organ = note(`<
  ~@40 A@8 B@3 C@2 D@2 E@6 F@6 ~@8 G ~@7 C@2 D@2 E@6 F@6 ~@17 A@8 B@3 H@5 I@8 J@4 ~@23 K@8 L ~@7 M@7 ~
>`.pickRestart({
  A: "[[a5,e6]@30 [f5,bb5,d6]@15 ~ [f5,a5,c6]@15 ~ [g5,c6,e6]@31 ~ f5@17 ~ g5@6 a5@2 bb5@4 c6@3 ~, c6@28 ~@66 d6@33 ~, ~@94 bb5@21 ~@13]/8", // A5 Bb F C
  B: "[[eb5,g5,bb5]@12 ~@2 [f5,a5,c6]@15 ~ [f5,f6]@18]/3", // Eb F
  C: "[~@8 [f3,g3] [a3,bb3,c4] [d4,eb4,f4] [g4,a4,bb4] [c5,d5,eb5] [f5,g5,a5] [bb5,c6,d6] [eb6,f6] ~@16, ~@15 g6@17]/2", // Fsus2 Am Dm Gm Cm F Bb Ebsus2
  D: "[~@8 [bb5,d6,f6]@5 ~ [bb5,eb6,g6]@18]/2", // Bb Eb
  E: "[~@10 [c6,f6,a6] ~@3 [bb5,g6]@15 ~ [a5,c6,f6]@15 ~ [bb5,d6,g6]@31 ~ [bb5,d6,g6]@18, ~@14 eb6@13 ~@69]/6", // F Eb F Gm
  F: "[~@14 [bb5,eb6,g6]@31 ~ [bb5,eb6,g6]@15 ~ [a5,c6,f6]@15 ~ [g5,g6]@18]/6", G: "f6",
  H: "[~@8 [f3,g3] [a3,bb3,c4] [d4,eb4,f4] [g4,a4,bb4] [c5,d5,eb5] [f5,g5,a5] [bb5,c6,d6] [eb6,f6] ~@24 a5@6 g5@27 ~ a5 ~@5, ~@15 g6@24 ~@41]/5", // Fsus2 Am Dm Gm Cm F Bb Ebsus2
  I: "[g5@8 bb5 ~@3 d6@2 c6@8 ~@2 f6@5 ~ d6@31 ~ g5@25 ~ a5@5 ~ g5@26 ~@2 f5 ~@5]/8",
  J: "[g5@7 ~ bb5 ~@3 d6@2 c6@8 ~@2 f6@5 ~ g6@32 g5@2]/4",
  K: "[~@8 [f4,g4] b4 [c5,d5] [e5,f5] g5 [a5,b5,c6] [d6,e6,f6] g6@79 a6@16 g6@18, ~@4 a4 ~@59]/8", // Fsus2 Csus2 Fmaj7 Am Dm
  L: "~@11 [c6,d6,e6,f6] [a5,b5] ~@3", // Dm7 Asus2
  M: "[~@8 [f4,g4] b4 [c5,d5] [e5,f5] g5 [a5,b5,c6] [d6,e6,f6] g6@79 ~@2 f6@14 g6@2, ~@4 a4 ~@42 a6@8 ~]/7", // Fsus2 Csus2 Fmaj7 Am Dm
})).s("gm_rock_organ").gain(0.22)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@8 A B C D E F G H A B C D E F G H I J K L M N O P I Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY I J K L M N O P I Q R S T U V AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY I J K L
  M N O P I Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AQ ~@16 AZ BA@2
  BB@2 BC BD BE AZ BA@2 BB@2 BC BD BE AZ BA@2 BB@2 BC BD BE AZ BA@2 BB@2 BF ~
>`.pickRestart({
  A: "~@4 g2 ~@3 g2 ~ g2 ~ f3 ~@3", B: "g3 ~@4 g2 [bb3,d4,g4] ~@5 g2 ~@3", C: "~@4 c3 ~@5 c3 ~ f3 ~@3",
  D: "g3 ~@3 c3 ~@3 c3 ~ [bb3,d4,g4] ~@5", E: "eb2 ~@3 eb2 ~@3 eb2 ~ eb2 ~ f3 ~@3", F: "g3 ~@3 eb2 ~@3 eb2 ~@7",
  G: "~@4 bb1 ~@3 bb1 ~@7", H: "bb1 ~ bb3 ~ bb1 ~ bb1 ~ bb3 ~ bb3 ~@5", I: "g1@2 ~@2 g1 ~ g2 ~ g1 ~ g1 ~ f3 ~ g1 ~",
  J: "g3 ~@3 g1 ~ [bb3,d4,g4] ~@5 g1 ~@3", K: "c2 ~@3 c2 ~ c3 ~ c2 ~ c2 ~ f3 ~ c2 ~",
  L: "g3 ~ c2 ~ c2 ~@3 c2 ~ [bb3,d4,g4] ~ c2 ~@3", M: "eb2 ~@3 eb2 ~@3 eb2 ~ eb2 ~ f3 ~ eb2 ~",
  N: "g3 ~@3 eb2 ~@3 eb2 ~ f3 ~ eb2 ~@3", O: "bb1@2 ~@2 bb1 ~@3 bb1 ~@3 bb1 ~@3",
  P: "bb1 ~ bb3 ~ bb1 ~ bb1 ~ bb3 ~ bb3 ~ bb1 ~@3", Q: "g3 ~@3 g1 ~ [bb3,d4,g4] ~ g1 ~@3 g1 ~@3",
  R: "c2 ~@3 c2 ~@3 c2 ~ c2 ~ f3 ~ c2 ~", S: "g3 ~ c2 ~ c2 ~ g3 ~@3 c2 ~ d2 ~@3",
  T: "eb2@2 ~@2 eb2@2 ~@2 eb2 ~ eb2 ~ f3 ~ eb2 ~", U: "g3 ~ eb2 ~@3 eb2 ~@3 eb2 ~@5",
  V: "bb1 ~@3 bb1 ~@3 bb1 ~@3 bb1 ~@3", W: "bb1 ~ bb3 ~ bb1 ~@3 d2 ~ f2 ~@3 a1 ~",
  X: "~@8 [c4,a4] ~ [c4,a4] ~@3 [e4,a4] ~", Y: "~@8 a4 ~ [c4,a4] ~@3 g4 ~", Z: "~@8 [d4,g4] ~@5 [c4,f4] ~",
  AA: "~@6 [c4,f4] ~@3 [c4,f4] ~@5", AB: "~@10 a4 ~@3 a4 ~", AC: "~@8 [c4,e4] ~ [c4,e4,a4] ~@3 [d4,g4] ~",
  AD: "~@8 [bb3,d4,g4] ~@5 [d4,g4] ~", AE: "~@6 [d4,g4] ~@3 [d4,g4] ~@5",
  AF: "~@4 [eb4,g4] ~@3 [eb4,g4] ~ [eb4,g4] ~@5", AG: "~@4 [f4,a4] ~@3 [f4,a4] ~ [f4,a4] ~@5",
  AH: "~@4 [eb4,bb4] ~@3 [eb4,bb4] ~ [eb4,bb4] ~@5", AI: "[f4,bb4] ~@15", AJ: "~@2 g2 ~ g1 ~ g1 ~ g2 ~ g1 ~ f3 ~@3",
  AK: "g3 ~@3 g1 ~@3 g1 ~ [bb3,d4,g4] ~@5", AL: "~@10 f3 ~ [f3,bb3,d4]@2 ~@2",
  AM: "[g3,bb3,eb4]@2 ~@2 [f3,bb3,d4] ~ [g3,bb3,eb4] ~@3 [a3,c4,f4] ~@3 [g3,bb3,eb4] ~", // Eb Bb Eb F Eb
  AN: "eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2 ~ f3 ~", AO: "f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@3", AP: "g2 ~@3 g3 ~@3 g2 ~ g3 ~@5",
  AQ: "g3 ~ g2 ~ g2 ~ g3 ~ g2 ~ f3 ~@3 g3 ~", AR: "~@2 g1 ~ g2 ~ g1 ~ g1 ~ g1 ~ f3 ~@3",
  AS: "g3 ~@3 g1 ~ [bb3,d4,g4] ~@3 g1 ~@5", AT: "eb1 ~@3 eb1 ~@3 eb1 ~ g3 ~ f3 ~@3",
  AU: "g3 ~@3 eb1 ~@3 eb1 ~ [bb3,eb4] ~@5", AV: "eb1 ~@3 eb1 ~ g3 ~ eb1 ~ g3 ~ f3 ~@3",
  AW: "~@4 f1 ~ g3 ~ f1 ~ g3 ~ f3 ~ g3 ~", AX: "g1 ~@3 g1 ~@3 g1 ~ g3 ~ f3 ~@3",
  AY: "g1 ~@3 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2", AZ: "g1 ~@3 g1 ~@3 g1 ~ g1 ~ f3 ~@3",
  BA: "[g3 ~@3 g1 ~@3 g1 ~@3 f1 ~ eb1@4 ~@2 eb1@2 ~@2 eb1 ~ eb1 ~ f3@2 ~@2]/2",
  BB: "[g3 ~@3 eb1 ~@3 eb1 ~ f1 ~@3 eb1@4 ~@2 eb1 ~@3 eb1 ~ eb1 ~ f3@2 ~@2]/2", BC: "g3 ~@3 f1 ~@3 f1 ~ f3 ~@3 g3 ~",
  BD: "g1 ~@3 g1 ~@3 g1 ~ [bb3,d4,g4] ~@3 g1 ~", BE: "~@2 g1 ~@7 [bb3,d4,g4] ~@5", BF: "f1@2 ~@2 f1@2 ~@2 f1@5 ~ g1@2",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B@2 C A B A B A B A B A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B D E A B A B A B
  A@3 B A B A@3 C A B A B A B A B A B A B A B A E A B A B A B A@3 B A B A@3 C A B A B A B A B A B A B A B A C A B A B A
  B A B A B@2 E A B A B A B A@3 B A B A@5 B A B A B A@3 B A B A@5 B A B A B A@3 B A B A@5 B A B A B A@3 B A B A F ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~@2", C: "x!4", D: "x ~ x!2", E: "x", F: "x ~@2 x ~@3 x",
})).gain(0.6)

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

// drums · clap
const clap = s("cp").struct("<~@144 [~ x ~ x]!46 ~>").gain(0.67)

// drums · hihat
const hihat = s("hh").struct(`<
  A@7 B A@15 B A@26 C ~ D A@6 C D A@6 B A@15 ~ D A@6 C D A@6 ~ A@15 ~ D A@9 E ~ D A@6 C D A@6 C D A@6 C D A@6 C D A@6 C
  D A@6 C D A@6 C D A@4 C ~
// … 64 more lines

More by Hooker John Lee