Strudelify

Liberi di - liberi da

Dirotta su Cuba

KeyD majorTempo134 bpm
0:00/0:00
// Liberi di - liberi da — Dirotta su Cuba
// 134 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(134/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(`<
  A@6 B@2 C D C E C F B@2 G@2 H@2 I@2 J@2 K@2 L@2 M N O P C D C Q C F R@2 G@2 H@2 I@2 J@2 S T U@2 V@2 W@2 X@2 Y Z AA AB
  C D C Q C F AC@2 C D C Q C F AC@2 G@2 AD@2 AE@2 AF@2 W@2 X@2 Y Z AA AB C D C Q C F AC@2 C D C Q C F AG@2 ~
>`.pickRestart({
  A: "[~@2 g1@2 f#2@2 g1 ~@3 g1@2 f#2@2 f#1@4 a1 ~ a#1 ~ b1@4 b1 ~@3 g1@4 g1@2 f#2@2 g1 ~@3 g1@2 f#2@2 f#1@4 c1 ~ c#1 ~ d1@4 d1 ~@3 g1@4 g1@2 f#2@2 g1 ~@3 g1@2 f#2@2 f#1@4 a1 ~ a#1 ~ b1@4 b1 ~ b1@4]/6",
  B: "[a1 ~ a1@2 f#1 ~ f#1@2 g1 ~ g1@2 g#1 ~ a1@4 a1@2 f#1 ~ f#1@2 g1 ~ g1@2 a#1 ~ a1@2]/2",
  C: "g1@2 g1@2 d2@2 g2@2 ~@2 e2@2 f2 ~ f#2@2", D: "~@2 a1@2 a#1 ~ b1@2 ~@2 b1@2 ~@2 f#1@2",
  E: "~@2 f#2@2 g2 ~ a2@2 ~@2 a2@2 ~@2 f#1@2", F: "~@2 c#2@2 c2 ~ b1@2 ~@2 b1@2 ~@2 b1 ~",
  G: "[g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@4 b1 ~@5 e1!2 e1@2 f1@2 f#1@2]/2",
  H: "[g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@4 f#1 ~@5 e2!2 f2@2 f#2@2 a2@2]/2",
  I: "[g1@2 g1 ~@5 f#1@2 ~ f#1 a1 ~ b1@4 b1 ~@5 f#1!2 f#1@2 a1@2 d2@2]/2",
  J: "[c2@3 ~ c2@2 c2@2 ~@2 f#1@2 ~@2 b1@4 e1@2 f#1@4 ~@2 a1@2 b1@2 d2@2]/2",
  K: "[g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@4 b1 ~@5 e1!3 ~ f1@2 f#1@2]/2",
  L: "[g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@4 b1 ~ b2@4 f#2@4 d2@4]/2", M: "g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@2",
  N: "~@2 b0@8 b0 ~ e1@2 g1@2", O: "a1 ~ a1@2 e2@2 a2@4 e2@2 a1@4", P: "b1 c#2 d2!2",
  Q: "~@2 g2@2 g#2 ~ a2@2 ~@2 a2@2 ~@2 f#1@2",
  R: "[a1@3 ~ f#1 ~ f#1@2 g1 ~ g1@2 g#1 ~ a1@4 a1 ~ f#1@2 f#1@2 g1 ~ g1@2 a1@3 ~]/2", S: "~@2 g1 ~ f#1 ~@2 b1",
  T: "~ e2 e2@2 f#2@2 a2@2 ~ e1 e1@2 f1@2 f#1@2, ~@4 b2 ~@3",
  U: "[g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@4 d1 ~ e1 ~ f#1@2 f#1@2 e1 ~ f#1@2 a1@2]/2",
  V: "[g1@2 ~ g1!2 ~ g2 ~ f#2@3 f#2 ~@2 b1@4 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ a#1 ~ a1 ~]/2",
  W: "[g1@4 ~@2 g1 ~ g1@2 a#1@2 b1 ~ c2@5 ~@3 c2@2 ~@2 c2 ~ a1@2 a#1@2]/2",
  X: "[b1@4 ~@2 f#1 ~ b1@2 f#1@2 f1 ~ e1@5 ~@3 e1@3 ~ e1@3 ~ f#1@2]/2", Y: "g1@4 ~@2 g1@2 ~@2 g1 ~@3 g1@2",
  Z: "f#1@4 ~@2 f#1 ~ f#1@2 f#1@2 e1 ~ f#1@2", AA: "a1 ~ a1@2 e2@2 a2@4 e2@2 a1@2 a#1@2", AB: "b1!2 ~ b1 ~ b1 ~ b1",
  AC: "[a1@3 ~ f#1 ~ f#1@2 g1 ~ g1@2 g#1 ~ a1@4 a1 ~ f#1@2 f#1@2 g1 ~ g1@2 a#1 ~ a1@2]/2",
  AD: "[g1@2 ~@6 f#1@2 ~ f#1 a1 ~ b1@4 b1 ~@7 a2 ~@3 a2@2]/2",
  AE: "[g2@2 g1@2 ~@4 f#1@2 ~ f#1 a1 ~ b1@4 b1 ~@3 b1 ~ b1!2 b1@2 a1@2 d2 ~]/2",
  AF: "[c2@3 ~ c2@2 c2@2 ~@2 f#1@2 ~@2 b1@4 e2 ~ e2@2 f2@2 f#2@2 e1 ~ f1@2 f#1@2]/2",
  AG: "[a1@3 ~ f#1 ~ f#1@2 g1 ~ g1@2 g#1 ~ a1@4 a1 ~ f#1@2 f#1@2 g1 ~ g1@2 a1 ~ d2@2]/2",
})).s("gm_electric_bass_finger").gain(0.67)

// chords · piano
const piano = note(`<
  A@2 B@2 C@2 D@2 A@2 B@2 C@2 E@2 F@2 G@2 F@2 H@2 F@2 G@2 F@2 I J A@2 B@2 C@2 K@2 F@2 L@2 F@2 H@2 M@2 N@2 O@2 P@7 Q A@2
  B@2 C@2 R@2 A@2 B@2 C@2 R@2 S@2 T U V@2 W@2 P@7 Q A@2 B@2 C@2 R@2 A@2 B@2 C@2 X@2 ~
>`.pickRestart({
  A: "[[g3,b3,d4,f#4]@12 ~@2 [f#3,a3,c#4,e4]@8 [f#3,a3,b3,d4]@5 ~ [f#3,a3,b3,d4]@3 ~]/2", // Gmaj7 F#m7 Bm7
  B: "[[g3,b3,d4,f#4]@12 ~@2 [f#3,a3,c#4,e4]@8 [a3,c4,e4,g4]@6 [a3,c4,e4,a4]@3 ~]/2", // Gmaj7 F#m7 Am7 Am
  C: "[[g3,b3,d4,f#4]@12 ~@2 [f#3,a3,c#4,e4]@8 [f#3,a3,b3,d#4]@6 [f#3,a3,b3,d#4]@3 ~]/2", // Gmaj7 F#m7 B7
  D: "[[g3,b3,d4,f#4]@5 ~ [b3,d4,f#4,a4]@7 ~ [g3,b3,d4,f#4]@10 [a#3,d4,f#4,a#4]@2 [a#3,d4,f#4,a#4]@2 ~@4]/2", // Gmaj7 Bm7 Gmaj7 A#aug
  E: "[[g3,b3,d4,f#4]@5 ~ [b3,d4,f#4,a4]@7 ~ [g3,b3,d4,f#4]@10 [d3,d4,f#4,a#4] ~ [d3,d4,f#4,a#4] ~@5]/2", // Gmaj7 Bm7 Gmaj7 Daug
  F: "[[g3,b3,d4,f#4]@2 ~@6 [f#3,a#3,d4,e4]@2 ~@4 [a3,c#4,d4,f#4]@17 ~]/2", // Gmaj7 F#aug Dmaj7
  G: "[[g3,b3,d4,f#4]@2 ~@6 [f#3,a#3,e4,a4]@2 ~@4 [a3,c#4,d4,f#4]@17 ~]/2", // Gmaj7 F#7 Dmaj7
  H: "[[b3,c4,e4,g4]@10 [f#3,a#3,e4,a4]@2 ~@2 [a3,c#4,d4,f#4]@17 ~]/2", I: "[c4,e4,g4,b4]@10 ~@2 [a3,c4,e4,g4]@3 ~",
  J: "[b3,d#4,g4,d5]@3 b3 [b3,d#4,f#4,b4]@4", K: "[[g3,b3,d4,f#4]@5 ~ [b3,d4,f#4,a4]@7 ~ [a2,g3,b3,d4,f#4]@18]/2",
  L: "[[g3,b3,d4,f#4]@2 ~@6 [f#3,a#3,e4,a4] ~@5 [f#3,b3,c#4,e4]@17 ~]/2", // Gmaj7 F#7 F#sus4
  M: "[~@4 [g3,b3,d4,f#4]@2 ~@2 [f#3,a#3,d4,a4]@2 ~@4 [a3,c#4,d4,f#4]@17 ~]/2", // Gmaj7 D Dmaj7
  N: "[[g3,b3,d4,f#4] ~@3 [f#3,a#3,e4,a4] ~@7 [d5,f#5,c#6]@4, ~@14 [a3,c#4,d4,f#4]@17 ~]/2", // Gmaj7 F#7 Dmaj7
  O: "[[g3,b3,d4,f#4] ~@3 [f#3,a#3,d4,e4] ~@8 b4 [c#5,d5,f#5]@2, ~@14 [a3,c#4,d4,f#4]@17 ~]/2", // Gmaj7 F#aug Dmaj7
  P: "[[g3,b3,d4,f#4]@7 [a3,c4,e4,f#4]@4 [a#3,d4,e4,g4]@4 e4@4 d4@4 [a3,d4,f#4,a4]@4 [a#3,d4,f#4,a#4]@4 [g3,d4,f#4,b4]@8 [e4,f#4,a4,c5]@4 [e4,g4,a#4,c#5]@4 [e4,g4,b4,d5]@9, ~@15 [a3,c#4,f#4,a4]@8 ~@33]/7", // Gmaj7 F#m7b5 Em7b5 D A#aug Gmaj7 F#m7b5 Edim …
  Q: "~@2 [d#4,g4,a4,d5] ~ [d#4,g4,a4,d5]@2 ~@4 [d#4,g4,a4,d5]@3 ~ [d#4,g4,a4,d5]@2, b2", // D#maj7
  R: "[[g3,b3,d4,f#4]@5 ~ [b3,d4,f#4,a4]@7 ~ [a2,g3,b3,d4,f#4]@10 [a#2,f#3,a#3,d4,f#4]@8]/2", // Gmaj7 Bm7 Gmaj7 A#aug
  S: "[[g3,b3,d4,f#4]@2 ~@6 [f#3,a#3,d4,e4]@2 ~@4 [a3,c#4,d4,f#4]@9 ~ [a#3,d4,f#4,a#4]@8]/2", // Gmaj7 F#aug Dmaj7 A#aug
  T: "[b3,d4,f#4,b4]@2 ~ [a3,c#4,d4,f#4]", U: "~@2 [g3,b3,d4,f#4] ~@3 [b3,d4,f#4,a4] ~@5 [a#3,d4,f#4,a#4]@4",
  V: "[~@4 [d3,f#3,b3]@2 a3 ~@3 [d3,f#3,a#3]@2 ~@2 [f#3,a3,c#4]@17 ~]/2", // Bm Daug F#m
  W: "[[e3,g3,b3]@10 [d3,f#3,a#3]@2 ~@2 [d3,f#3,a3,c#4]@17 ~]/2", // Em Daug Dmaj7
  X: "[[g3,b3,d4,f#4]@5 ~ [b3,d4,f#4,a4]@7 ~ [a2,g3,b3,d4,f#4]@16 [d3,a3,f#4,a4,d5]@2]/2", // Gmaj7 Bm7 Gmaj7 D
})).s("gm_piano").gain(0.37).pan(0.3)

// other · synth strings 1 · "Syn str."
const synth_strings_1 = note(`<
  ~@8 A@2 B@2 C D@2 ~@15 E F G@2 H@3 I@3 ~@14 J@8 G@2 H@3 K@3 G@2 H@3 K@3 ~@8 J@8 G@2 L@2 ~ K@3 G@2 H@3 M ~@3
>`.pickRestart({
  A: "[[f#4,f#5]@9 [a4,a5] [b4,b5] [d5,d6]@4 [e5,e6]]/2", B: "[[f#5,f#6]@9 [g5,g6] [f#5,f#6] [e5,e6] [a4,a5]@4]/2",
  C: "[b4,b5]", D: "[[c#5,c#6] [d5,d6] [e5,e6] [f#5,f#6]@4 [a5,a6]@9]/2", E: "[a3,c4,b4]",
  F: "[b4,b5] [a4,a5] [g4,g5] [f#4,f#5]", G: "[[f#4,f#5]@9 [b3,b4] [d4,d5] [e4,e5] [f#4,f#5]@3 [a5,a6]]/2",
  H: "[[f#5,f#6]@9 [g5,g6] [a5,a6]@3 [f#5,f#6]@2 [b4,b5]@9]/3", // F# G A F# B
  I: "[[c#5,c#6] [d5,d6] [e5,e6] [f#5,f#6]@4 [a5,a6]@17]/3", // C# D E F# A
  J: "[[f#4,f#5]@11 [g4,g5]@4 [a4,a5]@12 [a#4,a#5]@4 ~@3 [f#4,f#5]@5 [c5,c6]@4 [c#5,c#6]@4 [d5,d6]@15 ~@2, ~@31 [b4,b5]@8 ~@25]/8", // F# G A A# F# C C# D …
  K: "[[c#5,c#6]@2 [d5,d6]@2 [e5,e6]@2 [f#5,f#6]@8 [a5,a6]@25 ~@9]/3", // C# D E F# A
  L: "[[f#5,f#6]@9 [g5,g6] [a5,a6]@3 [f#5,f#6]@2 [b4,b5]]/2", M: "[c#5,c#6] [d5,d6] [e5,e6] [f#5,f#6]@4 [a5,a6]",
})).s("gm_synth_strings_1").gain(0.21).pan(0.6)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@5 A B@3 C@4 D@3 E ~@10 F ~ G H I E ~@5 J@2 ~ K ~ L@2 M ~ N O P@2 ~ Q ~@8 R S@3 T S@2 U@2 V S@2 T S@2 U@2 E ~@14 W
  S@3 T S@2 U@2 V S@2 T S@2 X@2 ~
>`.pickRestart({
  A: "~@6 [b4,b5] [a4,a5]", // B A
  B: "[~@2 [f#4,f#5]@2 ~@2 [e4,e5]@2 ~@2 [a4,a5]@3 ~ [f#4,f#5]@4 [d4,d5]@5 ~ [f#4,d5,a#5]@2 [f#4,d5,a#5] ~@3 [f#4,f#5]@4 [d4,d5] ~@13]/3", // F# E A F# D F#aug F# D
  C: "[~@2 [b3,b4] ~@3 [d4,d5] ~@3 [e4,e5] ~@3 [f#4,f#5]@4 [d4,d5] ~@11 [f#4,f#5]@4 [g4,g5] ~ [f#4,f#5]@2 [e4,e5]@2 [d4,d5] ~@3 [a4,a5]@2 [f#4,f#5]@4 [d4,d5] ~@13]/4", // B D E F# D F# G F# …
  D: "[~@2 [b3,b4] ~@3 [d4,d5] ~@3 [a3,a4] [b3,b4] [d4,d5] [e4,e5] [a4,d5,f#5]@25 ~ [f#4,c5,f5] ~ [f#4,c5,f5] ~@5]/3", // B D A B D E D F
  E: "[b4,d5,b5] ~@7", F: "~@10 [b3,f#4,b4] ~@3 [d4,b4,d5] ~", G: "~@10 [f#3,f#4] ~ [b3,f#4,b4]@2 [b3,f#4,b4] ~",
  H: "~@2 [b3,e4,b4] ~ [d4,g4,d5]@2 [e4,a4,e5]@4 [e4,c5,e5] ~ [e4,c5,e5]@2 [e4,c5,e5] ~", // E5 G5 A5 C
  I: "~@2 [d#4,g4,d5] ~ [d#4,g4,d5]@2 [d#4,g4,d5] ~@3 [f#4,b4,f#5] ~ [f#4,b4,f#5]@2 [a4,d5,a5] ~", // D#maj7 B5 D5
  J: "[~@6 a4 b4 [f#4,d5]@23 ~]/2", K: "~@10 [b3,b4] ~ [d4,d5]@2 [d4,d5] ~",
  L: "[~@6 [a4,a5] ~@3 [f#4,f#5] ~@3 [d4,d5]@4 [b3,b4] ~@13]/2", M: "~@10 [a3,a4] [b3,b4] [d4,d5]@2 [d4,d5] ~",
  N: "~@2 [a3,a4] ~ [b3,b4]!2 [d4,d5] ~@3 [e4,e5] ~ [f#4,f#5]@2 [a4,a5] ~", O: "~@2 [f#4,f#5] ~ [a4,a5] ~@2 [f#4,f#5]",
  P: "[~ [d5,e5] [b4,c#5] a4 ~@10 [f#4,f#5]@4 [d4,d5] ~@13]/2", // Dsus2 Bsus2 F# D
  Q: "f#4!2 [a3,a4] ~ [b3,f#4,b4]@2 [b3,f#4,b4] ~@3 [a3,a4] ~ [d4,a4,d5]@2 [d4,a4,d5] ~", // A B5 A D5
  R: "~@2 [d#4,a4,d5] ~ [d#4,a4,d5]@2 ~@4 [d4,d5] ~ [e4,b4,e5]@2 [f#4,b4,f#5]@2", S: "~@5 [f#4,f#5] ~ [f#4,f#5]",
  T: "~@5 [g4,g5] ~ [f#4,f#5]", U: "[~@6 a4 b4 [f#4,d5]@16 [a#4,a#5] ~ [a#4,a#5] ~ [a#4,a#5] ~@3]/2",
  V: "[b4,d5,b5] ~@4 [f#4,f#5] ~ [f#4,f#5]", // Bm F#
  W: "~@2 [d#4,a4,d5] ~ [d#4,a4,d5]@2 ~@2 [f#4,b4,f#5] ~ [f#4,b4,f#5]@2 ~@2 [f#4,b4,f#5]@2", // D B5
  X: "[~@6 a4 b4 [f#4,d5]@18 ~@2 [a4,a5]!2 [a4,d5,d6]@2]/2", // D A D5
})).s("gm_brass_section").gain(0.42).pan(0.7)

// other · trumpet
const trumpet = note(`<
  ~@5 A B@3 C@4 D@3 E ~@10 F G@2 H I E ~@5 J@2 ~ K ~ L@2 M ~ N O P@2 ~ Q ~ R@8 ~@6 S@2 T ~@5 S@2 T ~@7 R@8 ~@6 S@2 T ~@5
  U@2 ~
>`.pickRestart({
  A: "~@6 b5 a5", B: "[~@2 f#5@3 ~ e5@3 ~ a5@3 ~ f#5@4 d5@5 ~ a#5@2 a#5 ~@3 f#5@4 d5 ~@13]/3",
  C: "[~@2 b4 ~@3 d5 ~@3 e5 ~@3 f#5@4 d5 ~@11 f#5@4 g5 ~ f#5@2 e5@2 d5 ~@3 a5@2 f#5@4 d5 ~@13]/4",
  D: "[~@2 b4 ~@3 d5 ~@3 a4 b4 d5 e5 a5@24 ~@2 a#5 ~ a#5 ~@5]/3", E: "b5@2 [f#5,g5,a5] ~@13", F: "~@10 b4 ~@3 d5 ~",
  G: "[~@10 e4 ~ a4@2 f#4@12 [f#4,a4] ~ b4@2 [a4,b4] ~]/2", H: "b4@2 b4 ~ d5@2 e5@4 e5 ~ e5@2 e5 ~, a#4 ~@15",
  I: "~@2 d5 ~ d5@2 d5 ~@3 f#5 ~ f#5@2 a5 ~", J: "[~@6 [b4,b5] [a4,a5]@8 ~, ~@12 a5 ~@19]/2", K: "~@10 b4 ~ d5@2 d5 ~",
  L: "[~@6 a5 ~@3 f#5 ~@3 d5@4 b4 ~@13]/2", M: "~@10 a4 b4 d5@2 d5 ~", N: "~@2 a4 ~ b4!2 d5 ~@3 e5 ~ f#5@2 a5 ~",
  O: "~@2 f#5 ~ a5 ~@2 f#5", P: "[~ e5 [c#5,d5] ~@11 f#5@4 d5 ~@13]/2", Q: "f#4!2 a4 ~ b4@2 b4 ~@3 a4 ~ d5@2 d5 ~",
  R: "[f#4@22 g4@8 a4@24 a#4@8 b4@16 c5@8 c#5@8 d5@19 ~ d5 ~ d5@2 ~@4 d5 ~ e5@2 f#5@2]/8",
  S: "[~@12 [b4,b5]@2 [a4,a5]@10 a#5 ~ a#5 ~ a#5 ~@3, ~@12 a5 ~@19]/2", T: "b5@2 [f#5,g5,a5] [b4,c#5,d5,e5] ~@12",
  U: "[~@6 [b4,b5] [a4,a5]@6 ~@2 d6, ~@12 a5 ~@19]/2", // B A
})).s("gm_trumpet").gain(0.34).pan(0.3)

// other · trumpet · soft notes · C#m7
const trumpet_soft = note("<~@16 [~@3 [b4,c#5,d5,e5] ~@12] ~@15 [~@3 [b4,c#5,d5,e5] ~@12] ~@16 [~@2 b4 a4 ~@12] ~@61>")
  .s("gm_trumpet").gain(0.21).pan(0.3)

// other · alto sax
const alto_sax = note("<~@101 A@3 B C D E F G ~>".pickRestart({
  A: "[~@10 b4 ~ d5@13 ~ e5@2 d5@2 c#5@4 a4@2 f#4 ~ a4@4 b4 ~@5]/3", B: "~@2 d5 e5 e5@2 d5@4 c#5 ~ b4 ~ a4@2",
  C: "a4 ~ b4 a4 ~ a4 ~ f#4 ~ e4 e4@2 e4@2 d4@2", D: "~@3 b3 e4 d4 e4!2 d4!2 e4!2 f#4!2 a4!2",
  E: "b4@2 d5 ~@5 b4@4 a4@2 f#4 ~", F: "~@2 f#5@2 e5 ~ d5@3 ~ b4@2 a#4@2 a4@2", G: "~@2 a5@11 ~@3",
})).s("gm_alto_sax").gain(0.64).pan(0.4)

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

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

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B A C A@7 D E F E G H F E G E F E G H F E I A@3 J@2 K L M E F E G H F N O A P E Q H R S T U V W X V Y V@4 Z V AA
  AB V@4 Z V AA AC AD AE AD AE AD AE AD M S T AF AG W X V Y S T S V AH V L AC V@4 Z V AA AI ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@4 x ~ x!4 ~@2 x!2 ~@2", D: "~@4 x ~ x!8 ~@2", E: "~@2 x ~@2 x!2 ~",
  F: "~ x ~@2 x ~ x ~ x!2 ~@2 x ~ x ~", G: "x ~@3 x ~@3 x!2 ~@2 x ~ x ~", H: "~@4 x ~@2 x ~@2 x ~ x ~@3",
  I: "~@4 x ~ x!5 ~ x!2 ~@2", J: "~@4 x ~@7 x ~ x!2", K: "~ x ~@2 x ~@4 x ~@2 x ~@3", L: "~ x!2 ~ x ~ x!5 ~ x ~ x ~",
  M: "~ x ~@2 x ~ x!8 ~@2", N: "~@4 x ~@5 x!2 ~@4", O: "x!2 ~@2 x ~@3 x!3 ~ x!2 ~@2", P: "x!3 ~ x ~@7 x ~ x ~",
  Q: "x!3 ~ x ~@2 x!3 ~@2 x ~ x ~", R: "x!3 ~ x ~ x ~ x!3 ~ x!2 ~@2", S: "~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x",
  T: "~@2 x ~ x ~ x ~@2 x ~@2 x ~ x ~", U: "~ x!2 ~ x ~@2 x ~@2 x ~ x ~ x!2", V: "~@2 x ~ x ~ x!2 ~ x!2 ~ x ~ x!2",
  W: "~ x!2 ~ x ~ x!2 ~@2 x ~ x ~ x!2", X: "~ x!2 ~ x ~ x!2 ~ x!2 ~ x ~ x!2", Y: "x ~ x ~ x ~ x ~ x!6 ~@2",
  Z: "x ~ x ~ x ~ x!2 ~ x!2 ~ x ~ x!2", AA: "~ x!2 ~ x ~ x!5 ~ x ~ x!2", AB: "~ x!2 ~ x ~ x!10",
  AC: "~ x!2 ~ x ~ x!8 ~@2", AD: "~@3 x ~ x ~ x ~ x ~@2 x ~@2 x", AE: "~ x ~@3 x!3 ~ x ~@2 x ~@3",
  AF: "~ x!2 ~ x ~@2 x ~@2 x ~ x ~@2 x", AG: "~@2 x ~ x ~ x!2 ~ x ~@2 x ~ x ~", AH: "x ~ x ~ x ~@2 x ~ x ~@2 x ~@2 x",
  AI: "~ x!2 ~ x ~ x!9 ~",
})).gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@5 A ~@11 B C D ~ B C D ~ B C D ~ B E F ~@5 G A H ~ B C D ~ B C I ~ A C J ~ K L M N ~@21 O P O P O P O ~ L M Q J ~@4
  L M L ~ L ~ A ~@10
>`.pickRestart({
  A: "~@15 x", B: "x ~ x ~@4 x ~@2 x ~@4 x", C: "~@6 x!2 ~@8", D: "~ x!2 ~@4 x ~@2 x ~@4 x", E: "~@14 x!2",
  F: "~@11 x ~@4", G: "~ x ~@3 x ~@2", H: "~ x ~@6", I: "~@2 x ~@4 x ~@3 x ~@4", J: "~@10 x ~@4 x", K: "~@7 x ~@8",
  L: "~@3 x ~ x ~ x", M: "~@7 x ~@2 x ~@4 x", N: "~@3 x ~@4", O: "~ x!2 ~@3 x ~ x ~ x ~@3 x ~",
  P: "x ~ x!3 ~@3 x ~ x ~@3 x!2", Q: "~@3 x ~@3 x",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@48 x ~@62>").gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 A ~@7 A B C ~@3 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@9>".pickRestart({
  A: "~@14 x!2", B: "x", C: "~@6 x!5 ~@5",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@7 A ~@7 A ~@15 A ~@7 A ~@29 A ~@7 A ~@7 A ~@15 A ~@7 B ~>".pickRestart({
// … 22 more lines

More by Dirotta su Cuba