Strudelify

'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: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  ~ A B@2 C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE X Y Z AA AB AF@3 A B@2 C D E F G H I J K L M N
  O P Q R S T U V W X Y Z AA AB AC AD AE X Y Z AA AB AF@3 H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE X Y Z AA
  AB AF@3 X Y Z AA AB AC AD AE X Y Z AA AB AG@4
>`.pickRestart({
  A: "a1@7 ~@5 e1@6 ~@6", B: "a1 ~ e1 ~", C: "a1@7 ~@3 a1 ~ e1@4 ~@2 a1@4 ~@2", D: "b1 ~ f#1 ~", E: "e1@7 ~@5 b1@7 ~@5",
  F: "a1@7 ~@5 e1@4 ~@2 e2@3 ~@3", G: "a1@3 ~@3 e1@5 ~ f#1@5 ~ g#1@4 ~@2", H: "a1@6 ~@6 e1@7 ~@5",
  I: "a1@6 ~@4 a1 ~ e1@5 ~ a1@4 ~@2", J: "b1@5 ~@7 f#1@6 ~@6", K: "b1@6 ~@4 b1 ~ f#1@5 ~ b1@5 ~",
  L: "e1@5 ~@7 b1@6 ~@6", M: "e1@8 ~@4 b1@4 ~@3 a1 ~@4", N: "a0 ~@2", O: "~@6 e1@5 ~ f#1@5 ~ g#1@5 ~",
  P: "a1@7 ~@5 e1@8 ~@4", Q: "a1@7 ~@3 a1 ~ e1@5 ~ a1@4 ~@2", R: "b1@7 ~@5 f#1@8 ~@4",
  S: "b1@8 ~@2 b1 ~ f#1@5 ~ b1@5 ~", T: "e1@7 ~@5 b1@7 ~@3 b1 ~", U: "e2@7 ~@3 e2 ~ b1@3 ~@3 e1@4 a1 ~", V: "a0 ~",
  W: "~@3 d#2", X: "[e1,e2]@3 ~ [e1,e2] ~ [g#1,g#2]@5 ~ [a1,a2]@5 ~ [a#1,a#2]@4 [b1,b2]@2",
  Y: "e2@3 ~ e2 ~ d2@6 c#2@5 ~ b1@3 ~ b1 ~", Z: "a1@3 ~ a1@2 c#2@5 ~ d2@5 ~ d#2@4 e2 ~",
  AA: "a1@3 ~ a1@2 c#2@5 ~ d2@5 ~ d#2@6", AB: "[e1,e2]@4 [e1,e2] ~ [g#1,g#2]@6 [a1,a2]@6 [a#1,a#2]@3 ~ [b1,b2] ~",
  AC: "e2@3 ~ e2@2 d2@6 c#2@5 ~ b1@4 ~@2", AD: "g1@6 f#1@5 ~ g1@6 g#1@5 ~", AE: "a1@5 ~ a1@5 ~ c#2@4 ~@2 d#2@6",
  AF: "[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",
  AG: "[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 [f#1,g1] f1 [d#1,e1] ~@11]/4", // Gmaj7 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 I@2 G@2 H@2 ~@17 A B@2 C D E@2 ~@2 F@2 G@2 H@2 ~@2 J@2 C D
  E@2 ~@2 F@2 G@2 K@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 D7 Em
  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]@3 f#5@2 c5@4 ~ b4@2 a4@8 ~@4", // 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]@7 ~]/2", // C#m
  I: "[[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 ~, ~@11 b5@3 ~@10]/2", // C#m Cm Bm A F#m E D
  J: "[[c#6,e6]@36 [c6,d#6]@6 [b5,d6]@5 ~]/2", K: "[[c#6,e6]@42 ~@4 [b4,d5,g5]@23 ~ [c#5,e5,a5]@36 ~@14]/5",
})).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]@19 ~ e4 d#4@2 [b3,d4]@19 ~@3 [b3,d4,g#4] ~@2]/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 C#maj7 …
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] [c3,c#3,f3,f#3] [b2,e3] [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 H I ~@18 A@2 B@4 C ~@9 D E F G H I ~@10 A@2 B@4 C ~@9 J E F G K L ~@10 D E F M H I ~@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 g#3@5 ~ a3@5 ~ a#3@4 b3@2", I: "e3@3 ~ e3@2 d3@5 ~ c#3@5 ~ b2@5 ~",
  J: "e3@3 ~ e3@2 g#3@5 ~ a3@5 ~ a#3@3 ~ b3 ~", K: "e3@3 ~ e3@2 g#3@5 ~ a3@5 ~ a#3@4 b3 ~",
  L: "e3@3 ~ e3 ~ d3@5 ~ c#3@5 ~ b2@5 ~", M: "a2@3 ~ a2 ~ c#3@6 d3@5 ~ d#3@4 f#3 ~",
})).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 P@4 A G H ~ I@2 J@2 K ~@2 L M@2 N O ~@4
  A B C D A E ~@2 P@4 A G H ~ A Q 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] [c#6,e6] g#5 ~ [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] ~@2 [e5,a5]@3 f#5 ~@2 [c#5,e5,a5]@3 f#5 ~@2", // Am A5 F#m A5 A
  D: "[c5,c#5] ~@2 f#5 ~@2 [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] [a3,b3] g3 f3 [c3,d3] ~@14", // Fmaj7 Csus2 Asus2 Fsus2 Csus2 Asus2 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
  P: "[[c#6,e6]@4 g#5 ~ [g5,c6,d#6]@4 ~@2 [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 …
  Q: "[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#6,e6] g#5 ~ [g5,c6,d#6]@3 ~ [g5,c6,d#6] ~ [f#5,b5,d6]@3 ~ [f#5,a#5,b5,d6] ~", // C#m Cm Bm
})).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 R S ~ T@2 U@2 V@2 ~@2 T@2 U@2 V@2 ~@2 A@2 B@2 C D E F G H I@2 J@2 K W M N
  O P Q R S ~ T@2 U@2 V@2 ~@2 T@2 U@2 V@2 ~@2 G H I@2 J@2 K W M N O P Q R S ~ T@2 U@2 V@2 ~@2 T@2 U@2 V@2 ~@2 T@2 U@2
  V@2 ~@2 T@2 U@2 V@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 ~ 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: "e3@6 [b3,d4,g#4] ~@5 b2@4 ~@2 [b3,d4,g#4] ~@5", S: "[a2,a3,c#4,a4] ~@11",
  T: "~@3 [b3,d4,e4,g#4] ~@5 [b3,d4,e4,g#4] ~@2", U: "~@3 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~@2",
  V: "~@3 [d4,e4,g#4] ~@5 [d4,e4,g#4] ~@2", W: "~@10 e2@2 f#2@4 ~@2 g#2@3 ~@3",
})).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: "~ a4@3 ~@20, [c#4,e4] ~@5", D: "~@3 [c#5,d5]@2 a4 e4@4 d4@2 c#4@12",
  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",
// … 140 more lines

More by Daniele