Strudelify

Ruby, Dont Take Your Love to Town

Kenny Rogers

KeyG majorTempo107 bpm
0:00/0:00
// Ruby, Dont Take Your Love to Town — Rogers Kenny
// 107 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 3, 4/4 at bar 3, 2/4 at bar 13, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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.

// bass · fretless bass
const bass = note(`<
  ~@3 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA L M N O P AB AC AD AE K AF AG AH AI AG AJ AK P AL AM AN AO
  AP ~@6 AQ H I J K L M N O P@2 AL AM ~@3
>`.pickRestart({
  A: "g1@2 ~ g1 d2@4 g2@2 ~ g2 d2@3 ~", B: "g1@3 g1 d2@3 ~ g2@3 ~ f2@2 e2 ~", C: "d2@3 d2 a1@3 ~ d2@2 ~ d2 a1@2 d2 ~",
  D: "c2@2 ~ c2 g1@4 c2@2 ~ c2 g1@3 ~", E: "f1@2 ~ f1 f2@2 f1 ~ g1@3 g1 d2@3 ~", F: "g2@2 ~ g2 d2@4 g1@3 g1 d2@4",
  G: "g1@4 g2@2 g1@2 d2@3 d2 a1@3 ~", H: "d2@2 ~ d2 a1@2 d2@2 g1@3 g1 d2@3 ~", I: "g2@2 ~ g2 d2@4 g1@2 ~ g1 g2@3 ~",
  J: "g1@4 f2@2 e2 ~ d2@2 ~ d2 a1@4", K: "d2@2 ~ d2 a1@2 d2 ~ c2@2 ~ c2 g1@4", L: "c2@2 ~ c2 g1@2 c2 ~ f2@3 ~ f2@3 ~",
  M: "e2@3 ~ e2@3 ~ d2@3 ~ d2@4", N: "d1 ~@7", O: "c2@4 g1@4 c2@2 ~ c2 g1@4", P: "c2@2 ~ c2 g1@4 c2@2 ~ c2 g1@2 c2 ~",
  Q: "d2@3 ~ a1@3 ~ d2@4 a1@3 ~", R: "c2@4 g1@3 ~ c2@4 g1@4", S: "c2@4 g1@4 c2@4 g1@2 c2 ~",
  T: "d2@4 a1@4 d2@4 a1@2 d2 ~", U: "f2@4 c2@3 ~ g2@4 d2@4", V: "g1@4 d2@3 ~ g2@4 d2@3 ~", W: "g2 g1 f2 e2 d2@2 a1@2",
  X: "d2@4 a1@4 g2@4 d2@3 ~", Y: "g2@4 d2@4 g1@4 d2@3 ~", Z: "g2@2 f2 e2 d2@2 a1@2", AA: "d2@4 a1@3 ~ c2@2 ~ c2 g1@4",
  AB: "c2@4 g1@4 c2@4 g1@3 ~", AC: "f2@4 c2@2 f2@2 g1@2 ~ g1 d2@4", AD: "g2@2 ~ g2 d2@3 ~ g1@3 g1 d2@3 ~",
  AE: "g2@3 ~ f2@2 e2 ~ d2@3 d2 a1@3 ~", AF: "c2@2 ~ c2 g1@3 ~ f1@2 ~ f1 f2@2 f1 ~",
  AG: "g1@3 g1 d2@3 ~ g2@2 ~ g2 d2@4", AH: "g1@3 g1 d2@4 g1@4 g2@2 g1@2", AI: "d2@3 d2 a1@3 ~ d2@2 ~ d2 a1@2 d2@2",
  AJ: "g1@2 ~ g1 g2@3 ~ g1@4 f2@2 e2 ~", AK: "d2@2 ~ d2 a1@4 d2@2 ~ d2 a1@2 d2 ~", AL: "f2@3 ~ f2@3 ~ e2@3 ~ e2@3 ~",
  AM: "d2@3 ~ d2@4 d1@2 ~@6", AN: "~@2 c2 g1", AO: "c2@2 ~ c2 g1@4 c2@2 ~ c2 g1@4", AP: "c2@2 ~ c2 g1@2 c2 ~@9",
  AQ: "~@8 d2@3 d2 a1@3 ~",
})).s("gm_fretless_bass").gain(0.41)

// chords · piano
const piano = note(`<
  ~@3 A@2 B C D@8 E F G@2 H I@2 B J@8 E F G@2 K L@5 M@2 N O@2 P Q R S T@2 U ~@6 V@6 E F G@2 Q R S ~@3
>`.pickRestart({
  A: "[~@7 f4, [g2,g3], d4@3 d4, b3@5 b3@3, ~ f3]/2", B: "[d3,d4,f4,a4]", C: "[c2,c4,e4,g4]",
  D: "[[f2,f3,a3,c4]@8 d4@14 [d4,g4]@2 [d4,g4]@16 [d3,a3,d4,f4,a4]@16 d4@16 [d4,g4]@15 ~ [d3,d4,f4,a4]@14 ~@2 [c3,c4,e4,g4]@16 [f3,c4,f4,a4]@8, ~@8 g2@32 ~@16 [g2,g3,b3]@31 ~@41, ~ [g3,b3]@2 ~@13]/8", // F G5 Dm G5 Dm C F G
  E: "[e3,e4,g4] [d3,d4,f4,a4]", F: "[d2,d4,f4,a4] ~@15", G: "[[c3,g3,c4,e4]@6 [c3,g3,c4,e4] ~]/2", H: "[d3,a3,d4,f4]",
  I: "[~@7 [d4,g4], [c3,g3,c4,e4]]/2", // G5 C
  J: "[[f2,f3,a3,c4]@8 [g3,b3,d4]@24 [g3,b3,d4]@4 [g3,b3,d4]@3 d3 [d3,a3,d4,f4]@16 ~@28 d4@4 [d3,a3,d4,f4,a4]@13 ~@3 [c3,c4,e4,g4]@16 [f3,c4,f4,a4]@8, ~ g2@4 ~@2 g2@4 ~@5, ~@7 d4@3 b3 ~@5, ~@14 b3@5 g3@3 ~@10, ~@7 g3@2 d3@2 ~@5]/8", // F G Dm C F
  K: "[c3,g3,c4,e4]@7 ~", // C
  L: "[[f3,a3,c4]@3 ~@15 f4@2 [d3,d4,f4,a4]@8 [c2,c4,e4,g4]@8 [f2,f3,a3,c4]@4, ~ [g2,g3]@4 ~@5, ~ d4@3 d4 ~@5, ~@2 b3@5 b3@3 ~@10, ~@3 f3@2 ~@5]/5", // F Dm C F G
  M: "[d4@7 [d4,g4] [d4,g4]@8, g2, [g3,b3] ~]/2", N: "[d3,a3,d4,f4,a4]", O: "[d4@16 [d4,g4]@15 ~, [g2,g3,b3]@31 ~]/2",
  P: "[d3,d4,f4,a4]@7 ~", Q: "[c3,c4,e4,g4]", R: "[f3,c4,f4,a4] [e3,e4,g4]", S: "[d3,d4,f4,a4]@8 [d2,d4,f4,a4] ~@7",
  T: "[~ [c3,g3,c4,e4]@3]/2", U: "[c3,g3,c4,e4] ~@3",
  V: "[~@8 [d3,a3,d4,f4,a4]@16 d4@16 [d4,g4]@15 ~ [d3,d4,f4,a4]@14 ~@2 [c3,c4,e4,g4]@16 [f3,c4,f4,a4]@8, ~@24 [g2,g3,b3]@31 ~@41]/6", // Dm G5 Dm C F G
})).s("gm_piano").gain(0.31)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@3 A B@2 C D E F ~ G H@3 I J ~ K L M N O P Q@2 ~ R@4 I J S T ~ U@5 V W ~ X Y Z AA AB AC ~ AD AE ~@8 G H@3 I J ~ K AA
  AB AC ~@3
>`.pickRestart({
  A: "g4 f4 g4 f4@3 e4@4 ~@4 c4@2, ~@5 d4@3",
  B: "[f4 ~@2 c4@3 ~@4 e4@2 f4@2 ~@14 c5@4, ~ e4@3 ~@10 d4@18, ~ f4 ~ g4@3 ~@4 f4@6, ~@3 a4]/2", C: "g4@3 ~",
  D: "~@10 g4@3 a4@2 ~", E: "b4@3 a4@3 g4@3 ~ g4@3 e4@2 ~", F: "d4@3 c4@3 b3@2 ~@8", G: "~@2 g4@6 d5@3 b4@3 a4@2",
  H: "[~ g4@5 ~@6 a4@7 ~@13 g4@4 ~@4 [f4,a4]@7 ~, ~@8 d4@11 ~@5 [c4,e4]@12 ~@12, ~@10 f4@9 ~@29]/3", // F C
  I: "[e4,g4]@7 ~ [d4,f4]@6 ~@2", J: "[d4,f4,a4] ~@15", K: "~@2 c4@2 ~ c4@2 ~ c4@2 ~ c4@3 ~@2", L: "[d4,f4]@9 ~@7",
  M: "~ g4@5 ~@2", N: "d4 e4 g4@4 e4@2 d4@3 c4@3 ~@2", O: "~ a4@2 ~, d4@11 ~@5, ~ f4@5 ~@2",
  P: "~@2 c5@5 ~@3 g4@2 ~ f4@3, f4@3 ~@5, ~ a4@6 ~@9", Q: "[e4@2 ~ d4@3 c4@3 b3@3 a3@3 g3@6 ~@11]/2",
  R: "[~@16 d5@6 ~@10 c5@5 ~@11 g4@4 ~@4 [f4,a4]@7 ~, ~@10 g4@12 ~@4 f4@11 ~@3 [c4,e4]@12 ~@12, ~@13 b4@9 ~@7 a4@8 ~@27]/4", // F C
  S: "g4 a4 c5 g4 a4 c5 g4 a4 c5 g4 a4 c5 g4 a4 c5 g4", T: "a4 c5 g4 a4 c5 g4 a4 c5 g4 a4 c5 g4 a4 c5 g4 ~",
  U: "[~@8 g4 f4 g4 f4@3 e4@4 ~@4 c4@2 f4 ~@2 c4@3 ~@4 e4@2 f4@2 ~@14 c5@4 g4@12 ~@12, ~@18 d4@6 ~ e4@3 ~@10 d4@18 ~@24, ~@13 f4 ~ g4@3 ~@4 f4@6 ~@12, ~@6 a4 ~@3]/5",
  V: "~@2 g4@3 a4@2 ~ b4@3 a4@3 g4@2", W: "~@2 g4@3 e4@2 ~ d4@3 c4@3 b3@2", X: "~@5 g4@3", Y: "d5@3 b4@3 a4@3 g4@5 ~@2",
  Z: "~@4 a4@7 ~@5, d4@11 ~@5, ~@2 f4@9 ~@5", AA: "~@2 g4 ~, [c4,e4]@3 ~", AB: "[f4,a4]@7 ~ [e4,g4]@7 ~",
  AC: "[d4,f4]@6 ~@2 [d4,f4,a4] ~@7", AD: "~@10 c4@2 ~ c4@2 ~", AE: "c4@2 ~ c4@3 ~@10",
})).s("gm_electric_guitar_muted").gain(0.36)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@3 A@2 B C D@8 E F G@2 H I@2 J K@8 E F G@2 L M@5 N@2 O P@2 Q R S T U@3 ~@6 V@6 E F G@2 R S T ~@3
>`.pickRestart({
  A: "[~ [b3,d4,g4]@2 [b3,d4,g4]@2 [g2,b3,d4]@2 [g2,b3,d4]@2 [g2,b3,d4]@2 [g2,g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4], g2@5 g4@11, ~@7 g3@4 ~@2 g2@3, ~@9 f3@7]/2", // G
  B: "~ [a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4], d3, ~ b3@7", // Dm
  C: "~ g3 ~ [g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4], c3@2 g3 ~@5, ~@2 [c4,e4]@3 c3@5 ~@6", // C
  D: "[~@2 [f3,a3,c4]@4 [f3,a3,c4]@2 ~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 g3@2 g3@2 [g3,b3,d4]@2 ~@2 [a3,d4]@4 [a3,d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4]@2 ~@2 g3@2 ~@6 [g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@2 ~@2 [a3,d4,f4]@4 [d3,a3,d4,f4]@4 [d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~@3 [g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@2 ~@6 [a3,c4]@2, ~@8 g2@5 g2@5 ~@16 g2@6 d3@16 g2@4 g3@2 [g3,b3,d4]@4 ~@22 d3@6 ~@10 c3@6 ~@10 f3@4 f3@4, ~@34 [b3,d4]@4 ~@4 g4@14 ~@2 [b3,d4]@3 g2@3 g2@6 ~@4 g2@14 ~@34 [a3,c4]@4 ~@2]/8", // F G D5 Dm G Dm C Am …
  E: "~@3 [a3,c4] d3!2 d3@2, e3!2 ~@2, ~ [a3,c4]@2 ~@5", F: "[a3,d4,f4] ~@15",
  G: "[c3@2 [c4,e4,g4]@4 ~@4 [c4,e4]@3 ~ [g3,c4,e4]@4 g3@2 ~@4 c3@2 g3@2 ~@2 [g3,c4,e4] ~, ~@6 g4@25 ~, ~@3 [c4,e4]@2 ~@5 g3 [g3,c4,e4]@2 ~ g3 ~, ~@8 c3@5 c3@5 [c3,c4,e4]@3 c3@3 ~@2 [c3,c4,e4]@3 c3@2 ~]/2", // C
  H: "~ [a3,d4,f4]@2 [a3,d4,f4]@2 a3 ~ [d4,f4], d3@3 a3, ~@10 [d4,f4]@3 d3@3", // Dm
  I: "[~ g3 ~ g3!3 ~ g3 g3!2 ~@2 g3!2 ~ [c4,e4], c3@4 g3@2 [c4,e4]@4 [c4,e4]@3 c3@7 g3@4 ~@4 g3@4, ~@2 [c4,e4]@3 c3@7 g3@2 [c4,e4]@4 [c4,e4]@3 c3@11, ~@11 [c4,e4]@2 [c4,e4]@2 ~]/2", // C
  J: "~ a3!6 [a3,d4,f4], d3, ~ [d4,f4]@2 [d4,f4]@2 [d4,f4]@2 ~", // Dm
  K: "[~@2 f3@2 ~@2 [a3,c4]@2 ~@2 [g3,b3,d4]@4 [g3,b3,d4]@4 g3@2 ~@2 g3@2 g3@2 g3@2 ~@2 g3@2 g3@2 g3@2 g3@2 [g3,b3,d4]@2 ~@2 [a3,d4]@4 [a3,d4]@4 [a3,d4,f4]@4 [a3,d4,f4]@2 ~@2 [g3,b3,d4]@4 [g3,b3,d4]@4 g3@2 ~@2 g3@2 g3@2 g3@2 ~@2 g3@2 g3@2 g3@2 g3@2 [g3,b3,d4]@2 ~@2 a3@2 ~@2 a3@2 a3@2 a3@2 ~ d3 [a3,d4,f4] ~@3 [g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@2 ~@6 [a3,c4]@2, f2@8 g2@13 g2@8 g2@11 ~@29 g2@8 g2@11 ~@4 a3@2 ~@6 a3@2 ~@18 f3@4 f3@4, ~@2 [a3,c4]@4 ~@12 [b3,d4]@4 [b3,d4]@4 [b3,d4]@4 [b3,d4]@4 [b3,d4]@4 ~@4 b3@13 ~@11 [b3,d4]@4 [b3,d4]@4 [b3,d4]@4 [b3,d4]@4 [b3,d4]@4 ~@4 [d4,f4]@4 [d4,f4]@4 [d4,f4]@4 ~@20 [a3,c4]@4 ~@2, ~@4 f3@4 ~@12 g3@2 ~@6 g3@2 ~@10 d3@16 ~@12 g3@2 ~@6 g3@2 ~@10 d3@5 d3@8 ~@3 c3@6 ~@18]/8", // Am G D5 Dm G Dm C Am …
  L: "~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4], c3", // C
  M: "[~@2 [a3,c4]@3 ~ [f3,a3,c4] ~@3 [b3,d4,g4]@4 [b3,d4,g4]@4 [g2,b3,d4]@4 [g2,b3,d4]@4 [g2,b3,d4]@4 [g2,g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@2 ~@2 [a3,d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4]@2 ~@2 g3@2 ~@2 [g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@2 ~@2 [f3,a3,c4]@4 [f3,a3,c4]@2, f3@5 ~@3 g2@10 g4@22 ~@2 b3@14 ~@2 [c4,e4]@4 ~@18, ~@11 g3@4 ~@2 g2@3 ~@10 g3 ~@9, ~@26 f3@14 d3@16 c3@5 c3@5 ~@14]/5", // Am F G Dm C F C
  N: "[~@2 [g3,b3,d4]@3 ~ [g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g2,g3,b3,d4]@4 g3@2 g3@2 [g3,b3,d4]@2, g2@5 g2@5 ~@16 g2@6, ~@13 [b3,d4]@2 ~]/2", // G Bm
  O: "~ [a3,d4]@2 [a3,d4,f4]@2 [a3,d4,f4]@2 [a3,d4,f4], d3, ~ g4@7", // D5 Dm
  P: "[~ g3 ~@3 [g3,b3,d4]@2 [g2,g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4], g2@2 g3 [g3,b3,d4]@2 ~@11, ~@2 [b3,d4]@3 g2@3 g2@6 ~@4 g2@14]/2", // G Bm
  Q: "~@2 [a3,d4,f4]@4 [d3,a3,d4,f4]@4 [d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~, d3@3 ~@5", // Dm
  R: "~ [g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4]@2 [c3,g3,c4,e4], c3@3 ~@5", // C
  S: "~@3 [a3,c4] ~@3 [a3,c4], f3!2 e3!2, ~ [a3,c4]@2 ~@2 [a3,c4]@2 ~", T: "d3@2 d3@2 d3@4 [a3,d4,f4] ~@7",
  U: "[~@8 c3@2 [c4,e4,g4]@4 ~@4 [c4,e4]@3 ~ [g3,c4,e4]@4 g3@2 ~@4 c3@2 g3@2 ~@2 [g3,c4,e4] ~@9, ~@14 g4@25 ~@9, ~@7 [c4,e4]@2 ~@5 g3 [g3,c4,e4]@2 ~ g3 ~@5, ~@16 c3@5 c3@5 [c3,c4,e4]@3 c3@3 ~@2 [c3,c4,e4]@3 c3@2 ~@9]/3", // C
  V: "[~@10 [a3,d4]@4 [a3,d4,f4]@4 [a3,d4,f4]@4 [a3,d4,f4]@2 ~@2 g3@2 ~@6 [g3,b3,d4]@4 [g2,g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@4 [g3,b3,d4]@2 ~@2 [a3,d4,f4]@4 [d3,a3,d4,f4]@4 [d3,a3,d4,f4]@4 [d3,a3,d4,f4] ~@3 [g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@4 [c3,g3,c4,e4]@2 ~@6 [a3,c4]@2, ~@4 d3@8 g2@2 g3 [g3,b3,d4]@2 ~@11 d3@3 ~@5 c3@3 ~@5 f3@2 f3@2, ~@10 g4@14 ~@2 [b3,d4]@3 g2@3 g2@6 ~@4 g2@14 ~@34 [a3,c4]@4 ~@2]/6", // D5 Dm G Dm C Am G Bm …
})).s("gm_acoustic_guitar_nylon").gain(0.36)

// chords · piano
const piano_2 = note("<~@13 A@2 B ~@13 A@2 B ~@15 C D E ~@13 A@2 B ~@3 C D E ~@3>".pickRestart({
  A: "[~ [e5,g5,c6]@2 [f5,a5,c6]]/2", B: "[e5,g5,c6] [d5,f5,a5,c6]", C: "[e5,g5,c6]", D: "[f5,a5,c6] [e5,g5,c6]",
  E: "[d5,f5,a5,c6] ~", // Dm7
})).s("gm_piano").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~@3 A@13 B A@15 B A@16 C D A@15 B A@4 C D A C>".pickRestart({
  A: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@3", B: "x", C: "x ~@2 x!2 ~@3 x ~@7", D: "~@8 x ~@2 x!2 ~@3",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<~@3 A@13 B A@15 B A@16 C D A@15 B A@4 C D E ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x", C: "~ x ~ x!2 ~@3", D: "~@5 x ~ x", E: "~ x ~ x ~ x ~@2",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@73 [~@15 x] [~ x ~@4 x!2 ~@8]>").gain(0.15)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@73 [~@7 x] [~@3 x!3 ~@10]>").gain(0.1)

// drums · low tom
const low_tom = s("lt").struct("<~@74 [~@3 x ~@4]>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<A B C D@10 E D F B D@12 E D F B D@16 E G D@14 F B D@4 E G D H>".pickRestart({
  A: "~@2 x!2", B: "x!2 ~ x", C: "~ x ~ x", D: "x!4", E: "x ~ x!3 ~ x ~", F: "x ~ x ~ x ~ x!2", G: "~ x!3",
  H: "x!2 ~@2",
})).gain(0.51)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@3 A@10 B A C ~ A@12 B A C ~ A@16 D E A@14 F ~ A@4 D G H I>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x ~@2 x ~@4 x ~@3 x ~", C: "~@2 x ~@3 x ~@3 x ~@2 x ~@2", D: "~@2 x ~@2 x ~@10",
  E: "~@5 x ~ x", F: "~@2 x ~@7 x ~@2 x ~@2", G: "~@9 x!3 ~ x!3", H: "~ x!3 ~ x!3 ~ x!3 ~ x!3", I: "~ x!3 ~ x!3 ~@8",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@74 [~@7 x ~@8]>").gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@13 A ~ B ~@13 A ~ B ~@17 A ~@15 C ~@5 A ~@2 D>".pickRestart({
  A: "~@7 x ~@8", B: "~@15 x", C: "~@6 x ~@8 x", D: "~ x",
})).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@74 [~ x ~@2]>").gain(0.51)

// drums · ride
const ride = s("rd").struct("<~@74 [~ x]>").gain(0.51)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@72 [~@8 x!8] [x!16] [x!8 ~@8]>").gain(0.78)

stack(
  bass, piano, electric_guitar_muted, acoustic_guitar_nylon, piano_2, kick, rim, snare, snare_soft, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, high_tom, ride, cabasa
)

More by Kenny Rogers