Strudelify
'Na tazzulella 'e cafe cover art

Terra Mia

'Na tazzulella 'e cafe

Daniele

KeyA majorTempo136 bpm
0:00/0:00
// 'Na tazzulella 'e cafe — Daniele
// 136 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 130 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~ A@3 B C D E F A B C G H I J K L B M N O P Q R S T U V S W X Y S T U V S Z@3 A@3 B C D E F A B C G H I J K L B M N O
  P Q R S T U V S W X Y S T U V S Z@3 A B C G H I J K L B M N O P Q R S T U V S W X Y S T U V S Z@3 S T U V S W X Y S T
  U V S AA@4
>`.pickRestart({
  A: "a1 ~ e1 ~", B: "a1@6 ~@4 a1 ~ e1@5 ~ a1@4 ~@2", C: "b1@5 ~@7 f#1@6 ~@6", D: "e1@7 ~@5 b1@7 ~@5",
  E: "a1@7 ~@5 e1@4 ~@2 e2@3 ~@3", F: "a1@3 ~@3 e1@5 ~ f#1@5 ~ g#1@4 ~@2", G: "b1@6 ~@4 b1 ~ f#1@5 ~ b1@5 ~",
  H: "e1@5 ~@7 b1@6 ~@6", I: "e1@8 ~@4 b1@4 ~@3 a1 ~@4", J: "a0 ~@2", K: "~@6 e1@5 ~ f#1@5 ~ g#1@5 ~",
  L: "a1@6 ~@6 e1@7 ~@5", M: "b1@7 ~@5 f#1@8 ~@4", N: "b1@8 ~@2 b1 ~ f#1@5 ~ b1@5 ~", O: "e1@7 ~@5 b1@7 ~@3 b1 ~",
  P: "e2@7 ~@3 e2 ~ b1@3 ~@3 e1@4 a1 ~", Q: "a0 ~", R: "~@3 d#2",
  S: "[e1,e2]@3 ~ [e1,e2] ~ [g#1,g#2]@5 ~ [a1,a2]@5 ~ [a#1,a#2]@4 [b1,b2]@2", T: "e2@3 ~ e2 ~ d2@6 c#2@5 ~ b1@3 ~ b1 ~",
  U: "a1@3 ~ a1@2 c#2@5 ~ d2@5 ~ d#2@4 e2 ~", V: "a1@3 ~ a1@2 c#2@5 ~ d2@5 ~ d#2@6",
  W: "e2@3 ~ e2@2 d2@6 c#2@5 ~ b1@4 ~@2", X: "g1@6 f#1@5 ~ g1@6 g#1@5 ~", Y: "a1@5 ~ a1@5 ~ c#2@4 ~@2 d#2@6",
  Z: "[e2@3 ~ e2@2 d2@6 c#2@5 ~ b1@4 g1@8 f#1@5 ~ g1@6 g#1@4 a1@7 ~ a1@3 ~@3 g1@3 ~@3 g#1@4 ~@2]/3",
  AA: "[e2@3 ~ e2@2 d2@6 c#2@5 ~ b1@4 g1@8 f#1@5 ~ g1@6 g#1@4 a1@31 ~@2 a1@2 g#1 g1 [f1,f#1] [d#1,e1] ~@11]/4", // F#maj7 Emaj7
})).s("gm_electric_bass_finger").gain(0.32)

// chords · rock organ
const rock_organ = note(`<
  ~@24 A B@2 C D E@2 ~@2 F@2 G@2 H@2 ~@25 A B@2 C D E@2 ~@2 F@2 G@2 H@2 ~@17 A B@2 C D E@2 ~@2 F@2 G@2 H@2 ~@2 I@2 C D
  E@2 ~@2 F@2 G@2 J@5
>`.pickRestart({
  A: "~@18 [b2,c3,d3] [e3,f3] [g3,a3,b3,c4] [d4,e4,f4,g4] [a4,b4,c5] [d5,e5,f5,g5]", // Bm Fmaj7 Cmaj7 Em7 Am Em7
  B: "[[c#6,e6]@36 [c6,d#6]@6 [b5,d6]@5 ~, [a5,b5] ~@47]/2", C: "c6@3 ~ c#6 ~ f#5@6 e5@3 ~ f#5@2 e5@5 ~, a5@3 a5@8 ~",
  D: "[c#5,e5]@2 f#5 c5@2 b4 a4@4 ~@2", // C#m
  E: "[[c#6,e6]@41 ~ c#6@2 [g5,a5,b5] [d5,e5,f5] [g4,a4,b4,c5] [e4,f4], ~@42 e6 ~@5]/2", // C#m G Dm Cmaj7 Fmaj7
  F: "[[c#6,e6]@6 [c6,d#6]@5 ~ [b5,d6]@5 ~ [a5,c#6]@3 ~ g5@2 g#5@4 e5 ~ [f#5,a5]@4 [e5,g#5]@6 e5 ~ [d5,f#5]@3 ~ c5@2, ~@11 b5@3 ~@10]/2", // C#m Cm Bm A F#m E D
  G: "[[c#5,e5]@5 ~ [d5,f#5]@5 ~ [e5,g5]@5 ~ [d5,f#5]@3 ~ c5 ~ c#5@5 ~ [b4,e5]@3 ~ e5@6 a4 ~ [c#5,e5]@4 a4 ~, ~@22 e5@6 ~@6 a4@5 ~@9]/2", // C#m D Em D E5 C#m
  H: "[[c#6,e6]@41 ~@7]/2", I: "[[c#6,e6]@36 [c6,d#6]@6 [b5,d6]@5 ~]/2",
  J: "[[c#6,e6]@41 ~@5 [b4,d5,g5]@23 ~ [c#5,e5,a5]@36 ~@14]/5", // C#m G A
})).s("gm_rock_organ").gain(0.22)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@30 A B ~@4 C ~@33 A B ~@4 C ~@25 A B ~@4 C ~@9 A B ~@4 C ~@5>".pickRestart({
  A: "~@23 d4", B: "[b3,c4] ~@23", C: "~@4 a4 ~@13 b4 ~@5",
})).s("gm_rock_organ").gain(0.13)

// chords · epiano2
const epiano2 = note(`<
  ~ A@2 B@2 C D E F ~ G H@2 I@2 J ~ K@2 L@4 M ~@7 N@2 ~@5 O@3 A@2 B@2 C D E F ~ G H@2 I@2 J ~ P@2 L@4 M ~@7 N@2 ~@5 O@3
  ~ G H@2 I@2 J ~ P@2 L@4 M ~@7 N@2 ~@5 O@3 ~@6 N@2 ~@5 Q@4
>`.pickRestart({
  A: "~@6 [a4,d#5,e5] ~@11 [a4,d#5,e5] ~@5", B: "~@6 [a4,c#5,e5] ~@11 [a4,c#5,e5] ~@5",
  C: "~@6 [b4,d#5,f#5] ~@11 [b4,d#5,f#5] ~@5", D: "~@6 [g#4,d5,e5] ~@11 [g#4,d5,e5] ~@5",
  E: "~@6 [a4,c#5,e5] ~@11 [a4,c#5,c#6] ~@5", F: "[a4,c#5,e5,a5]@19 ~@5", G: "~@9 e4 ~@2, ~@18 c#4 ~@5",
  H: "[[b3,d#4]@39 ~@3 [b3,d#4] ~@5]/2", I: "[[b3,d4]@38 ~@4 [b3,d4,g#4]@3 ~@3]/2", J: "[c#4,e4,a4] ~@5",
  K: "[c#4@11 ~ c#4@29 ~ e4@2 ~@4, a3@41 ~ c#4 ~@5]/2",
  L: "[[b3,d#4]@39 ~ e4@2 d#4@4 [b3,d4]@38 ~@6 [b3,d4,g#4]@2 ~@4]/4", M: "[c#4,e4,a4] ~@7",
  N: "[[b3,d4]@21 ~ [a3,c#4]@23 ~@3]/2", O: "[~@22 [b3,d4]@24 [a3,c#4]@23 ~@3]/3",
  P: "[a3@41 ~ e4@2 ~@4, c#4@11 ~@31 c#4 ~@5]/2", Q: "[~@11 [b3,d4]@12 [a3,c#4]@14 ~@11]/4",
})).s("gm_epiano2").gain(0.34).pan(0.7)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A B C D@2 E@2 F@2 ~@31 A B C D@2 E@2 F@2 ~@31 G@2 H I J K L@3 M N O@2 P Q R@2 ~@32 S
>`.pickRestart({
  A: "~@9 e3 ~@2", B: "d#3@11 ~ d#3@12", C: "~@6 b2@6 c#3@3 ~@3 d#3@2 ~@4", D: "[c#3@2 ~ b2@3 a2@31 ~@5 c#3@3 ~@3]/2",
  E: "[b2@11 ~ b2@14 ~@4 d3@6 c#3@3 ~@3 b2@2 ~@4]/2", F: "[a2@5 ~ a2@7 ~@11]/2",
  G: "[~@22 c#3@5 ~ e3@2 f#3@2 ~@4 a3@6 f#3@3 ~ a3@2]/2", H: "~@4 c#4@2 ~@4 a3@8 f#3@3 ~ e3@2",
  I: "c3@3 ~ c#3@2 e3@3 ~ c3@2 c#3@3 ~ e3@2 c3@3 ~ c#3@2", J: "e3@3 ~ c3@2 c#3@3 ~ e3@7 ~@7",
  K: "f#2@3 ~ a2@2 c3@3 ~ c#3@2 e3@3 ~ f#3@2 a3@3 ~ f#3@2", L: "[a3@2 ~@2 c4@4 ~@2 a3@8 f#3@4 a3@4 ~@4 b3@37 ~@5]/3",
  M: "c#5@4 a4 ~ a4@2 ~@4 a4@6 f#4@3 ~ a4@2", N: "~@4 c5@3 ~@3 a4@6 ~@6 e3@2", O: "[~ f#3@2 ~ a3 ~ b3@36 ~@6]/2",
  P: "~@4 e3@2 f#3@3 ~ a3@2 ~ b3@3 a3@2 f#3@3 ~ e3 ~", Q: "c3@3 ~ c#3@2 e3@3 ~ c3@2 c#3@3 ~ e3@2 ~@6", R: "[~ b3@11]/2",
  S: "~@7 a3@2 ~@15",
})).s("gm_overdriven_guitar").gain(0.34)

// other · overdriven guitar · soft notes · D5 D#5 E5 C#maj7 G5 G#5 D#maj7 F#5 …
const overdriven_guitar_soft = note(`<
  ~@129
  [~ [a2,d3] [a#2,d#3] [b2,e3] [c3,c#3,f3,f#3] [d3,g3] [d#3,g#3] e3@2 [d3,d#3,g3,g#3] [c#3,f#3] [b2,c3,e3,f3] [a2,a#2,d3,d#3] ~@11]
>`).s("gm_overdriven_guitar").gain(0.1)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@17 A@2 B@4 C ~@9 D E F G D H ~@18 A@2 B@4 C ~@9 D E F G D H ~@10 A@2 B@4 C ~@9 D E F G D H ~@10 D E F G D H ~@3
>`.pickRestart({
  A: "[[a3,c#4]@37 ~@5 [c#4,e4]@6]/2", B: "[[b3,d#4]@37 ~@3 e4@2 d#4@4 d4@39 ~@5 [d4,g#4]@3 ~@3]/4", C: "[c#4,a4] ~@7",
  D: "e3@3 ~ e3@2 g#3@5 ~ a3@5 ~ a#3@3 ~ b3@2", E: "e3@3 ~ e3@2 d3@6 c#3@5 ~ b2@3 ~ g#2@2",
  F: "a2@3 ~ a2 ~ c#3@5 ~ d3@5 ~ d#3@3 ~ e3@2", G: "a2@3 ~ a2 ~ c#3@6 d3@5 ~ d#3@4 f#3@2",
  H: "e3@3 ~ e3@2 d3@5 ~ c#3@5 ~ b2@5 ~",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.9)

// chords · piano
const piano = note(`<
  ~@25 A B C D A E ~@2 F@4 A G H ~@9 I@2 J@2 K ~@2 L M@2 N O ~@4 A B C D A E ~@2 F@4 A G H ~ I@2 J@2 K ~@2 L M@2 N O ~@4
  A B C D A E ~@2 F@4 A G H ~ A B C D A E ~@2 F@4 A G H ~@2
>`.pickRestart({
  A: "[g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~", // C#m
  B: "[g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g5,c6,d#6]@2 ~@2 [g5,c6,d#6] ~ [f#5,b5,d6]@3 ~ [f#5,a#5,b5,d6] ~", // C#m Cm Bm
  C: "[e5,a5,c6]@4 c#6 ~ [e5,a5]@3 f#5 a5 ~ [e5,a5]@3 f#5 ~@2 [c#5,e5,a5]@3 f#5 ~@2", // Am A5 A
  D: "[c5,c#5] ~@3 f#5 ~ [c#5,e5]@3 ~ b4@2 [a4,e5]@4 a4 ~ [c#5,e5]@4 a4 ~, e5@3 ~@3 c5 ~@3 e5 ~@7 c5 ~@5", // C#maj7 C#m A5 C#m
  E: "[g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6]@3 c6 ~@2", // C#m
  F: "[[c#6,e6]@4 g#5 ~ [g5,c6,d#6]@5 ~ [f#5,b5,d6]@4 ~@2 [a5,c#6] ~@3 g5@2 g#5@4 e5 ~ [f#5,a5]@3 ~ g#5@6 e5 ~ [d5,f#5]@2 ~@2 c5@2 c#5@4 a4 ~ [d5,f#5]@4 a4 ~ [a4,e5,g5]@4 a4 ~ [a4,d5,f#5]@2 ~@2 c5@2 c#5@4 a4 ~ b4@4 [a4,e5]@6 f#4 ~ [a4,e5]@3 ~@3, g#5@2 ~@16 e5@2 ~@2 b5@6 ~@6 e5@4 ~@8 e5@6 ~@2 a4@3 ~@13 e5@6 ~@2 e5@2 ~@16, ~@78 a4 ~@17]/4", // C#m Cm Bm A F#m D A7 D …
  G: "[g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ [g#5,c#6,e6] ~ e7 [c7,d7] [g6,a6,b6] [e6,f6] [c6,d6] [g5,a5,b5]", // C#m Csus2 G Fmaj7 Csus2 G
  H: "[e5,f5] [c5,d5] [a4,b4] [f4,g4] e4 [c4,d4] b3 [g3,a3] f3 [c3,d3] ~@14", // Fmaj7 Csus2 Asus2 Fsus2 Csus2 Gsus2 Csus2
  I: "[~@6 c5@4 c#5@35 ~@3, ~@2 [a4,e5]@13 ~, ~@6 b4 ~@41]/2", J: "[[f#4,b4,d#5]@3 ~]/2", K: "[e4,g#4,b4,d5]@19 ~@5",
  L: "~@10 f#5@2 [d#5,g5]@4 d5 ~ [d5,f#5]@2 ~@4, ~@10 d5 ~@13", // D# D
  M: "[c5 ~@11 [b4,d5]@6 c#5 ~@3 a4@6 ~@20, e5 ~, c#5@9 ~@2 c#5 ~@12]/2", N: "~@11 f4, ~@22 g#4 ~",
  O: "[f#4,a4]@4 b3@2 [e4,g#4] ~@3 [d4,f4]@2 [d#4,f#4]@10 ~@2", // F#m E Dm D#m
})).s("gm_piano").gain(0.24).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C D E F G H I@2 J@2 K L M N O P Q@2 R ~ S@2 T@2 U@2 ~@2 S@2 T@2 U@2 ~@2 A@2 B@2 C D E F G H I@2 J@2 K L M N
  O P Q@2 R ~ S@2 T@2 U@2 ~@2 S@2 T@2 U@2 ~@2 G H I@2 J@2 K L M N O P Q@2 R ~ S@2 T@2 U@2 ~@2 S@2 T@2 U@2 ~@2 S@2 T@2
  U@2 ~@2 S@2 T@2 U@2 ~@3
>`.pickRestart({
  A: "~@6 [d#4,e4,a4] ~@11 [d#4,e4,a4] ~@5", B: "~@6 [c#4,e4,a4] ~@11 [c#4,e4,a4] ~@5",
  C: "~@6 [d#4,f#4,b4] ~@11 [d#4,f#4,b4] ~@5", D: "~@6 [d4,e4,g#4,b4] ~@11 [d4,e4,g#4,b4] ~@5",
  E: "~@6 [c#4,e4,a4] ~@11 [e4,a4,c#5] ~@5", F: "[c#4,e4,a4] ~@5 e2@5 ~ f#2@6 g#2@4 ~@2",
  G: "~@6 [a3,c#4,e4]@2 ~@10 [a3,c#4,e4] ~@5", H: "~@6 [a3,c#4,e4] ~@11 [a3,c#4,e4] ~@5",
  I: "~@6 [b3,d#4,f#4] ~@11 [b3,d#4,f#4] ~@5", J: "~@6 [b3,d4,g#4] ~@11 [b3,d4,g#4] ~@5", K: "[a3,c#4,e4,a4] ~@11",
  L: "~@10 e2@2 f#2@4 ~@2 g#2@3 ~@3", M: "a2@5 ~ [a3,c#4,e4] ~@5 e3@5 ~ [a3,c#4,e4] ~@5",
  N: "a2@5 ~ [a3,c#4,e4] ~@3 a2 ~ e3@5 ~ [a3,c#4,e4] ~@5", O: "b2@5 ~ [b3,d#4,f#4] ~@5 f#2@5 ~ [b3,d#4,f#4] ~@5",
  P: "b2@5 ~ [b3,d#4,f#4] ~@5 f#2@5 ~ [b3,d#4,f#4] ~@3 b2 ~", Q: "e3@5 ~ [b3,d4,g#4] ~@5 b2@5 ~ [b3,d4,g#4] ~@5",
  R: "[a2,a3,c#4,a4] ~@11", S: "~@3 [b3,d4,e4,g#4] ~@5 [b3,d4,e4,g#4] ~@2", T: "~@3 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~@2",
  U: "~@3 [d4,e4,g#4] ~@5 [d4,e4,g#4] ~@2", // E7
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.6)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@49 A@3 B@3 C ~@2 D E@4 F ~@17 A@3 B@3 C ~@2 D E@4 F ~@34>".pickRestart({
  A: "[~@18 d4@4 c#4@11 a3@3 [c#4,e4]@10 ~@2 d#4@24, ~@46 f#3@25 ~, ~@47 b3@24 ~]/3", // C#m
  B: "[~@4 [f4,g#4]@2 f#4@4 d#4@2 b3@5 ~ d#4@4 [d4,g#4]@23 d4 b4@18 ~@2 g#4@5 ~, ~@6 a4@16 ~@24 g#4 ~@17 d4@6 ~@2]/3", // Fm Ddim
  C: "~ [e4,a4]@4 ~@19, c#4 ~@5", D: "~@3 d5 ~ a4 e4@4 d4@2 c#4@12, ~@2 c#5 ~@9",
  E: "[d#4@19 ~@3 [f4,g#4]@7 ~ [e4,g#4] ~@3 [d4,f4]@12 d4@6 ~@18 g4@2 g#4@23 ~, ~@70 d4@25 ~]/4", // Fm E Dm
  F: "~ [c#4,a4]@2 ~@21", // F#m
})).s("gm_electric_guitar_jazz").gain(0.38).pan(0.3)

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

// drums · clap
const clap = s("cp").struct("<~@105 [~ x ~ x]!6 ~@2 [~ x ~ x]!6 ~@2 [~ x ~ x]!6 ~@3>").gain(0.4)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 A ~@7 A ~@31 A ~@7 A ~@23 A ~@7 A ~@7 A ~@7 A ~@3>".pickRestart({
  A: "~@7 x ~@4",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@15 A ~@23 A ~@8 B@6 ~ A ~@31 A ~@15 A ~@17>".pickRestart({
  A: "~@3 x", B: "~ x",
})).gain(0.35)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@15 A ~@7 A ~ B C ~@2 B C ~@2 B C ~@2 B C ~@16 A ~@7 A ~ B C ~@2 B C ~@2 B C ~@2 B C ~@8 A ~@7 A D B C ~@2 B C ~@2 B
  C ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2 D
>`.pickRestart({
  A: "~ x ~@10", B: "~ x ~@4", C: "~@7 x ~@4", D: "~@5 x ~@6",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@7 B ~@7 C ~@5 D ~@7 D ~@9 E ~@7 B ~@7 F ~@5 D ~@7 D ~@9 B ~@7 G ~@5 D ~@7 D ~ G ~@5 D ~@7 D ~ H I
>`.pickRestart({
  A: "~ x", B: "~@3 x", C: "~@5 x ~@2 x ~@3", D: "~@5 x ~@6", E: "~@3 x!3", F: "~@3 x!2 ~", G: "~@2 x", H: "~@22 x!2",
  I: "x!5 ~ x ~@17",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@6 B ~@7 B ~@2 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@7 A ~@6 B D ~@6 B ~@2 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@6 B D ~@6
  B E ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@2 F
// … 133 more lines

More by Daniele