Strudelify
Hip to Be Square cover art

1986 · Fore!

Hip to Be Square

Huey Lewis

KeyE majorTempo141 bpm
0:00/0:00
// Hip to Be Square — Huey Lewis
// 141 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 "JAZZ GTR" electric guitar jazz (copy of ch 3 "PICK BASS" electric bass pick)
// note: Full arrangement: all 142 bars on a 16-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): MUTED GTR.
setcpm(141/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 · percussive organ · "ORGAN 2"
const percussive_organ = note("<~@12 A ~@3 A ~@15 A ~@3 A ~@43 A ~@3 A ~@57>".pickRestart({
  A: "~@2 [d5,e5] ~@3 [d5,e5] ~@3 [d5,e5] ~@5", // Dsus2
})).s("gm_percussive_organ").gain(0.12).pan(0.9)

// bass · electric bass pick · "PICK BASS"
const bass = note(`<
  ~ A B A B A C A D A E F G A H I J K@2 L@2 M N O P A B A Q A E F R A H I J K@2 L@2 M N O P S B F T A C A Q U@14 V W A B
  A X A B A Q A E F Y A H I J K@2 L@2 K@2 Z@2 AA M N O P A B A AB A B A Q A B A AB A B A AC A B A AB A B A AC A B A AB A
  B A AC A B A AB A B A AC AD@2 AE ~
>`.pickRestart({
  A: "e2 e1@2 g#1 ~ g#1 ~ g#1", B: "a1 g#1 a1 ~@2 a1 b1 d2", C: "a1@2 g#1@2 a1@2 ~@4 a1 ~ b1@2 d2@2",
  D: "a1@2 g#1@2 a1@2 ~@2 b1@3 ~ d2@3 ~", E: "a1 ~@3 a1 ~@5 a1 ~ b1@2 d2@2", F: "e2@2 e1@4 g#1 ~@3 g#1@2 ~@2 g#1@2",
  G: "a1@2 ~@2 a1 ~@5 a1 ~ b1 ~ d2@2", H: "a1 ~@3 a1 ~@5 a1@2 b1 ~ d2 ~", I: "e2@2 e1@4 g#1@2 ~@2 g#1 ~@3 g#1@2",
  J: "a1@2 g#1 ~ a1@2 ~@4 d2@2 e2@2 g2 ~", K: "[a1!7 g1@2 g1!7]/2", L: "[a1!4 b1!3 e1@2 e1!3 g#1 b1 c#2 e2]/2",
  M: "f#1!8", N: "g#1!8", O: "a1!8", P: "b1 ~@3", Q: "a1 ~ a1 ~ b1@2 d2@2", R: "a1@2 g#1@2 a1@3 ~ a1 ~ g#1@2 b1@2 d2@2",
  S: "e2@2 e1@4 g#1 ~@3 g#1 ~@3 g#1@2", T: "a1 ~ g#1@2 a1@2 ~@10", U: "e1!8", V: "e1!7 f1",
  W: "f#1!2 a1 a#1 b1!2 d2 d#2", X: "a1 ~ g#1@2 a1@2 ~@4 a1@2 b1@2 d2@2", Y: "a1 ~ a1@2 ~ a1 b1 d2",
  Z: "[a1!4 b1!3 e1@2 e1!7]/2", AA: "e1!4 g#1 b1 c#2 e2", AB: "a1 g#1 a1 ~@5", AC: "a1@2 ~@2 a1@2 ~@2 b1@3 ~ d2@3 ~",
  AD: "e1/2", AE: "~@5 e1 e1@6 ~@4",
})).s("gm_electric_bass_pick").gain(0.29)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  A B@8 C ~@2 D E ~@3 F@2 G@2 H I J K L M L N O ~@2 D E ~@3 F@2 G@2 H I J P Q M Q M R S Q T U V W V W V U V U H U H W V
  U X Y Z AA AB AA AB AA AC AD ~@2 D E ~@3 AE@2 AF@2 AG@2 AH@2 AI H I AJ AK Q AL Q AM Q S AN AO AP@8 AQ@8 AR AS AT@2 AU
  AV AW@2 AX@8 AY@2 AZ ~
>`.pickRestart({
  A: "~@10 [e2,f2,g2] [a2,b2,c3,d3,e3,f3,g3,a3,b3,c4,d4,e4,f4] [g4,a4,b4,c5,d5,e5,f5] [a3,b3,c4,d4,e4,f4,g4] [f3,g3,a3,b3,c4,d4,e4,f4] [g4,a4,b4,c5,d5,e5,f5,g5,a5,b5]", // Em Am7 G7 Am7 Fmaj7 G7
  B: "[[c6,d6] ~@59 a5@3 ~ [g#5,b5,c#6]@15 ~ [g5,b5,c#6]@15 ~ [g#5,c#6]@16 [g5,b5,c#6]@5 ~@2 [g4,a4,b4,c5] [a5,b5,c#6,e6]@4 [b5,c#6,e6]@4, e6@29 ~@3, ~@3 d6 ~@4, ~@52 c#6@11 ~@65, ~@56 b5@7 ~@33 b5@14 ~@10 [d5,e5,f#5] ~@7]/8", // Csus2 C#7 C#m7b5 C#5 C#m7b5 Cmaj7 A C#m7 …
  C: "[b5,c#6,e6] ~@3, a5 ~@15", D: "~@3 [a5,c#6,e6]", E: "[g#5,b5,e6] ~@15", F: "[[c#5,e5,a5]@7 [b4,d5,g5]@9]/2",
  G: "[[c#5,e5,a5]@8 [d5,f#5,a5]@6 [b4,e5,g#5]@17 ~]/2", H: "[c#5,e5,a5]", I: "[e5,g#5,b5]", J: "[g5,b5,d6]@15 ~",
  K: "[a5,c#6,e6]@3 [e5,f5,g5] d5 ~@11", L: "~@6 [g#5,b5,e6] ~@7 [f#5,c6]@2", M: "[g5,c#6]@2 [f#5,c6]@2 [g5,c#6] ~@11",
  N: "c#6@2 [f#5,c6]@2 [g5,c#6]@2 ~@2 [a5,c#6]@4 [a5,c#6,e6]@3 ~, g5 ~@15", O: "[g#5,b5,e6]@3 [f5,g5] e5 ~@11",
  P: "[a5,c#6,e6]@2 ~ [d5,e5,f5,g5] ~@12", Q: "~@6 [g#5,d6,e6] ~@7 [f#5,c6]@2",
  R: "~@6 [g#5,d6,e6] ~@7 c6@2, ~@14 f#5 ~", S: "[g5,c#6] [f#5,c6] [g5,c#6] ~@5",
  T: "[g5,c#6]@2 ~@2 [g5,c#6]@2 ~@2 [a5,c#6,e6]@3 ~ [a5,d6,e6]@3 ~", U: "[b4,e5,g#5]@15 ~", V: "[c#5,e5,a5]@15 ~",
  W: "[b4,e5,g#5]", X: "[c#5,e5,g5]@2 ~@2 [c#5,e5,g5]@3 ~ [c#5,e5,a5]@2 ~@2 [c#5,e5,a5]@4",
  Y: "[b4,e5,g#5] ~@6 [f#4,c5]", Z: "[g4,c#5] [f#4,c5] [g4,c#5] ~@5", AA: "~@2 [g#4,d5,e5] ~@11 [f#4,c5]@2",
  AB: "[g4,c#5]@2 [f#4,c5]@2 [g4,c#5] ~@11", // Gdim F#dim Gdim
  AC: "[g4,c#5]@2 [f#4,c5]@2 c#5@2 ~@2 [a5,c#6,e6]@3 ~ [a5,c#6,e6]@3 ~, ~@4 g4 ~@11", // Gdim F#dim A
  AD: "[g#5,b5,e6]@2 ~ [f5,g5] [b4,c5,d5,e5] ~@11", AE: "[[c#5,e5,a5]@14 [b4,d5,g5]@17 ~]/2",
  AF: "[[c#5,e5,a5]@8 [d5,f#5,a5]@5 ~ [b4,e5,g#5]@18]/2", AG: "[[c#5,e5,a5]@14 [d5,g5,b5]@17 ~]/2",
  AH: "[[c#5,e5,a5]@8 [d5,f#5,a5]@5 ~ [e5,g#5,b5]@18]/2", AI: "[g#5,b5,e6]@15 ~", AJ: "[d5,g5,b5]",
  AK: "[a5,e6] ~@7, c#6 ~@15", AL: "[g5,c#6] [f#5,c6] c#6 ~@5, ~@4 g5 ~@11",
  AM: "[g5,c#6] f#5 [g5,c#6] ~@5, ~@2 c6 ~@13", AN: "~@6 [g#5,d6,e6] ~@9",
  AO: "[g5,c#6,e6]@2 ~@2 [g5,c#6,e6]@2 ~@2 [a5,c#6,e6]@3 ~ [a5,c#6,e6]@4", AP: "[e5@30 [a5,c#6,e6]!2]/8",
  AQ: "[~@46 a#5 b5 ~@12 [a5,b5] ~@27 d6@31 [d5,e5,f5] [a5,c#6,e6]@3 ~ [a5,c#6,e6]@3 [b5,c6,d6], e6@59 ~@5, ~@46 d6@13 ~ c#6@4 b5@54 ~@2 g5 ~@7]/8", // Asus2 Dm A Bm
  AR: "a5 ~@3 [b5,d6,e6]@2 ~@6 [b5,d6,e6,g6]@2 ~@2", AS: "~@4 [b5,d6,e6]@2 ~@5 [d5,e5,f5,g5,a5] [b5,c#6,e6,a6]@3 ~",
  AT: "[~@4 [g5,b5,d6,e6]@2 ~@8 [d5,e5,f5] [b5,e6,g6]@2 ~ [a5,c#6,f#6] ~ [g5,b5,e6] ~ [a5,c#6,f#6] ~ [b5,d6,g6]@2 [a5,c#6,f#6] ~ [g5,b5,e6]@2 [a5,c#6,f#6] ~, ~@15 g5 ~@16]/2", // Em7 Dm Em F#m Em F#m G F#m …
  AU: "~@4 [b5,d6,e6]@2 ~@6 [b5,e6,g6]@3 ~, ~@12 d6 ~@3", // E7 Em
  AV: "~@4 [g5,b5,d6,e6]@2 ~@5 e5 [b5,d6,e6,a6]@3 ~, ~@12 [f5,g5] ~@3", // Em7 Bm7 Fsus2
  AW: "[~@4 [b5,d6,e6]@2 ~@8 [b5,e6,g6]@4 ~ [d5,e5,f5] [a5,d6,f#6]@3 [c5,d5,e5] [g5,b5,e6]@3 [c5,d5] [f#5,a5,d6]@3 [d5,e5], ~@4 g5 ~@19 f5 ~@3 e5 ~@3]/2", // E7 Em Dm D C Em Csus2 D …
  AX: "[[b5,d6,e6]@127 b4, [f5,g5] ~@127]/8", AY: "[[b5,d6,e6]@31 ~, [d5,e5,g5] ~@31]/2",
  AZ: "~@5 [b5,d6,e6] [b5,d6,e6]@6 ~@4", // E7
})).s("gm_rock_organ").gain(0.1)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~ A B C D E D A F G ~@6 H I@2 J@2 K L M N O P E Q R ~@6 H I@2 J@2 K L M N E D S T E D A U V@4 W@8 X@3 Y S Z E AA A D
  AB AC AD ~@6 H AE@2 AF@2 AG@2 AH@3 K L M AI E D S T E D A AJ E D AK T E D A AJ E D S T E D A AL E D AM AN E D E AL AB
  D AK T E D A AO AP@2 AQ ~
>`.pickRestart({
  A: "e3@2 e2 ~@3 g#2@2 ~@2 g#2@2 ~@2 g#2@2", B: "a2@2 g#2@2 a2 ~@5 a2@2 b2@2 d3@2",
  C: "e3@2 e2 ~@3 g#2@2 ~@2 g#2 ~@3 g#2@2", D: "a2 g#2 a2 ~@2 a2 b2 d3", E: "e3@2 e2 ~@3 g#2 ~@3 g#2@2 ~@2 g#2@2",
  F: "a2@2 g#2@2 a2 ~@3 b2@4 d3@4", G: "e3@2 [b2,c3,d3] [g2,a2] [e2,f2] ~@11", H: "~@15 [e2,f2,f#2,g2]",
  I: "[[a2,e3,a3]@7 [g2,d3,g3]@9, g#2 ~@31]/2", J: "[[a2,e3,a3]@4 [a2,d3,a3]@3 [e2,b2,e3]@4 e2 g#2 b2 c#3 e3]/2",
  K: "[f#2,f#3]", L: "[g#2,g#3]", M: "[a2,a3]", N: "[b2,f#3,b3]@2 ~ [c#3,d3,d#3,e3] [a#2,b2,c3] ~@11",
  O: "e3 e2 ~ g#2 ~ g#2 ~ g#2", P: "a2@2 g#2 ~ a2@2 ~@4 a2@2 b2@2 d3@2", Q: "a2 ~@3 a2@2 ~@2 b2@4 d3@4",
  R: "~ d3 [b2,c3] [g2,a2] [e2,f2] d2 ~@10, e3 ~@7", S: "e3@2 e2 ~@3 g#2 ~@3 g#2 ~@3 g#2@2", T: "a2 g#2 a2 ~@5",
  U: "a2@2 ~@2 a2@2 ~@2 b2@4 d3@2 ~ [a2,a#2,b2,c3]", V: "[[e2,b2,e3]@31 [a2,d3], d3 ~@63]/4",
  W: "[[e2,b2,e3]@31 [a2,d3]]/4", X: "[e2,b2,e3]/3", Y: "f#2!2 a2 a#2 b2!2 d3 d#3",
  Z: "a2@2 g#2 ~ a2@2 ~@4 a2 ~ b2@2 d3@2", AA: "a2 ~ g#2 ~ a2@2 ~@4 a2 ~ b2@2 d3@2",
  AB: "e3 ~ e2 ~@3 g#2 ~@3 g#2@2 ~@2 g#2@2", AC: "a2@2 ~@2 a2@2 ~@2 b2@3 ~ d3@3 ~",
  AD: "e3@2 [c3,c#3,d3] [g#2,a2,a#2,b2] [e2,f2,f#2,g2] ~@11", AE: "[[a2,e3,a3]@14 [g2,d3,g3]@17 ~, g#2 ~@31]/2",
  AF: "[[a2,e3,a3]@8 [a2,d3]@5 ~ [e2,b2,e3]@6 ~@2 e2@2 g#2@2 b2@2 c#3@2 e3@2]/2", // A5 D5 E5
  AG: "[[a2,e3,a3]@14 [g2,d3,g3]@17 ~]/2", AH: "[[a2,e3,a3]@4 [a2,d3]@3 [e2,b2,e3]@13 g#2 b2 c#3 e3]/3",
  AI: "[b2,b3]@2 [c3,d3] [g2,a2,a#2,b2] [e2,f2] ~@11", AJ: "a2@2 ~@2 a2@2 ~@2 b2@4 d3@3 ~",
  AK: "e3@2 e2@2 ~@2 g#2@2 ~@2 g#2 ~@3 g#2@2", AL: "a2 ~ a2 ~ b2@2 d3@2", AM: "e3@2 e2@2 ~@2 g#2 ~@3 g#2 ~@3 g#2@2",
  AN: "a2@2 g#2@2 a2 ~@11", AO: "a2@2 ~@2 a2@2 ~@2 b2@4 d3@2 ~ [f2,f#2,g2,g#2,a2,a#2,b2]",
  AP: "[[e2,b2,e3], [c3,d3] ~@31]/2", AQ: "~@5 [e2,b2,e3] [e2,b2,e3]@6 ~@4",
})).s("gm_distortion_guitar").gain(0.3)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@77 [~@2 b2 g2 ~@12] ~@64>").s("gm_electric_guitar_muted").gain(0.07)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note(`<
  ~ A B A B A B A B C D E F G H G I ~@8 A B A B C D E F G H G I ~@8 A B A B A B A J ~@24 C D E F G H G I ~@13 A B A B A
  B A J A B A B A B A J A B A B A B A J A B A B A B A J A B A B A B A J ~@4
>`.pickRestart({
  A: "[g#3,d4] ~@5 [g#3,d4] ~@7 [f#3,c4]@2", B: "[g3,c#4]@2 [f#3,c4]@2 [g3,c#4] ~@11",
  C: "~@2 [g#3,d4] ~@3 [g#3,d4] ~@3 e3 ~@3 e3 ~", D: "[g3,c#4] ~ [g3,c#4] ~ [f#3,c4] ~ [g3,c#4] ~@7 e3 ~",
  E: "e4 ~ [b3,d4] ~@3 [g#3,d4] ~@3 e3 ~@3 e3 ~", F: "[a3,c#4] ~@3 [a3,c#4] ~@3 [g3,b3] ~@3 [g3,b3] ~@3",
  G: "e4 ~ [b3,d4] ~@3 [b3,d4] ~@7 e3 ~", H: "[a3,c#4] ~ [a3,c#4] ~@3 [a3,c#4] ~@3 e3 ~@5",
  I: "[a3,c#4] ~ [a3,c#4] ~ [a3,c#4] ~@3 [g3,b3] ~@3 [g3,b3] ~@3", J: "[g3,c#4]@2 ~@2 [g3,c#4] ~@11",
})).s("gm_electric_guitar_muted").gain(0.22).pan(0.7)

// bass · baritone sax · "BARITONSAX"
const bass_2 = note("<~@53 A@2 B@2 C@2 D@2 E F G H I@3 J K ~@72>".pickRestart({
  A: "[e2@31 ~]/2", B: "[e2@14 ~ d2]/2", C: "[e2@29 ~ d2 ~]/2", D: "[e2@10 a2@13 ~ g2@2 f#2@2 e2@2 ~@2]/2",
  E: "e2@13 ~ c#2@2", F: "~@2 e2 ~ f#2@2 c#2 ~ e2@4 g2 ~ d2@2", G: "e2@7 c#2",
  H: "a2@2 g2 ~ f#2@2 e2@2 ~@2 d3 ~@3 e3@2", I: "[~@2 e2@21 ~]/3", J: "f#2 ~ f#2@2 a2 ~ a#2 ~ b2 ~ b2 ~ d2 ~ d#2 ~",
  K: "e2 ~@3",
})).s("gm_baritone_sax").gain(0.19).pan(0.8)

// other · brass section · "BRASS 1"
const brass_section = note("<~@53 A B C D A E F@2 G H I J K L M N O ~@52 P@2 Q@2 R@4 P@2 S@2 P@2 T@2 ~@4>".pickRestart({
  A: "~@2 b3 ~ c#4 ~ e4@5 ~ c#4 ~@3", B: "~@2 b3 ~ c#4 ~ e4@5 ~ f#4@2 ~@2", C: "~@2 b3 ~ c#4 ~ e4@4 ~@2 c#4 ~ e4 ~",
  D: "g4@2 e4 ~ f#4 ~ c#4 ~ e4@3 ~ c#4@2 ~@2", E: "~@2 b3 ~ c#4 ~ e4@5 ~ f#4 ~@3",
  F: "[~@2 e4@2 f#4 ~ g4@4 g4 ~ a4 ~ b4@5 ~ a4 ~ b4 ~ g4@2 f#4 ~ e4 ~@3]/2",
  G: "~@2 [g4,b4] g4!2 [g4,b4] ~@2 [g4,b4] g4!2 ~@3 c#4@2", H: "~@2 e4 ~ f#4 ~ c#4 ~ e4@3 ~ g4 ~@3",
  I: "~@2 [b4,d5] ~@2 [b4,d5] b4!2 [b4,d5] ~@5 c#4 ~", J: "a4 ~ g4 ~ f#4 ~ e4@3 ~ d5 ~@3 e5@2",
  K: "d5 [a4,b4,c#5] ~@6 e4@8", L: "a4 d5", M: "e5@15 ~", N: "g5@2 ~@2 g5@2 ~@2 f#5@2 ~@2 e5@3 ~", O: "e5@4 c5 a4 ~@10",
  P: "[~@2 b3@2 c#4 ~ e4@26]/2", Q: "[~@2 g4@2 f#4 ~ e4@25 ~]/2", R: "[~@2 b3@2 c#4 ~ e4@27 ~ g4@2 f#4 ~ e4@25 ~]/4",
  S: "[~@2 g4@2 f#4 ~ e4@26]/2", T: "[~@2 g4@2 f#4 ~ e4@18 ~@8]/2",
})).s("gm_brass_section").gain(0.24)

// other · brass section · "BRASS 1" · soft notes · G Bm Em
const brass_section_soft = note(`<
  ~@61
  [~@3 b4!2 ~ [g4,b4]!2 ~ b4!2 ~@5]
  ~
  [~@4 [b4,d5] ~ d5!2 ~ [b4,d5]!2 ~@5]
  ~@5
  [~@5 [e4,g4] ~@10]
  ~@72
>`).s("gm_brass_section").gain(0.15)

// other · tenor sax
const tenor_sax = note("<~@69 A@2 B C D E F@2 ~@65>".pickRestart({
  A: "[~@4 g5@16 ~@2 e5 d5 ~ b4 a#4 a4 g4 e4 d4 b3]/2", B: "d4@3 ~ e4 ~ g4@2 ~@6 a4@2",
  C: "~ a#4 a4 g4 b4 ~ g4 ~ e4 ~ b3 ~ d4@2 e4@2", D: "~@2 a#4 b4 a#4 a4 g4 e4 a4 g4 e4 d4 b3 a#3 a3 g3",
  E: "a3 b3 d4 ~ e4 ~ d4 ~ e4 ~ g#4 ~ b4 ~ c#5 ~", F: "[d5@3 ~ e5 ~ g5@2 ~@6 b5@10 ~ a5 g5 e5 a5 e5@3]/2",
})).s("gm_tenor_sax").gain(0.34).pan(0.6)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A ~@7 B ~@15 B ~@19 B ~@9 C ~ C ~ C ~ C ~ C ~ C ~ C ~@30 B ~@40 D ~@3>".pickRestart({
  A: "~ x", B: "~ x ~@2", C: "~@3 x", D: "~@13 x ~ x",
})).gain(0.45)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@24 A ~@19 A ~@31 B ~@16 C ~@3 A ~@7 D ~@32 E ~@2 A>".pickRestart({
  A: "~ x ~@2", B: "~ x!2 ~@5", C: "~@5 x!3", D: "~ x ~@6", E: "~@11 x!2 ~@3",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B@3 A B C D A B@7 A B E F A@3 ~ A B@2 D A B@7 A B@3 A@3 ~ A B E ~ A B@2 G A C B C B C B C A C B C A C B H A B@2 I
  A B@2 D A B@6 J A B@3 A B K B@2 A@3 ~ A B E ~ A B@2 L A B E ~ A B E ~@29
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~", D: "x", E: "x ~ x ~ x ~ x!2", F: "~ x!2 ~ x ~ x ~", G: "x!3 ~@5", H: "x ~ x ~ x!4",
  I: "x ~ x ~ x!2 ~@2", J: "x ~ x ~ x!3 ~", K: "~ x ~ x", L: "x!2 ~@2",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@93 [~ x] ~@39 [~@5 x ~@2] ~@8>").gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
// … 17 more lines

More by Huey Lewis