Strudelify
Chirpy Chirpy Cheep Cheep cover art

Chirpy Chirpy Cheep Cheep

The Kinks

KeyE majorTempo75 bpm
0:00/0:00
// Chirpy Chirpy Cheep Cheep — The Kinks
// 75 bpm, 4/4, key E major. 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 76 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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 · electric guitar clean · "AC GUITAR"
const electric_guitar_clean = note(`<
  A B C@2 D E C@2 D F@2 G H C@2 D E C@2 D F@2 G I@2 J K L M@2 N O@2 N O@2 G H P Q R S@2 C@2 D E C@2 D T@3 J K L M@2 N
  O@2 N O@2 N O@2 N O@2 N U@2 ~@3
>`.pickRestart({
  A: "~@4 [g3,c4]@3 g3 [g3,c4]!3 [c3,g3,c4]@2 [d3,a3,c4,d4] [d3,a3,d4]@2, ~@8 c3@3 ~@5", // C5 D7 D5
  B: "~@3 e4@2 b3@5 ~@3 b3@2 ~, e3 ~, [b3,e4]@2 b3@3 ~@6 e4@5, ~ g#3@3 ~@12", // E5
  C: "[[g#3,e4]@2 ~@2 [e3,b3]@2 ~ [e3,b3,e4] ~ g#3@2 ~@3 b3 e4 a3@2 a3 ~ [a3,c#4,e4]@2 [c#4,e4] ~@2 a3 ~@5 a3, [e3,b3]@4 ~@4 [e3,e4]@3 g#3@2 g#3@2 ~@8 a3@2 ~ a3@3 a3@2 ~, ~@2 e4@4 ~@2 b3@2 ~ e4@4 ~ [c#4,e4]@4 ~@4 [d4,f#4]@4 f#4@4, ~@12 e3@3 e3@8 ~@4 d4@3 d4@2]/2", // C#m E5 A C#m E5 E C#m D
  D: "[b3,e4]@4 b3@2 ~ g#3 ~ g#3@2 ~ g#3@2 ~ e3, e3@4 e3@3 [e3,g#3], g#3@2 ~@2 e4@4 ~@3 e4@5, ~@4 g#3 ~ b3@2 [b3,e4]@3 ~@5", // E5 E E5
  E: "a3@2 ~ c#4 a3 ~ c#4 a3 ~ a3!2 [a3,d4,e4] e4 ~ c#4 a3, [c#4,e4]@4 [c#4,e4]@3 ~@6 c#4@2 ~, ~@2 a3@2 ~ a3@2 ~ [a3,d4,e4]@2 ~@2 [a3,d4]@3 ~", // Asus4 C#m Asus4 D5
  F: "[[a3,c#4,e4]@3 a3 [c#4,e4]@2 ~ a2 ~ a3 d4 ~@5 [c3,g3,c4]@3 g3 [c3,g3,c4]@2 g3 [g3,c4] [c3,g3,c4]!5 [d3,a3,b3,d4] [d3,a3,d4]@2, a2@6 a3@2 [d3,f#4]@3 a3@2 a3@2 a3@14 ~@3, ~@8 d4@2 ~ [d4,f#4]@4 ~ e4@13 ~@3, ~@6 d3 [d3,d4] ~@8]/2", // A C#m C5 Bm7 D5 D
  G: "[e2,b2,e3]@2 ~ e2 [e2,b2]@2 ~ e2!5 e2@2 [e2,b2,d3] [e2,b2], ~@2 e3@6 [b2,e3]@3 e3@4 ~, ~@2 b2@2 ~@2 [e2,b2]@2 ~@3 b2@2 ~@3", // E5 E7 E5
  H: "[e2,e3]@2 [e2,e3]@2 e2@2 e2!2 [b2,e3]@2 ~ [b2,e3] e2 b2 [e2,b2,e3]@2, b2@4 [b2,e3]@4 e2 ~ [e2,e3]@2 ~@4", // E E5 E
  I: "[[e2,e3]@2 [e2,e3]@2 e2@2 e2!2 [b2,e3]@2 ~ [b2,e3] e2 b2 b2@2 [b2,f#3,b3] ~ [b2,f#3,b3] [b2,f#3]!2 b2 [b2,f#3,b3] [b2,f#3] [b2,f#3,b3] [b2,f#3] b2 [b2,f#3] [b2,f#3,b3]@2 [b2,f#3,b3] ~, b2@4 [b2,e3]@4 e2 ~ [e2,e3]@2 ~@2 [e2,e3]@4 ~@14]/2", // E E5 B5 E5 E
  J: "[c#3,f#3,c#4] ~ [c#3,f#3] [c#3,f#3,c#4] [c#3,f#3] ~@2 [c#3,f#3]!2 c#3 ~@2 [c#3,f#3,c#4]@2 [c#3,f#3,c#4] [c#3,f#3], ~@8 c#4@3 ~@5", // F#5
  K: "[a2,e3,a3]@2 [a2,e3] ~ [a2,e3,a3]@2 ~ [a2,e3,a3]@2 a2 ~ e3 [a2,e3,a3] ~ [a2,e3,a3] a3", // A5
  L: "[a2,e3,a3] ~ [a2,e3] a3 [a2,e3,a3]@2 ~ [a2,e3,a3] ~ a2 a3 [a2,e3,a3]!4 [e3,a3]", // A5
  M: "[[g#3,e4]@2 g#3 ~@2 g#3 b3 [e3,b3,e4] ~@2 b3 ~@3 b3 e4 a3@2 a3!2 [a3,c#4,e4]@2 [c#4,e4] ~@2 a3 ~@5 a3, [e3,b3]@3 g#3@2 ~@3 b3@2 ~ [b3,e4]@4 ~ [c#4,e4]@4 ~@4 [d4,f#4]@4 f#4@4, ~@2 e4@4 ~@3 g#3@2 g#3@2 g#3@2 ~@8 a3@2 ~ a3@3 a3@2 ~, ~@4 [e3,b3]@2 ~@2 [e3,e4]@4 e3@3 e3@8 ~@4 d4@3 d4@2]/2", // C#m E5 A C#m E5 C#m D E5 …
  N: "g#3@2 ~ b3 g#3 ~@2 g#3 ~@7 e3, e3@4 e3@3 [e3,g#3], [b3,e4]@4 e4@4 ~@2 b3@3 b3@3, ~@2 g#3@2 b3@2 b3@2 [b3,e4]@3 e4@5, ~@5 g#3@2 ~@2 g#3@3 g#3@2 ~@2", // E E5
  O: "[[a3,c#4,e4]@3 a3 [a3,c#4,e4]@2 a2!2 ~ a3 [a3,d4] ~@5 [c3,g3,c4]@3 g3 [c3,g3,c4]@2 g3 [c3,g3,c4]!6 [d3,a3,b3,d4] [d3,a3,d4]@2, a2@6 a3@2 [d3,f#4]@3 a3@2 a3@2 a3@14 ~@3, ~@8 d4@2 ~ [d4,f#4]@4 ~ e4@13 ~@3, ~@6 d3 [d3,d4] ~@8]/2", // A D5 C5 Bm7 D5 D
  P: "[e3,a3,c#4]@2 ~ [e3,g#3,b3]@2 [e3,g#3] [d#3,f#3,b3]@3 b3 [d#3,f#3,b3]@2 [d#3,f#3,b3] ~ [f#3,b3] d#3", // A E B B5
  Q: "[e3,a3,c#4]@2 ~ e3 [e3,g#3,b3] ~ [d#3,f#3,b3]@2 ~ b3 [d#3,f#3,b3]@2 [d#3,f#3,b3] ~ [f#3,b3] d#3, ~@13 d#3@2 ~", // A E B B5
  R: "[e3,a3,c#4] ~ c#4 [e3,g#3,b3]!2 ~ [d#3,f#3]@2 d#3 [d#3,f#3,b3] ~ [d#3,f#3,b3]!2 f#3 [f#3,b3]@2, ~@5 g#3@11, ~@6 b3 ~@6 d#3@3", // A E D#m B B5
  S: "[[e3,g#3,b3] g#3 ~ [f#3,c#4]@3 [e3,g#3,c#4]@3 e3 ~ e3 g#3!2 ~@2 [b2,f#3,b3] ~ [b2,f#3,b3] [b2,f#3]!2 b2 [b2,f#3,b3] [b2,f#3] [b2,f#3,b3] [b2,f#3] b2 [b2,f#3] [b2,f#3,b3]@2 [b2,f#3,b3] ~, ~ [g#3,b3]@2 ~@2 [e3,g#3,c#4] [e3,c#4] g#3 ~@8, ~@15 e3@3 ~@14]/2", // E F#5 C#m B5 G#m C#m
  T: "[[a3,c#4,e4]@3 a3 [c#4,e4]@2 ~ a2 ~ a3 d4 ~@5 [c3,g3,c4]@3 g3 [c3,g3,c4]@2 g3 [g3,c4] [c3,g3,c4]!5 [d3,a3,b3,d4] ~@2 [b2,f#3,b3] ~ [b2,f#3,b3] [b2,f#3]!2 b2 [b2,f#3,b3] [b2,f#3] [b2,f#3,b3] [b2,f#3] b2 [b2,f#3] [b2,f#3,b3]@2 [b2,f#3,b3] ~, a2@6 a3@2 [d3,f#4]@3 a3@2 a3@2 a3@14 ~@19, ~@8 d4@2 ~ [d4,f#4]@4 ~ e4@13 ~@19, ~@6 d3 [d3,d4] ~@7 [d3,a3,d4]@2 ~@7]/3", // A C#m C5 Bm7 B5 D D5
  U: "[[a3,c#4,e4]@3 a3 [a3,c#4,e4]@2 a2!2 ~ a3 [a3,d4] ~@5 [c3,g3,c4]@4 ~@12, a2@6 a3@2 [d3,f#4]@3 a3@2 a3@2 a3@14 ~@3, ~@8 d4@2 ~ [d4,f#4]@4 ~ e4@13 ~@3, ~@6 d3 [d3,d4] ~@8]/2", // A D5 C5 D
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.8)

// chords · electric guitar clean · "AC GUITAR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A B C D E B C D F G H I B C D E B C D F G H I J K L M ~@8 H I N O P Q J B C D E B C D F G J K L M ~@16 R S T@2
>`.pickRestart({
  A: "~@4 g#3@2 ~@4 b3@2 g#3@2 ~ b3, ~@6 e4@5 ~@5, ~@7 g#3@2 g#3@3 ~@2 g#3@2, ~ e3",
  B: "~@2 g#3 g#3@2 g#3 b3 ~@3 b3 b3@3 ~@2", C: "~@3 a3 ~@12", D: "~@3 b3 ~ g#3@2 ~@3 b3@3 b3@3, ~ g#3 ~@6",
  E: "~@14 a3 ~, ~@13 e4@2 ~", F: "~@4 a3@2 a2 ~@3 a3 ~@5", G: "~@7 c3 ~@8", H: "~@10 e3 ~@2 b2 ~@2",
  I: "~@3 e2 ~@5 e2 ~@3 e2 ~@2", J: "~ [b2,f#3,b3] ~ b3 ~ [f#3,b3] ~@4 [f#3,b3] ~@4 f#3",
  K: "~ [f#3,c#4]@2 ~@2 [c#3,c#4] [c#3,f#3,c#4] c#4 ~ f#3 [c#3,f#3] [c#3,f#3,c#4] ~@3 c#4", // F#5 C# F#5
  L: "~@2 a3 [a2,e3,a3] ~@2 a2 ~@2 [e3,a3] ~ a2 ~ [a2,a3] ~ a2, ~@5 [a2,a3] ~@2", // A5 A
  M: "~ [a2,a3] a3 [a2,e3] ~@2 [a2,e3] ~ [a2,e3,a3] [e3,a3] [a2,e3] ~@5", // A A5
  N: "~@2 [e3,a3,c#4] ~@6 d#3 ~ b3 ~ [d#3,b3]@2 ~", // A G#m
  O: "~@2 [e3,a3,c#4] a3 ~ [e3,g#3,b3] ~@2 [d#3,f#3,b3] f#3 ~ b3 ~ b3@2 ~", // A E B
  P: "~ [e3,a3,c#4]@2 ~@4 b3!2 ~ [d#3,b3] ~@2 b3 ~ b3, ~@5 e3@11", Q: "~ e3@4 f#3 ~@8 c#4@2, ~ b3 ~@14",
  R: "~@3 g3 [c3,g3,c4]@2 g3 [c3,g3,c4]!6 [d3,a3,b3,d4] [d3,a3,d4]@2", // C5 Bm7 D5
  S: "g#3@2 ~ b3 g#3 ~@2 g#3 ~@7 e3, e3@4 e3@3 [e3,g#3], [b3,e4]@4 e4@4 ~@2 b3@3 b3@3, ~@2 g#3@2 b3@2 b3@2 [b3,e4]@3 e4@5, ~@5 g#3@2 ~@2 g#3@3 g#3@2 ~@2", // E E5
  T: "[[a3,c#4,e4]@3 a3 [a3,c#4,e4]@2 a2!2 ~ a3 [a3,d4] ~@5 [c3,g3,c4]@3 g3 [c3,g3,c4]@2 g3 [c3,g3,c4]!6 ~@3, a2@6 a3@2 [d3,f#4]@3 a3@2 a3@2 a3@14 ~@3, ~@8 d4@2 ~ [d4,f#4]@4 ~ e4@13 ~@3, ~@6 d3 [d3,d4] ~@8]/2", // A D5 C5 D
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.8)

// chords · electric guitar clean · "GUITAAR 1"
const electric_guitar_clean_3 = note(`<
  A B C D E F C D E G H@3 C D E F C D E G I@7 C D E G J E G K@8 C D E F C D E G L ~@4 C D E G J E G J E G J E G J E G J
  M ~@2
>`.pickRestart({
  A: "[c3,g3,c4]@4 [c3,g3,c4]@3 e3 [c3,g3] ~ c3 [c3,g3,c4]@2 [d3,a3,d4] [d3,a3,d4]@2, e3@7 ~ c4@2 e3@3 ~@3, ~@9 [c3,g3]@2 ~@5", // C5 D5 C5
  B: "~ e3@15, [b3,e4]@13 ~@3", C: "~@3 b3@8 ~@2 e4@3, e4 ~", D: "a3@4 ~ d4@3, ~@8 f#3@7 ~",
  E: "~@13 e4@2 ~, e4@13 ~@3, ~ g#3@6 ~, ~@3 b3@12 ~", F: "~ e3@4 ~@2 a3, a3@4 ~ d4@3, ~@13 c#4@3",
  G: "[a2,a3,e4]@3 a3 [a2,a3,b3,e4]@2 [a3,e4] a3 ~@2 a3 ~@2 a3 [d3,a3,d4] a3, ~@8 d3@3 a3@2 ~@3, ~@6 [d3,d4] ~", // A5 Asus2 A5 D5 D
  H: "[[c3,g3,c4]@3 ~@6 [g3,c4] [c3,g3,c4]!3 [d3,g3,a3,d4] [a3,d4] ~@33, ~@3 [g3,c4]@3 g3@2 c3@2 ~@4 d3@34, ~@4 c3@3 c4@2 ~@39, ~@5 f3@8 ~@35]/3", // C5 Dsus4 D5 C5
  I: "[[c3,g3,c4]@3 ~@6 [g3,c4] [c3,g3,c4]!3 [d3,g3,a3,d4] [a3,d4] ~@97, ~@3 [g3,c4]@3 g3@2 c3@2 ~@4 d3@98, ~@4 c3@3 c4@2 ~@103, ~@5 f3@8 ~@99]/7", // C5 Dsus4 D5 C5
  J: "[c3,g3,c4]@3 ~@6 [g3,c4] [c3,g3,c4]!3 [d3,g3,a3,d4] [d3,a3,d4] ~, ~@3 [g3,c4]@3 g3@2 c3@2 ~@6, ~@4 c3@3 c4@2 ~@7, ~@5 f3@8 ~@3", // C5 Dsus4 D5 C5
  K: "[[c3,g3,c4]@3 ~@6 [g3,c4] [c3,g3,c4]!3 [d3,g3,a3,d4] [a3,d4] ~@113, ~@3 [g3,c4]@3 g3@2 c3@2 ~@4 d3@114, ~@4 c3@3 c4@2 ~@119, ~@5 f3@8 ~@115]/8", // C5 Dsus4 D5 C5
  L: "[c3,g3,c4]@3 ~@6 [g3,c4] [c3,g3,c4]!3 [d3,g3,a3,d4] [a3,d4] ~, ~@3 [g3,c4]@3 g3@2 c3@2 ~@6, ~@4 c3@3 c4@2 ~@7, ~@5 f3@8 ~@3", // C5 Dsus4 D5 C5
  M: "~@3 b3@12 ~, e4@13 ~@3, ~ g#3@6 ~",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.2)

// chords · electric guitar clean · "GUITAAR 1" · soft notes
const electric_guitar_clean_4 = note(`<
  A ~ B C D E B C D F ~@3 B C D E B C D F ~@7 B C D F ~ D F ~@8 B C D E B C D F ~@5 B C D F ~ D F ~ D F ~ D F ~ D F ~ G
  H I
>`.pickRestart({
  A: "~@4 b3@3 ~@9", B: "~@2 g#3@6 ~@3 b3@4 ~, ~@10 g#3@5 ~", C: "~@3 e4@5 ~ a3@6 ~, ~ c#4@3 ~@4", D: "~@7 g#3",
  E: "~ c#4@7 ~@3 e3@5", F: "~@7 e4 ~@8", G: "~@7 g#3, ~@13 e4@2 ~",
  H: "[a2,a3,e4]@3 a3 [a2,a3,b3,e4]@2 [a3,e4]!2 ~@2 a3 ~@2 a3 [d3,a3,d4] a3, ~@8 d3@3 a3@2 ~@3, ~@6 [d3,d4] ~", // A5 Asus2 A5 D5 D
  I: "[c3,g3,c4]@3 ~@6 [g3,c4] [c3,g3,c4]!3 [d3,g3,a3,d4] ~@2, ~@3 [g3,c4]@3 g3@2 c3@2 ~@6, ~@4 c3@3 c4@2 ~@7, ~@5 f3@8 ~@3", // C5 Dsus4 C5
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.2)

// chords · distortion guitar · "DIST GIT."
const distortion_guitar = note("<~@11 A B ~@9 A B C D E F ~@8 A B G@3 H C ~@9 C D E F ~@20>".pickRestart({
  A: "~@2 [b3,e4]!4 ~ g#4@2 f#4 e4 c#4 b3 g#3 f#3 e3", B: "g#3@2 [b2,e3]!4 ~ [b2,e3] ~ [b2,e3] b3 g#3 e3 b2 g#2 e2",
  C: "[f#3,b3]@8 ~ [f#3,b3] ~@2 [f#3,b3] ~ [f#3,b3] ~", // B5
  D: "[c#3,f#3]@9 [c#3,f#3] ~ [c#3,f#3] [c#3,d#3,f#3] ~ [c#3,f#3]@2", E: "[e3,a3]@8 ~ [e3,a3] ~ e3 [e3,a3] ~ [e3,a3] ~",
  F: "[e3,a3]@4 [e3,a3]@2 ~ [e3,a3] ~ [e3,a3]@2 a3 a4@2 a4 ~", G: "a2@3 g#2@3 b2@10", H: "g#2@3 f#2@3 c#3@10",
})).s("gm_distortion_guitar").gain(0.4).pan(0.1)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@8 A B C D E F G H I J K L M N D E O P Q R F G L M N L M N D E S T U V O F G H I J K L M N O P Q R F G L M N ~@3 L M
  N L M N W ~@5
>`.pickRestart({
  A: "~@10 e3@2 d3 b2 a2 g2", B: "a2@7 a2 d3@4 ~ d3 d3@2", C: "c3@3 c3 c3@2 a2 g2 c2!5 d2!2 ~",
  D: "e1 ~ e1!2 e1@2 e1 e2@2 d2 b1 a1 b1 e1 a1 b1", E: "e1@3 e1 e1@2 ~ e1 d2 e2 a1 b1 d2 e2 b1 a1",
  F: "e2@2 ~ e2 e2@2 ~ e2 ~ e2 ~ e2!2 ~ e2 b2", G: "a1@2 ~ a1 a1@3 d2 ~ d2 ~ d2!2 ~ d2@2",
  H: "e2@3 ~ e2@2 ~ e2 ~ e2 ~ e2 a2 b2 e3@2", I: "a1 a1@3 a1@2 ~@2 [g1,a1] d2 ~ d2 ~ d2 a1@2",
  J: "e2@3 ~ e2@2 ~ e2 ~ e2 ~ e2 ~ e2!3", K: "a1@3 ~ a1@4 d2!2 ~ d2 ~ d2 ~ [d2,e2]",
  L: "e2@3 ~ e2@5 ~ e2 ~ e3 b2 a2 e2", M: "a1@3 ~ a1@2 ~ a1 d2!2 ~ d2 ~ d2!2 ~",
  N: "c2@3 c2 c2@3 c2!2 g1 a1 c2 g2 a2 d3 ~", O: "b1 ~ b1 ~ b1@2 ~ b1 ~ b1@2 f#1 b1 f#1 b1@2",
  P: "f#1 ~ f#1@2 f#1@2 ~ f#1 ~ f#1 ~ f#1!2 c#1 f#1 g#1", Q: "a1@2 a1 ~ a1@2 ~ a1 ~ a1@2 e1 a1@3 d1",
  R: "a1 ~ a1 ~ a1@3 a1 ~ a1 ~ a1 a2@2 a2 ~", S: "a1@2 ~ g#1@3 b1@3 b1 ~ b1 d#2 f#2 b2 f#2",
  T: "a1@3 g#1@3 b1@2 ~ b1 ~ b1!2 f#2 d#2 b1", U: "a1@3 g#1@3 b1@2 ~ b1 ~ b1!2 ~ b1 a1", V: "g#1@3 f#1@3 c#2@10",
  W: "e2@3 ~ e2@5 ~ e2 ~ e3 b2 ~@2",
})).s("gm_electric_bass_finger").gain(0.4)

// bass · electric bass finger · "BASS" · soft notes
const bass_soft = note(`<
  ~@70
  [~@14 a2 e2]
  [a1@3 ~ a1@2 ~ a1 d2!2 ~ d2 ~ d2!2 ~]
  [c2@3 c2 c2@3 c2!2 g1 a1 c2 g2 a2 d3 ~]
  [e3@3 ~ e3@5 ~ e3 ~ e4 b3 a3 e3]
  [a2@3 ~ a2@2 ~ a2 d3!2 ~ d3 ~ d3!2 ~]
  [c3@3 c3 c3@3 c3!2 g2 a2 c3 g3 ~@3]
>`).s("gm_electric_bass_finger").gain(0.15)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@8 x ~@61 [x ~@6 x!2 ~ x ~@4 x] [x!2]!2 [x ~@6 x!2 ~ x ~@4 x] [x!2]!2>").gain(0.2)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@8
  [~ x ~@2]
  ~@61
  [~ x ~ x]!2
  [~@4 x ~@4 x!2 ~@2 x ~@2]
  [~ x ~ x]!2
  [~@4 x ~@4 x!2 ~@2 x ~@2]
>`).gain(0.15)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@10 A ~ B ~@3 C ~@4 C ~ B ~@8 C ~@2 C ~ B ~@8 C ~@4 C ~@8 C ~@2 B ~@2 C ~@2 C ~@2 C ~@3
>`.pickRestart({
  A: "~@13 x!2 ~", B: "~@15 x", C: "~@7 x",
})).gain(0.5)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@10 A ~ B ~@8 C ~ B ~@8 C ~@2 C ~ B ~@13 C ~@8 C ~@2 B ~@2 C ~@2 C ~@2 C ~@2 C
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@7 x", C: "~@11 x ~@4",
})).gain(0.5)

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

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@70 [~@3 x] [~@2 x ~ x!4] [x ~ x!3 ~@3] [~ x ~ x] [~@2 x ~ x!4] [x ~ x!3 ~@3]>")
  .gain(0.15)

// drums · high tom
const high_tom = s("ht").struct("<~@10 A ~@10 B ~@10 B ~@2 B ~@15 B ~@8 B ~@2 C ~@2 B ~@2 B ~@2 B ~@2 B>".pickRestart({
  A: "~ x", B: "~@11 x ~@4", C: "~@12 x!2 ~@2",
})).gain(0.5)

// drums · crash
// … 35 more lines

More by The Kinks