Strudelify
My Sharona cover art

1979 · Get the Knack

My Sharona

The Knack

KeyG minorTempo152 bpm
0:00/0:00
// My Sharona — The Knack
// 152 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 135, 4/4 at bar 136) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 electric guitar clean (copy of ch 5 distortion guitar)
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(152/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@7 A@2 B@2 C ~@3 C ~@3 D@2 E@3 F@3 G H C ~@3 C ~@3 D@2 E@3 I@2 H G H J K@2 H J L@2 H J M@2 H J K@2 N O H B@2 A@2 B@2
  C ~@3 C ~@3 D@2 E@3 P@2 H J Q@2 H G H G H G H R@3 S@2 T U T V T U T V T W T V T U T U T U T V T U T X T U T Y T U N Z
  AA AB AC AB AC AB AC AB AC AB AC AD AE AB AC AD AF AB AC AD AG
>`.pickRestart({
  A: "[[g3,c4,e4]@4 [g3,c4] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [f3,bb3,d4]@4 f2@4 g2@2 g3@2 g3@2 g2@2 ~@2 g3@2 ~@2]/2", // C C5 C Bb
  B: "[g2 ~ g3 ~ g2!2 g3 f2@2 g2 g3!2 g2 ~ g3 ~]/2",
  C: "[g3,c4,e4]@4 [g3,c4] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [f3,bb3,d4]@4 ~@2", // C C5 C Bb
  D: "[[g3,c4,e4]@4 [g3,c4] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [f3,bb3,d4]@4 f2@4 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2]/2", // C C5 C Bb G5
  E: "[[g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [f3,bb3,d4]@33 ~]/3", // G5 Bb
  F: "[[g3,c4,e4]@6 [g3,c4,e4]@4 [g3,c4] ~ [bb3,eb4,g4]@6 [bb3,eb4,g4]@4 [bb3,eb4] ~ [bb3,eb4,g4]@3 ~ f2@6 g2@2 g3@2 g3@2 g2@2 ~@2 g3@2 ~@2]/3", // C C5 Eb Eb5 Eb
  G: "g2 ~ g3 ~ g2!2 g3 f2", H: "g2!2 g3!2 g2 ~ g3 ~",
  I: "[[g3,c4,e4]@6 [g3,c4,e4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@6 [bb3,eb4,g4]@6 [bb3,eb4,g4]@3 ~ f2@4]/2", // C Eb
  J: "g2 ~ g3 ~ g2!2 g3 ~",
  K: "[[c4,f4]@6 [c4,e4]@2 ~@4 [bb3,f4]@6 [bb3,eb4]@3 ~@3 [c4,f4,a4]@2 [bb3,eb4,g4]@2 [c4,f4,a4]@2 [d4,e4,f4,g4] [b3,c4,d4,e4]]/2", // F5 C Bb5 Eb5 F Eb F Em7 …
  L: "[[c4,f4]@6 [c4,e4]@4 ~@2 [bb3,f4]@6 [bb3,eb4]@5 ~ [c4,f4,a4]@2 [bb3,eb4,g4]@2 [c4,f4,a4]@2 [d4,e4,f4,g4] [b3,c4,d4,e4]]/2", // F5 C Bb5 Eb5 F Eb F Em7 …
  M: "[[c4,f4]@6 [c4,e4]@2 ~@4 [bb3,f4]@6 [bb3,eb4]@5 ~ [c4,f4,a4]@2 [bb3,eb4,g4]@2 [c4,f4,a4]@2 [d4,e4,f4,g4] [b3,c4,d4,e4]]/2", // F5 C Bb5 Eb5 F Eb F Em7 …
  N: "[d3,a3,d4]!8", O: "[d3,a3,d4]!5 ~ f2@2",
  P: "[[g3,c4,e4]@6 [g3,c4,e4]@4 [g3,c4] ~ [bb3,eb4,g4]@6 [bb3,eb4,g4]@4 [bb3,eb4] ~ [bb3,eb4,g4]@3 ~ f2@4]/2", // C C5 Eb Eb5 Eb
  Q: "[[g3,c4,e4]@6 [g3,c4,e4]@4 ~@2 [bb3,eb4,g4]@6 [bb3,eb4,g4]@6 [bb3,eb4,g4]@3 ~ f2@4]/2", // C Eb
  R: "[g2@2 ~@2 g3@2 ~@2 g2@2 g2@2 g3@2 ~@2 [c4,e4]@4 [c4,e4] ~ [b3,d4]@2 [b3,d4]@4 [b3,d4] ~ [c4,f4]@2 [c4,f4]@4 [c4,f4] ~ [c4,e4]@2 [c4,e4]@2 [c4,e4] ~ [b3,d4]@4, ~@15 c3@32 ~, ~ g3@2]/3", // C Bm F5 C Bm
  S: "[[c4,e4]@4 [c4,e4] ~ [b3,d4]@2 [b3,d4]@4 [b3,d4] ~ [c4,f4]@2 [c4,f4]@4 [c4,f4] ~ [c4,e4]@2 [c4,e4]@2 [c4,e4] ~ [b3,d4]@4, [c3,g3]]/2", // C Bm F5 C Bm C5
  T: "[c3,g3,c4,e4]@4 [g3,c4,e4] ~ [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@4 [g3,b3,d4] ~ [f3,a3,c4,f4]@2", // C G F
  U: "[f3,a3,c4,f4]@4 [f3,a3,c4] ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 ~ [g3,d4]", // F G G5
  V: "[f3,a3,c4,f4]@4 [f3,a3,c4] ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 ~@2", // F G
  W: "[f3,a3,c4,f4]@4 [f3,a3,c4] ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,c4,f4]!2 [g3,b3,d4,g4]@2 ~@2", // F F5 G
  X: "[f3,a3,c4,f4]", Y: "[f3,a3,c4,f4]@4 [f3,a3,c4] ~ [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,c4,f4] ~@5",
  Z: "[d3,a3,d4]!5 ~@3", AA: "~@2 f2@2 g2!2 g3!2", AB: "g2 ~ g3 ~ g2 ~ g3 ~", AC: "g2!2 g3 f2 g2!2 g3!2",
  AD: "g2@2 ~@2 g3@2 ~@2 [g3,c4,e4]@4 [g3,c4] ~ [g3,c4,e4]@2", AE: "[g3,c4,e4] [f3,bb3,d4]@2 f2@2 g2 g3!2",
  AF: "[g3,c4,e4] [f3,bb3,d4] ~ f2@2 g2 g3!2", AG: "[g3,c4,e4] [f3,bb3,d4]@3 ~@4",
})).s("gm_distortion_guitar").gain(0.35).pan(0.3)

// bass · electric bass pick
const bass = note(`<
  ~@3 A B C B D B C B D B C B D B C B D E F@2 G H@2 B C B D B C B D B C B D E F@2 G H@2 B C B C I@2 B J I@2 B J I@2 B J
  I@2 K L B C B D B C B D B C B D B C B D E F@2 G H@2 B C I@2 B C B C B C B C M@2 N@2 O P O P O P O P O Q R Q R Q R S O
  T R T O T O U O P O V O P K W X Y Z Y Z Y Z Y Z Y Z AA AB Y Z AA AB Y Z AA AC
>`.pickRestart({
  A: "~@3 d2", B: "g1@2 g1 ~ g2@2 g2 ~ g1@2 ~@2 g2@2 ~@2", C: "g1 ~ g2 ~ g1!2 g2 f1",
  D: "c2@5 ~ bb1@2 c2@2 bb1@3 ~ gb1@2", E: "g1!2 g2!2 g1!2 g2!2",
  F: "[g1!2 g2!2 g1!2 g2 bb1@2 bb1 bb2!2 bb1!2 bb2!2]/2", G: "bb1!2 bb2!2 bb1!2 bb2!2",
  H: "[c2@6 c2@6 eb2@6 eb2@6 eb2@3 ~ f1@4]/2", I: "[c2@3 c2@3 eb2@3 eb2@3 f2 eb2 f2@2]/2", J: "g1 ~ g2 ~ g1!2 g2@2",
  K: "d2!8", L: "d2!5 ~ f1@2", M: "[c2@7 g2]/2", N: "[c3@18 db3 d3@2 db3 d3@2 db3 d3@2 c3@3 g2@2]/2",
  O: "c2@2 ~ g1 g1@2 ~ f1", P: "f1@5 ~ f1@2 f1@4 g1@3 ~", Q: "f1@3 e1 f1 g1 a1 b1", R: "c2@5 ~ g1@2 g1@5 ~ f1@2",
  S: "f1 e1 f1 e1 f1 g1 a1 b1", T: "f1@5 ~ f1@2 f1@2 g1@2 a1@2 b1@2", U: "f1@5 ~ f1@2 c3@3 ~ c3@3 ~, ~@8 b2 ~@3 b2 ~@3",
  V: "f1@5 ~ f1@2 f1@4 ~@4", W: "d2!5 ~@3", X: "~@4 d2@4 g1@2 g1 ~ g2@2 g2 ~", Y: "g1 ~ g2 ~ g1 ~ g2 ~",
  Z: "g1@2 g1@2 g2@2 f1@2 g1@2 g1 ~ g2@2 g2 ~", AA: "g1@2 ~@2 g2@2 ~@2 c2@5 ~ bb1@2",
  AB: "c2@2 bb1@3 ~ gb1@2 g1@2 g1 ~ g2@2 g2 ~", AC: "c2 bb1@3 ~@4",
})).s("gm_electric_bass_pick").gain(0.18)

// other · lead 4 chiff
const lead_4_chiff = note(`<
  ~@11 A@2 B C D E B C D F G F H I@2 J K ~ L@2 M N D O M N D P G P Q R S J K J K ~@23 L@2 B T D E B T U F G F Q V@2 ~ W
  R S J X J Y J Y J Y ~@44 Z@4 AA AB@3 AA AB@3 AC
>`.pickRestart({
  A: "[~@14 f4@4 f4@2 f4 ~ f4 ~ f4@2 f4@2 g3@2 ~@2]/2", B: "~@4 f4 ~ f4@2 g3@2 ~@4 f4@2",
  C: "~@2 f4 ~ f4 ~ f4 ~ f4@2 f4 ~ f4@3 ~", D: "g4@5 ~ g4@2 g4@2 f4@3 ~ f4@2",
  E: "~@2 f4 ~ f4@2 f4 ~ f4 ~ f4@2 g3@2 ~@2", F: "~@2 f4 ~ f4 ~ f4@2 g3@2 ~@2 f4@2 f4@2",
  G: "g3@2 ~@2 f4@2 f4 ~ f4@2 f4 ~ f4 ~ f4@2", H: "g3@2 ~@2 f4@2 f4 ~ f4 ~ f4 ~ f4@2 ~@2, a3 ~@15",
  I: "[g4@5 ~ g4@4 ~@2 g4@6 g4@5 ~ g4@2 d4 ~ bb4@4]/2", J: "~@10 f4 ~ f4 ~ f4 ~", K: "f4@5 ~ f4@2 f4@2 g3@2 ~@4",
  L: "[~@14 f4@4 f4 ~ f4 ~ f4 ~ f4 ~ f4@2 g3@2 ~@2]/2", M: "~@2 f4!2 g3 ~@2 f4",
  N: "~@2 f4 ~ f4@2 f4@2 f4@2 f4 ~ f4@2 ~@2", O: "~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4@2 g3@2 ~@2", P: "~ f4!3 g3 ~ f4!2",
  Q: "g3@2 ~@2 f4@2 f4 ~ f4 ~ f4 ~ f4@2 ~@2", R: "g4@6 g4@3 ~@3 g4@4", S: "~@2 g4@5 ~ g4@2 ~@2 bb4@4",
  T: "~@2 f4 ~ f4@2 f4 ~ f4 ~ f4 ~ f4@2 ~@2", U: "g4@5 ~ g4 ~ g4@2 f4@3 ~ f4@2",
  V: "[g4@5 ~ g4@4 ~@2 g4@6 g4@5 ~ g4@2 ~@2 bb4@4]/2", W: "~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4 ~",
  X: "f4@5 ~ f4 ~ f4@2 bb3 ~@5", Y: "f4@6 f4 ~ f4@2 g3 ~@5", Z: "[~@6 f4@30 ~@2 f4@15 ~@3 g4@5 ~ g4@2]/4",
  AA: "g4@2 f4@5 ~@9", AB: "[f4@21 ~ f4@15 ~@3 g4@5 ~ g4@2]/3", AC: "g4@2 f4@7 ~@7",
})).s("gm_lead_4_chiff").gain(0.31)

// chords · alto sax
const alto_sax = note(`<
  ~@15 A ~@3 A ~@4 B C@2 D ~@5 A ~@3 A ~@4 B E F G H I ~@27 A ~@3 A ~@4 B E ~@2 J@3 G F G F G F K ~@45 L@3 M L@3 N L@3 N
>`.pickRestart({
  A: "[e4,g4]@5 ~ [e4,g4] ~ [e4,g4]@2 [d4,f4]@5 ~", B: "[e4,g4]@6 ~ [e4,g4]@4 ~ [eb4,g4]@4",
  C: "[~@2 [eb4,g4]@5 ~ [eb4,g4]@2 ~@3 [bb4,d5]@5 ~@8 d4 ~ [d4,f4] ~ [d4,f4] ~]/2", // Eb Bb Dm
  D: "[d4,f4]@5 ~ [d4,f4] e4 [d4,f4]@2 ~ g3@2 ~@3, ~@5 d4 ~@2", E: "~@2 [eb4,g4]@5 ~ [eb4,g4]@3 ~ [bb4,d5]@4",
  F: "~@10 [d4,f4] ~ [d4,f4] ~ [d4,f4] ~", G: "[d4,f4]@5 ~ [d4,f4] ~ [d4,f4]@2 [g3,d4]@2 ~@4",
  H: "~@10 [d4,e4,f4] ~ [d4,f4] ~ [d4,f4] ~", I: "[d4,f4]@5 ~ [d4,f4] ~ [d4,f4]@2 [g3,d4]@4 ~@2",
  J: "[[e4,g4]@6 ~ [e4,g4]@3 ~@3 [eb4,g4]@5 [eb4,g4]@5 ~ [eb4,g4]@2 ~@3 [bb4,d5]@5 ~@8 [d4,f4] ~ [d4,f4] ~ [d4,f4] ~]/3", // Em Eb Bb Dm
  K: "[d4,f4]@5 ~ [d4,f4] ~ [d4,f4]@2 [g3,d4]@2 ~@4, ~@10 a3 ~@5", // Dm G5
  L: "[~@24 d4@15 ~ [e4,g4]@5 ~ [e4,g4] ~, ~@8 f4@31 ~@9]/3", M: "~ g4@2 [d4,f4]@5 ~@8, e4 ~@7",
  N: "[e4,g4] [d4,f4]@3 ~@4", // Em Dm
})).s("gm_alto_sax").gain(0.13)

// chords · distortion guitar
const distortion_guitar_2 = note("<~@110 A B A B ~@11 C D E F G ~@2 H I ~@21>".pickRestart({
  A: "~@2 g4!2 ~@2 c5!2 ~@2 g4!2 ~@3 c5, ~@8 c5@5 ~@3", B: "~@2 g4!2 ~@3 c5 ~@8, ~@4 g4@5 ~@7", C: "~ f4", D: "~@7 g4",
  E: "~ g4@3 ~@2 e4@2 e4@2 ~@3 d4@2 ~", F: "~ e4@3 ~@10 g4@2", G: "g4@3 ~@3 e4@2 ~ e4@7", H: "~@6 gb4!2",
  I: "gb4!5 ~@3",
})).s("gm_distortion_guitar").gain(0.1).pan(0.6)

// drums · rim
const rim = s("rim").struct("<~@124 [~@13 x ~@2] ~@30>").gain(0.17)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  A B A B A B A B A B A B A B A B A B A B C@2 D E F G A B A H I B A B A B A B C@2 D E F G A B A J ~@5 K ~@8 L M A B A B
  A B A B A B A B A B A B C@2 D E F G A J ~@2 A B A B A B A J ~@11 N ~@14 O P ~@6 L M Q R S R S R S R S R S J T R S J T
  R U V ~
>`.pickRestart({
  A: "x!2 ~@2 x ~@3", B: "x ~@3 x!2 ~@2", C: "~ x ~@3 x ~@2", D: "~ x", E: "x ~@14 x", F: "x ~@2 x ~@2 x ~",
  G: "~ x ~@2 x ~ x ~", H: "x ~@4 x ~@2", I: "~ x ~@2 x ~@3", J: "x", K: "~ x ~@6", L: "x!8", M: "x!4 ~@4",
  N: "~@3 x ~@4", O: "~@14 x!2", P: "~@9 x ~ x!3 ~ x", Q: "~@4 x!2 ~@2", R: "x!2", S: "x!2 ~@2 x!2 ~@2",
  T: "~@3 x ~ x ~@2", U: "x!2 ~@6", V: "~@7 x ~@8",
})).gain(0.17)

// drums · hihat
const hihat = s("hh").struct(`<
  A@24 ~@2 A@16 ~@2 A@6 ~@2 A@2 ~@4 B C ~@4 A@20 ~@2 A@4 D A E A E A@3 ~@3 D A@31 F G A@19 H
>`.pickRestart({
  A: "x!4", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~@4", D: "~ x!3", E: "~ x ~@2 x ~@3 x ~@3 x ~@3", F: "x!3 ~",
  G: "~@2 x!2", H: "x!2 ~@2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B A C A B A C A B A C A B A C A B A C D@2 ~ E F G A B A H I B A C A B A C D@2 ~ E F G A B A J ~@4 K L ~@8 M N A B A
  C A B A C A B A C A B A C D@2 ~ E F G A J ~@2 A B A B A B A J ~@26 O P ~@6 M N Q D R D R D R D R D R J S D R J S D T U
  ~
>`.pickRestart({
  A: "x!2 ~ x!2 ~@3", B: "x ~@3 x!2 ~ x", C: "x ~@3 x!2 ~@2", D: "x!2", E: "~@6 x ~@5 x!3 ~", F: "x ~@2 x ~@2 x ~",
  G: "~ x ~@2 x ~@3", H: "x ~@4 x ~ x", I: "~ x ~ x!2 ~@3", J: "x", K: "~@4 x!2 ~@10", L: "x!2 ~@14", M: "x!8",
  N: "x!4 ~@4", O: "~@10 x!4 ~@2", P: "~@3 x!3 ~ x!2 ~@7", Q: "~@4 x!2 ~ x", R: "x!2 ~ x!3 ~ x", S: "~@3 x ~ x ~ x",
  T: "x ~ x ~@3 x ~@7 x!2", U: "x ~@3 x!3 ~@9",
})).gain(0.17)

// drums · open hat
const open_hat = s("oh").struct("<~@50 A@2 ~@2 A B ~@2 A B ~@31 C ~ C ~ C ~ D E F E ~@54>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "~@7 x", D: "~@15 x", E: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", F: "x ~ x!3 ~ x!3 ~ x!6",
})).gain(0.17)

// drums · high tom
const high_tom = s("ht").struct("<~@52 [~@2 x!2 ~@10 x!2] ~@72 [x!2 ~@14] ~@27 [~@2 x!2 ~@12] ~>").gain(0.15)

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

// drums · ride
const ride = s("rd").struct("<~@56 A B ~@2 A B ~@40 C D@2 E C D@2 ~ F G@3 F G@2 ~ H@6 ~@31>".pickRestart({
  A: "~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x ~@2", C: "~ x!3", D: "x!4", E: "x!3 ~", F: "~ x!7", G: "x!8",
  H: "~ x ~ x ~ x ~ x",
})).gain(0.2)

stack(
  distortion_guitar, bass, lead_4_chiff, alto_sax, distortion_guitar_2, rim, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash, ride
)

More by The Knack