Strudelify

Garden Party

Ricky Nelson

KeyD majorTempo150 bpm
0:00/0:00
// Garden Party — Ricky Nelson
// 150 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// bass · fretless bass
const bass = note(`<
  ~ A B C D E F G H I J B K E F L F A J D G D E B M F N D O P Q E R I J D S G F S F A T D E D E D E H E D E D E D G F G
  D U V F G R I T D W N H G X A T D Y D E D Y X V D E D E D Z F AA D AB G R G AC I T D AD E H E R A T D G D M D G H E D
  AE D E D P F E D P D P D G F AA D AF@2
>`.pickRestart({
  A: "d2 a1 c#2 a1", B: "g2@2 d2 a1@3 e1@2", C: "d2@2 a1 b1@3 f#1@2", D: "g2 d2 a1 e1", E: "d2@2 a1@2 d2@2 b1 a1",
  F: "g2@2 d2@2 g2@2 a1 b1", G: "d2@2 a1@2 d2!2 b1 a1", H: "g2@2 d2@2 g2 g1 a1 b1", I: "d2@2 a1@2 d2 c#2@3",
  J: "b1@2 f#1 a1@3 f#1@2", K: "d2@2 a1@2 d2@2 d2 e2", L: "d2@2 a1@2 d2 a1 d2 f#2", M: "d2@2 a1@2 d2@2 d2 a1",
  N: "d2@2 a1@2 d2!2 e2 f#2", O: "d2 a1 d2 a1", P: "d2@2 a1@2 d2 a1 d2 a1", Q: "g2@2 d2@2 g2@3 e2",
  R: "g2@2 d2@2 g2 a1@2 b1", S: "d2@2 a1@2 d2@3 a1", T: "b1 f#1 a1 f#1", U: "d2@2 a1@2 d2 b1 d2 e2",
  V: "d2@2 a1@2 d2@3 f#2", W: "d2@2 a1@2 d2 f#1 a1 b1", X: "g2@2 d2@2 g2 b1 g1 b1", Y: "d2@2 a1@2 d2@2 e2 f#2",
  Z: "d2@2 a1@2 d2 b1 d2 f#2", AA: "d2@2 a1@2 d2 b1@2 a1", AB: "d2@2 a1@2 d2 a1@2 b1", AC: "g2@2 d2@2 g2@2 d2 e2",
  AD: "d2@2 a1@2 d2@2 a1 b1", AE: "d2@2 a1@2 d2@2 d2 f#2", AF: "d2/2",
})).s("gm_fretless_bass").gain(0.36)

// chords · acoustic guitar nylon · "Nylon String"
const acoustic_guitar_nylon = note(`<
  ~ A B@2 C D E D F G H I J D K L M N O P Q R S T U K V W D X K Y Z AA H AB V L AC J E AD AE AF D AG AH AF AI K J C D C
  D AJ D K AK AL J S AM J AN AO AP AQ J@2 E J K AR AE C D AS J AF J AT J AU Y AG AV AW D AX D AY J AZ BA D K BB BC BD
  D@2 E X Z BE BC BF D C S BG AV BH D BI BJ BK L BL J BM Y BN BO AF BP BQ BR K S BS BT@2
>`.pickRestart({
  A: "[a3,d4,f#4]@2 a3!2, ~ [d4,f#4]", B: "[[g3,b3,d4]@3 ~@5 a3 d4 a3 [b3,d4,f#4]@5, ~@3 [c#4,e4,a4]@8 ~@5]/2",
  C: "[b3,d4,g4] [c#4,e4,a4]", D: "[d4,f#4,a4]", E: "[g3,b3,d4]", F: "d4@6 ~ b3, g3, b3@7 ~, ~@3 d4",
  G: "f#4@3 f#4@2 [d4,f#4,a4]@3, [a3,d4]@5 ~@3", H: "[b3,d4,f#4]@3 [b3,d4,f#4]@5",
  I: "[b3,d4,g4]@3 c#4@4 c#4, ~@3 [a3,e4]@5", J: "[a3,d4,f#4]", K: "[b3,d4,g4]", L: "a3@3 a3, [d4,f#4]",
  M: "g3@6 ~ b3, d4, b3@7 ~, ~@3 g3", N: "[d4,f#4,a4]@4 f#4 ~@2 d4, ~ a4, ~@4 d4@3 ~, ~@5 f#4@3",
  O: "[b3,d4,f#4]@3 b3@4 b3, ~@3 [d4,f#4]@5", P: "~ g4@2 d4 [c#4,e4,a4]@4, [g3,b3] ~, d4@3 ~@5", Q: "d4@3 d4, [f#4,a4]",
  R: "d4 ~@2 b3 [a3,c#4,e4]@4, g4 ~, b3@3 ~@5, ~ d4@3 ~@4", S: "~@7 a3, [d4,f#4,a4]", T: "[g3,b3,d4]@3 [a3,c#4,e4]@5",
  U: "d4@3 d4, [a3,f#4]", V: "f#4@5 ~@2 d4, a4, d4@7 ~, ~@5 f#4@3", W: "[b3,d4,g4]@4 c#4@3 c#4, ~ [e4,a4]",
  X: "d4@5 ~@2 a3, f#4, a3@7 ~, ~@5 d4@3", Y: "~@3 a3, [d4,f#4,a4]", Z: "d4@5 ~@2 g4, [g3,b3], ~@5 d4@3",
  AA: "d4@4 d4 [a3,d4,f#4]@3, [f#4,a4]@5 ~@3", AB: "b3!2 [a3,c#4,e4]@2, [d4,g4] ~", AC: "~@7 g3, [b3,d4,g4]",
  AD: "f#4 ~@2 d4 d4@3 d4, a4 ~, d4@3 ~ [a3,f#4]@4, ~ f#4@3 ~@4", AE: "[b3,d4,f#4]!2", AF: "[g3,b3,d4] [a3,c#4,e4]",
  AG: "[b3,d4,g4] [a3,c#4,e4]", AH: "~@5 a3 ~ a3, [f#4,a4], d4@3 d4", AI: "d4@5 ~ a3@2, [f#4,a4], ~@5 d4@3",
  AJ: "g3@2 g3@2 e4@3 e4, [b3,d4] [a3,c#4]", AK: "d4@6 ~ a3, [f#4,a4], ~@3 d4", AL: "b3@3 b3 [c#4,e4,a4]@4, [g3,d4] ~",
  AM: "d4@5 ~@2 b3, g4, b3@7 ~, ~@5 d4@3", AN: "b3@6 ~ g3, d4, g3@7 ~, ~@3 b3",
  AO: "[a3,d4,f#4]@5 d4@2 d4, ~@5 [a3,f#4]@3", AP: "d4 ~@2 d4 [b3,d4,f#4]@4, b3 ~, f#4!2 ~@2, ~ d4@2 ~@5",
  AQ: "[g3,b3,d4] [c#4,e4,a4]", AR: "~@3 a3 f#4 ~@2 a3, [d4,f#4,a4] a4, ~@2 d4!2, ~@5 f#4@3",
  AS: "~ g4 ~ b3 c#4@2 c#4@2, g3 [a3,e4], b3@3 ~@5, d4!2 ~@2", AT: "d4@5 ~@2 b3, g3, b3@7 ~, ~@5 d4@3",
  AU: "[b3,d4,g4]@4 e4 ~ a4 e4, ~ [a3,c#4], ~@5 e4@2 ~", AV: "d4@5 ~@2 a3, [f#4,a4], ~@5 d4@3",
  AW: "[b3,d4,g4]@4 e4@3 e4, ~ [a3,c#4]", AX: "b3@5 ~@2 b3, d4, g3@3 g3, ~@5 b3@2 ~",
  AY: "~ g3@2 b3 [c#4,e4,a4]@4, [d4,g4] ~, b3@3 ~@5", AZ: "a3@7 a3, [d4,f#4]", BA: "g4@7 g4, [b3,d4]",
  BB: "[d4,f#4,a4]@5 [d4,f#4,a4]@3", BC: "[b3,d4,f#4]@4 d4@3 d4, ~ [b3,f#4]",
  BD: "[b3,d4,g4]@4 a3 ~ c#4@2, ~ e4, ~@2 c#4 ~, ~@5 a3@3", BE: "[d4,f#4,a4] [a3,d4,f#4]",
  BF: "~@3 g3 e4@3 e4, [b3,d4,g4] [a3,c#4]", BG: "~ g3 [a3,c#4,e4]@2, [b3,d4,g4] ~",
  BH: "b3@5 ~@2 g4, g3, d4@3 d4, ~@5 b3@3", BI: "[g3,b3,d4]@4 c#4@3 c#4, ~ [e4,a4]",
  BJ: "f#4@5 ~@2 a3, a4, d4@3 d4, ~@5 f#4@3", BK: "[b3,d4,g4]@2 c#4!2, ~ [e4,a4]", BL: "[g3,b3,d4]@2 c#4!2, ~ [a3,e4]",
  BM: "g3@5 ~ b3@2, d4, b3@3 ~, ~@5 g3@3", BN: "[b3,d4,g4]@4 e4@2 ~ c#4, ~ a4, ~@4 c#4@3 ~, ~@3 e4",
  BO: "d4@6 ~ a3, f#4, a3@7 ~, ~@3 d4", BP: "f#4@5 ~@2 a3, a3@7 ~, d4@3 d4, ~@5 f#4@3",
  BQ: "b3@3 b3 c#4@2 c#4@2, [g3,d4] [a3,e4]", BR: "d4@5 ~ a3@2, f#4, a3@3 ~, ~@5 d4@3",
  BS: "g3 ~@2 b3 [c#4,e4,a4]@4, d4 ~, b3@3 ~@5, ~ g3@3 ~@4", BT: "[a3,d4,f#4]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.11).pan(0.2)

// other · electric guitar jazz · "Jazz Electric"
const electric_guitar_jazz = note(`<
  A B C D E F G F G H I J@2 F G F G K I L@2 M@4 N O P@2 F G F G H I J@2 F G F G K I L@2 M@4 N O P@2 ~ Q ~ R S@2 T@2 F G
  F G H I J@2 F G F G K I L@2 M@4 N O P@2 ~@4 U V W@2 F G F G H I J@2 F G F G K I L@2 M@4 N O P@2 ~@4 X Y Z@2 M@4 N O AA
  AB AC
>`.pickRestart({
  A: "~ a2 b2 c#3", B: "[d3,f#4]@2 a3 d4 c#3 d4 d3 a3", C: "[b2,d4]@2 d3 g3 a2 d4 d3 g3",
  D: "[d3,d4]@2 d3 a3 b2 d4 f#3 b3", E: "g2 b3 g3 a3 a2 c#4 e3 a3", F: "d3 d4 a3 ~ a2 d4 a3 d4, ~@3 f#4@2 ~@3",
  G: "[g2,b3]@2 g3 ~ d3 b3 g3@2, ~@3 g4@2 ~@3", H: "[d3,d4]@2 d3 a3 c#3 f#4 d3 a3", I: "b2@2 b3 d4 a2 f#4 b3 d4",
  J: "[g2 d3 g3 b3 a2 c#4 a3 ~ d3 d4 a3 d4@2 f#4 a3 d4, ~@7 d4@2 ~@7]/2", K: "[d3,d4]@2 d3 a3 c#3 f#4 a3 d4",
  L: "[g2 d3 g3 b3 a2 c#4 a3 ~ d3@2 a3 ~ a2 f#4 a3 d4, ~@7 d4@3 ~ d4@2 ~@3]/2",
  M: "[g2@2 d3 g3 a2 c#4 a3 ~ d3@2 a3 ~ a2 d4 a3@2, ~@7 d4@3 ~ f#4@2 ~@3]/2", N: "g2 b3 g3 ~ d3 b3 g3 b3, ~@3 g4@2 ~@3",
  O: "d3@2 a3 ~ a2 f#4 a3 d4, ~@3 d4@2 ~@3",
  P: "[g2 d3 g3 b3 a2 c#4 a3 ~ d3@2 a3 ~ a2 d4 a3 d4, ~@7 d4@3 ~ f#4@2 ~@3]/2", Q: "~ b4@2 d4 f#4 e4 d4@2, ~ d5 ~@6",
  R: "~@5 d4 e4 g4", S: "[a4@2 a4@2 [a4,d5] g4 [a4,d5] b4@2 d4 e4@2 [e4,a4] d4!3, d5 ~ d5 ~@4 d5 ~@2 a4 ~@5]/2",
  T: "[g4 g#4 [g4,b4] d4 f4 d4 f#4 d4@2 a3 b3 d4 f#4 d4 [e4,a4] [f#4,a4], b4 ~@7]/2", U: "~@2 f#3@2 e3 d3 b2@2",
  V: "a2@2 d3 d3@2 a2@2 d3", W: "[e3@2 a3 f3@2 d3 b2 d3@9]/2", X: "~@2 d4 b3@2 g3@2 e3", Y: "d3 a2@2 d3@2 a2@2 d3",
  Z: "[e3 f#3 a3 f3 e3 d3 b2 d3@9]/2", AA: "g2 d3 g3 b3 a2 c#4 a3 d4", AB: "~ f#2@3 g2@2 g#2@2", AC: "a2 b2 c#3 d3@5",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(1)

// chords · acoustic guitar steel · "Steel String"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I J K G E H G F A J L E L G B E F G L G E H E H I M L E G F G F N O L G D E D E F E D E L E L G F E
  L E G H E H I P L G E F G H N P L G L G L G H E L G D E D E F E D G@2 F E H I P L G E H G F N O D E L E L G F E L G D
  G D G F E L G D E L E H G L Q@2
>`.pickRestart({
  A: "[d3,a3,d4]!4", B: "[g2,d3,g3]@2 [g2,d3,g3] [a2,e3,a3]@5", C: "[d3,a3,d4]@2 [d3,a3,d4] [b2,f#3,b3]@5",
  D: "[g2,d3,g3]!2 [a2,e3,a3]@2", E: "[d3,a3,d4] [d3,a3,d4]@3", F: "[g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]",
  G: "[d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4]", H: "[g2,d3,g3] [g2,d3,g3]@3", I: "[d3,a3,d4]@2 [d3,a3,d4]@3 [d3,a3,d4]@3",
  J: "[b2,f#3,b3]@2 [b2,f#3,b3] [b2,f#3,b3]@3 [b2,f#3,b3]@2", K: "[g2,d3,g3]@2 [g2,d3,g3] [a2,e3,a3]@3 [a2,e3,a3]@2",
  L: "[g2,d3,g3]!2 [a2,e3,a3]!2", M: "[b2,f#3,b3]@2 [b2,f#3,b3] [b2,f#3,b3]@5", N: "[d3,a3,d4]!2 [d3,a3,d4]@2",
  O: "[b2,f#3,b3]!2 [b2,f#3,b3]@2", P: "[b2,f#3,b3]!4", Q: "d3/2",
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(0.2)

// chords · acoustic guitar steel · "Steel String"
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D E F G H I J K L M F N O P Q R S T U V W F G X Y G H Z F AA AB AC Z L H G F AD AE AF L T Z AG E H L AH W T G
  AI E H G D L N H Z H I AE AH Z G AJ N F AK AL AG Z AM N AN E F Z X AO AP E AH Z F L AQ Z G H L AR AS AT AU AV S H Z O
  P AE AW Z AX AY AF Z H Z AZ Z AZ L AM L AR Z BA L BB Z BC Z H L BD BE@2
>`.pickRestart({
  A: "~@2 d4 a3 ~ a3 ~ f#3, ~@5 d4@3, ~@5 f#3@2 ~, ~@3 a3", B: "~ b3 g3 [e3,a3,c#4]@2 e3@2 e3, ~@5 [a3,c#4]@3",
  C: "~@2 a3 [f#3,b3,d4]@2 b3@2 b3, ~@5 [f#3,d4]@3", D: "~@2 b3 g3 ~ a3 ~ e3, ~@5 c#4@3, ~@5 e3@2 ~, ~@3 a3",
  E: "~@3 [f#3,a3,d4]@2 a3 ~ f#3, ~@5 d4@3, ~@5 f#3@2 ~, ~@3 a3", F: "~@3 [g3,b3,d4]@2 g3@2 g3, ~@5 [b3,d4]@3",
  G: "~@3 [f#3,a3,d4]@2 f#3@2 f#3, ~@5 [a3,d4]@3", H: "~@3 [g3,b3,d4]@2 b3 ~ g3, ~@5 d4@3, ~@5 g3@2 ~, ~@3 b3",
  I: "~@3 d4 a3 d4 ~ a3, ~@5 f#3@3, ~@5 a3@2 ~, ~@3 d4",
  J: "~ d4 b3 [f#3,b3,d4]@2 b3 ~ f#3, ~@5 d4@3, ~@5 f#3@2 ~, ~@3 b3", K: "~@2 g3 [e3,a3,c#4]@2 a3@2 a3, ~@5 [e3,c#4]@3",
  L: "~@3 [f#3,a3,d4]@2 d4 ~ a3, ~@5 f#3@3, ~@5 a3@2 ~, ~@3 d4", // D
  M: "~ d4 a3 [f#3,a3,d4]@2 a3 ~ f#3, ~@5 d4@3, ~@5 f#3@2 ~, ~@3 a3", N: "~@2 a3 [f#3,a3,d4]@2 a3@2 a3, ~@5 [f#3,d4]@3",
  O: "~ d4 b3 [g3,b3,d4]@2 b3 ~ g3, ~@5 d4@3, ~@5 g3@2 ~, ~@3 b3", P: "~@2 d4 a3 ~ a3@2 a3, ~@5 [f#3,d4]@3",
  Q: "~ d4 b3 [f#3,b3,d4]@2 b3@2 b3, ~@5 [f#3,d4]@3", R: "~@3 g3 ~ e3 ~ a3, ~@5 c#4@3, ~@5 a3@2 ~, ~@3 e3",
  S: "~@3 [f#3,a3,d4]@2 f#3 ~ a3, ~@5 d4@3, ~@5 a3@2 ~, ~@3 f#3", T: "~@2 b3 g3 ~ e3@2 e3, ~@5 [a3,c#4]@3",
  U: "~@2 a3 [f#3,a3,d4]@2 d4@2 d4, ~@5 [f#3,a3]@3", V: "~@2 g3 [a3,c#4,e4]@2 ~@2 e3, ~@5 [a3,c#4,e4]@3",
  W: "~@2 a3 [f#3,a3,d4]@2 f#3@2 f#3, ~@5 [a3,d4]@3", X: "~@3 g3 ~ e3@2 e3, ~@5 [a3,c#4]@3",
  Y: "~@3 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]", Z: "~@3 [f#3,a3,d4]@2 a3@2 a3, ~@5 [f#3,d4]@3",
  AA: "~@2 a3!3 d4 ~ a3, ~@3 [f#3,d4]@2 f#3@3, ~@5 a3@2 ~, ~@3 d4", AB: "~@3 [f#3,b3,d4]@2 f#3@2 f#3, ~@5 [b3,d4]@3",
  AC: "~@3 g3 ~ c#4 ~ a3, ~@5 e3@3, ~@5 a3@2 ~, ~@3 c#4", AD: "~@3 a3 ~ d4 ~ a3, ~@5 f#3@3, ~@5 a3@2 ~, ~@3 d4",
  AE: "~@2 d4 b3 ~ b3 ~ f#3, ~@5 d4@3, ~@5 f#3@2 ~, ~@3 b3", AF: "~@3 g3 ~ a3 ~ e3, ~@5 [c#4,e4]@3, ~@3 a3",
  AG: "~@3 g3 ~ a3@2 a3, ~@5 [e3,c#4]@3", AH: "~@2 b3 g3 ~ a3@2 a3, ~@5 [e3,c#4]@3",
  AI: "~ b3@2 g3 ~ e3@2 e3, ~@5 [a3,c#4]@3", AJ: "~ d4 b3 [g3,b3,d4]@2 g3@2 g3, ~@5 [b3,d4]@3",
  AK: "~ d4 a3!2 ~ d4 ~ a3, ~@5 f#3@3, ~@5 a3@2 ~, ~@3 d4", AL: "~@2 d4 b3 ~ b3@2 b3, ~@5 [f#3,d4]@3",
  AM: "~@3 g3 ~@3 e3, ~@5 [a3,c#4,e4]@3", AN: "~@2 b3 g3 ~ a3@2 a3, ~@5 [c#4,e4]@3",
  AO: "~ d4 a3 [f#3,a3,d4]@2 f#3@2 f#3, ~@5 [a3,d4]@3", AP: "~@3 g3 ~ c#4 ~ a3, ~@5 e4@3, ~@5 a3@2 ~, ~@3 c#4",
  AQ: "~@2 b3 g3 ~@3 e3, ~@5 [a3,c#4,e4]@3", AR: "~@2 b3 [g3,b3,d4]@2 g3@2 g3, ~@5 [b3,d4]@3",
  AS: "~@2 a3 d4 a3 a3@2 a3, ~@5 [f#3,d4]@3", AT: "~@3 b3 ~ f#3@2 f#3, ~@5 [b3,d4]@3",
  AU: "~@2 d4 b3 ~ c#4 ~ a3, ~@5 e4@3, ~@5 a3@2 ~, ~@3 c#4",
  AV: "~@2 a3 [f#3,a3,d4]@2 d4 ~ a3, ~@5 f#3@3, ~@5 a3@2 ~, ~@3 d4", AW: "~ d4 b3!2 ~@3 e3, ~@5 [a3,c#4,e4]@3",
  AX: "~@3 g3 ~ a3@2 a3, ~@5 [c#4,e4]@3", AY: "~@2 a3 [f#3,a3,d4]@2 a3 ~ f#3, ~@5 d4@3, ~@5 f#3@2 ~, ~@3 a3",
  AZ: "~@3 g3 ~ a3 ~ e3, ~@5 c#4@3, ~@5 e3@2 ~, ~@3 a3", BA: "~@3 b3 ~@3 e3, ~@5 [a3,c#4,e4]@3",
  BB: "~@3 b3 ~ a3@2 a3, ~@5 [c#4,e4]@3", BC: "~@2 b3 g3 ~ c#4 ~ a3, ~@5 e3@3, ~@5 a3@2 ~, ~@3 c#4",
  BD: "~@3 g3 ~ c#4 ~ e4, ~@5 [e3,a3]@3, ~@3 c#4", BE: "[[f#3,a3,d4], a5@3 ~@29]/2",
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.9)

// other · electric guitar muted · "Muted Electric"
const electric_guitar_muted = note("<~@85 A B A B ~@28 A B A B ~@13>".pickRestart({
  A: "g3 ~@2 g3 a3 ~@2 a3", B: "d4 ~@2 a3 b3 d4 b3 a3",
})).s("gm_electric_guitar_muted").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!131 x ~>").gain(0.35)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@2 A ~ A ~@5 A ~ A ~ A ~@2 A@2 ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~@2 A ~ A ~ A ~ A@2 ~ A ~ A ~ A ~@2 A ~ A ~ A@2 ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A@2 ~ A ~ A ~ A ~@2 A@2 ~@2 B ~ A ~ A@2 ~@2 B ~ B ~ A ~ A@2 ~ A ~ A ~@2 B A ~@15
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct("<~ A@62 B A B A B A B A@61 B ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x ~ x",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~ [x!2]!131 ~@2>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@132 x ~>").gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  ~ A B A B A C B C B D B@5 E@4 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 E B@7 F B G@2 E H E H B@2 F E B@11 H
  B H E B E B C B@5 E A E A B@6 H C H C A B@2 A B C B C B@2 F B@5 F H F B F B G B C B C B ~@2
>`.pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~", B: "x!8", C: "x ~ x ~@3 x ~ x ~ x ~ x!3 ~", D: "x ~ x ~ x ~@3 x ~ x ~ x!3 ~",
  E: "x!7 ~", F: "x!2 ~ x!5", G: "x!3 ~ x!4", H: "x!3 ~ x!3 ~",
})).gain(0.2)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@6 A ~ A ~ B ~@5 C@4 ~@26 C ~@7 D ~ E@2 C F C F ~@2 D C ~@11 F ~ F C ~ C ~ A ~@5 C ~ C ~@7 F A F A ~@5 A ~ A ~@2 D
  ~@5 D F D ~ D ~ E ~ A ~ A ~@3
>`.pickRestart({
  A: "~ x ~@2", B: "~@3 x ~@4", C: "~@5 x ~@8 x ~", D: "~@4 x ~@10 x", E: "~@6 x ~@4 x ~@4", F: "~ x ~@4 x ~@7 x ~",
})).gain(0.1)

stack(
  bass, acoustic_guitar_nylon, electric_guitar_jazz, acoustic_guitar_steel, acoustic_guitar_steel_2,
  electric_guitar_muted, kick, kick_soft, rim, hihat, crash, ride, ride_soft
)

More by Ricky Nelson