Strudelify
Verde cover art

Happy Guitar

Verde

KING,RICKY

KeyG minorTempo84 bpm
0:00/0:00
// Verde — KING,RICKY
// 84 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 55 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@2 A B C D C E F G H I J K L M H N O P Q R S T U V W X Y Z AA AB AC AD AE Z AF Z AG AH AI AJ AK AL AM AN AO AH AP AB
  AE Z AQ AR ~
>`.pickRestart({
  A: "d2@7 ~@3 d2@2 a1@7 ~@3 a1@2", B: "d2@7 ~@3 d2@2 a1@6 d2@6", C: "a1@6 ~@4 a1@2 e2@7 ~@3 e2@2",
  D: "a1@3 ~@2 e2 a1@3 e2@3", E: "a1@3 ~@2 a1 e2@3 a1@3", F: "d2@6 ~@4 d2@2 a1@8 ~@2 a1 ~",
  G: "d2@7 ~@3 d2 ~ a1@5 ~ a1@4 ~@2", H: "d2@7 ~@3 d2@2 a1@7 ~@3 a1 ~", I: "d2@7 ~@3 d2@2 a1@5 ~ d2@4 ~@2",
  J: "a1@7 ~@3 a1@2 e2@7 ~@3 e2@2", K: "a1@7 ~@3 e2@2 a1@6 e2@5 ~", L: "a1@6 ~@4 a1 ~ e2@7 ~@3 e2@2",
  M: "a1@7 ~@3 a1@2 e2@6 a1@5 ~", N: "d2@7 ~@3 d2@2 a1@5 ~ d2@6", O: "g2@7 ~@3 g2 ~ g2@7 ~@3 g2@2",
  P: "a2@7 ~@3 a2 ~ a2@5 ~ a2@4 ~@2", Q: "d2@7 ~@3 d2 ~ d2@4 ~@2 d2@4 ~@2", R: "d2@7 ~@3 d2 ~ d2@5 ~ d2@5 ~",
  S: "g2@8 ~@2 g2 ~ g2@5 ~ g2@4 ~@2", T: "g2@9 ~ g2 ~ g2@5 ~ g2@5 ~", U: "gb2@7 ~@3 gb2@2 db2@5 ~ gb2@6",
  V: "b1@7 ~@3 b1@2 gb2@6 b1@5 ~", W: "e2@8 ~@2 e2 ~ e2@4 ~@2 e2@6", X: "a1@7 ~@3 a1 ~ a1@4 ~@2 a1@4 ~@2",
  Y: "a1@19 ~@5", Z: "eb2@7 ~@3 eb2@2 bb1@7 ~@3 bb1@2", AA: "eb2@7 ~@3 eb2@2 bb1@5 ~ eb2@5 ~",
  AB: "bb1@7 ~@3 bb1@2 f2@7 ~@3 f2@2", AC: "bb1@7 ~@3 f2@2 bb1@6 f2@6", AD: "bb1@3 ~@2 bb1 f2@3 ~@2 f2",
  AE: "bb1@7 ~@3 bb1@2 f2@6 bb1@4 ~@2", AF: "eb2@7 ~@3 eb2@2 bb1@4 ~@2 bb1@5 ~", AG: "eb2@8 ~@2 eb2@2 bb1@5 ~ eb2@5 ~",
  AH: "bb1@7 ~@3 bb1 ~ f2@7 ~@3 f2@2", AI: "bb1@7 ~@3 f2@2 bb1@5 ~ f2@6", AJ: "bb1@7 ~@3 bb1 ~ f2@6 ~@4 f2@2",
  AK: "bb1@6 ~@4 bb1 ~ f2@6 bb1@4 ~@2", AL: "eb2@7 ~@3 eb2@2 bb1@7 ~@3 bb1 ~",
  AM: "eb2@7 ~@3 eb2@2 bb1@4 ~@2 bb1@4 ~@2", AN: "eb2@8 ~@2 eb2@2 bb1@7 ~@3 bb1 ~",
  AO: "eb2@7 ~@3 eb2@2 bb1@4 ~@2 eb2@5 ~", AP: "bb1@4 ~ f2 bb1@2 ~ f2@3", AQ: "eb2@7 ~@3 eb2@2 bb1@3 ~@3 bb1@4 ~@2",
  AR: "eb2",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@3 B C@4 D E F G H I@3 J A K L M N O P Q R S T U V W X@4 Y Z AA AB AC X AD@2 AE AF AG AH AI X@2 AJ AK AL AM ~
>`.pickRestart({
  A: "[a3,d4,gb4]@4 ~@2 [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~", // D
  B: "[a3,d4,gb4]@5 ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~", // D
  C: "[a3,db4,e4,g4]@4 ~@2 [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~ [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~ [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~", // A7
  D: "[a3,d4,gb4]@4 ~@2 [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~", // D
  E: "[a3,d4,gb4]@3 ~@3 [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~", // D
  F: "[a3,d4,gb4]@3 ~@3 [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~", // D
  G: "[a3,d4,gb4]@3 ~@3 [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~", // D
  H: "[a3,db4,e4,g4]@3 ~@3 [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~ [a3,db4,e4,g4]@2 ~@2 [a3,db4,e4,g4] ~ [a3,db4,e4,g4]@2 ~@2 [a3,db4,e4,g4] ~", // A7
  I: "[a3,db4,e4,g4]@3 ~@3 [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~ [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~ [a3,db4,e4,g4]@3 ~ [a3,db4,e4,g4] ~", // A7
  J: "[a3,d4,gb4]@3 ~@3 [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~", // D
  K: "[b3,d4,g4]@5 ~ [b3,d4,g4]@3 ~ [b3,d4,g4] ~ [b3,d4,g4]@3 ~ [b3,d4,g4] ~ [b3,d4,g4]@4 ~@2", // G
  L: "[db4,e4,a4]@4 ~@2 [db4,e4,a4]@3 ~ [db4,e4,a4] ~ [db4,e4,a4]@3 ~ [db4,e4,a4] ~ [db4,e4,a4]@3 ~ [db4,e4,a4] ~", // A
  M: "[a3,d4,gb4]@4 ~@2 [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~ [a3,d4,gb4]@2 ~@2 [a3,d4,gb4] ~ [b3,d4,g4]@3 ~ [a3,d4,gb4] ~", // D G D
  N: "[a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@3 ~ [a3,d4,gb4] ~ [a3,d4,gb4]@5 ~", // D
  O: "[b3,d4,g4]@4 ~@2 [b3,d4,g4]@3 ~ [b3,d4,g4] ~ [b3,d4,g4]@3 ~ [b3,d4,g4] ~ [b3,d4,g4]@3 ~@3", // G
  P: "[db4,e4,a4]@4 ~@2 [db4,e4,a4]@3 ~ [db4,e4,a4] ~ [db4,e4,a4]@4 ~@2 [db4,e4,a4]@2 ~@4", // A
  Q: "[bb3,db4,e4,g4]@4 ~@2 [bb3,db4,e4,gb4]@3 ~ [bb3,db4,e4,gb4] ~ [bb3,db4,e4,gb4]@4 ~@2 [bb3,db4,e4,gb4]@5 ~, gb4 ~@3", // Bbdim Gb7
  R: "[a3,b3,d4,gb4]@4 ~@2 [a3,b3,d4,gb4]@3 ~ [a3,b3,d4,gb4] ~ [a3,b3,d4,gb4]@3 ~ [a3,b3,d4,gb4] ~ [a3,b3,d4,gb4]@4 ~@2", // Bm7
  S: "[ab3,b3,d4,e4,ab4]@4 ~@2 [b3,d4,e4,ab4]@3 ~ [b3,d4,e4,ab4] ~ [b3,d4,e4,ab4]@3 ~ [b3,d4,e4,ab4] ~ [b3,d4,e4,ab4]@2 ~@2 ab4 ~, ~@3 ab3@4 ~@5", // E7
  T: "[d4,e4,a4,d5]@4 ~@2 [db4,e4,a4,db5]@3 ~ [db4,e4,a4,db5,e5]@4 ~@2 [db4,e4,a4,db5] ~ [db4,e4,a4,db5]@3 ~ e4 ~", // Dsus2 A
  U: "[e4,a4,db5]@4 ~@2 [e4,a4,db5]@5 ~ [e4,g4,b4]@5 ~ [e4,g4,bb4]@3 ~@3, db4@5 ~@3", // A Em Edim
  V: "[eb4,g4,bb4]@3 ~@3 [g3,bb3,eb4,g4]@2 ~@2 [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@2 ~@2 [g3,bb3,eb4,g4] ~", // Eb
  W: "[g3,bb3,eb4,g4]@4 ~@2 [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [eb4,g4]@4 [g3,bb3] ~, ~@9 [g3,bb3] ~@2", // Eb Gm
  X: "[bb3,d4,f4,ab4]@4 ~@2 [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~", // Bb7
  Y: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~", // Eb
  Z: "[bb3,eb4,g4]@3 ~@3 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~", // Eb
  AA: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 ~@2 [bb3,eb4,g4] ~", // Eb
  AB: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [eb4,g4]@4 bb3 ~, ~@9 bb3 ~@2", // Eb
  AC: "[bb3,d4,f4,ab4]@4 ~@2 [bb3,d4,f4,ab4]@2 ~@2 [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~", // Bb7
  AD: "[bb3,d4,f4,ab4]@3 ~@3 [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~", // Bb7
  AE: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~", // Eb
  AF: "[bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~", // Eb
  AG: "[bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~", // Eb
  AH: "[g3,bb3,eb4,g4]@4 ~@2 [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [g3,bb3,eb4,g4]@2 ~@2 [g3,bb3,eb4,g4] ~", // Eb
  AI: "[bb3,d4,f4,ab4]@5 ~ [bb3,d4,f4,ab4]@2 ~@2 [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@2 ~@2 [bb3,d4,f4,ab4] ~, ab3@13 ~@11", // Bb7
  AJ: "[bb3,d4,f4,ab4]@4 ~@2 [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@3 ~ [bb3,d4,f4,ab4] ~ [bb3,d4,f4,ab4]@2 ~@2 [bb3,d4,f4,ab4] ~", // Bb7
  AK: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 ~@2 [g3,bb3,eb4,g4] ~, g3@2 ~ g3@2 ~", // Eb
  AL: "[bb3,eb4,g4]@4 ~@2 [bb3,eb4,g4]@2 ~@2 [g3,bb3,eb4,g4] ~ [bb3,eb4,g4]@3 ~ [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 ~@2 [g3,bb3,eb4,g4] ~, g3@2 ~ g3@2 ~", // Eb
  AM: "[eb3,g3,bb3,eb4,g4]", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.28).pan(0.8)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@10 A B C D E F G H I J@3 K@3 L M N O P Q R S T U V@2 W X Y S Z AA AB@2 W AC AD AE Z AF AG@3 ~
>`.pickRestart({
  A: "a4@8 g4 gb4@2 g4", B: "a4@16 gb4@2 a4@3 ~ d5@2", C: "g4@16 gb4@2 e4@3 gb4@2 ~", D: "g4", E: "b4@8 a4 g4@2 a4",
  F: "b4@16 e5@2 db5@3 ~ b4@2", G: "a4@15 gb5@3 d5@3 ~ b4@2", H: "a4@10 ab4 a4", I: "[g4,b4]",
  J: "[db5@12 d5@6 e5@4 ~@2 gb5@18 [b4,g5]@4 gb5@14 d5@6 ~@2 ab4@2 a4 ~, a4@41 ~@5 a4@19 ~@2 a4@2 ~@3]/3", // Em
  K: "[b4@24 db5@12 [g4,d5]@5 ~ e5@6 g5@12 [gb4,gb5]@6 [e4,e5]@4 ~@2, g4@36 ~@6 g4@17 ~@13]/3", // G5 Gb E
  L: "[e4,e5]@6 [d4,d5]@3 [db4,db5]@9 [d4,d5]@5 ~", M: "[d5,gb5]@11 ~ e5@6 [b4,d5]@5 ~, gb4@3 ~, ~@3 db5 ~@2",
  N: "[b4,d5]@5 ~ [a4,db5]@3 [db5,e5]@14 ~", O: "[a4,db5]@11 ~ b4@6 bb4@5 ~, ~@3 g4@2 ~",
  P: "[g4,bb4]@16 ab4@2 [eb4,g4]@3 ~ ab4@2, ~@16 f4 ~@5 f4 ~", Q: "[g4,bb4]@15 ~ eb4@2 [g4,bb4]@4 eb5@2, ~@16 g4 ~@7",
  R: "[f4,ab4]@16 g4@2 [d4,f4]@3 [eb4,g4]@2 ~, ~@16 eb4 ~@7", S: "[f4,ab4]",
  T: "[ab4,c5]@8 bb4 [f4,ab4]@2 [g4,bb4], ~@16 g4 ~@7", U: "c5@8 f5 d5@2 c5, ab4@3 ~",
  V: "[bb4@15 g5@3 eb5@4 c5@2 bb4@23 ~, g4@47 ~]/2", W: "[g4,bb4]@8 [f4,ab4] [eb4,g4]@2 [f4,ab4]",
  X: "[g4,bb4]@15 ~ eb4@2 [g4,bb4]@4 [bb4,eb5]@2, ~@16 g4 ~@7", Y: "[f4,ab4]@8 [eb4,g4] [d4,f4]@2 [eb4,g4]",
  Z: "[ab4,c5]@16 bb4@2 [f4,ab4]@3 ~ bb4@2, ~@16 g4 ~@5 g4 ~", AA: "c5@8 f5 d5@2 c5, ab4@11 ~",
  AB: "[bb4@8 g5 eb5@2 c5 bb4@11 ~, g4@47 ~]/2", AC: "[g4,bb4]@15 ~ eb4@2 [g4,bb4]@3 g4 eb5@2, ~@16 g4 ~@7",
  AD: "[f4,ab4]@15 ~ g4@2 [d4,f4]@3 ~ g4@2, ~@16 eb4 ~@4 eb4@2 ~", AE: "f4, ab4@7 ~", AF: "c5@8 f5 d5@2 c5, ab4@23 ~",
  AG: "[bb4@16 g5@2 eb5@3 ~ c5@2 bb4@24 [eb4,eb5]@23 ~, g4@71 ~]/3", // Eb
})).s("gm_string_ensemble_1").gain(0.36).pan(0.3)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note("<A@8 B@4 C@4 D@2 E F G@2 E H I J@2 K@2 L@2 M@4 N@4 O@4 P@2 Q@2 M@4 R@4>".pickRestart({
  A: "[[a3,d4,gb4]@94 ~ [a3,db4,e4,g4]@95 ~@2]/8", B: "[[a3,d4,gb4]@47 ~]/4", C: "[[a3,db4,e4,g4]@47 ~]/4",
  D: "[[a3,d4,gb4]@23 ~]/2", E: "[b3,d4,g4]@23 ~", F: "[db4,e4]@11 ~, a4@5 ~",
  G: "[[a3,d4,gb4]@17 ~ [b3,d4,g4]@3 ~ [a3,d4,gb4]@25 ~]/2", H: "[g3,db4,e4]@11 ~, a4@5 ~",
  I: "g4@5 ~ gb4@17 ~, [bb3,db4,e4]@23 ~", J: "[gb4@24 [e4,ab4]@19 ~@5, [b3,d4]@43 ~@5]/2",
  K: "[[d4,d5]@5 db5@3 ~ db5@26 b4@6 bb4@5 ~@2, e4@23 ~, a4@35 g4@11 ~@2, ~@5 db4@41 ~@2, ~@9 e5@11 ~@28]/2", // D
  L: "[[bb3,eb4]@47 ~, g4@15 ~]/2", M: "[[bb3,d4,f4,ab4]@95 ~]/4", N: "[[bb3,eb4,g4]@47 ~]/4",
  O: "[f4@34 ~@3 f4@22 ~@7 f4@29 ~, [bb3,d4,ab4]@95 ~]/4", P: "[[bb3,eb4,g4]@23 ~]/2", Q: "[[bb3,g4]@47 ~, eb4@15 ~]/2",
  R: "[[bb3,eb4,g4]@47 ~ [eb3,bb3,eb4]@26 ~@22, ~@47 g3@26 ~@23]/4", // Eb Eb5
})).s("gm_synth_strings_1").gain(0.3)

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

// drums · snare
const snare = s("sd").struct("<~@9 A B@13 C B@4 ~ B@15 C B@7 C ~@2>".pickRestart({
  A: "~@8 x!2 ~@2", B: "~ x ~ x", C: "~@3 x ~@4 x!2 ~@2",
})).gain(0.71)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@3 x] ~@15 [~@11 x] ~@7 [~@11 x] ~@2>").gain(0.43)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 [~@11 x] ~@28 [~@3 x] ~@2>").gain(0.43)

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

// drums · crash
const crash = s("cr").struct("<~@10 x ~@18 x ~@23 x ~>").gain(0.43)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@2 [~@6 x!2 ~@4]!26 [x!2 ~@10] [~@6 x!2 ~@4]!24 ~@2>").gain(2.17)

stack(
  bass, acoustic_guitar_steel, string_ensemble_1, synth_strings_1, kick, snare, low_tom, hihat, hihat_soft, mid_tom,
  high_tom, crash, cabasa
)