Strudelify

If It Makes You Happy

Crow Sheryl

KeyG majorTempo96 bpm
0:00/0:00
// If It Makes You Happy — Crow Sheryl
// 96 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · "bass"
const bass = note(`<
  ~@4 A B@11 C B@7 D@2 E F G H D I E H J ~@4 B@7 C B@7 D@2 E F G H D I E H J K L H D I E H J M@2 N@4 O P B@3 Q B@7 D@2 E
  F G H D I E H J K L H D I E H J K L H R S T U R ~@4 V ~
>`.pickRestart({
  A: "~@2 d2@2 f2@11 ~", B: "g1@4 g2@4 g1@2 g1@2 g2@3 ~", C: "c2@3 ~ c2@3 ~ c2 d2 g2@4 d2@2",
  D: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", E: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", F: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 e2@2",
  G: "d2 ~ d2 ~ d2 ~@11", H: "a1@3 ~ a1@3 ~ a1@2 g1@2 a1@2 b1@2", I: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~",
  J: "c2@3 ~ c2@3 ~ c2@3 ~ c2@2 d2@2", K: "g1@3 ~ g1@3 ~ g1@3 ~ g1@4", L: "g2@3 ~ g2@2 g2@2 g2@2 g2@2 g2@2 g2@2",
  M: "[e1@13 d2@3]/2", N: "[a1 g1 a1@10 g3@2 d3 e3@11 g3 a3@2 g3 e3 d3]/4", O: "e3@8 c4 ~ g3 ~ e3 ~ g3 ~", P: "c4@15 ~",
  Q: "g1@4 g2@3 ~ g2@2 e2@2 d2@2 a1@2", R: "c2@2 g2@2 c2 b1 c2 d2", S: "g1@2 g2@2 g1 a1 b1 c2", T: "d2@3 c2@2 b1@3",
  U: "a1@4 a1@3 ~ a1@2 g1@2 a1@2 b1@2", V: "g2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · overdriven guitar · "Elec. Guitar"
const overdriven_guitar = note(`<
  ~ A@2 B C B D B D E D E D F G H@3 I E J E D K L M N O P Q R S T U V A@2 E J E D K J W D E X@2 I E J E C K L M Y Z P Q
  R S T U R AA AB Q R S T U R ~@8 B D B D AC I E J E C K L M Y Z P Q R S T U R AA AB Q R S T U R AA AD AE AF@2 AG AH AI
  A@2 E J AJ ~
>`.pickRestart({
  A: "[~@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3] ~@2 [a3,c4]@2 d3 [a3,c4] d3 [a3,c4], g2@31 ~, d3@6 ~@10 d3@7 ~@9]/2", // G Am
  B: "~@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3], g2@15 ~, d3 ~", C: "~@2 [a3,c4]@2 d3 [a3,c4] d3 [a3,c4], g2@7 ~, d3@7 ~@9",
  D: "~@2 [a3,c4]@2 d3 [a3,c4] d3 [a3,c4], g2@15 ~, d3@7 ~@9", // Am
  E: "~@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3], g2@15 ~, d3@7 ~@9", F: "d3@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3], g2@15 ~",
  G: "d3@2 [a3,c4]@2 d3 [a3,c4] d3 [a3,c4], g2@15 ~", // Am
  H: "[d3@4 [g3,b3]@4 d3@2 [g3,b3]@2 d3@2 g3@2 [c4,e4]@4 [c4,e4]@5 ~@11 [g3,b3]@4 d3@2 [g3,b3]@2 d3@2 [g3,b3]@2, g2@14 b3@7 ~@5 [c4,e4]@10 ~@12, ~@4 g3@5 ~@3, ~@16 d3@3 ~@5]/3", // G C G C
  I: "~@2 [a3,c4]@2 d3 [a3,c4] d3 [a3,c4], d3@7 ~@9", J: "~@2 [a3,c4]@2 d3 [a3,c4] d3 [a3,c4], g2@7 ~, d3@3 ~@5",
  K: "~@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3], g2@7 ~, d3 ~", L: "[g3,c4,e4]@9 ~ [g3,c4,e4]@3 ~ [c4,e4] ~, c3@7 ~",
  M: "[d4,f#4,a4]@5 a3 [d4,f#4,a4] ~, [d3,f#3]@13 ~@3, a3 ~", N: "[f#3,a3,d4]@5 [a3,d4]@2 f#3, d3, ~@10 f#3@3 ~@3",
  O: "[g3,c4]@6 [g3,c4]@5 ~ [c4,e4]@4, e4@6 g3 ~", P: "[d3,f#3,a3,d4] ~ [d3,f#3,a3,d4] ~ [d3,f#3,a3,d4]@5 ~@7",
  Q: "[e3,a3]@9 ~ [e3,a3]@2 ~@2 [e3,a3] ~, c3@7 ~", R: "[g3,c4]@5 ~ [g3,c4] ~, e3@7 ~",
  S: "[g3,b3]@5 ~ [g3,b3] ~, d3@7 ~", T: "[f#3,a3]@5 ~ [f#3,a3] ~, d3@7 ~", U: "[e3,a3]@11 ~ [e3,a3]@2 ~@2, c3@7 ~",
  V: "[g3,c4]@11 ~ [g3,c4]@2 ~@2, e3@7 ~", W: "~@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3], g2@7 ~, d3@3 ~@5",
  X: "[[c4,e4]@4 [c4,e4]@5 ~@11 [g3,b3]@4 d3@2 [g3,b3]@2 d3@2 [g3,b3]@2, g3@5 ~@3, ~@5 [c4,e4]@5 ~@6, ~@8 d3@3 ~@5]/2", // C G C
  Y: "[a3,d4]@5 [a3,d4]@2 f#3, d3, f#3@8 ~@2 f#3@3 ~@3", Z: "[g3,c4]@6 [g3,c4]@5 ~ [c4,e4]@4, e4@11 ~ g3@2 ~@2",
  AA: "[b3,d4]@4 ~@2 [b3,d4]@4 ~@2 [b3,d4]@3 ~, g3@7 ~", AB: "[b3,d4]@2 ~ [b3,d4]@2 ~ [b3,d4]@2, g3",
  AC: "~@2 [g3,b3]@2 d3 [g3,b3] d3 [g3,b3], d3@3 ~@5", AD: "[b3,d4]@5 ~ [b3,d4]@5 ~ b3@4, g3@15 ~, ~@6 d4 ~",
  AE: "[c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@4, a3@7 ~", // C
  AF: "[[c4,e4]@5 ~ [c4,e4]@4 ~@2 [c4,e4]@3 ~ [b3,d4]@4 ~@2 g3@5 ~ [g3,b3]@4, g3@21 ~ d4@10, ~@22 b3@3 ~@7]/2", // C Bm G
  AG: "[d3,f#3,a3]@6 [d3,f#3,a3]@5 ~ [d3,f#3,a3]@4", AH: "[a3,c4,e4]@5 ~ [c4,e4]@6 [c4,e4]@4, ~@3 a3@4 ~",
  AI: "[c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@4, g3@11 ~ g3@2 ~@2", AJ: "[g2,g3,b3,d4]",
})).s("gm_overdriven_guitar").gain(0.24)

// chords · acoustic guitar steel · "Ac. Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B@2 C D@2 E F G H I J K J L M A B@2 C D@2 E N O P Q R S T U V W X Y B@2 C Z H I J K J L M A B@2 C D@2 E N O P Q R
  S T U V W X AA AB S T U V W X AC@4 AD@2 AE@2 AF AG AH AI AJ H I J K J L AK O P Q R S T U V W X AA AB S T U V W X AL@2
  AM@2 AN@2 AO@2 AP AG AH AI ~@2
>`.pickRestart({
  A: "[g3,b3]@3 ~ [g3,b3] ~ [d3,g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3]@2 d3 ~, d3 ~ d3 ~", // G
  B: "[[g3,a3]@3 ~ [g3,a3] ~ [d3,g3,a3] ~ [g3,a3] ~ [g3,a3] ~ [g3,a3]@2 ~@2 [g3,b3]@3 ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [g3,b3]@2 d3@2 [g3,b3] ~, d3@4 ~@4 d3@5 ~ d3@5 ~@13]/2", // Gsus2 Dsus4 Gsus2 G
  C: "[g3,a3]@3 ~ [g3,a3] ~ [g3,a3] ~ [d3,g3,a3] ~ [d3,g3,a3] ~ [d3,a3]@2 [g3,a3] ~, d3@3 ~@5", // Gsus2 Dsus4 D5 Gsus2
  D: "[[g3,b3]@3 ~ [g3,b3] ~@3 [g3,b3] ~ [g3,b3]@2 g3@2 [g3,b3] ~ [g3,a3]@2 ~@2 [g3,a3] ~ d3@2 [g3,a3] ~ [d3,g3,a3]@2 d3@2 [g3,a3] ~, d3@4 ~@2 d3@5 ~ d3@9 ~@11, ~@12 b3 ~@19]/2", // G Gsus2 Dsus4 Gsus2
  E: "[g3,b3]@3 ~ [g3,b3]@2 b3 ~ [g3,b3] ~ [g3,b3]@2 d3@2 [g3,b3] ~, d3@2 ~ d3@2 ~@3", // G
  F: "[g3,a3]@3 ~ [g3,a3]@2 ~@2 [g3,a3] ~ [g3,a3]@2 d3@2 [g3,a3] ~, d3@4 ~@2 d3@5 ~@5", // Gsus2
  G: "[g3,b3]@2 ~@2 [g3,b3]@2 d3@2 [g3,b3] ~ [d3,g3,b3]@2 d3@2 [g3,b3] ~, d3 ~@3", // G
  H: "[g3,a3]@3 ~ [g3,a3]@2 d3@2 [g3,a3] ~ [g3,a3] ~ [g3,a3] ~ [g3,a3] ~, d3@2 ~@4 d3 ~", // Gsus2
  I: "[g3,b3]@2 ~@2 [g3,b3]@2 d3@2 [g3,b3] ~ [g3,b3]@2 d3@2 [g3,b3] ~, d3@4 ~@6 d3 ~@5", // G
  J: "[d3,g3,a3]@3 ~ [g3,a3]@2 d3@2 [g3,a3] ~ [d3,g3,a3]@2 d3@2 [g3,a3] ~", // Dsus4 Gsus2 Dsus4 Gsus2
  K: "[d3,g3,b3]@3 ~ [g3,b3]@2 d3@2 [g3,b3] ~ [g3,b3]@2 d3@2 [g3,b3] ~, ~@10 d3 ~@5", // G
  L: "[g3,b3]@2 ~@2 [g3,b3]@2 d3@2 [g3,b3] ~ [g3,b3]@2 ~@2 [g3,b3] ~, d3@2 ~@3 d3@2 ~", // G
  M: "[c4,e4]@2 ~@2 [c4,e4] ~ [c4,e4] ~ [c4,e4] ~ [c4,e4]@2 ~@2 [c4,e4] ~, g3@7 ~ g3@7 ~", // C
  N: "[c4,e4]@3 ~ [c4,e4] ~ [c4,e4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~, g3@15 ~", // C
  O: "[c4,e4]@2 ~@2 [c4,e4] ~ [c4,e4]@3 ~ [c4,e4]@2 ~@2 [c4,e4] ~, g3@7 ~", // C
  P: "[f#3,a3,c4]@3 ~ [f#3,a3]@3 ~@3 [d3,a3]@4 [f#3,a3] ~, d3@9 ~ f#3@2 ~@4, ~@4 c4 ~@11", // F#dim F#m D5 F#m
  Q: "[c4,e4]@2 ~@2 [c4,e4] ~ [c4,e4]@3 ~ [c4,e4]@2 ~@2 [c4,e4] ~, g3@7 ~, d4 ~@15", // C
  R: "[d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3]@2 ~@10", S: "[c4,e4]@3 ~ [c4,e4]@4 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~, a3@15 ~",
  T: "[c4,e4]@3 ~ [c4,e4]@4 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~, g3@7 ~", // C
  U: "[b3,d4]@2 ~@2 [b3,d4]@4 ~@2 [b3,d4]@2 ~@2 [b3,d4] ~, g3@4 ~ g3@2 ~", // Bm
  V: "[f#3,a3]@2 ~@2 [f#3,a3]@4 ~@2 [f#3,a3]@2 ~@2 [f#3,a3] ~, d3@4 ~ d3@2 ~", // F#m
  W: "[c4,e4]@3 ~ [c4,e4]@4 ~@2 [a3,c4,e4]@3 ~ [a3,c4,e4] ~, a3 ~", // C Am
  X: "[c4,e4]@3 ~ [c4,e4]@4 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~, g3@4 ~ g3@2 ~", // C
  Y: "b3 b3@3 [g3,b3] ~ [d3,g3,b3] ~ [g3,b3] ~ [g3,b3] ~ [g3,b3]@2 d3 ~, [d3,g3,d4]@5 ~@3 d3@4 ~@4", // G G5
  Z: "[g3,b3]@3 ~ [g3,b3]@2 d3@2 [g3,b3] ~ [d3,g3,b3]@2 d3@2 [g3,b3] ~, d3 ~@3", // G
  AA: "[b3,d4] [b3,d4]@5 [b3,d4]@3 ~ [b3,d4]@2 ~@2 [b3,d4] ~, g3@15 ~", // Bm
  AB: "[b3,d4]@3 ~@3 [b3,d4]@2 ~@2 [b3,d4]@2 ~@2 [b3,d4]@2, g3", // Bm
  AC: "[[e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~ [e4,g4,b4]@2 g3@2 [e4,g4,b4]@2 g3@2 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~ [e4,g4,b4]@2 b3@2 [e4,g4,b4]@2 ~@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@3 ~ [a3,c4,e4]@2 c3@2 [a3,e4]@2 c3@2 [a3,c4,e4]@3 ~ [a3,c4,e4]@2 c3@2 [e3,a3,c4,e4]@2 c3@2 e3@2 c3 ~, e3@14 ~@2 e3@13 ~ e3@12 ~@2 e3@10 ~@10, b3@10 ~@2 b3@12 g3@5 ~@3 a2@14 ~@2 a2@14 ~@2]/4", // Em Am A5 Am
  AD: "[[e4,g4,b4]@3 ~ [e4,g4,b4]@2 ~@2 [b3,e4,g4,b4]@3 ~ [e4,g4,b4]@2 g3@2 ~@7 e4 [e4,g4,b4]@2 g3@2 [b3,e4,g4,b4]@2 g3 ~, e3@7 ~ e3@7 ~, b3@3 g3@3 b3@4 g3@2 ~@4, ~@8 [e4,g4,b4]@3 b3@2 ~@3]/2", // Em
  AE: "[[c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@2 e3@2 [c4,e4,g4]@2 e3@2 [c4,e4,g4]@6 e3@2 [g3,c4,e4,g4]@2 ~@2 [g3,c4,e4,g4]@4, c3@7 ~ c3@8, g3@10 ~@2 g3@11 ~@3 e3@6]/2", // C
  AF: "[b3,d4]@2 ~@2 d4@4 ~@2 [b3,d4] ~ [b3,d4] ~ [b3,d4]@2, g3@7 ~ g3@6 ~@2", // Bm
  AG: "d4@2 ~@2 [b3,d4]@2 ~@2 [b3,d4] ~ [b3,d4]@2 ~@2 [b3,d4]@2, g3@7 ~", // Bm
  AH: "~@4 [b3,d4]@2 ~@2 [b3,d4] ~ [b3,d4]@2 ~@2 [b3,d4]@2, g3@15 ~", // Bm
  AI: "~@4 [b3,d4]@3 ~ [b3,d4] ~ [b3,d4]@2 ~@2 [b3,d4]@2, g3", // Bm
  AJ: "[d3,g3]@4 [g3,b3]@2 d3@2 [g3,b3] ~ [d3,g3,b3]@2 d3@2 [g3,b3] ~, b3 ~@7", // G5 G
  AK: "c4@3 ~ [c4,e4] ~ [c4,e4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~", // C
  AL: "[[b3,d4] [b3,d4]@3 [b3,d4]@3 ~ [b3,d4] ~ [b3,d4] ~ [b3,d4]@2 ~@2 [b3,d4]@3 ~ [b3,d4]@2 ~@2 [b3,d4] ~ [b3,d4] ~ [b3,d4]@2 g3 ~, g3@12 ~@2 g3@13 ~@5]/2", // Bm
  AM: "[[c4,e4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~ [c4,e4] ~ [c4,e4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4]@2 ~@2 [c4,e4] ~ [c4,e4] ~ [c4,e4]@2 a3 ~, a3@12 ~@2 a3@13 ~@5]/2", // C
  AN: "[[g3,b3]@3 ~ [g3,b3]@2 ~@2 [g3,b3] ~ [g3,b3] ~ [g3,b3]@2 ~@2 [g3,b3]@2 ~@2 [g3,b3]@2 ~@2 [g3,b3] ~ [g3,b3] ~ [g3,b3]@2 e3 ~, e3@12 ~@2 e3@15 ~@3]/2", // G
  AO: "[[e4,g4]@2 ~@2 [e4,g4]@2 ~@2 [e4,g4] ~ [e4,g4] ~ [e4,g4]@2 ~@2 [e4,g4]@3 ~ [e4,g4]@3 ~ [e4,g4] ~ [e4,g4] ~ [e4,g4]@2 c4 ~, c4@12 ~@2 c4@15 ~@3]/2", // Em
  AP: "[b3,d4]@2 ~@2 [b3,d4]@4 ~@2 [b3,d4] ~ [b3,d4] ~ [b3,d4]@2, g3@7 ~ g3@6 ~@2", // Bm
})).s("gm_acoustic_guitar_steel").gain(0.24)

// chords · overdriven guitar · "Elec. Guitar 2"
const overdriven_guitar_2 = note(`<
  ~@2 A@2 B@2 C@2 D@2 ~@6 E ~@7 F@2 ~@3 G H I J K L ~@11 M ~@7 F@2 ~@3 N H O J K P ~@2 N H O J K P ~@19 F@2 ~@3 N H O J
  K P ~@2 N H O J K P ~ Q R@3 S@4 ~@5
>`.pickRestart({
  A: "[~@6 [a3,c4] ~ [a3,c4]@2 [g3,b3]@2 e3@2 b3@9 ~@9, ~@7 g3@3 ~@6]/2", // Am G
  B: "[~@6 [a3,c4] ~ [a3,c4]@2 [g3,b3]@2 e3@2 b3@8 ~@10, ~@7 g3 ~@8]/2", // Am G
  C: "[~@3 [a3,c4]!2 [g3,b3] e3 b3@4 ~@5, ~@14 g3 ~@17]/2", // Am G
  D: "[~@6 [a3,c4] ~ [a3,c4]@2 [g3,b3]@2 e3@2 [g3,b3]@10 ~@8]/2", // Am G
  E: "f4@2 [f4,g4,c5]@2 [g4,c5] ~ [f4,g4]@3 ~ [e4,g4]@6, ~@3 c5@5", // Fsus2 C5 Fsus2 Em
  F: "[[d4,g4]@2 e4@2 d4@2 e4@2 c5@2 e4@2 d4@2 e4@5 ~@13, [g3,c4] ~]/2", // G5 C5
  G: "e4@2 a4 ~ d5 c5 a4 f#4, b3@9 ~@7, ~@3 e4@2 ~@3", H: "g4@2 ~ g4@2 f#4 g4@2, ~ c4@2 ~",
  I: "[d4,g4,b4]@9 ~ [d4,b4]@3 ~@3", J: "[f#4,a4]@9 ~ [f#4,a4]@5 ~, d4",
  K: "[e4,a4]@2 ~@2 d5 c5 a4 f#4, b3@5 ~@3, ~ a4 ~@2, ~@3 e4@2 ~@3", L: "g4@4 c4@5 ~ c4@6",
  M: "f4@2 [f4,g4]@2 [g4,c5] ~ [f4,g4]@3 ~ [e4,g4]@6, ~@2 c5 ~@3 c5@10", N: "e4@2 a4 e4 d5 c5 a4 f#4, b3@9 ~@7",
  O: "[d4,g4,b4]@9 ~ [d4,b4]@2 ~@4", P: "g4@2 c4@3 c4@3", Q: "~@3 b4 c5 d5@3",
  R: "[e5@6 d5 ~ c5 ~ b4@3 ~ [b4,g5]@8 a4@2 b4@2 a4@2 g4@2 b4@4 [d5,g5]@14, g5@13 ~ d5@5 ~@11 a4 ~@17]/3", // Em G5
  S: "[~@3 b4 c5 d5@2 d5@4 e5 d5 c5 ~@2 [d5,g5]@3 a4 g4@3 g4@8 ~, ~@14 g5@10 ~@4 b4@11 ~@25]/4", // G5
})).s("gm_overdriven_guitar").gain(0.21)

// other · overdriven guitar · "Elac, Guitar 3"
const overdriven_guitar_3 = note(`<
  ~@41
  [~@3 a4 b4 d5 b4 a4]
  [b4 a4 b4 a4 b4@4]
  ~@6
  [~@3 a4 b4 d5 b4 a4]
  [b4 a4 b4 a4 b4@4]
  ~@74
>`).s("gm_overdriven_guitar").gain(0.29)

// other · flute
const flute = note("<~@75 A B C@2 D@2 E@2 ~@42>".pickRestart({
  A: "e4 f#4", B: "g4", C: "[b3@10 b4@2 a4@3 g4]/2", D: "[~ f#4@7 g4@16 f#4@6 e4@2]/2", E: "[d4@25 ~@7]/2",
})).s("gm_flute").gain(0.25)

// other · electric guitar clean · "Elac. Guitar 4"
const electric_guitar_clean = note("<~@74 A B@2 C@2 D@4 ~@42>".pickRestart({
  A: "~@4 g3 f#3 e3 d3", B: "[e3@12 g3 f#3 e3 d3]/2", C: "[b2@11 ~ g3 f#3 e3 d3]/2",
  D: "[e3@21 ~ e3 ~ e3@2 d3@2 a2@2 b2@6 d3@22 ~@6]/4",
})).s("gm_electric_guitar_clean").gain(0.44)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A@11 B A@7 B A@3 C A@5 B A@2 B D A@7 B A@7 B A@3 C A@5 B A E A@3 F A G ~@8 A@11 B A@3 C A@5 B A@5 H A@3 G A@5 I
  ~@6
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "x!3 ~@5", D: "~@4 x ~@2 x!4 ~ x!3 ~", E: "~@2 x!13 ~", F: "~ x!2 ~",
  G: "~@4 x ~@2 x!2 ~@3 x ~@3", H: "x!7 ~", I: "~@4 x ~@7 x!3 ~",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@26 A ~ B ~@27 A ~ B ~@11 C ~ D ~@21 A ~ B ~@15 D ~@12>".pickRestart({
  A: "~@7 x", B: "x!3 ~@5", C: "~@12 x!3 ~", D: "~@5 x!2 ~",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@4 B C D E F C D E F C D E F C D E F C D G@4 ~@7 G H I J F C D E F C D E F C D E F C D G@4 ~@23 B C D E F C D E F C
  D G@4 ~@29
>`.pickRestart({
  A: "x!4", B: "~ x!3 ~ x ~ x", C: "~ x ~ x!3 ~ x", D: "~ x!3 ~ x!3", E: "x!7 ~", F: "x!4 ~ x ~ x", G: "x!8",
  H: "x!4 ~ x!2 ~", I: "x!4 ~ x!3", J: "x!2 ~ x ~@4",
})).gain(0.31)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A B C ~ A B C ~ A B C ~ A B C ~ A B C ~@12 D@2 ~ A B C ~ A B C ~ A B C ~ A B C ~@27 A B C ~ A B C ~ A B C ~@33
>`.pickRestart({
  A: "~@2 x!2", B: "x!2 ~ x", C: "x!2", D: "~ x",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@70 [~@5 x ~@2] ~ [~ x!2 ~@5] ~@39 [~ x!2 ~@5] ~@12>").gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@3 A ~@3 A ~@3 A ~@8 B C@3 B C ~ A ~ D ~@3 A ~@3 A ~@3 A ~@8 B C@3 B C B ~ B C B E B ~@12 A ~@3 A ~@8 B C@3 B C
  B@3 C B E B@3 ~ B C B F B G ~@6
>`.pickRestart({
  A: "~@7 x", B: "~ x!7", C: "x!8", D: "~ x ~@2", E: "x!5 ~@3", F: "~ x!2 ~ x!4", G: "~ x!5 ~@2",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@10 A@2 ~@6 A ~ A B ~ A ~@16 A ~@7 A ~ A B ~ A ~@3 A ~ A@3 ~ A ~ A@3 ~@7 A ~@10 A ~ A B ~ A ~@3 A ~ A@3 ~ A ~
  A@5 ~ A C A@3 ~@3 A ~
>`.pickRestart({
  A: "x", B: "x ~@2 x", C: "x ~@2 x ~@4",
// … 14 more lines

More by Crow Sheryl