Strudelify

Roma capoccia

Antonello Venditti

KeyE majorTempo60 bpm
0:00/0:00
// Roma capoccia — Venditti Antonello
// 60 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 76 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
  ~@14 A@4 B@5 C D E F@2 A@4 B@5 G H@2 I@4 J@5 K L M N@2 I@4 J@5 K O@2 P O@2 Q R P S ~@3
>`.pickRestart({
  A: "[~@65 c#5@22 b4@6 a4@3 ~ d5@15 ~@9 e5@7, ~ a5@96 f#5@24 ~@7, ~@7 c#5]/4",
  B: "[~ [b4,d5]@16 e5@16 e4@16 f#4@16 e4@16 d4@32 d5@15 ~ c#5@16 [g#4,b4]@15, ~@17 g#4@31 ~ a4@95 ~@16, ~@33 c#5@48 f#4@48 e4@31]/5", // Bm G#m
  C: "~ d4@16 ~@8 f#5@7, a4@25 ~@7, ~ f#4@25 ~@6, ~@17 d5@15", D: "~ [a4,c#5]@16 [b4,d#5]@15", E: "~ [a4,d5,f#5]@31",
  F: "[~@13 e5@4 ~@16 a4@22 ~@2 a5@7, ~ [a4,c#5]@16 [b4,d#5]@15 ~ d5@28 ~@3, ~@29 f#5@33 ~@2]/2", // A B
  G: "~ d4@16 ~@8 f#5@7, ~ [f#4,a4]@25 ~@6, ~@17 d5@15", // F#m
  H: "[~ [e4,c#5]@15 ~ [f#4,d5]@16 c#5@16 [g#4,b4]@8 [f#4,a#4,c#5]@7, ~ a4@46 ~@17, ~@33 e4@22 ~@9]/2", // C#m D G#m F#
  I: "[~@65 d#5@22 c#5@6 b4@3 ~ e5@15 ~@9 f#5@7, ~ b5@96 g#5@24 ~@7, ~@7 d#5]/4",
  J: "[~ [c#5,e5]@16 f#5@16 f#4@16 g#4@16 f#4@16 e4@32 e5@15 ~ d#5@16 [a#4,c#5]@15, ~@17 a#4@31 ~ b4@95 ~@16, ~@33 d#5@48 g#4@48 f#4@31]/5", // C#m A#m
  K: "~ e4@16 ~@8 g#5@7, b4@25 ~@7, ~ g#4@25 ~@6, ~@17 e5@15", L: "~ [b4,d#5]@16 [c#5,f5]@15", M: "~ [b4,e5,g#5]@31",
  N: "[~@13 f#5@4 ~@16 b4@22 ~@2 b5@7, ~ [b4,d#5]@16 [c#5,f5]@15 ~ e5@28 ~@3, ~@29 g#5@33 ~@2]/2", // B C#
  O: "~ [f#4,d#5]@16 [g#4,e5]@15, ~ b4@31", P: "~ [f#4,d#5]@15 ~ [g#4,e5]@15, ~ b4@31",
  Q: "~ [f#4,d#5]@16 e5@15, ~ b4@31", R: "~ f#4@15 ~ g#4@15, ~ b4@31", S: "~ b4@15, ~ f#4@15 ~@16, ~@2 d#5@15 ~@15",
})).s("gm_string_ensemble_2").gain(0.18)

// chords · piano · "A.PIANO"
const piano = note(`<
  A@2 B@2 C D E F G H I J@2 K@4 L M@2 N@3 O P@4 Q R@2 L S@2 T@3 O U V W X@2 Y Z@2 AA@3 AB AC@4 W X@2 Y AD@2 AA@3 AB AE@7
  AF ~@4
>`.pickRestart({
  A: "[~@5 [a3,c#4,f#4] ~@3 [a3,c#4,f#4]@6 ~@2 [a3,c#4,f#4] ~@3 [a3,c#4,f#4]@13 ~@3 [a3,f#4] ~@3 [a3,c#4,f#4]@6 ~@2 [a3,f#4] ~@3 [a3,c#4,f#4]@11, ~ [a2,e3]@62 ~]/2", // F#m D F#m D F#m A5
  B: "[~@5 [a3,f#4] ~@3 [a3,c#4,f#4]@6 ~@2 [a3,c#4,f#4] ~@3 [a3,c#4,f#4]@13 ~@3 [a3,c#4,f#4] ~@3 [a3,c#4,f#4]@6 ~@2 [a3,f#4] ~@3 [a3,c#4,f#4]@10 ~, ~ [a2,e3]@62 ~]/2", // D F#m D F#m A5
  C: "~@7 a4@14 ~@2 [e4,a4]@4 [e4,a4]@5, ~ b3@31, ~ a4@6 ~@25, ~@3 c#4@29", // A5
  D: "~@7 a3@8 ~@8 [b4,e5]@2 ~@4 a4@3, ~ [b3,e4]@31, ~ a4@26 c#5@5, ~@3 c#4@29, ~@25 [b4,e5]@7", // E5
  E: "~ e4@6 [e4,a4]@4 [e4,a4]@4 a4@2 ~@6 a3@2 ~@2 [c#4,e4,a4]@5, ~ b3@14 ~@2 b3@15, ~@17 [e4,a4]@10 ~@5", // A5 A A5
  F: "~ a3@6 a3@2 ~@6 f#4@2 a3@6 a3@4 ~@2 a3@3, ~ d4@16 [c#4,e4,a4]@10 [c#4,e4,a4]@5, ~ [f#4,a4]@8 [a3,e4,a4]@4 [a3,e4,a4]@4 ~@15, ~@11 f#4@4 ~@17", // A F#m A5
  G: "~ b3@4 ~@4 [d4,f#4,b4]@7 ~ b3@4 ~@8 [g#4,b4]@3, ~ [d4,f#4]@8 ~@8 [e4,g#4]@8 e4@7, ~@5 b3@8 ~@8 b3@11, ~@25 g#4@4 ~@3, ~@27 [f#4,a4]@5", // Bm G#m D E F#m
  H: "~ [c#4,e4,g#4]@16 ~@6 [b4,e5]@2 ~@4 a4@3, ~@17 f#4@15, ~@17 a4@10 c#5@5, ~@25 [b4,e5]@7", // C#m E5
  I: "~ [c#4,e4]@8 ~@4 a3@4 a4@6 a4@4 ~@2 d4@3, ~ a3@4 ~@4 [c#4,e4,a4]@8 [d4,f#4]@10 [a3,f#4,a4]@5, ~@23 e4@9", // C#m A D
  J: "[~@9 a5@2 ~@4 a4@4 [e4,a4]@2 ~@2 f#4@2 ~@6 d4@2 c#4@6 ~@6 a3@4 e4@8 [b3,e4]@7, ~ d4@20 [e4,a4]@4 [e4,f#4,a4]@2 d4@2 [e4,a4]@4 b3@2 ~@4 a3@6 ~@4 g#3@4 ~@4 g#3@4 ~@3, ~ f#4@12 d5@20 ~@8 [c#4,e4,a4]@8 c#4@15, ~ a4@10 e5@22 ~@31, ~@9 f#5@24 ~@31]/2", // A5 E5 A5 F#m7 A5 A
  K: "[~@9 [e5,a5]@4 e5@4 e5@4 e5@4 ~@12 e4@2 a4@4 b3@2 ~@2 [b3,a4]@2 ~@2 c#4@4 a3@4 [e4,a4]@4 a3@2 ~@2 c#4@6 a4@2 [c#4,e4,a4]@4 [e4,a4]@6 ~@2 [b3,e4,a4]@2 ~@20 e4@2 b3@2 ~@12 a3@2 ~, ~ [d4,f#4]@48 a4@10 ~@6 a4@6 ~@18 [e4,a4]@8 [e4,a4]@6 b4@10 e4@2 c#4@8 [e4,a4]@5, ~ a3@32 [b3,a4]@2 c#4@4 e4@10 b3@16 b3@18 ~@6 b3@14 e5@2 c#5@23, ~@25 [e5,a5]@40 ~@28 a3@8 a3@6 a4@6 b3@15, ~@27 d5@38 ~@26 c#4@6 c#4@10 e5@21]/4", // A5 B7 A5 A A5 Esus4 D A5 …
  L: "~@13 d4@2 a3 ~@5 a#3@2 a#3@4 ~@2 a#3@3, ~ [d4,f#4]@10 f#4@5 ~@16, ~ a4@8 [e4,a4]@7 ~ [c#4,f#4,a#4]@10 [c#4,f#4,a#4]@5, ~@5 a3@10 ~@17", // D A5 F#
  M: "[~ b3@4 ~@8 b3@3 ~ [b3,e4,g#4]@4 ~@4 b3@4 ~@10 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [e4,c#5]@2 [c#4,d#4,e4,g#4,c#5]@4 [c#4,f#4]@6 ~@4 [c#4,f#4,a4]@5, ~ [d4,f#4]@8 [d4,f#4,b4]@7 ~ f#4 ~@5 [e4,g#4]@6 [e4,g#4]@10 ~@10 a4@10 ~@5, ~@5 b3@8 ~@8 b3@4 ~@6 b3@18 ~@15]/2", // E C#m F#5 F#m D Bm E
  N: "[~ [c#4,e4]@8 ~@4 a3@4 a4@8 [a3,a4]@2 a4@2 [d4,a4]@4 ~@6 f#5@2 ~@2 a4@2 [e4,a4]@2 [e4,a4]@2 ~@6 a3@2 ~@6 a3@2 a3@4 ~@8 a3@4 b3@4 b3@2 b3@2 ~@4 e4@3, ~ a3@4 ~@4 [c#4,e4,a4]@8 [d4,f#4]@10 [a3,f#4]@6 [a3,d4]@18 f#4@6 [a3,e4,a4]@4 d4@4 [c#4,e4,a4]@8 [c#4,e4,a4]@8 e4@12 ~@3, ~@17 a3@4 ~@4 e4@12 a5@4 [d5,f#5,a5]@24 ~@16 g#4@15, ~@33 f#4@16 [e4,a4]@4 d4@6 f#4@6 ~@4 a3@8 ~@10 f#4@4 f#4@5, ~@33 a4@4 e5@28 ~@24 b3@7]/3", // C#m A D5 A5 A D D5 A5 …
  O: "~@15 a4@2 ~@6 [e4,a4]@2 ~@4 d4@3, ~ e4@8 e4@8 [e4,a4]@6 ~@2 [e4,a4]@7, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@8 f#4@5, ~@5 d4@8 d4@8 d4@8 ~@3, ~@9 a4@4 ~@19", // A5
  P: "[~ e3@2 e3@4 e3@2 c#4@2 ~@4 a2@2 ~@14 a3@2 ~@8 f#5@2 ~@2 a4@2 [a3,e4,a4]@2 ~@14 d4@2 a3 ~ a3@4 ~@4 a3@2 ~@4 b3@2 b3@2 [b3,d#4,f#4]@2 ~@6 a3@2 e3@2 [a3,d4,f#4]@4 a3@2 a3@4 ~@2 a3@2 ~@12 d4@5, ~ a2@14 ~@4 a2@8 a2@6 [d3,f#4]@18 f#4@4 [d3,a3,e4,a4]@2 f#4@2 [d3,a3,e4,a4]@6 a2@14 a2@17 ~ a2@10 a2@14 f#4@7, ~ [a3,c#4]@8 e3@4 e3@4 ~@6 [b3,d#4,f#4]@6 [b3,d#4,f#4]@4 ~@6 a5@4 [d5,f#5,a5]@22 ~@6 [a3,c#4]@6 c#4@4 a3@8 a3@4 ~@10 a4@8 a3@2 d6@15, ~ e4@6 b3@10 ~@4 a3@4 a3@6 ~@2 [a3,d4]@14 ~@2 [d3,a3,e4,a4]@4 d4@8 f#4@4 [c#4,e4]@6 [e4,a4]@10 [d#4,f#4]@4 ~@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4,b4]@5 ~@7 [d4,f#4]@14 a3@2 [e4,a4]@9, ~@7 e4@4 [a3,c#4,e4]@6 [a3,b3,d#4,f#4]@6 b4@10 ~@6 e5@26 ~@8 e3@8 e3@14 ~@16 [e3,d5,f#5,a5]@17]/4", // A5 B D Dsus2 A B D A …
  Q: "~ [b3,a4]@2 c#4@2 e4 ~ [e4,a4]@3 ~ b3 ~@3 [b3,a4] ~ b3@2 c#4 ~@3 a3 ~@3 [e4,a4]@3 ~ a3, ~@17 a4@6 ~@9", // B7 A5 B7 A5
  R: "[~@3 c#4@6 a4@2 [c#4,e4,a4]@4 [e4,a4]@6 ~@2 [b3,e4,a4]@2 ~@20 e4@2 b3@2 ~@12 a3@2 ~, ~ b3@18 ~@6 b3@14 e5@2 c#5@8 e4@2 c#4@8 [e4,a4]@5, ~ a4@6 ~@18 [e4,a4]@8 [e4,a4]@6 b4@25, ~@27 c#4@6 c#4@10 e5@21, ~@29 a3@8 a3@6 a4@6 b3@15]/2", // A A5 Esus4 A5
  S: "[~ b3@4 ~@8 b3@3 ~ [b3,e4,g#4]@4 ~@4 b3@4 ~@10 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [e4,c#5]@2 [c#4,d#4,e4,g#4,c#5]@4 [c#4,f#4]@6 ~@4 [c#4,f#4,a4]@5, ~ [d4,f#4]@8 [d4,f#4,b4]@7 ~ f#4@32 a4@10 ~@5, ~@5 b3@8 ~@8 b3@4 ~@6 b3@18 ~@15, ~@23 [e4,g#4]@6 [e4,g#4]@10 ~@25]/2", // E C#m F#5 F#m D Bm E
  T: "[~ [c#4,e4]@8 ~@4 a3@4 a4@8 [a3,a4]@2 a4@2 [d4,a4]@4 ~@6 f#5@2 ~@2 a4@2 [e4,a4]@2 [e4,a4]@2 ~@6 a3@2 ~@6 a3@2 a3@4 ~@8 a3@3 ~ b3@4 b3@2 b3@2 ~@4 e4@3, ~ a3@4 ~@4 [c#4,e4,a4]@8 [d4,f#4]@10 [a3,f#4]@6 [a3,d4]@18 f#4@6 [a3,e4,a4]@4 d4@4 [c#4,e4,a4]@8 [c#4,e4,a4]@7 ~ e4@12 ~@3, ~@17 a3@4 ~@4 e4@12 a5@4 [d5,f#5,a5]@24 ~@16 g#4@15, ~@33 f#4@16 [e4,a4]@4 d4@6 f#4@6 ~@4 a3@8 ~@10 f#4@4 f#4@5, ~@33 a4@4 e5@28 ~@24 b3@7]/3", // C#m A D5 A5 A D D5 A5 …
  U: "~@3 e3@4 ~@6 e3@2 ~@2 a3@2 ~@2 [e4,a4]@2 [e3,e4,a4]@2 ~@4 [e4,a4]@2 [e3,f#4], ~ [a2,c#4,e4]@8 e3@4 ~@2 a2@10 [a2,e4,a4]@4 ~@3, ~ a3@4 ~@2 [a3,c#4,e4]@4 [a3,c#4,e4]@5 ~ d4@15, ~@17 f#4@10 f#4@4 ~, ~@17 e3@2 a3@4 ~@2 [e3,a3]@7", // A5 Esus2 A A5 A A5
  V: "~ a3@2 ~@6 c#5@2 ~@2 e4@2 e3 ~ b3 ~@5 [c#3,g#4]@2 ~@4 g#4@2 a#4, ~ [a2,c#4]@15 ~ [c#3,e4,g#4]@6 ~@2 [f#2,c#4,f#4]@7, ~ [e4,a4]@6 e5@2 a3@7 ~@3 b3@6 ~@2 f#3@5, ~@3 a3@4 b4@10 ~@15, ~@5 e3@6 [a4,c#5,e5]@5 ~@5 e4@4 ~@7", // C#5 A C#m F#5 A5 A
  W: "~ [c#4,b4]@2 d#4@2 f#4 ~ [f#4,b4]@3 ~ c#4 ~@3 [c#4,b4] ~ c#4@2 d#4 ~@3 b3 ~@3 [f#4,b4]@3 ~ b3, ~@17 b4@6 ~@9", // C#7 B5 C#7 B5
  X: "[~@3 d#4@6 b4@2 [d#4,f#4,b4]@4 [f#4,b4]@6 ~@2 [c#4,f#4,b4]@2 ~@20 f#4@2 c#4@2 ~@12 b3@2 ~, ~ c#4@18 ~@6 c#4@14 f#5@2 d#5@8 f#4@2 d#4@8 [f#4,b4]@5, ~ b4@6 ~@18 [f#4,b4]@8 [f#4,b4]@6 c#5@25, ~@27 d#4@6 d#4@10 f#5@21, ~@29 b3@8 b3@6 b4@6 c#4@15]/2", // B B5 F#sus4 B5
  Y: "~@13 e4@2 b3 ~@5 c4@2 c4@4 ~@2 c4@3, ~ [e4,g#4]@10 g#4@5 ~@16, ~ b4@8 [f#4,b4]@7 ~ [d#4,g#4,c5]@10 [d#4,g#4,c5]@5, ~@5 b3@10 ~@17", // E B5 G#
  Z: "[~ c#4@4 ~@8 c#4@3 ~ [c#4,f#4,a#4]@4 ~@4 c#4@4 ~@10 [d#4,f#4,a#4]@2 [d#4,f#4,a#4]@2 [f#4,d#5]@2 [d#4,f4,f#4,a#4,d#5]@4 [d#4,g#4]@6 ~@4 [d#4,g#4,b4]@5, ~ [e4,g#4]@8 [e4,g#4,c#5]@7 ~ g#4@32 b4@10 ~@5, ~@5 c#4@8 ~@8 c#4@4 ~@6 c#4@18 ~@15, ~@23 [f#4,a#4]@6 [f#4,a#4]@10 ~@25]/2", // F# D#m G#5 G#m E C#m F#
  AA: "[~ [d#4,f#4]@8 ~@4 b3@4 b4@8 [b3,b4]@2 b4@2 [e4,b4]@4 ~@6 g#5@2 ~@2 b4@2 [f#4,b4]@2 [f#4,b4]@2 ~@6 b3@2 ~@6 b3@2 b3@4 ~@8 b3@3 ~ c#4@4 c#4@2 c#4@2 ~@4 f#4@3, ~ b3@4 ~@4 [d#4,f#4,b4]@8 [e4,g#4]@10 [b3,g#4]@6 [b3,e4]@18 g#4@6 [b3,f#4,b4]@4 e4@4 [d#4,f#4,b4]@8 [d#4,f#4,b4]@7 ~ f#4@12 ~@3, ~@17 b3@4 ~@4 f#4@12 b5@4 [e5,g#5,b5]@24 ~@16 a#4@15, ~@33 g#4@16 [f#4,b4]@4 e4@6 g#4@6 ~@4 b3@8 ~@10 g#4@4 g#4@5, ~@33 b4@4 f#5@28 ~@24 c#4@7]/3", // D#m B E5 B5 B E E5 B5 …
  AB: "~@15 b4@2 ~@6 [f#4,b4]@2 ~@4 e4@3, ~ f#4@8 f#4@8 [f#4,b4]@6 ~@2 [f#4,b4]@7, ~@3 g#4@4 g#4@4 g#4@4 g#4@4 g#4@8 g#4@5, ~@5 e4@8 e4@8 e4@8 ~@3, ~@9 b4@4 ~@19", // B5
  AC: "[~ f#3@2 f#3@4 f#3@2 d#4@2 ~@4 b2@2 ~@14 b3@2 ~@8 g#5@2 ~@2 b4@2 [b3,f#4,b4]@2 ~@14 e4@2 b3 ~ b3@4 ~@4 b3@2 ~@4 c#4@2 c#4@2 [c#4,f4,g#4]@2 ~@6 b3@2 f#3@2 [b3,e4,g#4]@4 b3@2 b3@4 ~@2 b3@2 ~@12 e4@5, ~ b2@14 ~@4 b2@8 b2@6 [e3,g#4]@18 g#4@4 [e3,b3,f#4,b4]@2 g#4@2 [e3,b3,f#4,b4]@6 b2@14 b2@17 ~ b2@10 b2@14 g#4@7, ~ [b3,d#4]@8 f#3@4 f#3@4 ~@6 [c#4,f4,g#4]@6 [c#4,f4,g#4]@4 ~@6 b5@4 [e5,g#5,b5]@22 ~@6 [b3,d#4]@6 d#4@4 b3@8 b3@4 ~@10 b4@8 b3@2 e6@15, ~ f#4@6 c#4@10 ~@4 b3@4 b3@6 ~@2 [b3,e4]@14 ~@2 [e3,b3,f#4,b4]@4 e4@8 g#4@4 [d#4,f#4]@6 [f#4,b4]@10 [f4,g#4]@4 ~@2 [c#4,f4,g#4,c#5]@4 [c#4,f4,g#4,c#5]@5 ~@7 [e4,g#4]@14 b3@2 [f#4,b4]@9, ~@7 f#4@4 [b3,d#4,f#4]@6 [b3,c#4,f4,g#4]@6 c#5@10 ~@6 f#5@26 ~@8 f#3@8 f#3@14 ~@16 [f#3,e5,g#5,b5]@17]/4", // B5 C# E Esus2 B C# E B …
  AD: "[~ c#4@4 ~@8 c#4@3 ~ [c#4,f#4,a#4]@4 ~@4 c#4@4 ~@10 [d#4,f#4,a#4]@2 [d#4,f#4,a#4]@2 [f#4,d#5]@2 [d#4,f4,f#4,a#4,d#5]@4 [d#4,g#4]@6 ~@4 [d#4,g#4,b4]@5, ~ [e4,g#4]@8 [e4,g#4,c#5]@7 ~ g#4 ~@5 [f#4,a#4]@6 [f#4,a#4]@10 ~@10 b4@10 ~@5, ~@5 c#4@8 ~@8 c#4@4 ~@6 c#4@18 ~@15]/2", // F# D#m G#5 G#m E C#m F#
  AE: "~@3 f#3@4 ~@6 f#3@2 ~@2 b3@2 ~@2 [f#4,b4]@2 [f#3,f#4,b4]@2 ~@4 [f#4,b4]@2 [f#3,g#4], ~ [b2,d#4,f#4]@8 f#3@4 ~@2 b2@10 [b2,f#4,b4]@4 ~@3, ~ b3@4 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@5 ~ e4@15, ~@17 g#4@10 g#4@4 ~, ~@17 f#3@2 b3@4 ~@2 [f#3,b3]@7", // B5 F#sus2 B B5 B B5
  AF: "~@3 f#3@4 ~@6 f#3@2 ~@2 b3 ~@3 [f#4,b4]@2 ~@9, ~ [b2,d#4,f#4]@8 f#3@4 ~@2 b2@10 ~@7, ~ b3@4 ~@2 [b3,d#4,f#4]@4 [b3,d#4,f#4]@5 ~ e4@15, ~@17 g#4@10 ~@5, ~@17 f#3@2 b3@4 ~@9", // B5 B
})).s("gm_piano").gain(0.45)

// chords · piano · "A.PIANO" · soft notes
const piano_soft = note(`<
  ~ A B C D@2 E@2 F G H I J K@3 L@2 ~ M N@2 ~ O ~ P@2 Q R S L@2 ~ M N@2 ~ O T ~ U V W@2 ~ X Y@2 ~ Z ~ AA@2 AB U V W@2 ~
  X Y@2 ~ Z AC@7 AD ~@4
>`.pickRestart({
  A: "~@5 c#4 ~@11 c#4 ~@14", B: "~@5 c#4 ~@26", C: "~@17 c#4 ~@14",
  D: "[~@5 e4@2 e4@10 a3@2 [a3,e4]@2 [e4,a4]@2 ~@8 [a3,a4]@2 ~@4 a3@2 ~@12 b4@2 [b4,e5]@2 ~@9, ~@21 a3@10 ~@16 a3@17]/2", // A5 A E5
  E: "[~@5 a3@4 ~@6 [b3,e4]@2 ~@2 c#4@6 a3@6 a3@2 ~@24 c#4@2 ~@5, ~@3 c#4@16 ~@45, ~@9 a3@14 ~@41]/2", // E5
  F: "~@13 b3@3 ~@16", G: "~@21 e5@2 ~@9, ~@19 c#4@13", H: "~@5 a3@8 ~@8 a3@2 a3@4 ~@5",
  I: "~@17 e4@2 ~@13, ~@11 a5@21", J: "~@3 e4@6 ~@12 g#3@4 ~@4 g#3@3",
  K: "[~@43 a4@2 [b3,a4]@2 ~@6 e4@4 ~@4 a3@2 ~@8 a4@2 [c#4,e4]@2 ~@8 [b3,a4]@2 [b3,e4,a4]@2 ~@9, ~@13 a5@4 a5@4 a5@4 ~@16 a3@14 ~@2 c#4@8 ~@4 e4@4 ~@6 c#4@12 ~@5, ~@15 f#5@4 f#5@4 f#5@42 ~@16 a3@12 ~@3]/3", // B7 C#m B7 Esus4
  L: "[~@15 e4@2 ~@8 a3@4 ~@2 a3@2 ~@24 c#4@2 ~@5, ~@21 a3@4 ~@39, ~@23 e4@4 ~@37]/2",
  M: "~@5 [c#4,g#4]@2 ~@4 [c#4,g#4]@2 ~@10 [c#4,f#4]@2 [c#4,f#4]@2 ~@5", N: "[~@5 a3@8 ~@8 a3@2 a3@2 ~@6 a3@2 ~@31]/2",
  O: "~ a4@4 a4@4 ~@4 a4@2 ~@17", P: "[~@13 d4@8 [d3,a4]@2 ~@8 e4@2 ~@4 c#4@2 ~@6 a3@4 ~@4 b4@2 ~@9]/2", Q: "~@29 a3@3",
  R: "~@9 a3 ~ a4 ~ [b3,a4] ~@7 e4 ~@3 c#4 ~@3 a3 ~@2", // B7
  S: "~@7 a4@2 [c#4,e4]@2 ~@8 [b3,a4]@2 [b3,e4,a4]@2 ~@9, ~@5 e4@4 ~@6 c#4@12 ~@5, ~@17 a3@12 ~@3", // C#m B7 Esus4
  T: "~@5 a3@2 ~@2 a2@6 ~@8 a3@2 ~@4 a2@3", U: "~@9 b3 ~ b4 ~ [c#4,b4] ~@7 f#4 ~@3 d#4 ~@3 b3 ~@2",
  V: "~@7 b4@2 [d#4,f#4]@2 ~@8 [c#4,b4]@2 [c#4,f#4,b4]@2 ~@9, ~@5 f#4@4 ~@6 d#4@12 ~@5, ~@17 b3@12 ~@3", // D#m C#7 F#sus4
  W: "[~@15 f#4@2 ~@8 b3@4 ~@2 b3@2 ~@24 d#4@2 ~@5, ~@21 b3@4 ~@39, ~@23 f#4@4 ~@37]/2",
  X: "~@5 [d#4,a#4]@2 ~@4 [d#4,a#4]@2 ~@10 [d#4,g#4]@2 [d#4,g#4]@2 ~@5", Y: "[~@5 b3@8 ~@8 b3@2 b3@2 ~@6 b3@2 ~@31]/2",
  Z: "~ b4@4 b4@4 ~@4 b4@2 ~@17", AA: "[~@13 e4@8 [e3,b4]@2 ~@8 f#4@2 ~@4 d#4@2 ~@6 b3@4 ~@4 c#5@2 ~@9]/2",
  AB: "~@29 b3@3", AC: "~@5 b3@2 ~@2 b2@6 ~@8 b3@2 ~@4 b2@3", AD: "~@5 b3@2 ~@2 b2@6 ~@17",
})).s("gm_piano").gain(0.22)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K@2 L M@2 F G H I J N@3 O@2 P@2 Q E F G H R J K@2 L S@2 T@2 U V W X Y Z AA AB AC@2 AD@2 AE AF U V
  W X Y AG@2 AB AH@2 AI AJ AI@3 AK AL AM ~@3
>`.pickRestart({
  A: "~ a3@28 e3@3", B: "~ a2@23 ~ a2@2 c#3@2 e3@3", C: "~ a3@26 e3@5", D: "~ a2@21 ~ a2@2 a2@2 c#3@2 e3 ~@2",
  E: "~ a3@13 ~ a3 ~ g#3@13 ~ g#3", F: "~ f#3@13 ~ f#3@2 e3@6 e2@4 e3@3 ~ e3, ~@27 d3 ~@4",
  G: "~ a3@13 ~ a3 ~ g#3@6 f#3@6 e3@3", H: "~ d3@8 d4@2 a3@2 d3@4 c#3@12 ~@2 c#3", I: "~ b2@13 ~ b2 ~ e3@8 e3@4 d3@3",
  J: "~ c#3@8 c#4@2 g#3@2 c#3@4 f#3@9 ~ f#3@3 ~ f#3",
  K: "[~ e3@12 ~@2 e3@3 ~ e2 ~ e2@4 e3@6 e2@2 a2@14 a3@7 ~ a3 ~ a3@2 e3@2 a2@3, ~@47 g#3 ~@16]/2",
  L: "~ a3@12 ~@2 a3 ~ g#3@6 f#3@6 e3@3",
  M: "[~ d3@13 ~@3 f#4@2 e4@2 ~@2 a3@2 f#3@2 e3@2 d3@2 b2@2 a3@13 ~ a3 ~ g#3@13 ~ g#3, ~@15 d3@6 d4@4 ~@39]/2",
  N: "[~ e3@12 ~@2 e3@3 ~ e2 ~ e2@4 e3@6 e2@2 a2@14 a3@7 ~ a3 ~ a3@2 e3@2 a2@4 a3@12 ~@2 a3 ~ g#3@6 f#3@6 e3@3, ~@47 g#3 ~@48]/3",
  O: "[~ d3@13 ~@3 f#4@2 e4@2 ~@2 a3@2 f#3@2 e3@2 d3@2 b2@2 a2 ~ a2@3 ~ a2 ~ a2@5 ~ a2 ~ a2 ~ a2@3 ~ a2 ~ a2@4 ~@2 a2, ~@15 d3@6 d4@4 ~@39]/2",
  P: "[~ a2@5 ~ a2 ~ a2@4 ~@2 a2 ~ a2@2 a3@4 a2@2 c#3@2 d3@2 d#3@2 e3@2 a2 ~ a2@3 ~ a2 ~ a2@5 ~ a2 ~ a2@5 ~ a2 ~ a2@5 ~ a2]/2",
  Q: "~ a2@5 ~ a2 ~ a2@5 ~ a2 ~ a2@2 a3@2 a2 ~ a2@2 c#3@2 d3@2 d#3@2 e3", R: "~ b2@13 ~ b2 ~ e3@7 ~ e3@4 d3@3",
  S: "[~ d3@13 ~@3 f#4@2 e4@2 ~@2 a3@2 f#3@2 e3@2 d3@2 b2@2 a2 ~ a2@3 ~ a2 ~ a2@4 ~@2 a2 ~ a2 ~ a2@3 ~ a2 ~ a2@4 ~@2 a2, ~@15 d3@6 d4@4 ~@39]/2",
  T: "[~ a2@5 ~ a2 ~ a2@4 ~@2 a2 ~ c#3@2 g#3@4 ~@2 f#2@2 c#3@2 f#3@2 c#4@2 b3@13 ~ b3 ~ a#3@13 ~ a#3, ~@23 c#3@4 ~@37]/2",
  U: "~ g#3@13 ~ g#3@2 f#3@6 f#2@4 f#3@3 ~ f#3, ~@27 e3 ~@4", V: "~ b3@13 ~ b3 ~ a#3@6 g#3@6 f#3@3",
  W: "~ e3@8 e4@2 b3@2 e3@4 d#3@12 ~@2 d#3", X: "~ c#3@13 ~ c#3 ~ f#3@8 f#3@4 e3@3",
  Y: "~ d#3@8 d#4@2 a#3@2 d#3@4 g#3@9 ~ g#3@3 ~ g#3", Z: "~ f#3@12 ~@2 f#3@3 ~ f#2 ~ f#2@4 f#3@6 f#2",
  AA: "~ b2@14 b3@7 ~ b3 ~ b3@2 f#3@2 b2@3, ~@15 a#3 ~@16", AB: "~ b3@12 ~@2 b3 ~ a#3@6 g#3@6 f#3@3",
  AC: "[~ e3@13 ~@3 g#4@2 f#4@2 ~@2 b3 ~ g#3@2 f#3@2 e3@2 c#3@2 b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2 ~ b2@3 ~ b2 ~ b2@4 ~@2 b2, ~@15 e3@6 e4@4 ~@39]/2",
  AD: "[~ b2@5 ~ b2 ~ b2@4 ~@2 b2 ~ b2@2 b3@4 b2@2 d#3@2 e3 ~ f3@2 f#3@2 b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2@5 ~ b2 ~ b2@5 ~ b2]/2",
  AE: "~ b2@5 ~ b2 ~ b2@5 ~ b2 ~ b2@2 b3@2 b2 ~ b2@2 d#3@2 e3@2 f3@2 f#3", AF: "~ b3@13 ~ b3 ~ a#3@13 ~ a#3",
  AG: "[~ f#3@12 ~@2 f#3@3 ~ f#2 ~ f#2@4 f#3@6 f#2@2 b2@14 b3@7 ~ b3 ~ b3@2 f#3@2 b2@3, ~@47 a#3 ~@16]/2",
  AH: "[~ e3@13 ~@3 g#4@2 f#4@2 ~@2 b3@2 g#3@2 f#3@2 e3@2 c#3@2 b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2 ~ b2@3 ~ b2 ~ b2@4 ~@2 b2, ~@15 e3@6 e4@4 ~@39]/2",
  AI: "~ b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2 ~ b2@3 ~ b2 ~ b2@4 ~@2 b2",
  AJ: "~ b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2",
  AK: "~ b2 ~ b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2 ~ b2@3 ~ b2 ~@7 b2",
  AL: "~ b2@2 b2@3 ~ b2 ~ b2@5 ~ b2 ~ b2 ~ b2@3 ~ b2 ~ b2@4 ~@2 b2", AM: "~ b2@2 b2@3 ~ b2 ~ b2@5 ~@18",
})).s("gm_acoustic_bass").gain(0.27)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B C D E F E G H@2 A B C D I F E G H@2 A B C D A B C D E F E G H@2 A B A B C D E F E G H@2 J B C D A B C D E F E
  G H@2 A@5 J A@2 K ~@3
>`.pickRestart({
  A: "~ x ~@13 x ~ x ~@14", B: "~ x ~@13 x ~@5 x ~@9 x", C: "~ x ~@15 x ~@13 x", D: "~ x ~@13 x ~ x ~@5 x ~@3 x ~@4",
  E: "~ x ~@13 x ~ x ~@13 x", F: "~ x ~@13 x ~ x ~@5 x ~@3 x ~@3 x", G: "~ x ~@13 x ~@5 x ~@5 x ~@3 x",
  H: "~ x ~@13 x ~@5 x ~ x ~@3 x ~@3 x", I: "~@2 x ~@12 x ~ x ~@13 x", J: "~@2 x ~@12 x ~ x ~@14", K: "~ x ~@30",
})).gain(0.2)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@5 A B C B ~ B A@3 ~ A B C B ~ B A@3 ~ A B C ~ A B C B ~ B A@3 ~ A ~ A B C B ~ B A@3 ~ A B C ~ A B C B ~ B A@3 ~@12
>`.pickRestart({
  A: "~@19 x ~@12", B: "~@27 x ~@4", C: "~@31 x",
})).gain(0.1)

// drums · rim
const rim = s("rim").struct("<~@4 [~@9 x ~@15 x ~@6]!10 ~@62>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@14 [~@9 x ~@15 x ~@6]!58 ~@4>").gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@23 A ~@3 B ~@9 A ~@11 A ~@3 B ~@9 A ~@3 B ~@8>".pickRestart({
  A: "~@29 x ~@2", B: "~@29 x ~ x",
})).gain(0.5)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@23 A ~@3 A ~@9 A ~@11 A ~@3 A ~@9 A ~@3 A ~@8>".pickRestart({
  A: "~@27 x ~@4",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~ B ~ A ~@9 A ~ B ~@9 A ~ B ~ A ~@9 A ~ B ~ A ~@8>".pickRestart({
  A: "~@23 x ~ x ~@6", B: "~@23 x ~@3 x ~ x ~@2",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@23 A ~ B ~ A ~@9 A ~ B ~@9 A ~ B ~ A ~@9 A ~ B ~ A ~@8>".pickRestart({
  A: "~@19 x ~@12", B: "~@19 x ~@9 x ~@2",
})).gain(0.25)

// drums · crash
const crash = s("cr").struct("<~@24 A ~ A ~@11 A ~@13 A ~@13 A ~@9>".pickRestart({
  A: "~ x ~@30",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct(`<
  A@4 B C@2 D E F G H C I B C@2 D J F G H C I B C@2 D K C@2 D E F G H C I B C B C@2 D E F G H C I K C@2 D B C@2 D E F G
  H C I B@5 K B@2 C ~@3
>`.pickRestart({
  A: "~@9 x ~@15 x ~@6", B: "~ x ~@29 x", C: "~ x ~@30", D: "~ x ~@17 x ~@5 x ~@5 x", E: "~ x ~@25 x ~@3 x",
  F: "~ x ~@17 x ~@12", G: "~ x ~@7 x ~@17 x ~@4", H: "~ x ~@7 x ~@11 x ~@10", I: "~@9 x ~@5 x ~@3 x ~ x ~@3 x ~@5 x",
  J: "~@2 x ~@24 x ~@3 x", K: "~@2 x ~@28 x",
})).gain(0.15)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@4 A B ~ C ~ D E F ~ G A B ~ C ~ D E F ~ G A B ~ C A B ~ C ~ D E F ~ G A B A B ~ C ~ D E F ~ G A B ~ C A B ~ C ~ D E
  F ~ G A@8 ~@4
>`.pickRestart({
  A: "~@23 x ~@8", B: "~@31 x", C: "~@23 x ~@5 x ~@2", D: "~@27 x ~@3 x", E: "~@19 x ~@11 x", F: "~@15 x ~@11 x ~@3 x",
  G: "~@29 x ~@2",
})).gain(0.05)

// drums · shaker
const shaker = s("sh").struct("<A@18 B A@31 B A@18 B A@2 C ~@3>".pickRestart({
  A: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", B: "~@2 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  C: "~ x ~@3 x ~@26",
})).gain(0.3)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<[~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x]!72 [~@3 x ~@28] ~@3>").gain(0.1)
// … 5 more lines

More by Antonello Venditti