Strudelify

La Bamba

Valens Ritchie

KeyC majorTempo150 bpm
0:00/0:00
// La Bamba — Valens Ritchie
// 150 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B A ~ C D E F C G H I J B E B E ~ K B L M L N C B L O P F L ~ C B L Q H B L R C I L S K T U D K V W T J X K Y Z W
  F AA AB AC X J X AC X AA AB AD T AE AB AD X AF AG J V AH AI Z
>`.pickRestart({
  A: "c3@3 ~ e3@2 g3@2 f3@2 ~@2 a3@2 g3 ~", B: "~@2 g2@2 b2@2 d3@2 f3 ~ f3@2 e3@2 d3@2",
  C: "c3@3 ~ e3@2 g3@2 f3@3 ~ a3@2 g3@2", D: "~@2 g2@2 b2@2 d3 ~ f3@3 ~ e3@2 d3 ~",
  E: "c3@3 ~ e3@2 g3@2 f3@2 ~@2 a3@2 g3@2", F: "~@2 g2@2 b2@2 d3@2 f3 ~ f3@2 e3@2 d3 ~", G: "~ g2 b2 d3 f3!2 e3 d3",
  H: "c3@3 ~ e3@2 g3@2 f3@3 ~ a3@2 g3 ~", I: "~@2 g2@2 b2@2 d3@2 f3@4 e3 ~ d3 ~",
  J: "c3@2 ~@2 e3@2 g3@2 f3@2 ~@2 a3@2 g3 ~", K: "c3 ~ e3 g3 f3 ~ a3 g3", L: "c3@2 ~@2 e3@2 g3@2 f3@3 ~ a3@2 g3@2",
  M: "~@2 g2@2 b2@2 d3 ~ f3@4 e3@2 d3 ~", N: "~@2 g2@2 b2@2 d3 ~ f3 ~ f3@2 e3@2 d3@2",
  O: "~@2 g2@2 b2@2 d3@2 f3@3 ~ e3 ~ d3 ~", P: "c3@2 ~@2 e3 ~ g3@2 f3@3 ~ a3@2 g3 ~",
  Q: "~@2 g2@2 b2 ~ d3@2 f3@4 e3@2 d3@2", R: "~@2 g2@2 b2 ~ d3 ~ f3@4 e3@2 d3 ~",
  S: "~@2 g2@2 b2 ~ d3 ~ f3 ~ e3@2 d3@2 ~@2", T: "~@2 g2@2 b2@2 d3 ~ f3 ~ f3@2 e3@2 d3 ~",
  U: "c3@2 ~@2 e3@2 g3@2 f3@3 ~ a3@2 g3 ~", V: "~@2 g2@2 b2@2 d3 ~ f3@3 ~ e3 ~ d3 ~",
  W: "c3@2 ~@2 e3@2 g3 ~ f3@2 ~@2 a3@2 g3@2", X: "~@2 g2@2 b2 ~ d3 ~ f3 ~ f3@2 e3@2 d3 ~",
  Y: "~@2 g2@2 b2@2 d3 ~ f3@3 ~ e3@2 d3@2", Z: "c3 ~@15", AA: "c3@2 ~@2 e3@2 g3 ~ f3@2 ~@2 a3@2 g3 ~",
  AB: "~@2 g2@2 b2 ~ d3 ~ f3@3 ~ e3 ~ d3 ~", AC: "c3@2 ~@2 e3 ~ g3 ~ f3@3 ~ a3@2 g3 ~",
  AD: "c3@2 ~@2 e3 ~ g3 ~ f3@2 ~@2 a3@2 g3@2", AE: "c3@3 ~ e3 ~ g3 ~ f3@2 ~@2 a3@2 g3@2",
  AF: "c3@2 ~@2 e3 ~ g3 ~ f3@2 ~@2 a3 ~ g3 ~", AG: "~@2 g2 ~ b2 ~ d3 ~ f3 ~ f3@2 e3@2 d3@2",
  AH: "c3@2 ~@2 e3 ~ g3 ~ f3@3 ~ a3@2 g3@2", AI: "~@2 g2@2 b2 ~ d3 ~ f3 ~ f3@2 e3 ~ d3 ~",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.3)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D ~ E F G F G F H@2 G F I F I ~ I F G F G F I F I F G F I ~ I F G F G F I F I F I F I F I F J F I F I F K L B G
  F J F I F G F I F I F I F J F I F I F I F I F M
>`.pickRestart({
  A: "~@5 g1 a1 b1", B: "c2 ~@7", C: "~@5 f2 e2 d2", D: "c2@3 ~@13", E: "c2@3 ~@3 g2@2 f2@3 ~ a2@2 g2@2",
  F: "~ f2 e2 d2", G: "c2@4 ~@2 g2@2 f2@3 ~ a2@2 g2@2", H: "[c2@4 ~@2 g2@2 f2@3 ~ a2@2 g2@5 ~@5 f2@4 e2@2 d2@2]/2",
  I: "c2@2 ~ g2 f2 ~ a2 g2", J: "c2@5 ~ g2@2 f2@2 ~@2 a2@2 g2@2", K: "c2@3 g2 f2 ~ a2 g2",
  L: "~@4 g2@4 f2 ~ f2@2 e2@2 d2@2", M: "c2 ~@15",
})).s("gm_acoustic_bass").gain(0.38)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@3 ~ B@2 C@2 D@2 E@4 F@4 G@2 H@8 I@3 ~ J@2 K@2 L@2 M@2 ~@17 N@3 O@3 P@2 Q@8 R@4 S@4 ~
>`.pickRestart({
  A: "[~@2 [g3,c4]@2 [c4,e4]@2 c4 ~ c4@2 [c4,f4]@3 ~ [g3,b3,d4,g4]@4 g3@2 g3@2 g3 ~@3 c4@2 [f3,a3,c4]@2 [c4,f4]@2 c4 ~ c4@2 [c4,e4]@2 [c4,e4]@2 c4@2 c4@2 a3@2 [g3,b3,d4,g4]@2, [c3,e3]@3 e4@2 ~@4 [b3,d4,g4]@2 ~@2 f4@2 ~ [c3,e3]@3 ~@2 f4@2 ~, ~@4 g3@4 [f3,a3]@5 ~@11 [f3,a3]@4 ~@2 g3@4 g3@5 ~ [f3,a3]@5 ~@3]/3", // C5 C F5 G F F5 C G …
  B: "[~@6 c4 ~@3 [c4,f4]@3 ~ [g3,b3,g4]@4 g4@2 g4@2 g4 ~ c4@2 [c4,f4]@2 [f3,c4,f4]@2 [b3,e4]@2, g3@8 [f3,a3]@5 ~@5 [g3,b3]@5 ~ a3@6 ~@2, [c3,e3]@3 ~@9 f3@2 ~@2, ~@2 c4@4 ~@8 d4@9 ~@9, ~ e4 ~@6]/2", // F5 G F5 E5 F G C
  C: "[[e3,g3,c4]@2 c4@2 [c4,e4]@2 c4@2 ~@2 f4@3 ~ [g3,b3,d4,g4]@4 b3@2 b3@2 ~@4 [c4,f4]@2 [a3,c4,f4]@2 [g3,b3]@2, c3@6 e3 ~ [f3,a3,c4]@4 ~@6 [d3,g3,d4,g4]@4 ~@2 a3@4 ~@4, ~ g3@3 ~@8 f3@3 ~, ~ e3@2 e4@2 ~@11]/2", // C G F5 F G F G5
  D: "[~@2 e4@2 g3@2 [e3,g3,c4] ~@3 f4@3 ~ d4@4 ~@2 [g3,b3]@2 [g3,b3]@2 c4@2 [c4,f4]@4 [g3,c4]@2, [e3,g3]@2 e4@2 ~@5 [d4,g4]@2 ~@5, ~@2 c4@4 ~@2 [f3,a3,c4]@5 ~ [g3,b3]@6 ~@4 [f3,a3]@6 ~@2]/2", // C G F5 C5 Em G5 F G …
  E: "[e4@2 [c4,e4]@2 [c4,e4]@2 [c4,e4]@2 a3@2 [a3,c4,f4]@3 ~ [b3,d4]@4 [b3,g4]@2 [b3,g4]@2 [g3,b3]@2 c4@2 c4@2 c4@2 [g3,b3]@2 [g3,c4]@4 c4@2 e4@2 [a3,c4]@2 [a3,c4,f4]@2 g3 ~ d4@4 d4@2 [b3,d4]@2 [g3,b3] ~ c4@2 [c4,f4]@2 [a3,c4,f4]@2 [f3,c4,f4]@2, [c3,e3]@3 ~@6 d4@2 ~@2 f4@2 e4@3 g3@2 f3@2 ~ g3@4 ~ f3@3 ~, ~@2 g3@5 ~ f3@5 ~ g3@8 ~@2 [f3,a3]@6 ~@2 [c3,e3]@7 ~@7 b3@6 ~@4 a3@4 ~@4, ~@50 g4@5 ~@9]/4", // C F Bm Em G C5 Am F …
  F: "[c4@2 c4@2 [c4,e4]@2 b3@2 c4@2 [c4,f4]@2 [d3,a3,f4] ~ [b3,d4]@4 [b3,d4,g4]@4 b3@2 c4@2 [c4,f4]@2 [c4,f4]@2 f4@2 ~@2 [c4,e4]@2 [c4,e4]@2 c4@2 c4@2 [c4,f4]@2 [g3,f4]@2 g4@2 g4@3 ~@13, [c3,e3]@6 e4@4 ~@16 f3@4 g3@10 ~@6 [g3,b3,d4]@5 ~@13, ~@2 g3@4 d3 ~ [f3,a3]@4 ~@2 g3@8 ~@2 a3@6 ~@2 [c3,e3]@6 e4@4 ~@22, ~@38 e3 ~ [f3,a3]@4 ~@20]/4", // C F5 Dm Bm G F5 C F5 …
  G: "[~@2 c4@2 [c4,e4]@2 c4@2 ~@2 f4@3 ~ [b3,d4,g4]@4 b3@2 b3@2 g3 ~@3 [c4,f4]@2 [f3,a3,c4,f4]@2 g3@2, [c3,e3]@6 e4@4 ~@8 [d3,d4,g4]@4 ~@8 d3 ~, ~ g3@3 [f3,a3,c4]@2 ~ g3@4 ~ [f3,a3]@2 ~@2]/2", // C G F5 F C G5 F
  H: "[~@2 c4@2 [c4,e4]@2 e4@2 f4 ~ c4@2 a3 ~ [b3,d4,g4]@4 [b3,d4]@2 [b3,d4]@2 [g3,b3] ~@3 f4@2 [c4,f4]@2 b3 ~ c4@2 g3@2 e4@2 [d3,b3] ~@3 [c4,f4]@2 [a3,c4] ~ g3@2 g3@2 [g3,g4]@4 b3@2 [f3,a3,c4]@2 [c4,f4]@2 c4@2 ~@4 [g3,c4,e4]@2 [g3,c4]@2 [e3,g3,c4] ~ c4@2 [c4,f4]@2 g3 ~ [b3,d4]@4 g4@2 g4@2 [g3,b3]@2 c4@2 [c4,f4]@2 [f3,a3,c4,f4]@2 e4@2 ~@2 [c4,e4]@2 c4@2 [d3,b3] ~ c4@2 [c4,f4]@2 g3 ~@7 b3@2 [g3,b3]@2 c4@2 c4@2 [f3,a3,c4]@2 g3@2, [c3,e3]@6 c4 ~@3 f4@4 ~@4 g4@4 ~@2 c4@4 ~@2 e4@6 g3@4 [f3,a3]@5 ~@13 [f3,a3]@4 g3@4 ~@6 [f3,a3]@5 ~ g3@8 ~@2 [f3,a3]@4 ~@2 g3@6 g3@4 [f3,a3]@4 ~@2 [g3,d4]@8 ~@2 [f3,a3]@4 ~@4, ~@2 g3@5 ~ [f3,a3]@5 ~ g3@8 ~@2 [f3,a3]@6 g3@4 c4@4 e4@4 ~@4 [b3,d4]@8 ~@6 f4@6 ~@2 e4@4 ~@10 [b3,d4]@4 ~@14 e4@6 ~@4 b3@6 ~@12, ~@32 [c3,e3]@6 ~@26 [c3,e3]@6 ~@26 [c3,e3]@6 ~@12 g4@4 ~@4 f4@5 ~]/8", // C G Bm G F5 G F5 Am …
  I: "[~@2 c4@2 c4@2 [e3,c4] ~ a3@2 [a3,c4,f4]@3 ~ [g3,b3,d4]@4 b3@2 b3@2 b3 ~@3 f4@2 f4@2 d3 ~@3 c4@2 c4@2 [e3,c4]@2 ~@2 f4@2 [a3,f4]@2 [g3,b3,d4,g4]@2, [c3,e3]@3 ~@13 [c3,e3]@3 ~@5, ~ e4@2 e4 ~@9 c4@2 ~@3 e4@3 ~@3, ~@4 g3@4 f3@6 ~@4 [g3,d4,g4]@4 ~@2 [f3,a3]@6 g3@6 g3@4 [f3,a3,c4]@5 ~@3]/3", // C F G C Dm G C G5 …
  J: "[~@4 c4@2 [e3,c4] ~ [a3,c4]@2 [a3,c4,f4]@2 [g3,f4] ~ [b3,d4,g4]@4 [b3,g4]@2 [b3,g4]@2 [g3,b3]@2 c4@2 [c4,f4]@2 [f3,c4,f4]@2 [g3,e4]@2, [c3,g3]@2 ~@4 f3 ~, e3@6 ~@2 f3@4 ~@2 g3@8 ~@2 a3@6 b3 ~, c4@2 ~@7 d4@2 ~@5, ~ e4@2 e4@2 ~@11]/2", // C Am F G7 G Em G F5 …
  K: "[~@2 c4@2 c4@2 [e3,c4]@2 f4@2 f4@2 [c4,f4] ~ [b3,g4]@4 ~@2 [g3,d4]@2 b3 ~ f3@2 f4@2 [a3,c4,f4]@2 [d3,g3,b3,e4]@2, [c3,e3]@7 ~@11 [b3,g4]@5 ~ [a3,c4]@4 ~@4, g3@4 [g3,e4]@4 [f3,a3,c4]@5 ~ d4@6 ~@6 f3@4 ~@2]/2", // C F5 Em G5 F Em7 C Em …
  L: "[c4@2 ~@4 [d3,g3,b3]@2 c4@2 [c4,f4]@2 a3 ~ d4@4 ~@2 b3@2 ~@2 c4@2 ~@2 [f3,a3]@2 c4@2, [c3,e3,g3]@7 ~ [f3,a3]@5 ~ g3@8 ~@2 [f3,a3]@4 ~@4, ~@2 c4@4 ~@8 b3@6 ~@6 [c4,f4]@5 ~, ~@2 e4@2 ~@5 [d4,g4]@2 ~@5]/2", // G F5 F C F F5 G5
  M: "[e4@2 [c4,e4]@2 c4@2 [e3,c4] ~@3 f4@2 [a3,f4] ~ d4@4 g4@2 [b3,g4]@2 ~@2 [a3,c4]@2 [a3,c4,f4]@2 [f3,a3,c4,f4]@2 ~@2, [c3,e3]@7 ~@7 b3@6 ~@12, g3@4 [g3,e4]@4 [f3,a3,c4]@5 ~ g3@8 ~@10, ~@9 d4@2 ~@5]/2", // C Dm Em Am F C F
  N: "[~@2 [g3,c4]@2 [g3,c4]@2 [g3,b3]@2 ~@4 f3 ~ [b3,d4,g4]@4 [b3,d4,g4]@2 [b3,d4,g4]@2 ~@2 f4@2 f3@2 [c3,f3,c4]@2 [c4,e4]@2 [c3,e3]@2 [e3,e4]@2 [e3,c4]@2 c4@2 f4@2 f4@2 [a3,c4,f4] ~ [g3,b3,d4]@2, [c3,e3]@6 ~@2 [f3,a3,c4]@4 ~@12 a3@6 g3@6 [g3,e4]@4 [f3,a3,c4]@5 ~@3, ~@2 e4@3 f4@2 ~@5 c4@2 ~@2 c4@2 ~@6, ~@24 f3 ~ f4@4 ~@4 c3@4 ~@10]/3", // C5 G F5 C E C F G …
  O: "[g4@2 b3@2 [g3,b3]@2 [b3,e4] ~ c4@2 c4@2 [a3,c4]@2 f4 ~@3 [c4,e4]@2 [g3,c4]@2 [g3,c4]@2 f4@2 f4@2 a3@2 [b3,g4]@4 g4@2 g4@2 [b3,d4]@2 c4@2 c4@2 [a3,c4]@2 [a3,c4,f4] ~, ~@2 [d4,g4]@4 ~@2 f3@6 ~@2 [c3,e3]@7 ~@19 f4@4 ~@2, ~@4 a3@2 ~ c4@2 ~ e4@2 ~@5 b3@2 ~ a3@2 ~@2, ~@10 f4@4 ~@2 g3@4 ~@4 [f3,a3,c4]@5 ~ [g3,d4]@8 ~@2 f3@7 ~]/3", // G E5 Am C C5 Em Bm Am …
  P: "[c4@2 c4@2 [e3,g3,c4]@2 [g3,b3]@2 [c4,f4]@2 [c4,f4]@2 [a3,f4]@2 [b3,g4]@4 g4@2 [g3,g4]@3 ~ [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [a3,f4] ~, c3@7 ~@17 [f3,a3]@7 ~, [e3,g3]@2 ~@2 f3@3 ~@2 b3@2 ~@5, ~ e4@3 a3@2 ~ d4@4 ~@5]/2", // C G F5 Dm Em G F5 Dm …
  Q: "[g3@4 ~@2 [e3,c4]@2 ~@2 f4@2 [c4,f4] ~ [b3,d4,g4]@4 [b3,d4,g4]@4 [d4,g4] ~ f4@2 f4@2 [a3,c4,f4]@2 b3@2 ~@4 [e3,c4]@2 [d3,b3,e4] ~ f4 ~ f4@2 g3 ~ [d4,g4]@4 [d4,g4]@2 [g3,b3,d4,g4]@2 [b3,e4]@2 c4@2 [c4,f4]@2 [a3,c4,f4]@2 b3@2 c4@2 [c4,e4]@2 [c4,e4]@2 [c3,c4]@2 ~@2 f4@2 [a2,a3]@2 ~@6 b3@2 g3 ~ c4@2 ~@2 [a3,c4,f4]@2 c4 ~@5 [g3,c4]@2 [d3,g3,c4] ~ f4@2 f4@2 [a3,c4,f4] ~@3 g4@2 d4@2 [b3,d4]@2 [b3,f4]@2 c4@2 [c4,f4]@2 [a3,c4,f4]@2 c4 ~, e4@5 ~@10 e4@2 e4@2 ~@12 e4@2 ~@2 e4@2 ~@2 b3@3 ~@3 [c4,f4] ~@2 c4@2 ~@5 b3@3 ~@2 a3@2 ~@2, [c3,e3,c4]@6 ~@18 [a2,a3,c4]@4 a2@4 c3@6 ~@26 [c3,e3]@6 ~@4 c3 ~@16 f3@3 g3@6 ~@4 [f3,a3,c4]@5 ~ g3@8 ~@2 f3@7 ~, ~@4 g3@4 [f3,a3,c4]@5 ~ g3@9 ~ f3@6 g3@6 g3@4 ~@6 [g3,b3]@6 ~@4 a3@4 ~@2 g3@6 g3@4 ~@6 [g3,d4]@8 ~@2 [f3,a3]@4 ~@4 [c3,e3]@7 ~@25, ~@32 [e3,c4]@4 ~@4 [f3,a3,c4]@4 ~@12 f3@7 ~@9 [f3,a3,c4]@4 ~@6 g4@4 ~@12 e4@6 ~@6 d4@4 g4@4 ~@10]/8", // C F5 G G5 F C E7 G5 …
  R: "[~@2 c4@2 [e3,g3,c4]@2 [g3,b3]@2 f4@2 f4@2 f3 ~@3 g4@2 b3@2 b3@2 b3@2 ~@2 f4@2 [a3,c4,f4]@2 b3 ~@5 [g3,c4]@2 [d3,b3] ~ f4@2 f4@2 [g3,c4,f4] ~@3 g4@2 g4@2 [b3,d4,g4]@2 ~@4 f3@2 [f3,a3]@2 [g3,b3]@2, c3@7 ~@25 [c3,e3]@7 ~@25, [e3,g3]@4 ~@4 [f3,a3,c4]@5 ~ g3@8 ~@2 f3@6 g3@6 ~@4 [f3,a3,c4]@5 ~ g3@8 ~@2 a3@4 ~@4, ~ e4@3 ~@3 [b3,d4]@2 [d4,g4]@2 ~ [a3,c4]@2 ~@2 c4@2 ~@5 [b3,d4]@3 ~@2 c4@3 ~, ~@34 e4@5 ~@19 f4@4 ~@2]/4", // C G F C5 G Csus4 G F …
  S: "[~@2 e4@2 g3@2 [d3,g3,b3] ~@3 f4@2 [f3,g3] ~@3 g4@2 ~@2 [b3,d4]@2 b3 ~ [c4,f4]@2 ~@2 [f3,a3]@2 c4@2 ~@4 g3@2 [d3,g3,b3] ~ [c4,f4]@2 [c4,f4]@3 ~ [b3,d4]@4 [b3,d4,g4]@4 ~@2 c4@2 [c4,f4]@2 [a3,c4,f4]@2 [g3,b3]@2, [c3,e3,c4]@6 ~@2 [f3,a3,c4]@4 ~@2 g3@8 ~@2 [f3,a3]@4 ~@2 g3@6 ~@4 [f3,a3]@5 ~ g3@9 ~ f3@6 ~@2, g3@2 e4@2 ~@3 [b3,d4]@3 ~@3 c4@2 ~ [c3,e3,c4]@3 ~@13, ~@18 g4@4 ~@4 f4@7 ~ e4@6 ~@16 a3@4 ~@4]/4", // G Fsus2 Bm F5 F G F5 Bm …
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.8)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_2 = note("<~@41 A B C D E F G H I@2 J@2 K L M N O ~@25>".pickRestart({
  A: "a3@4 g3 ~ a3@4 g3@2 f3@2 e3@2", B: "g3@2 a3@2 g3@2 f3@2 e3@2 f3@2 g3@2 a3 ~", C: "g3@2 f3@2 e3@2 f3@2 g3@5 ~@3",
  D: "~@4 b2@2 d3@2 f3 ~ f3@2 e3@2 d3 ~", E: "e3@2 e3 e3@2 e3!2 ~ f3@2 f3 f3@2 f3!2 ~", F: "g3@4 f3 e3 d3 ~",
  G: "g3@2 a3 g3@2 a3 g3@2 ~ g3@2 a3 g3@2 a3@2, ~@4 a3 ~@3",
  H: "g3 a3 [g3,a3] g3 a3 g3 a3 [g3,a3] g3 a3 f3@2 e3@2 f3@2", I: "[g3@2 a3@2 g3@2 f3@2 e3@2 f3@2 ~@2 g3@17 ~]/2",
  J: "[c3@4 e3@2 g3@2 f3@4 a3@2 g3@4 g3!2 g3@4 g3!2 g3@2 g3!2 g3@2]/2",
  K: "a3@2 ~ a3@2 g3 a3 g3 a3@2 ~ a3@2 g3 a3 g3, ~ g3 ~@3 g3 ~@2", L: "a3 g3 f3 e3 f3 g3 a3 g3",
  M: "a3@4 g3@2 f3@4 e3@2 f3@3 ~", N: "g3@6 g3!2 g3@6 g3!2", O: "g3 ~@7",
})).s("gm_electric_guitar_clean").gain(0.44).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<~@4 A B@12 C D B@12 C E B@7 F B@16 E B@24 ~>".pickRestart({
  A: "~@10 x!3 ~ x ~", B: "~ x ~ x", C: "~@2 x ~@2 x ~@2", D: "x ~@9 x!3 ~ x ~", E: "x ~@9 x!3 ~@3",
  F: "~@2 x!3 ~ x ~ x!2 ~@2 x!2 ~@2",
})).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@40 [~@10 x!2 ~@4] ~@42>").gain(0.38)

// drums · ride
const ride = s("rd").struct(`<
  ~@5 A B A B A B A B A B A B A ~ A B A B A B A B A B A B A ~ A B A B A B A ~ 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 A B A B A B ~
>`.pickRestart({
  A: "x ~ x ~ x!2 ~ x", B: "~ x ~ x!4 ~", C: "~ x ~ x ~ x!2 ~",
})).gain(0.33)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@5 A@13 B A@13 B A@7 B ~@17 A@24 ~>".pickRestart({
  A: "x ~ x ~ x!3 ~", B: "x",
})).gain(0.48)

stack(
  electric_guitar_muted, bass, electric_guitar_clean, electric_guitar_clean_2, kick, snare, low_tom, ride, woodblocks
)

More by Valens Ritchie