Strudelify
Summer In The City cover art

Hums Of The Lovin' Spoonful

Summer In The City

The Lovin' Spoonful

KeyC minorTempo111 bpm
0:00/0:00
// Summer In The City — The Lovin' Spoonful
// 111 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 10, 4/4 at bar 11, 2/4 at bar 25, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K@3 L M N@2 O P Q R S T U V@4 W X@2 Y ~@5 Z AA AB AC AD P Q R S T U V@4 W X@2 Y ~@5 Z AA AB AC AD
  P Q R S T U V@4 AE ~
>`.pickRestart({
  A: "ab2@8 g2 ~@7", B: "ab2@7 ~ g2@2 ~@6", C: "ab2@8 g2@2 ~@2 g2@3 ~", D: "c2@3 ~ c2@4 bb1@3 ~ bb1@4",
  E: "a1@4 a1@4 ab1@3 ~ ab1@2 g1@2", F: "c2@3 ~ c2@4 bb1@4 bb1@4", G: "a1@4 a1@4 ab1@4 g1@3 ~",
  H: "g1@3 ~ g1@4 b1@3 ~ b1@3 ~", I: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", J: "c2 ~ c2 ~ c2 ~ c2@2 f1@6 c2@2",
  K: "bb1@2 d2 f2 f1@3 c2", L: "bb1@4 d2@2 f2@2 d2@5 ~ d2@2", M: "g2@6 a1@2 d2@5 ~ d2@2", N: "g2@5 ~ a1@2 d2@5 ~ d2@2",
  O: "g2@5 ~ g2@2 c2@3 ~ c2@4", P: "bb1@3 ~ bb1@4 a1@4 a1@4", Q: "ab1@3 ~ ab1@2 g1@2 c2@3 ~ c2@4", R: "bb1!2 a1!2",
  S: "ab1@4 g1@3 ~ g1@3 ~ g1@4", T: "b1@3 ~ b1@3 ~ c2@3 ~ c2@3 ~", U: "c2@3 ~ c2@3 ~ c2 ~ c2 ~ c2 ~ c2@2",
  V: "f1@3 c2 bb1@2 d2 f2", W: "d2@5 ~ d2@2 g2@6 a1@2", X: "d2@5 ~ d2@2 g2@5 ~ a1@2", Y: "d2@5 ~ d2@2 g2@5 ~ g2@2",
  Z: "~@8 c3@5 ~ c3 ~", AA: "bb2@5 ~ bb2@2 a2@5 ~ a2@2", AB: "ab2@5 ~ g2@2 c3 ~ c3@3 ~ c3 ~",
  AC: "bb2@5 ~ bb2@2 a2@5 ~ a2 ~", AD: "ab1@4 g1@4 c2@3 ~ c2@4", AE: "d2",
})).s("gm_acoustic_bass").gain(0.56)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B C D E F@2 G H@5 I J K L@2 M@2 N O P Q R@3 S T U V W X Y Z@2 ~@3 AA@3 M@2 N O P Q R@3 S T U V W X Y Z@2 ~@3 AA@3
  M@2 N O P Q R@3 ~@2
>`.pickRestart({
  A: "ab3@8 g3 ~@7", B: "ab3@8 g3 ~@3 [g2,b3,d4,f4,g4]@3 ~, ~@12 e4 ~@3",
  C: "[c4,eb4,g4]!3 ~ [bb3,eb4,g4]!4, c3@3 c4@5, ~@3 [eb4,g4] ~@4, ~@7 c3@9", // Cm Eb
  D: "[a3,eb4,g4]@4 [a3,eb4,g4]@2 ~ c3 [ab3,c4,eb4,ab4]@4 g4 ~ g4@2, c3@3 [a3,eb4,g4] ~@2 [g3,b3,d4]@2", // Am7b5 Ab Am7b5 G
  E: "[c4,eb4,g4]!3 ~ [bb3,eb4]!2 [bb3,eb4,g4]!2, c3@3 c4@5, ~@3 [eb4,g4] g4@2 ~@2, ~@7 c3@9", // Cm Eb5 Eb
  F: "[[a3,eb4,g4]@4 [a3,eb4,g4]@2 ~ c3 [ab3,c4,eb4,ab4]@4 [g3,b3,d4,g4]@3 ~ [b3,d4,f4,g4]@4 ~@2 g3@2 [b3,d4,f4]@4 ~@2 g3@2, c3@6 [a3,eb4,g4]@2 ~@7 g3@7 ~@2 g3@6 ~@2, ~@5 [b3,d4,f4,g4] ~ [b3,d4,f4]]/2", // Am7b5 Ab G G7 Bdim Am7b5 G7 Bdim
  G: "[g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~ [g3,c4,e4,g4] ~ [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2", // Cm C
  H: "[[g3,c4,e4,g4]@2 ~@2 [c4,e4,g4]@2 [g3,c4,e4,g4] ~ [f4,a4]@7 ~ bb4@5 ~@3 [c4,f4,a4]@6 ~@2 bb4@5 ~@3 a4@6 ~@2 bb4@4 ~@3 [f4,a4]@6 ~@3 bb4@6 ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]!2, ~@2 [g3,c4,e4,g4]@2 ~@4 c4@5 ~@2 [d4,f4]@7 ~@8 d4@6 ~@3 [c4,f4]@6 ~ d4@6 ~@2 c4@6 ~@2 d4@7 ~@11, ~@3 g3@3 ~@25 f4@6 ~@10 f4@5 ~@11 f4@6 ~@11]/5", // C F Dm C Dm F5
  I: "[d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4]!2 ~ [d4,g4,b4]!2 [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]!2", // G Dm
  J: "[d4,g4,b4]!5 ~ [d4,g4,b4]!2 [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]!2", // G Dm
  K: "[d4,g4,b4]!2 ~ [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4]!2 [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]!2", // G Dm
  L: "[[d4,g4,b4]!2 ~ [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4] [d4,e4,g4,b4] [c4,eb4,g4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2 ~@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [a3,eb4,g4]@4 [a3,eb4,g4]@2 ~ c3, ~@4 c3@3 c4@5 ~@3 [a3,eb4,g4], ~@7 [eb4,g4] ~@8, ~@15 c3@9 c3@7 ~]/2", // G Em7 Cm Eb Am7b5 Eb
  M: "[[ab3,c4,eb4,ab4]@4 g4 ~ g4@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2 ~@2 [bb3,eb4]@2 [bb3,eb4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [a3,eb4,g4]@4 [a3,eb4,g4]@2 ~ c3, ~@2 [g3,b3,d4]@2 c3@3 c4@5 ~@3 [a3,eb4,g4], ~@7 [eb4,g4] g4@2 ~@6, ~@15 c3@9 c3@7 ~]/2", // Ab Cm Eb5 Eb Am7b5 G Am7b5 Eb
  N: "[ab3,c4,eb4,ab4]@4 [g3,b3,d4,g4]@3 ~ [b3,d4,f4,g4]@4 ~@2 g3@2, ~@7 g3@7 ~@2, ~@3 [b3,d4,f4,g4]", // Ab G G7
  O: "[b3,d4,f4]@4 ~@2 g3@2 [g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~ [g3,c4,eb4,g4] ~, g3@3 ~@5, ~ [b3,d4,f4] ~@2", // Bdim Cm Bdim
  P: "[g3,c4,e4,g4] ~ [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 ~@2 [c4,e4,g4]@2 [g3,c4,e4,g4] ~, ~@5 [g3,c4,e4,g4] ~@2, ~@11 g3@3 ~@2", // C
  Q: "[f4,a4]@7 ~ bb4@5 ~@3, c4@5 ~@2 [d4,f4]@7 ~@2", // F Dm
  R: "[[c4,f4,a4]@6 ~@2 bb4@5 ~@3 a4@6 ~@2 bb4@4 ~@3 [f4,a4]@6 ~@3 bb4@6 ~@2, ~@6 d4@6 ~@3 [c4,f4]@6 ~ d4@6 ~@2 c4@6 ~@2 d4@7 ~@3, ~@7 f4@6 ~@10 f4@5 ~@11 f4@6 ~@3]/3", // F F5
  S: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]!2 [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4]!2 ~ [d4,g4,b4]!2", // Dm G
  T: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,g4,b4]!5 ~ [d4,g4,b4]!2", // Dm G
  U: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,g4,b4]!2 ~ [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4]!2", // Dm G
  V: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]@2 [d4,f4,a4]!2 [d4,g4,b4]!2 ~ [d4,g4,b4] [d4,g4,b4]@2 [d4,g4,b4] [d4,e4,g4,b4]", // Dm G Em7
  W: "g3@2 ~ f3 eb3 f3 ~ g3 ~ f3 ~ eb3 ~ f3@2 ~", X: "ab3@2 ~ gb3 eb3 gb3 ~ ab3 ~ gb3 ~ eb3 ~ gb3@2 ~",
  Y: "g3@3 f3 eb3 f3 ~ g3 ~ f3 ~ eb3 ~ f3@2 ~", Z: "[ab3@2 ~ gb3 eb3 gb3 ~ ab3 ~ gb3 ~ eb3@2 gb3@11 ~@8]/2",
  AA: "[~@16 [c4,eb4,g4]!2 ~@2 [b3,d4,g4]!3 g3 [c4,eb4,g4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2 ~@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [a3,eb4,g4]@4 [a3,eb4,g4]@2 ~ c3, ~@15 ab3@8 ~@23 [a3,eb4,g4]@2, ~@18 [c4,eb4]@5 ~@7 c4@10 ~@8, ~@9 g4 ~@5 [eb4,g4] ~@8, ~@19 g3@4 ~ c3@7 c3@9 c3@7 ~]/3", // Cm G Cm Eb Am7b5 Cm Eb
})).s("gm_acoustic_guitar_steel").gain(0.52)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D E F G H I J K@3 L M@3 N O P Q R S T U@4 V W@3 X Y Z AA@2 AB AC AD AE AF O P Q R S T U@4 V W@3 X Y Z AA@2 AB AC
  AD AE AF O P Q R S AG U@4 AH@2
>`.pickRestart({
  A: "[ab2,ab3]@8 [g2,g3] ~@7", B: "[ab2,ab3]@7 ~ [g2,g3]@2 ~@6", C: "[ab2,ab3]@4 [g2,g3] ~@3",
  D: "[c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~ [c4,d4,g4] [c4,eb4]@2 ~ [c4,eb4,g4]@2 bb3@2, ~@8 bb3@5 ~@3, ~@9 g4 ~@6", // Cm Csus2 Cm
  E: "[c4,d4,g4] [c4,eb4]@2 ~ [c4,eb4,g4]@2 a3 ~ [c4,eb4,g4] [c4,d4,g4] ~@2 [c4,d4,g4] ~ [c4,d4,g4] ~, a3@5 ~@3 ab3@4 g3@2 ~@2, ~ g4 ~@14", // Csus2 Cm Csus2
  F: "[c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~ [c4,d4,g4] [c4,eb4,g4]@2 ~ [c4,eb4,g4]@2 bb3@2, ~@8 bb3@5 ~@3", // Cm Csus2 Cm
  G: "[c4,d4,g4] [eb4,g4]@2 ~ [c4,eb4,g4]@2 a3 ~ [c4,eb4,g4] [c4,d4,g4]@2 ~ [c4,d4,g4] ~ [c4,g4]@2, a3@5 ~@3 ab3@5 ~ [g3,d4] ~, ~ c4 ~@14", // Csus2 Eb Cm Csus2 C5 G5
  H: "[g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~ [g3,b3,f4]@3 ~ [g3,b3,f4]@3 ~", // G G7
  I: "[g3,c4,eb4]@3 ~ [g3,c4,eb4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~", // Cm C
  J: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [c3,f3,a3]@5 ~ [c3,f3,a3] ~", // C F
  K: "[d3,f3,bb3]@5 ~ [d3,f3,bb3] ~ [c3,f3,a3]@5 ~ [c3,f3,a3] ~", // Bb F
  L: "[d3,f3,bb3]@5 ~ [d3,f3,bb3] ~ [d3,f3,g3,a3] ~ [d3,f3,a3] ~ [d3,f3,a3] ~ [d3,f3,a3] ~", // Bb Dm
  M: "[d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [d3,f3,a3] ~ [d3,f3,a3] ~ [d3,f3,a3] ~ [d3,f3,a3] ~", // G Dm
  N: "[d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~", // G Cm
  O: "[c4,d4,g4] [c4,eb4]@2 ~ [c4,eb4,g4]@2 bb3@2 [c4,d4,g4] [c4,eb4]@2 ~ [c4,eb4,g4]@2 a3 ~, bb3@5 ~@3 a3@5 ~@3, ~ g4 ~@7 g4 ~@6", // Csus2 Cm Csus2 Cm
  P: "[c4,eb4,g4] [c4,d4,g4] ~@2 [c4,d4,g4] ~ [c4,d4,g4] ~ [c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~, ab3@2 g3 ~@5", // Cm Csus2 Cm
  Q: "[c4,d4,g4] [c4,eb4,g4]@2 ~ [c4,eb4,g4]@2 bb3@2 [c4,d4,g4] [eb4,g4]@2 ~ [c4,eb4,g4]@2 a3 ~, bb3@5 ~@3 a3@5 ~@3, ~@9 c4 ~@6", // Csus2 Cm Csus2 Eb Cm
  R: "[c4,eb4,g4] [c4,d4,g4]@2 ~ [c4,d4,g4] ~ [c4,g4]@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@3 ~, ab3@5 ~ [g3,d4] ~@9", // Cm Csus2 C5 G G5
  S: "[g3,b3,f4]@3 ~ [g3,b3,f4]@3 ~ [g3,c4,eb4]@3 ~ [g3,c4,eb4]@3 ~", // G7 Cm
  T: "[g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  U: "[c4,f4,a4]@5 ~ [c4,f4,a4] ~ [d4,f4,bb4]@5 ~ [d4,f4,bb4] ~", // F Bb
  V: "[d4,f4,g4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // Dm G
  W: "[d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,g4,b4] ~", // Dm G
  X: "g3@2 ~ f3 eb3 f3 ~ g3 ~ f3 ~ eb3 ~ f3@2 ~", Y: "ab3@2 ~ gb3 eb3 gb3 ~ ab3 ~ gb3 ~ eb3 ~ gb3@2 ~",
  Z: "g3@3 f3 eb3 f3 ~ g3 ~ f3 ~ eb3 ~ f3@2 ~", AA: "[ab3@2 ~ gb3 eb3 gb3 ~ ab3 ~ gb3 ~ eb3@2 gb3@11 ~@8]/2",
  AB: "~@8 [c5,eb5,g5]@3 ~ [c5,eb5,g5]@3 ~", // Cm
  AC: "[c5,d5,g5] [c5,eb5] ~@2 [c5,eb5,g5]@3 ~ [c5,d5,g5] [c5,eb5,g5]@2 ~ [c5,eb5,g5]@3 ~, ~ g5@2 ~@13", // Csus2 Cm Csus2 Cm
  AD: "[c5,eb5,g5] [c5,d5,g5]@2 ~ [c5,d5,g5] ~ [c5,d5,g5] ~ [c5,eb5,g5]@3 ~ [c5,eb5,g5]@3 ~", // Cm Csus2 Cm
  AE: "[c5,d5,g5] [c5,eb5,g5]@2 ~ [c5,eb5,g5]@3 ~ [c5,d5,g5] [c5,eb5,g5]@2 ~ [c5,eb5,g5]@3 ~", // Csus2 Cm Csus2 Cm
  AF: "[c5,eb5,g5] [c5,d5,g5]@2 ~ [c5,d5,g5] ~ [c5,d5,g5] ~ [c4,eb4,g4]@3 ~ [c4,eb4,g4]@3 ~", // Cm Csus2 Cm
  AG: "[g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4] ~, ~@7 e4", // C C5
  AH: "[[d2,d3,a3,d4,f4]@3 ~]/2", // Dm
})).s("gm_piano").gain(0.66)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A@3 B@4 C@2 D E@3 F G@3 H@7 I@3 J K@3 L M@4 N@5 O@7 I@3 J K@3 L M@4 N@5 O@7 I@3 J P ~
>`.pickRestart({
  A: "ab4@4 g4 ~@3",
  B: "[~@8 [bb3,bb4]@8 [a3,a4]@8 [ab3,ab4]@4 [g3,g4]@4 ~@8 [bb3,bb4]@8 [a3,a4]@8 [ab3,ab4]@4 [g3,g4]@3 ~, [c4,eb4,c5,eb5]@63 ~]/4", // Bb A Ab G Bb A Ab G …
  C: "[[d4,d5]@7 ~ [f4,f5]@8 [eb4,eb5]@8 [e4,e5]@7 ~, [g3,g4]@31 ~, [b3,b4]@13 ~@3 [c4,c5]@15 ~]/2", // D F Eb E G B C
  D: "[g3,c4,e4,g4,c5,e5] ~ [g3,e4,g4,e5] ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,g4,c5] ~ [a3,c4,f4,a4,c5,f5]@8, ~ [c4,c5] ~ [e4,e5] ~@4", // C C5 F C E
  E: "[f3,bb3,d4,f4,bb4,d5] [a3,c4,f4,a4,c5,f5]", F: "[f3,bb3,d4,f4,bb4,d5]@7 ~ [f3,a3,d4,f4,a4,d5]@8",
  G: "[b3,d4,g4,b4,d5,g5] [f3,a3,d4,f4,a4,d5]", // G Dm
  H: "[[b3,d4,g4,b4,d5,g5]@7 ~@9 [bb3,bb4]@8 [a3,a4]@8 [ab3,ab4]@4 [g3,g4]@4 ~@8 [bb3,bb4]@8 [a3,a4]@8 [ab3,ab4]@4 [g3,g4]@3 ~ [d4,d5]@7 ~ [f4,f5]@8 [eb4,eb5]@8 [e4,e5]@7 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,e4,g4,e5] ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,g4,c5] ~, ~@8 [c4,eb4,c5,eb5]@63 ~ [g3,g4]@31 ~@9, ~@72 [b3,b4]@13 ~@3 [c4,c5]@15 ~@3 [c4,c5]@2 ~@2 [e4,e5]@2]/7", // G Bb A Ab G Bb A Ab …
  I: "[a3,c4,f4,a4,c5,f5] [f3,bb3,d4,f4,bb4,d5]", J: "[a3,c4,f4,a4,c5,f5]@8 [f3,bb3,d4,f4,bb4,d5]@7 ~",
  K: "[f3,a3,d4,f4,a4,d5] [b3,d4,g4,b4,d5,g5]", L: "[f3,a3,d4,f4,a4,d5]@8 [b3,d4,g4,b4,d5,g5]@7 ~",
  M: "[g5 gb5 g5 gb5, [bb4,eb5]]/4", N: "[c4,c5,c6]/5",
  O: "[~@16 [bb3,bb4]@8 [a3,a4]@8 [ab3,ab4]@4 [g3,g4]@4 ~@8 [bb3,bb4]@8 [a3,a4]@8 [ab3,ab4]@4 [g3,g4]@3 ~ [d4,d5]@7 ~ [f4,f5]@8 [eb4,eb5]@8 [e4,e5]@7 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,e4,g4,e5] ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,g4,c5] ~, ~@8 [c4,eb4,c5,eb5]@63 ~ [g3,g4]@31 ~@9, ~@72 [b3,b4]@13 ~@3 [c4,c5]@15 ~@3 [c4,c5]@2 ~@2 [e4,e5]@2]/7", // Bb A Ab G Bb A Ab G …
  P: "[d4,f4,a4,d5]@9 ~@7", // Dm
})).s("gm_rock_organ").gain(0.44)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  A@3 B@3 C B ~ D B@3 E B@7 F G H B@3 I B@4 ~@9 J B@3 F G H B@3 I B@4 ~@9 J B@3 F G H B@3 I K ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@4 x", D: "x!4 ~@2 x ~", E: "~@4 x!4 ~@4 x ~@3", F: "~@3 x ~@2 x ~",
  G: "~ x ~@2", H: "~@4 x!4", I: "~@4 x ~@7 x!4", J: "~@3 x!2 ~@7 x ~@3", K: "x",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct("<A@2 B A@29 C@4 A D E@3 F A@14 C@4 A D E@3 F A@10 ~@2>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x ~@2 x!3 ~ x ~ x ~ x ~ x ~@2", D: "x!2 ~ x", E: "~ x ~ x", F: "~ x!3",
})).gain(0.54)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@3 A@29 ~@9 B A@14 ~@9 B A@10 ~@2>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@5 x ~ x",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@6 A ~@14 B ~@18 C D ~@3 B ~@18 C D ~@3 B ~@8>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@3 x!2 ~@11", C: "~@15 x", D: "x",
})).gain(0.54)

// drums · open hat
const open_hat = s("oh").struct("<~@2 [~@3 x] ~@73 x ~>").gain(0.54)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@3 A ~ B ~@3 C ~ C ~ C ~@3 C ~ C A ~@3 A ~ A ~@10 C ~@3 C ~ C A ~@3 A ~ A ~@10 C ~@3 C ~ C A ~@3 A ~
>`.pickRestart({
  A: "x", B: "x!2", C: "~ x",
})).gain(0.54)

// drums · ride
const ride = s("rd").struct("<~@36 x ~@23 x ~@17>").gain(0.54)

stack(
  bass, acoustic_guitar_steel, piano, rock_organ, kick, snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, crash,
  ride
)

More by The Lovin' Spoonful