Strudelify

Waltzing Back

The Cranberries

KeyE minorTempo83 bpm
0:00/0:00
// Waltzing Back — The Cranberries
// 83 bpm, 6/8, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 102 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(83/3)

// 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 · pad poly
const pad_poly = note(`<
  ~@8 A@2 B@2 C@2 D E F G@3 H I@4 ~ J ~@3 K ~ L@3 M@6 N@3 O@5 P@2 ~ Q R ~@9 S T@6 U@3 V@2 W X Y ~@24
>`.pickRestart({
  A: "[~@15 b4@2 ~ e5@4 ~ e5@4 ~@2 f#5@2 ~@8 b5@9 ~@2 g5@6 ~@2 f#5@2 ~ e5@3, ~@18 [g4,b4]@13 g5@7 ~@26, ~@34 [b4,d5]@13 ~@3 [g4,c5]@13 ~]/2", // G Bm C5
  B: "[~@2 f#5@4 ~ f#5@4 ~@2 f#5@4 ~ f#5@2 ~ b5@2 e5@6 ~@2 d5@2 ~ d5@2 ~ a5@2 b4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 e4@9, ~@2 [a4,c5]@13 ~@3 b4@13 ~@3 g4@13 ~@17]/2", // Am
  C: "[~@2 [a4,c5,e5]@13 ~@3 e5@2 ~ e5@4 ~ f#5@4 ~@4 [b4,d5]@13 e5@2 ~ g5@2 ~ f#5@4 ~ e5@6, ~@18 [g4,b4]@13 g5@15 ~@4 [g4,c5]@13 ~]/2", // Am Bm G C5
  D: "~@2 f#5@2 ~ f#5@2 ~@6 f#5@4 ~ f#5@2 ~ b5@2 e5@9, ~@2 [a4,c5]@13 ~@3 b4@13 ~", // Am
  E: "~@2 d5@2 ~ e5@2 b4@9 ~@2 a4@2 ~ b4@2 e4@9, ~@2 g4@13 ~@17",
  F: "~@2 [a4,c5,e5]@13 ~@3 b4@2 ~ b4@2 b4@2 ~ a4@2 ~ b4@3, ~@18 g4@13 ~", // Am
  G: "[~@2 b4@2 ~ b4@2 b4@2 ~ a4@2 ~ b4@4 ~ b4@2 ~ a4@2 b4@2 ~ a4@2 ~@11 b4@4 ~@2 b4@4 ~ b4@2 ~ d5@2 b4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 e4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 e4@9, ~@2 d4@13 ~@3 e4@11 b4@10 ~@57, ~@34 e4@13 ~@3 g4@13 ~@3 d4@13 ~@17]/3",
  H: "~@2 [a4,c5,e5]@9 ~@2 f#5@4 ~ g5@2 ~ f#5@2 f#5@2 ~ e5@2 ~ f#5@3, ~@18 b4@13 ~", // Am
  I: "[~@2 g5@2 ~ f#5@2 f#5@2 ~ e5@2 ~ f#5@4 ~ f#5@2 ~ f5@2 f#5@2 ~ f5@2 ~@11 f#5@4 ~@2 f#5@4 ~ f#5@2 ~ b5@2 e5@6 ~@2 d5@2 ~ d5@2 ~ a5@2 b4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 ~@16 a5@4 ~@2 b5@4 ~@15, ~@2 b4@13 ~@3 c5@11 f#5@10 ~@59 [c5,e5]@13 ~@17, ~@34 [a4,c5]@13 ~@3 b4@13 ~@3 g4@13 ~@8 e4@15 ~@26]/4", // C Am
  J: "~@6 b5@4 ~ d6@4 ~@17", K: "~ a5@4 ~ b5@4 ~@22",
  L: "[~@7 b4@2 e5@4 ~ e5@4 ~@2 f#5@2 ~@8 b5@9 ~@2 g5@6 ~@2 f#5@2 ~ e5@4 ~ f#5@4 ~ f#5@4 ~@2 f#5@4 ~ f#5@2 ~ b5@2 e5@6 ~@2 d5@2 ~ d5@2 ~ a5@2 b4@2, ~@9 [g4,b4]@13 g5@7 ~@67, ~@25 [b4,d5]@13 ~@3 [g4,c5]@13 ~@3 [a4,c5]@13 ~@3 b4@13 ~@3 g4@7]/3", // G Bm C5 Am
  M: "[~@6 a4@2 ~ a4@2 ~ b4@2 e4@9 ~@2 [a4,c5,e5]@13 ~@3 e5@2 ~ e5@4 ~ f#5@4 ~@4 [b4,d5]@13 e5@2 ~ g5@2 ~ f#5@4 ~ e5@6 ~@2 f#5@2 ~ f#5@2 ~@6 f#5@4 ~ f#5@2 ~ b5@2 e5@9 ~@2 d5@2 ~ e5@2 b4@9 ~@2 a4@2 ~ b4@2 e4@9 ~@2 [a4,c5,e5]@13 ~@3 b4@2 ~ b4@2 b4@2 ~ a4@2 ~ b4@4 ~ b4@2 ~ b4@2 b4@2, ~@41 [g4,b4]@13 g5@15 ~@4 [g4,c5]@13 ~@3 [a4,c5]@13 ~@3 b4@13 ~@3 g4@13 ~@35 g4@13 ~@3 d4@7]/6", // Am Bm Am G C5 Am
  N: "[~ a4@2 ~ b4@4 ~ b4@2 ~ a4@2 b4@2 ~ a4@2 ~@11 b4@4 ~@2 b4@4 ~ b4@2 ~ d5@2 b4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 e4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 e4@9 ~@2 [a4,c5,e5]@7, ~@9 e4@11 b4@10 ~@66, ~@25 e4@13 ~@3 g4@13 ~@3 d4@13 ~@26]/3", // Am
  O: "[~@4 f#5@2 ~@6 f#5@2 f#5@2 ~ e5@2 ~ f#5@2 ~@6 f#5@2 f#5@2 ~ e5@2 ~ f#5@2 ~@6 f#5@2 f#5@2 ~ f5@2 ~@11 f#5@4 ~@2 f#5@4 ~ f#5@2 ~ b5@2 e5@6 ~@2 d5@2 ~ d5@2 ~ a5@2 b4@6 ~@2 a4@2 ~ a4@2 ~ b4@2 ~@16 a5@4 ~@2 b5@4 ~@24, ~@6 g5@5 ~@11 g5@5 ~@11 g5@5 ~@9 f#5@10 ~@59 [c5,e5]@13 ~@26, ~@9 b4@13 ~@3 b4@13 ~@3 c5@13 ~@3 [a4,c5]@13 ~@3 b4@13 ~@3 g4@13 ~@8 e4@15 ~@35]/5", // C Am
  P: "[~@15 b5@2 ~ d6@2 ~@12]/2", Q: "~@7 a5", R: "~ b5@4 ~@27", S: "~@29 b4@2 ~",
  T: "[e5@4 ~ e5@4 ~@2 f#5@2 ~@3 [d5,b5]@10 ~ e5@2 ~@3 [e5,b5]@10 ~ e5@2 g5@2 ~ f#5@6 ~@2 b5@2 ~ e5@4 ~, [g4,b4]@13 g5@13 ~@3 g5@13 ~@6 c5@13 ~@3]/2", // G E5 G
  U: "[e5@4 ~ e5@4 ~@2 f#5@2 ~@3 [d5,b5]@10 ~ e5@2 ~@3 [e5,b5]@9 ~@2 e5@2 g5@2 ~ [a4,c5]@13 ~@3 [g4,b4]@13 ~@3 [g4,c5]@13 ~@3, [g4,b4]@13 g5@13 ~@3 g5@11 ~@8 f#5@42 ~@6]/3", // G E5 Am G C5 G
  V: "[[g4,c5,e5]@13 ~@3 [e4,a4]@11 ~@26 a4@4 ~@2 b4@4 ~, ~@16 d5@9 ~@2 b4@10 d5@16 ~@11, ~@32 [e4,g4]@13 ~@3 [g4,c5]@13 ~@3]/2", // C A5 Em C5
  W: "[e4,g4,c5,e5]@13 ~@3 a4@5 a4@6 b4@4 ~, ~@16 [c5,e5]@13 ~@3", X: "e4@13 ~@8 a4@4 ~@2 b4@4 ~", Y: "e4@13 ~@19",
})).s("gm_pad_poly").gain(0.48)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@8 B@16 C ~ D ~ E ~ F G@2 ~@2 H I J I J I J I J I J I J K L@2 M N O P Q ~@6 R S R S R S R S R S R S R S R S R S T U T
  U T U T U ~@6 R S R S V W ~@2
>`.pickRestart({
  A: "[~@18 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]]/8", // Em G C Am Em G C Am …
  B: "[~@2 [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]]/8", // Am Em G C Am Em G C …
  C: "~@2 [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~@15", D: "~@6 [e4,g4,b4]@4 ~ d5@4 ~@17",
  E: "~@3 [g4,b4,d5]@4 ~ [g4,b4,d5]@4 ~@20", F: "~ [d4,g4,a4]@4 ~ [d4,g4,b4]@4 ~@22",
  G: "[~@31 [g4,b4,d5]@4 ~ [g4,b4,d5]@5 ~@23]/2", // G
  H: "~@9 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2", // C Am
  I: "~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~", // Am Em G
  J: "~ [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2", // G C Am
  K: "~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~@24", L: "[~@15 [e4,g4,b4]@2 ~ d5@2 ~@12]/2", M: "~@29 [g4,b4,d5]@3",
  N: "~ [g4,b4,d5]@2 ~@11 [e4,g4,a4]@2", O: "~ [e4,g4,b4]@4 ~@22 [g4,b4,d5]@4 ~", P: "[g4,b4,d5] ~@7",
  Q: "~@24 [g4,b4,d5]@4 ~ [g4,b4,d5]@3", // G
  R: "[g3,b3,e4]@6 ~@2 [g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [b3,d4,g4]@6 ~@2 [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~", // Em G
  S: "[g3,c4,e4]@6 ~@2 [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@5 [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~", // C Am
  T: "[g3,b3,e4]@4 ~ [g3,b3,e4]@2 ~ [g3,b3,e4]@2 ~ [g3,b3,e4]@2 [g3,b3,e4]@2 ~ [b3,d4,g4]@4 ~ [b3,d4,g4]@2 ~ [b3,d4,g4]@2 ~ [b3,d4,g4]@2 [b3,d4,g4]@2 ~", // Em G
  U: "[g3,c4,e4]@4 ~ [g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4]@2 [g3,c4,e4]@2 ~ [a3,c4,e4]@4 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 ~ [a3,c4,e4]@2 [a3,c4,e4]@2 ~", // C Am
  V: "[g3,b3,e4]@9 ~@2 [g3,b3,e4]@4 ~ [b3,d4,g4]@9 ~@2 [b3,d4,g4]@4 ~", W: "[g3,c4,e4]@13 ~@3 [a3,c4,e4]@13 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.29)

// bass · acoustic bass
const bass = note(`<
  ~@8 A B C B C B C B C B C B C B C B D@2 E@3 F G H@2 I@4 J@2 I@2 J@2 I@4 K@2 L@2 M N O P@2 Q R S T U V U T U V U V U V
  U T U V U V U V U W X Y X Y X Y X Y U T U T U T U V U T U V Z@2
>`.pickRestart({
  A: "~@18 e1@9 ~@2 e1@3", B: "~@2 g1@9 ~@2 g1@4 ~ c2@9 ~@2 c2@3", C: "~@2 a1@4 ~ c2@4 ~@2 d2@4 ~ e1@9 ~@2 e1@3",
  D: "[~@2 a1@4 ~ c2@4 ~@2 d2@4 ~ e1@4 ~ e1@2 ~ e1@2 e1@2 ~ e1@2 g1@4 ~@2 g1@2 g1@2 ~ g1@2 g1@2 ~ c2@4 ~ c2@2 ~ c2@2 c2@2 ~ c2@2]/2",
  E: "[a1@4 ~@2 c2@4 ~ d2@4 ~ e1@4 ~ e1@2 ~ e1@2 e1@2 ~ e1@2 g1@4 ~ g1@2 ~ g1@2 ~ g1@2 g1@2 ~ c2@4 ~ c2@2 c2@2 ~ c2@2 ~ c2@2 a1@4 ~ c2@4 ~ d2@4 ~@2 e1@4 ~ e1@2 e1@2 ~ e1@2 e1@2 ~ g1@3]/3",
  F: "~@2 g1@2 ~ g1@2 g1@2 ~ g1@2 c2@4 ~@2 c2@2 c2@2 ~ c2@2 c2@2 ~ a1@4",
  G: "~ c2@4 ~ d2@4 ~ e1@4 ~@2 e1@2 e1@2 ~ e1@2 e1@2 ~ g1@4 ~",
  H: "[g1@2 ~ g1@2 g1@2 ~ g1@2 c2@4 ~ c2@2 ~ c2@2 ~ c2@2 c2@2 ~ a1@4 ~ c2@4 ~ d2@4 ~ e1@8 ~@3 e1@4 ~ g1@7]/2",
  I: "[~@4 g1@4 ~ c2@9 ~@2 c2@4 ~ a1@4 ~ c2@4 ~@2 d2@4 ~ e1@9 ~@2 e1@4 ~ g1@7]/2",
  J: "[~@4 g1@4 ~ c2@9 ~@2 c2@4 ~ a1@4 ~ a1@4 ~@2 a1@4 ~ e1@9 ~@2 e1@4 ~ g1@7]/2",
  K: "[~@4 g1@4 ~ c2@9 ~@2 c2@4 ~ a1@4 ~ c2@4 ~@2 d2@4 ~ e1@4 ~ e1@2 ~ e1@2 ~ e1@2 e1@2 ~ g1@4 ~ g1@2]/2",
  L: "[~ g1@2 ~ g1@2 g1@2 ~ c2@4 ~ c2@2 ~ c2@2 ~ c2@2 c2@2 ~ a1@4 ~ c2@4 ~@2 d2@4 ~ e1@4 ~ e1@2 ~ e1@2 ~ e1@2 e1@2 ~ g1@4 ~ g1@2]/2",
  M: "g1@2 ~ g1@2 ~ g1@2 c2@4 ~ c2@2 ~ c2@2 c2@2 ~ c2@2 ~ a1@4 ~ c2@3",
  N: "~@2 d2@4 ~ e1@4 ~ e1@2 ~ e1@2 e1@2 ~ e1@2 g1@4 ~@2 g1@2 g1@2",
  O: "~ g1@2 g1@2 ~ c2@4 ~ c2@2 ~ c2@2 c2@2 ~ c2@2 a1@4 ~@2 c2@4 ~",
  P: "[d2@4 ~ e1@4 ~ e1@2 ~ e1@2 e1@2 ~ e1@2 g1@4 ~ g1@2 ~ g1@2 ~ g1@2 g1@2 ~ c2@4 ~ c2@2 c2@2 ~ c2@2 ~ c2@2 a1@4 ~ c2@4 ~ d2@3]/2",
  Q: "~@3 e1@8 ~@2 e1@4 ~ g1@8 ~@2 g1@4", R: "~ c2@8 ~@3 c2@4 ~ a1@4 ~ c2@4 ~ d2@4 ~",
  S: "e1@8 ~@3 e1@4 ~ g1@9 ~@2 g1@4 ~", T: "c2@9 ~@2 c2@4 ~ a1@4 ~ c2@4 ~@2 d2@4 ~",
  U: "e1@9 ~@2 e1@4 ~ g1@9 ~@2 g1@4 ~", V: "c2@9 ~@2 c2@4 ~ a1@4 ~ a1@4 ~@2 a1@4 ~",
  W: "c2@4 ~ c2@9 ~@2 a1@4 ~ a1@9 ~@2", X: "e1@4 ~ e1@9 ~@2 g1@4 ~ g1@9 ~@2",
  Y: "c2@4 ~ c2@9 ~@2 a1@4 ~ c2@4 ~@2 d2@4 ~", Z: "[e1@29 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.48)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B C D C D C D C D C D C D C D C E F G H I J K L M N O N O N O N O N O N O N O N P Q R G H S T K U V W X W X W Y
  W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W X W Z AA ~
>`.pickRestart({
  A: "~@13 x ~@17 x", B: "~@18 x ~@10 x ~@2", C: "~@2 x ~@10 x ~@4 x ~@10 x ~@2",
  D: "~@2 x ~@4 x ~@5 x ~@4 x ~@10 x ~@2", E: "~@2 x ~@4 x ~@5 x ~@4 x ~@2 x ~ x ~@2 x ~ x ~@2 x",
  F: "~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~",
  G: "x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x",
  H: "~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  I: "~ x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2",
  J: "x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~",
  K: "~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2",
  L: "x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x", M: "~ x ~@2 x ~@2 x ~ x ~@10 x ~@4 x ~@6",
  N: "~@4 x ~@4 x ~@10 x ~@4 x ~@4 x ~", O: "~@4 x ~@4 x ~@10 x ~@4 x ~@6",
  P: "~@4 x ~@4 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  Q: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  R: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~",
  S: "~ x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
  T: "x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x", U: "x ~@2 x ~@9 x ~@4 x ~@9 x ~@3",
  V: "~ x ~@10 x ~@4 x ~@4 x ~@4 x ~@4", W: "x ~@10 x ~@4 x ~@10 x ~@4", X: "x ~@10 x ~@4 x ~@4 x ~@5 x ~@4",
  Y: "x ~@12 x ~@2 x ~@4 x ~@5 x ~@4", Z: "x ~@10 x ~@4 x ~@2 x ~ x ~@10", AA: "x",
})).gain(0.1)

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

// drums · hihat
const hihat = s("hh").struct("<~@4 A B@19 C ~@7 D E@15 F ~@7 G H I@41 J ~@2>".pickRestart({
  A: "~@18 x ~@2 x ~ x ~@2 x ~@2 x ~ x", B: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x",
  C: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@16", D: "~@9 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  E: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~", F: "~ x ~@2 x ~ x ~@25",
  G: "~@3 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x",
  H: "~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~",
  I: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", J: "x ~@2 x ~ x ~@2 x ~@23",
})).gain(0.1)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@3 B ~@7 B ~@15 C ~@7 C ~@18 D ~@38>".pickRestart({
  A: "~@7 x ~@24", B: "~@13 x ~@18", C: "~ x ~@6", D: "~@21 x ~@10",
})).gain(0.1)

// drums · china
const china = s("cr").struct(`<
  ~@8 A ~@3 B ~@3 B ~@3 B ~@3 A ~ C ~ D ~ E F G ~@3 H ~@3 H ~@3 H ~@3 G ~ G I J ~ K L M N O P O P O ~ O ~ O Q O ~ O R O
  ~ O ~ O I ~ P S@7 T O P O P O P O P O P O U O ~
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@13 x ~@4 x ~@13", C: "~ x", D: "~@3 x ~@4 x ~@5 x ~@17", E: "~@11 x ~@20",
  F: "~@10 x ~@4 x ~@10 x ~@4 x", G: "~@9 x ~@22", H: "~@4 x ~@4 x ~@22", I: "~@29 x ~@2", J: "~@2 x ~@4 x ~@24",
  K: "~@5 x ~@26", L: "~@4 x ~@4 x ~@9 x ~@4 x ~@7", M: "~@3 x ~@28", N: "~@12 x ~ x ~@2 x ~@4 x ~@4 x ~@4", O: "x",
  P: "~@11 x ~ x ~@2 x ~@4 x ~@5 x ~@4", Q: "~@27 x ~@4", R: "x!2", S: "x ~@10 x ~@4 x ~@10 x ~@4",
  T: "x ~@10 x ~@4 x ~@4 x ~@5 x ~@4", U: "~@11 x ~ x ~@2 x ~@2 x ~ x ~@10",
})).gain(0.1)

// drums · congas
const congas = s("conga:13").struct("<~@24 A B C D E F G H I ~@15 J K L C D M N G O ~@45>".pickRestart({
  A: "~@18 x ~@2 x ~ x ~@2 x ~ x ~@2 x", B: "~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~",
  C: "x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x",
  D: "~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  E: "~ x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2",
  F: "x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~",
  G: "~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2",
  H: "x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x", I: "~ x ~@2 x ~@2 x ~@24",
  J: "~@9 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  K: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  L: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~",
  M: "~ x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
  N: "x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x", O: "x",
})).gain(0.33)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@24 A B C D E F G H I ~@15 J K L C D M N G O ~@45>".pickRestart({
  A: "~@18 x ~@2 x ~ x ~@2 x ~ x ~@2 x", B: "~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~",
  C: "x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x",
  D: "~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  E: "~ x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2",
  F: "x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~",
  G: "~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2",
  H: "x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x", I: "~ x ~@2 x ~@2 x ~@24",
  J: "~@9 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  K: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  L: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~",
  M: "~ x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
  N: "x ~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x", O: "x",
})).gain(0.53)

stack(pad_poly, acoustic_guitar_nylon, bass, kick, snare, hihat, mid_tom, china, congas, cabasa)

More by The Cranberries