Strudelify

Per chi sa capire

Pooh

KeyE♭ majorTempo125 bpm
0:00/0:00
// Per chi sa capire — Pooh
// 125 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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.

// chords · rock organ
const rock_organ = note(`<
  ~@26 A ~@3 B ~@3 C ~@4 D E@2 F@2 G@2 H I J@2 H K ~@8 G@2 H I J@2 H ~@5 B ~@3 C ~@4 D E@2 F@2 G@2 H I J@2 H K ~@8 G@2 H
  I J@2 H ~@33
>`.pickRestart({
  A: "c6@11 [g5,a5] [a4,b4,c5,d5,e5,f5] [c4,d4,e4,f4,g4] [f3,g3,a3,b3] ~", // Gsus2 Dm7 C G7
  B: "[g4,bb4,eb5]@7 ~ [a4,c5,f5]@3 [f4,g4] [b3,c4,d4,e4] [e3,f3,g3,a3] ~@2", // Eb F Fsus2 Cmaj7 Fmaj7
  C: "[bb5,eb6]@7 ~ [a5,c6,f6]@4 [f5,g5] [a4,b4,c5,d5,e5] [d4,e4,f4,g4] c4", D: "d5", E: "[g5 f5@3]/2",
  F: "[c6@24 g5 [d5,e5,f5] [f4,g4,a4,b4,c5] [a3,b3,c4,d4,e4] [f3,g3] ~@3]/2", G: "[[eb5,g5,bb5]@31 ~]/2",
  H: "[eb5,ab5]@15 ~", I: "[eb5,ab5,bb5]@15 ~", J: "[[eb5,g5]@31 ~]/2", K: "[eb5,ab5,bb5]@13 ~@3",
})).s("gm_rock_organ").gain(0.24)

// chords · distortion guitar · "DIST GT"
const distortion_guitar = note(`<
  ~@2 A@2 B@5 C D@2 ~@15 E F G H I J K H L M N G L O P Q@2 ~@8 R S T U V W X@2 Y@2 Z@2 AA AB AC@2 ~ E F AD H I J AE H L
  M N G L AF P Q@2 ~@8 R S T U V W X@2 Y@2 AG@2 AH@2 AI AJ ~ AK AL AM AN AK AO AP@2 ~@8 AQ@2 AR@7 AS@6
>`.pickRestart({
  A: "[~@6 g5@9 f5]/2", B: "[g5 d5@2 d5@21 c5@2 f5@2 c5@14 bb4 c5@7 ~ bb4 c5@6 f5@13 ~@3 c4@4 f4@2]/5",
  C: "f4@3 d4 c4 bb3 g3 bb3 c4@7 bb3", D: "[g3@23 ~@9]/2", E: "g2@8 [d4,g4]@7 ~", F: "eb3 [d4,g4]",
  G: "f2@7 ~ [c4,f4]@7 ~", H: "[bb3,eb4] [c4,f4]", I: "g2 [d4,g4]", J: "~ [d4,g4]", K: "~@4 [c4,f4]@3 ~",
  L: "g2@2 ~ g2 g3 bb3 g3 g2, ~@2 d4 ~", M: "f2@4 [c4,f4]@3 ~",
  N: "[bb2,eb3]@4 ~@2 [bb2,eb3] ~ [bb3,g4]@2 d4@2 bb3@2 ~@2", O: "a2 ~ f4@2",
  P: "bb2@4 ~@2 bb2 ~ [bb3,f4]@2 d4@2 bb3@3 ~", Q: "[ab3@25 ~@7]/2", R: "~@5 eb4 c4@2, ~@6 c4@5 ~@5, ~ g4",
  S: "~@3 eb4 ~ eb4 bb3 eb4, bb3@5 ~@3, ~@8 g4@7 ~", T: "~@5 eb4 c4@2, ab3, ~@3 c4@2 ~@3, ~@8 g4@5 ~@3",
  U: "~@6 eb4@2 ~@4 bb3@3 ~, bb3@10 eb4@5 ~, ~@4 g4@3 ~", V: "~@3 eb4 ~ eb4 c4@2, c4@5 ~@3, ~@8 g4@5 ~@3",
  W: "~@3 eb4 g4 eb4 c4@2, bb3@15 ~", X: "[f3@7 ~]/2", Y: "[~@2 db5@3 ~ eb5@2 db5@3 ~ f5@2 eb5@6 g5@2 f5@10]/2",
  Z: "[g5@7 ~ g5@2 f5@2 gb5@12 ~@4 [bb3,eb4] [g4,bb4] eb5 [g5,bb5]]/2", AA: "bb5@7 ~ bb5@3 ~ bb5@4",
  AB: "~@2 f4@4 bb4@2 bb4@7 g4", AC: "[f4@7 ~ f4@3 ~ f4@15 ~@5]/2", AD: "f2@8 [c4,f4]@7 ~", AE: "~@8 [c4,f4]@7 ~",
  AF: "a2@2 ~@2 f4@3 ~", AG: "[g5@7 ~ g5@2 f5@2 gb5@12 ~@8]/2", AH: "[~ f5@2 bb5@3 eb5 d5@2 bb5 bb4@5 ~]/2",
  AI: "~@2 [f4,bb4] [g4,c5] [bb4,d5] [c5,eb5] [bb4,d5] [g4,c5] [bb4,d5] [c5,eb5] [d5,f5] [eb5,g5] [d5,f5] [eb5,g5] [f5,ab5] [g5,bb5]", // Bb5 C5 Bb Cm Bb C5 Bb Cm …
  AJ: "[ab5,c6]@11 ~@5", AK: "bb2", AL: "ab2", AM: "g2", AN: "a2", AO: "c3", AP: "[bb2@3 ~]/2",
  AQ: "[~@9 f4 d4@2 ~@3 f4, ~@14 d4@5 ~@5 c4@8, ~@16 a4@9 ~@7]/2",
  AR: "[~@2 f4@2 c4@2 f4@2 ~@10 f4@2 d4@4 ~@6 f4@2 ~@4 c4@3 ~ b3@16 c4@45 ~@11, a4@6 ~@2 bb3@15 ~ c4@11 ~@77, ~@7 d4@2 ~@8 f4@3 ~@36, ~@16 a4@5 ~@11 a4@6 ~@74]/7",
  AS: "[~@3 g5@19 f5 g5@2 ~ d5 ~ d5@26 ~@2 [f2,f3,c4]@31 ~@9]/6", // F5
})).s("gm_distortion_guitar").gain(0.22).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@8 B@2 C ~@33 D@2 E F G@2 H F I J K J L@2 M@2 ~@6 H M@2 ~@17 D@2 E F G@2 H F I J K J L@2 M@2 ~@8 N O P J I J H Q@2
  R@3 S@8 T@4 ~ U@5 ~@2
>`.pickRestart({
  A: "[g2@2 eb2 g2, [g5,bb5,d6]]/8", B: "eb2/2", C: "g2@5 ~@11", D: "[~ eb4@3, eb5]/2", E: "~ eb4, ab4",
  F: "[eb4,ab4,bb4]", G: "[eb4,eb5]/2", H: "[eb4,ab4]", I: "[eb4,a4]", J: "[eb4,g4]", K: "[c4,f4]", L: "[c5 bb4, g4]/2",
  M: "[[f4,ab4]@7 ~]/2", N: "[eb4,c5]", O: "[eb4,bb4]", P: "[c4,g4]", Q: "[[bb2,bb3]@11 ~@5]/2",
  R: "[~@2 f4@3 bb4, ~@7 f5@32 ~@9]/3",
  S: "[f4 [f4,bb4,c5]@2 [f4,f5]@4 [f4,bb4]@2 [f4,bb4,c5]@2 [f4,b4]@2 [f4,a4]@2 [d4,g4]]/8", // Fsus4 F Bb5 Fsus4 Fdim F G5
  T: "[~ [f4,a4]@2 d5@2 c5@2 ~, ~@3 a4@4 ~]/4", U: "[~ [bb2,bb3,d4]@8 ~]/5",
})).s("gm_string_ensemble_1").gain(0.32)

// chords · piano
const piano = note(`<
  ~@2 A B C D E F C G H I J K L M N O P N Q N R S T U@2 H I J V L M N O P N Q N R S T W@2 X Y Z AA AB Y AC AD AE Y AF Y
  AG AH AI@2 X Y Z AA AB Y AJ AI@2 H I J V L M N O P N Q N AK S AL W@2 X Y Z AA AB Y AJ AD AM Y AF Y AN AH AI@2 X Y Z AA
  AB Y AJ AO AP AQ AR Y AS AH AT AU AV AW AX AY AZ BA BB BC@2 BD@2 BE BF BG@2 BH@3 ~@3 BI@3
>`.pickRestart({
  A: "[g2,g3,bb3,d4,g4]@7 ~ [g2,g3,bb3,d4,g4]@7 ~", B: "[g2,g3,bb3,d4,g4]@7 ~ [g2,bb3,d4,g4]@7 ~, ~@8 g3@5 ~@3",
  C: "[eb2,eb3,bb3,d4,g4]@7 ~ [eb2,eb3,bb3,d4,g4]@7 ~", // Ebmaj7
  D: "[eb2,eb3,bb3,d4,g4]@7 ~ bb3@3 ~ bb3@2 ~@2, ~@4 [eb2,eb3,d4,g4]@3 ~", // Ebmaj7
  E: "[g2,g3,bb3,d4,g4]@7 ~ [g2,g3,bb3,d4,g4]@8", F: "[g2,g3,bb3,d4,g4]@7 ~ [g2,g3,bb3,d4,g4]@4 bb3@3 ~",
  G: "[eb2,eb3,bb3,d4,g4]@7 ~ bb3@4 bb3@2 ~@2, ~@4 [eb2,eb3,d4,g4]@3 ~", // Ebmaj7
  H: "[bb3,d4,g4]@3 ~ [bb3,d4,g4]@2 g2@2, g2@5 ~@3", I: "[eb2,g3,bb3,d4]@7 ~ g3@3 ~ g3@3 ~, ~ [eb2,bb3,d4]",
  J: "[a3,c4,f4]@7 ~@5 f2@3 ~, f2@4 [a3,c4,f4]@3 ~", // F
  K: "[bb3,eb4]@2 ~@2 bb3@2 eb4@2 [a3,c4,f4]@4 [a3,c4,f4]@3 ~, eb2@7 ~ f2@7 ~, g3 ~ g3@4 ~@10", // Eb5 F
  L: "[bb3,d4,g4]@6 ~@2 [bb3,d4,g4]@4 ~@2 d4 ~, g2@2 ~ g2", M: "[g3,bb3,d4]@7 ~ [g3,bb3,d4]@4 eb2@4, eb2 ~",
  N: "[a3,c4,f4]@7 ~ [a3,c4,f4]@4 f2@4, f2 ~", // F
  O: "eb4@2 ~@2 bb3@2 eb4 ~ a3 ~@3 c4@2 f4@2, eb2@7 ~ f2@8, ~ g3@2 ~ f4@2 ~@2, ~@10 a3@5 ~",
  P: "[bb3,d4,g4]@7 ~ [bb3,d4,g4]@4 g2@4, g2 ~", Q: "[eb2,g3,bb3,d4]@2 [g3,bb3,d4] eb2",
  R: "bb3@2 ~@2 [bb3,d4,g4]@2 ~ g4, g2@9 ~@3 [g2,g3]@4, [d4,g4]@7 ~@9, ~@2 g3@3 ~@3", // Gm G G5
  S: "a3@2 ~@2 a3@3 ~@5 a2@2 ~@2, c4@7 ~, a2@5 ~@3, g4@4 [a3,f4]@3 ~", // Dm
  T: "f3 ~@5 bb2 ~, d4@7 ~, bb2@8 bb3@7 ~, ~@2 f3@5 ~",
  U: "[~@16 [c5,ab5]@7 ~@5 ab2@3 ~, ab2@13 ~@3, [eb5,c6]@7 ~ [d5,bb5]@8 ~@8 [bb4,g5]@6 ~@2, ~@2 ab3@3 ~ ab3@8 ~@2]/2", // Fm Cm Gm Eb
  V: "[bb3,eb4] ~ bb3 eb4 [a3,c4,f4]@2 [a3,c4,f4] ~, eb2@7 ~ f2@7 ~, g3 ~ g3@4 ~@10", // Eb5 F
  W: "[~@16 [c5,ab5]@7 ~@5 ab2@3 ~, ab2@13 ~@3, [eb5,c6]@7 ~ [d5,bb5]@8 ~@8 [bb4,g5]@7 ~, ~@2 ab3@3 ~ ab3@8 ~@2]/2", // Fm Cm Gm Eb
  X: "[g3,bb3,eb4]@7 ~@5 eb2@2 f2@2, eb2@4 [g3,bb3,eb4]@3 ~", Y: "[g3,bb3,eb4]@7 ~ [g3,bb3,eb4]@4 g2@4, g2 ~",
  Z: "[ab3,c4,eb4]@7 ~ [ab3,c4,eb4]@4 ab2@4, ab2 ~", AA: "[bb2,ab3,c4,eb4]@8 [bb2,ab3,c4,f4]@7 ~",
  AB: "[g3,bb3,eb4]@7 ~@5 eb2@2 f2@2, eb2@8 [g3,bb3,eb4]@7 ~", // Eb
  AC: "[c4,eb4]@7 ~@5 ab2@4, ab3@15 ~, ab2@5 ~@3, ~@8 [c4,eb4]@7 ~", AD: "[bb2,ab3,c4,eb4]@7 ~ [bb2,ab3,c4,f4]@5 ~@3",
  AE: "[a3,c4,eb4,g4]@7 ~ [c4,g4]@4 a2@4, a2@5 ~@3, ~@8 [a3,eb4]@7 ~", // Am7b5 C5 Adim
  AF: "[f3,ab3,c4,eb4]@7 ~ [f3,ab3,c4,eb4]@4 f2@4, f2 ~", AG: "[c4,eb4,g4]@7 ~ [c4,eb4,g4]@4 ab2@4, ab2 ~",
  AH: "[g3,bb3,eb4]@7 ~ [g3,bb3,eb4]@4 bb2@4, bb2 ~", AI: "[[bb2,f3,ab3,c4,eb4]@7 ~]/2",
  AJ: "[c4,eb4]@7 ~@5 ab2@3 ~, ab3@15 ~, ab2@5 ~@3, ~@8 [c4,eb4]@7 ~", // Cm
  AK: "bb3@2 g3@2 [bb3,d4,g4]@2 ~ g4, g2@9 ~@3 [g2,g3]@4, [d4,g4]@7 ~@9", // Gm G G5
  AL: "f3 ~@5 bb2 ~, d4@7 ~, bb2@4 bb3@3 ~, ~@2 f3@5 ~",
  AM: "[a3,c4,eb4,g4]@7 ~ g4@4 a2@4, a2@5 ~@3, ~@8 [a3,c4,eb4]@7 ~", // Am7b5 Adim
  AN: "[c4,eb4,g4]@7 ~ [c4,eb4,g4]@4 ab2@4, ab2@5 ~@3", // Cm
  AO: "[ab3,c4,eb4]@6 ab3 ~ ab3@2 ~@2 ab3@2 ~@2, bb2@8 [c4,eb4]@5 ~@3, ~@5 bb2@2 ~", // Ab Cm
  AP: "[g3,c4,eb4]@3 ~ [g3,c4,eb4]@2 c3@2, c2@13 ~@3, ~@6 c3@5 ~@5", // Cm
  AQ: "[g3,bb3,eb4]@7 ~@5 bb2@4, bb2@8 [g3,bb3,eb4]@7 ~", AR: "[g3,c4,eb4]@7 ~ [g3,c4,eb4]@4 ab2@3 ~, ab2 ~",
  AS: "[a3,c4,eb4,g4]@7 ~ [a3,c4,eb4,g4]@4 a2@4, a2 ~", AT: "[ab3,c4,f4]@7 ~ [ab3,c4,f4]@4 c3@3 ~, c3 ~",
  AU: "bb2@8 ~ bb2@3 ab3@2 c4 ~, [ab3,c4,eb4]@3 ~", AV: "[bb2,ab3,c4,eb4]@11 ~@5",
  AW: "~@7 [f2,c4]@9, ~@7 [a3,f4]@7 ~@2", AX: "~@2 f2 g2 [a2,a3,c4,f4]@4, [a3,c4,f4]@3 ~@5",
  AY: "[a3,c4,f4] a2 [bb2,bb3,d4,f4]@2", AZ: "[bb3,d4,f4]@4 bb2@4 [c3,bb3,d4,f4]@7 ~",
  BA: "[c3,bb3,d4,g4]@7 ~ [f2,a3,c4,f4]@8", BB: "~@2 f2 g2 [a2,a3,c4,f4]@4, [a3,c4,f4]@7 ~@9",
  BC: "[[a3,c4,f4]@4 a2@4 [d4,f4]@7 ~@5 bb2@4 [c3,bb3,d4,f4]@7 ~, ~@8 bb3@15 ~@9, ~@8 bb2@8 [d4,f4]@7 ~@9]/2", // F Dm Bb Dm
  BD: "[[c3,bb3,d4,g4]@5 ~@3 [b3,d4,f4,a4]@7 ~ [d4,a4]@4 b2@4 [a2,c4]@8, ~@4 b2@5 ~@7, ~@16 [b3,f4]@7 ~ [a3,f4]@6 ~@2]/2", // Gm Bm7b5 D5 Am Bdim Dm
  BE: "[a3,c4,f4] a2 [g2,g3,bb3,d4]@2, ~@4 f4@3 ~", BF: "[g3,bb3,d4,f4] g2 [a2,a3,c4,f4]@2",
  BG: "[[a3,c4,f4]@4 a2@4 b2@9 ~@3 b2@3 ~ [c3,c4,f4]@8, ~@8 [a3,b3,d4,f4]@15 ~ a3@6 ~@2]/2", // F F5 Bm7b5
  BH: "[[a3,c4,f4] c3 [g3,bb3,d4]@7 ~@3, ~@8 c3 ~@39]/3", BI: "[~ [f2,a3,c4]@4 ~]/3",
})).s("gm_piano").gain(0.32).pan(0.4)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@25 A B C D E F G H I J C K L K C M N O P Q G R S T C R U V W K W R X Y Z Q G R S T C R Y Z C D E AA G H I J C K L K
  C M N O P Q G R S T C R U V W K W R X Y Z Q G R S T C R AB AC N R G M AD AC AE@2 AF@3 AG AH AI AJ AG AK AL AM AN AO@2
  AP@2 AQ ~@3 AR@3
>`.pickRestart({
  A: "ab1", B: "ab2@4 ab1@2 ab2 ~", C: "g1@9 ~@3 g1@4", D: "eb1@2 eb2 eb1", E: "f1@2 f2 f1", F: "eb1 eb2@3 f1 f2@3",
  G: "g1@5 ~ g1@2", H: "eb2@2 eb1 eb2", I: "f1@8 f2@7 ~", J: "eb2 eb1 eb2@2 f1 f2@3", K: "f1@9 ~@3 f1@4",
  L: "eb2@11 ~ eb2@4", M: "a1@9 ~@3 a1@4", N: "bb1@9 ~@3 bb1@4", O: "ab1@11 ~ ab2@4", P: "gb3@11 ~@5",
  Q: "eb2@13 ~ f1@2", R: "ab1@9 ~@3 ab1@4", S: "bb1@4 ~@2 bb1 ~ f2@3 ~ f2@2 ~@2", T: "eb2@4 eb1@3 f1",
  U: "bb1@5 ~ bb1 ~ bb2 ~ f2@2 bb1@3 ~", V: "a1@2 ~ a1", W: "g1@2 ~ g1", X: "bb1@9 ~@3 bb1 ~@3", Y: "bb1@3 f2",
  Z: "bb2@3 ~", AA: "eb1@2 eb2@6 f1@2 f2@5 ~", AB: "bb1@6 f2 ~ bb2@2 f2@2 bb1@2 ~@2", AC: "c2@9 ~@3 c2@4",
  AD: "bb1@5 ~ bb1@2", AE: "[bb1@19 bb2@4 bb1@3 ~@6]/2", AF: "[~@7 f2@13 ~@2 g1@2 a1@10 ~@2 a1@4 bb1@8]/3",
  AG: "~@4 bb1@4 c2@4 ~@2 c2 ~", AH: "g2@3 ~ g2@2 ~@2 f2@8", AI: "f1@3 g1 a1@4", AJ: "~ a1 bb1@2",
  AK: "c3 ~ g2@2 c2@3 ~ b1@8", AL: "~ b1 a1@2", AM: "~ a1 g1@2", AN: "~ g1 a1@2", AO: "[~@2 a1@2 b1@7 ~ c2@4]/2",
  AP: "[~@4 c2@2 ~@2 c2@11 ~ c1@12]/2", AQ: "c2@3 ~@5", AR: "[~@4 f1@5 f2@10 ~@5]/3",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · percussive organ · "ORGAN"
const percussive_organ = note("<~@110 A B C@2 D E F G@2 H@7 I@2 ~@14>".pickRestart({
  A: "[c5,eb5,g5]", B: "[bb4,eb5,g5]", C: "[[c5,g5] bb4, eb5]/2", D: "[c5,eb5,a5]", E: "[eb5,g5]", F: "[eb5,ab5]",
  G: "[[ab5,c6]@13 ~@3]/2", H: "[~@7 [f5,a5,c6]@32 ~ [f5,bb5]@16 [f5,bb5,c6]@16 [f5,a5]@32 [f5,bb5]@8]/7",
  I: "[~ [f5,bb5,c6]@2 ~]/2", // Fsus4
})).s("gm_percussive_organ").gain(0.14)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<A@8 B@2 ~@15 C D ~@31 E@2 ~@7 E@2 ~@31 E@2 ~@7 F ~@7 G@2 ~@14 H@2 I@7>".pickRestart({
  A: "[g2@62 ~@2 eb3@31 ~ g2@32, [d4,g4]]/8", B: "[eb3@15 ~]/2", C: "[eb4,c5] [d4,bb4]", D: "[c4,ab4]@8 [bb3,g4]@7 ~",
  E: "[[ab4,c5]@7 ~]/2", F: "[ab4,c5]@13 ~@3", G: "[[c4,f4]@3 ~]/2", H: "[~ [bb3,d4,f4]@3]/2",
  I: "[~@8 [bb2,f3,bb3,d4]@61 ~@3 [a3,c4,f4]@32 ~@8]/7", // Bb F
})).s("gm_pad_warm").gain(0.14)

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

// drums · rim
const rim = s("rim").struct("<~@132 x ~@9>").gain(0.38)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@47 A ~@3 B ~@3 A ~@7 A ~@25 A ~@3 B ~@3 A ~@3 C ~@3 A ~@3 D ~@3 E ~@3 F G H ~@3 I ~@3 J ~@3 I ~@10
>`.pickRestart({
  A: "~@3 x", B: "~@5 x ~@2", C: "x!2 ~ x!5", D: "~@3 x ~ x ~@2", E: "~@7 x", F: "~ x", G: "~@3 x!2 ~@5 x ~@4 x",
  H: "x ~@2 x!2 ~@11", I: "~ x ~@2", J: "~ x ~@6",
})).gain(0.51)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@44 A ~@6 B ~@8 A ~@25 A ~@6 B ~@7 C A ~@6 D ~@3 B ~@3 A E ~ F ~@6 G ~@14
>`.pickRestart({
  A: "~ x", B: "~@3 x", C: "x!2 ~ x!2 ~@3", D: "~@3 x ~ x ~@2", E: "x ~@6 x ~@3 x ~@4", F: "x", G: "~ x ~@2",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@27 A@3 ~ A@3 ~ A@7 ~@2 A@3 ~ A@2 ~@2 A@3 ~ A@2 ~@2 A@3 ~ A@2 ~ B@2 A@3 ~ A@3 ~ A@7 ~@2 A@3 ~ A@2 ~@2 A@3 ~ A@3 ~ A@3
  ~ A@2 ~ C A@3 D A@3 ~@3 D@3 ~ D@2 ~@2 D@3 ~@11
>`.pickRestart({
  A: "~ x", B: "~@5 x ~@2", C: "~ x ~@2", D: "x",
})).gain(0.25)

// drums · high tom
const high_tom = s("ht").struct("<~@47 A ~@15 A ~@25 A ~@15 A ~@12 B ~@4 C ~@18>".pickRestart({
  A: "~ x", B: "~ x ~@14", C: "x",
})).gain(0.25)

// drums · crash
// … 21 more lines

More by Pooh