Strudelify

Amico (feat. Michele Zarrillo)

Michele Zarrillo

KeyC majorTempo70 bpm
0:00/0:00
// Amico (feat. Michele Zarrillo) — Michele Zarrillo
// 70 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 71 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 · piano · "Cinque giorni"
const piano = note(`<
  ~ A@2 B C D E F G H I J K L M N O P Q N R@2 S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AP AT AU AV AW AX AY AZ BA BB BC BD BE BF BG AN BH AP BI BJ BK@2
>`.pickRestart({
  A: "[f3@4 f3@3 ~@5 f2@3 ~ g3@4 ~@8 g2@4 [c4,e4]@4 g3@4 e4@4 ~@2 e4@2 ~@4 g3@3 ~ [a3,c4]@8, f2@10 ~@6 g2@11 ~@5 c3@15 ~ a2@16, [a3,c4]@7 ~ [f3,a3,c4]@7 ~ [b3,d4]@7 ~ [b3,d4]@8 ~@14 c4 ~ [b3,d4]@8 ~@8, ~@20 g3@7 ~ g3@7 ~@9 g3@5 ~@15]/2", // C Am F Bm
  B: "f3@2 ~@2 f3@3 ~@5 f2@4 [g3,d4]@8 [g3,b3,d4]@8, f2@5 ~@3 g2@8, [a3,c4]@7 ~ [f3,a3,c4]@8 b3@5 ~@11", // G5 G Am F
  C: "~@8 d4@7 ~ c4@10 ~@6, e4@25 ~@7, c3@11 ~@5, ~@2 g3@11 ~@3",
  D: "[g3,a#3,f4]@6 ~@10 [g3,a#3,d#4]@7 ~@5 d#3@3 ~, d#3@11 ~ d#3@15 ~@5, ~@8 [g3,a#3,f4]@7 ~@9 [g3,a#3,d#4]@7 ~", // Gm7 D# Gm7 D#
  E: "[f3,g#3,d#4]@7 ~@9 [f3,g#3,d4]@7 ~@5 a#2@3 ~, a#2@8 [f3,g#3,d#4]@7 ~@9 [f3,g#3,d4]@7 ~, ~@12 a#2@15 ~@5", // Fm7 Ddim Fm7 Ddim
  F: "[f3,a#3,d4]@7 ~ [f3,a#3,d4]@6 ~@2 [f3,a#3,d4]@7 ~@5 g2@4, g2@24 [f3,a#3,d4]@7 ~", // A#
  G: "[g3,c4,d#4]@7 ~@5 c3@3 ~ [a#3,d4,f4]@7 ~ [c4,d#4,g4]@6 ~@2, c3@11 ~@5 c3@15 ~, ~@8 [g3,c4,d#4]@7 ~@17", // Cm A# Cm
  H: "[a#2,g3,a#3,f4]@6 ~@10 [g3,a#3,d#4]@7 ~@5 d#3@3 ~, d#3@8 [g3,a#3,f4]@7 ~@9 [g3,a#3,d#4]@7 ~, ~@6 d#3@7 ~@3", // Gm7 D# Gm7 D#
  I: "[f3,g#3,d#4]@7 ~@9 [f3,g#3,d4]@7 ~@5 a#2@3 ~, a#2@8 [f3,g#3,d#4]@7 ~@9 [f3,g#3,d4]@7 ~, ~@6 a#2@7 ~@3", // Fm7 Ddim Fm7 Ddim
  J: "[f3,a#3,d4]@6 ~@2 [f3,a#3,d4]@7 ~ [f3,a#3,d4]@7 ~ [f3,a#3,d4]@5 ~@3, g2", // A#
  K: "[g3,c4,d#4]@7 ~ [g3,c4]@4 c3@3 ~ [a#3,d4,f4]@6 ~@6 c3@4, c3@8 d#4@7 ~ c3@8 [c4,d#4,g4]@7 ~", // Cm C5 A# Cm
  L: "[g#3,c4,g4]@6 ~@2 [g#3,c4,g4]@7 ~ [g#3,c4,f4]@6 ~@2 [g#3,c4,f4]@4 g#2@4, g#2@25 ~@7", // G#maj7 Fm
  M: "[g3,a#3,f4]@6 ~@2 [g3,a#3,f4]@7 ~ [g3,a#3]@7 ~@5 g2@4, g2@27 ~@5, ~@16 d#4@4 ~@4 [g3,a#3,d#4]@7 ~", // Gm7 Gm D#
  N: "[f#3,a3,d#4]@6 ~@2 [f#3,a3,d#4]@7 ~ [f#3,a3,d4]@7 ~ [f#3,a3,d4]@4 f#2@3 ~, f#2@13 ~@3", // D#dim D
  O: "[e3,g3,d4]@7 ~ [e3,g3,d4]@7 ~ e3@2 ~@6 g3@4 c4@2 ~@2, e2, ~@16 [g3,c4]@7 ~@9, ~@10 e3@5 ~", // Em7 C5
  P: "[g#3,c4,g4]@6 ~@10 [g#3,c4,f4]@7 ~ [g#3,c4,f4]@4 g#2@3 ~, g#2@11 ~ g#2@14 ~@6, ~@8 [g#3,c4,g4]@7 ~@17", // G#maj7 Fm G#maj7
  Q: "[g3,a#3,f4]@6 ~@2 [g3,a#3,f4]@7 ~ [g3,a#3,d#4]@6 ~@6 g2@4, g2@24 [g3,a#3,d#4]@7 ~", // Gm7 D#
  R: "[[e3,g3,d4]@7 ~ [e3,g3,d4]@7 ~ [e3,g3,c4]@7 ~ [e3,c4]@7 ~ d4@15 ~ c4@14 ~@2, e2@32 [c2,e3]@31 ~, ~@24 g3@37 ~@3]/2", // Em7 C
  S: "[a3,c4]@6 ~@6 f2@3 ~ [b3,d4]@7 ~ [b3,d4]@7 ~, f2@3 ~ g2@4, ~ [a3,c4] ~@2", // Am Bm Am
  T: "[c4,e4]@4 g3@4 ~@4 e4@3 ~ [b3,d4]@7 ~@5 a2@3 ~, c2@14 ~@2 a2@11 ~@5, ~@8 c4@7 ~@9 [c4,e4]@7 ~", // C Bm C
  U: "[a3,c4]@7 ~ [a3,c4]@6 f2@2 [b3,d4]@7 ~@5 g2@3 ~, f2@12 ~@4 g2@11 ~@5, ~@24 [b3,d4]@7 ~", // Am Bm
  V: "[c4,e4]@7 ~@5 c3@12 [c4,e4]@7 ~, c2@8 [c4,e4]@15 ~@9, ~@3 c2@4 ~", // C
  W: "[a3,c4]@6 ~@6 f2@2 ~@2 [b3,d4]@7 ~@5 g2@2 ~@2, f2@8 [a3,c4]@7 ~ g2@8 [b3,d4]@7 ~", // Am Bm Am Bm
  X: "[c3,c4,e4]@7 ~ [b2,b3,d4]@7 ~ [a2,a3,c4]@8 [g2,g3,b3]@7 ~", Y: "[f2,f3,a3]@15 ~ [g2,g3,b3]@16",
  Z: "[c2,g3,c4]@9 ~@7", // C5
  AA: "[g3,a#3,f4]@7 ~ [g3,a#3,f4]@7 ~ [g3,a#3,d#4]@7 ~@5 d#3@3 ~, d#3@27 ~@5, ~@24 [g3,a#3,d#4]@7 ~", // Gm7 D#
  AB: "[f3,g#3,d#4]@6 ~@2 [f3,g#3,d#4]@4 ~@4 [f3,g#3,d4]@7 ~ g#3@4 a#2@3 ~, a#2@8 ~@4 a#2@12 [f3,d4]@7 ~", // Fm7 Ddim Dm
  AC: "[f3,a#3,d4]@6 ~@2 [f3,a#3,d4]@7 ~ [f3,a#3,d4]@7 ~ [f3,a#3,d4]@4 g2@4, g2@27 ~@5", // A#
  AD: "[c4,d#4]@7 ~ [g3,c4]@4 c3@2 d4@2 c3@3 ~ c3@4 ~@4 c3@3 ~, c3 ~@3, g3@4 ~@4 d#4@7 ~ [a#3,d4,f4]@7 ~ [c4,d#4,g4]@7 ~", // Cm C5 A# Cm
  AE: "[g#3,c4,g4]@3 ~@5 [g#3,c4,f4]@3 ~@3 g#2@2, g#2@8 [g#3,c4,g4]@7 ~@9 [g#3,c4,f4]@7 ~, ~@6 g#2@7 ~@3", // G#maj7 Fm G#maj7 Fm
  AF: "[g3,a#3,f4]@6 ~@18 [g3,a#3,d#4]@7 ~, g2@11 ~ g2@7 ~ g2@11 ~, ~@8 [g3,a#3,f4]@7 ~ [g3,a#3,d#4]@7 ~@9", // Gm7 D# Gm7 D#
  AG: "[f#3,a3,d#4]@6 ~@2 [f#3,a3,d#4]@7 ~ [f#3,a3,d4]@7 ~ [f#3,a3,d4]@4 f#2@4, f#2@13 ~@3", // D#dim D
  AH: "[e3,g3,d4]@6 ~@2 [e3,g3,d4]@7 ~ [e3,g3,c4]@7 ~ [e3,g3,c4]@4 e2@4, e2@13 ~@3", // Em7 C
  AI: "[c4,g4]@6 ~@10 [c4,f4]@7 ~ [c4,f4]@6 ~@2, f2@8 [c4,g4]@7 ~@17, ~@3 f2@4 ~", // C5 F5 C5
  AJ: "[a#3,f4]@6 ~@2 [a#3,f4]@6 ~@2 [a#3,d#4]@7 ~ [a#3,d#4]@7 ~, g2@13 ~@3", // A#5 D#5
  AK: "[a3,d#4]@6 ~@2 [a3,d#4]@7 ~ [a3,d4]@6 ~@2 [a3,d4]@6 ~@2, f#3@13 ~@3", // Adim D5
  AL: "[g3,d4]@6 ~@2 [g3,d4]@6 ~@2 [g3,c4]@7 ~ [g3,c4]@7 ~, e3@7 ~", // G5 C5
  AM: "[g3,d4]@6 ~@2 [g3,d4]@6 ~@2 [g3,c4]@4 g3@4 c4@4 g4@3 ~", AN: "[a3,c4]@7 ~ [a3,c4]@7 ~ [b3,d4]@6 ~@2 [b3,d4]@7 ~",
  AO: "[c4,e4]@7 ~@5 [c4,e4]@3 ~ [b3,d4]@7 ~ [a3,c4]@7 ~", AP: "[a3,c4]@7 ~ [a3,c4]@7 ~ [b3,d4]@7 ~ [b3,d4]@7 ~",
  AQ: "[c4,e4]@7 ~ [c4,e4]@7 ~ [c4,e4]@7 ~ [c4,e4]@6 ~@2", AR: "[f3,a3]@7 ~ [f3,a3]@7 ~ [g3,b3]@7 ~ [g3,b3]@6 ~@2",
  AS: "[c4,e4]@7 ~ [b3,d4]@7 ~ [c4,e4]@7 ~ [e4,g4]@7 ~", AT: "[g3,c4] ~",
  AU: "[f3,a#3,d4]@7 ~ f3@4 ~@4 [g3,c4,e4]@7 ~ [g3,c4,e4]@7 ~, c3@11 ~ c3@12 ~@8, ~ [a#3,d4] ~@2", // A# C A#
  AV: "a3@7 ~@9 [a3,c4,f4]@7 ~ c4@4 f2@3 ~, f2@11 ~ f2@14 ~@6, f3@3 ~@5 [a3,c4,g4]@7 ~@9 [a3,f4]@7 ~", // F Am7 Dm
  AW: "[g#3,b3,d4,f4]@6 ~@2 [g#3,b3,d4,f4]@7 ~ [g#3,b3,d4,f4]@6 ~@2 [g#3,b3,d4,f4]@4 g#2@3 ~, g#2@27 ~@5", // G#dim
  AX: "[g3,b3,d4]@7 ~@5 a2@3 ~ a2@3 ~ a2@4 ~@4 a2@3 ~, a2@11 ~@21, ~@8 [a3,c4,e4]@8 [g3,b3,d4]@7 ~ [a3,c4,e4]@7 ~", // G Am G Am
  AY: "[f3,a#3,d4]@7 ~ [a#3,d4]@7 ~ [g3,c4,e4]@7 ~ [e2,g3,c4,e4]@8, c3@3 ~, ~@2 f3 ~@5", // A# C
  AZ: "[a3,c4,g4]@6 ~@2 [a3,c4,g4]@7 ~ [a3,c4,f4]@7 ~ c4@4 f2@3 ~, f2@27 ~@5, ~@24 [a3,f4]@7 ~", // Am7 F Dm
  BA: "[g#3,b3,d4]@3 ~ [g#3,b3,d4]@3 ~ [g#3,b3,d4,f4]@3 ~ [g#3,b3,d4,f4]@3 ~, g#2@31 ~", // G#dim
  BB: "[a3,c4,g4]@6 ~@2 [a3,c4,g4]@7 ~ [a3,c4,f4]@7 ~ [a3,c4,f4]@5 ~@3, f2@31 ~", // Am7 F
  BC: "[e3,g3,d4]@7 ~ [e3,g3,d4]@7 ~ [e3,g3,c4]@7 ~ [e3,g3,c4]@6 ~@2, e2", // Em7 C
  BD: "[g3,a#3,f4]@7 ~ [g3,a#3,f4]@7 ~ [g3,a#3,d#4]@7 ~ [g3,a#3,d#4]@7 ~, d#3@15 ~", BE: "[g2,d4]@23 ~ g2@6 ~@2, b3",
  BF: "c4@4 [b3,d4]@3 ~", BG: "[c4,e4]@7 ~ c4@3 ~ [c4,e4]@3 ~ [b3,d4]@7 ~ [a3,c4]@7 ~",
  BH: "[c4,e4]@8 [c4,e4]@2 ~@2 [c4,e4]@3 ~ [c4,e4]@4 [c4,e4]@4 [c4,e4]@6 ~@2", // C
  BI: "[c4,e4]@7 ~ [b3,d4]@7 ~ [c4,e4]@7 ~ [e4,g4]@6 ~@2", BJ: "[f2,a3,c4]@15 ~ [g2,b3,d4]@15 ~",
  BK: "[[a3,c4]@22 ~@11 [c1,c3]@31, f1@29 ~@2 [e3,g3]@33, ~ c2]/2", // Am C Em
})).s("gm_piano").gain(0.55).pan(0.3)

// bass · fretless bass · "Cinque giorni"
const bass = note(`<
  ~@30 A B C D E F G H I J K L D M N O P Q R S T U V W X U Y W Z AA AB AC M AD AE P AF AG AH AI@2
>`.pickRestart({
  A: "d#2@10 ~@2 d#2@3 ~ d#2@12 d#1@4", B: "a#1@11 ~ a#1@2 ~@2 a#1@11 ~ f1@3 ~", C: "g1@11 ~ g1@2 ~@2 g1@16",
  D: "c2@11 ~ c2@3 ~ c2@15 ~", E: "g#1@11 ~ g#1@3 ~ g#1@15 ~", F: "g1@11 ~ g1@3 ~ g1@7 ~ g2@7 ~",
  G: "f#1@11 ~ f#1@2 ~@2 f#1@15 ~", H: "e1@10 ~@2 e1@3 ~ e1@8 e2@4 e1@4", I: "g#1@10 ~@2 g#1@3 ~ g#1@15 ~",
  J: "g1@11 ~ g1@3 ~ g1@16", K: "f#1@10 ~@2 f#1@3 ~ f#1@14 ~@2", L: "e1@11 ~ e1@2 ~@2 e1@15 ~",
  M: "f1@11 ~ f1@3 ~ g1@15 ~", N: "c2@11 ~ c2@4 a1@11 ~ a1@3 ~", O: "f1@11 ~ f1@3 ~ g1@11 ~ g1@4",
  P: "c2@11 ~ c2@3 ~ c2@8 g2@8", Q: "f1@10 ~@2 f1@3 ~ g1@8 g2@4 g1@4", R: "c2@8 b1@7 ~ a1@8 g1@8",
  S: "f1@10 ~@2 f1@3 ~ g1@16", T: "c2@31 ~", U: "c2@3 e1", V: "f1", W: "g#1@15 ~ b1@8 d2@8",
  X: "a1@11 ~ a1@3 ~ a1@7 ~ a1@7 ~", Y: "f1@15 ~", Z: "f2@5 c3 f3@2", AA: "e3@11 ~ c3@4 c2@15 ~", AB: "d#2@3 d#1",
  AC: "g1@15 ~", AD: "c2@10 ~@2 c2@3 ~ a1@16", AE: "f1@10 ~@2 f1@4 g1@15 ~",
  AF: "f1@10 ~@2 f1@3 ~ g1@10 g2@2 c2@2 g1@2", AG: "c2@7 ~ b1@8 a1@8 g1@8", AH: "f1@16 g1@15 ~",
  AI: "[f1@27 ~ c2@36]/2",
})).s("gm_fretless_bass").gain(0.66)

// chords · string ensemble 2 · "Cinque giorni"
const string_ensemble_2 = note(`<
  ~ A@3 B C@3 D E@8 F G H I@3 J@2 K@2 L@3 M@8 N@2 H O P Q R Q S Q T@2 U V@4 W X F X Y Z G AA AB@3 Q AC AD AE@2
>`.pickRestart({
  A: "[[f3,a3,c4]@16 [b3,d4]@16 [c4,e4]@15 ~ b3@7 e4@7 ~ a3@16 ~ [g3,b3]@16, ~@16 g3@19 ~@12 d4@8 c4@23 ~ d4@15 ~@2, ~@63 f3@14 ~@19]/3", // F Bm C G
  B: "c4@19 ~@13", C: "[f4@16 d#4@31 ~ d4@48, a#3]/3", D: "[c4,d#4]@2 [d4,f4] [d#4,g4]",
  E: "[f4@16 d#4@31 ~ d4@48 [c4,d#4]@15 [d4,f4]@8 ~ d#4@8 ~@112 c4@16, a#3@97 ~@23 g4@24 f4@32 d#4@32 d4@32 ~@16, ~@128 c4@32 a#3@32 f#3@31 ~ g3@32]/8", // Cm Dm
  F: "g#3", G: "g3", H: "f#3", I: "[e3@16 c3@49 f3@15 g3@16]/3", J: "[c3@15 b3@8 a3@8 f3@17 g3@16]/2",
  K: "[~ c3@30 f3@17 g3@16]/2", L: "[c4@8 b3@8 a3@8 g3@7 f3@17 g3@15 c2@18 ~@15]/3",
  M: "[f4@16 d#4@32 d4@47 ~ c4@15 ~ f4@7 d#4@9 ~@80 d4@32 ~@16, a#3@95 d#4@16 d4@8 g4@25 f4@32 d#4@32 ~@48, ~@130 c4@30 a#3@32 f#3@31 ~@33]/8",
  N: "[g#3@31 g3@33]/2", O: "d4 c4", P: "c3", Q: "f3 g3", R: "c4@2 b3 a3", S: "c4 c3",
  T: "[c4@8 b3@8 c4@8 e4@7 f3@17 g3@16]/2", U: "c3@19 ~@13",
  V: "[[a#3,d4]@15 ~@17 g4@16 f4@15 ~ d4@39 c4@9 d4@8 e4@8, ~@15 e4@16 ~@32 b3@39 ~@26, ~ c4@3 ~@4]/4", // A#
  W: "~ a#3@14 c4@17", X: "f3", Y: "e3", Z: "d#3", AA: "[f3,a3] [g3,b3]",
  AB: "[[c4,e4]@16 [b3,d4]@8 c4@9 f3@13 ~@2 b3@16 c4@20 ~@12, ~@24 a3@23 g3@39 ~@10]/3", AC: "c4@8 b3@8 c4@7 e4@9",
  AD: "~ [f3,a3]@15 g3@16", AE: "[a3@31 g3@32 ~, c4@63 ~]/2",
})).s("gm_string_ensemble_2").gain(0.36).pan(0.7)

// other · acoustic guitar nylon · "Cinque giorni"
const acoustic_guitar_nylon = note(`<
  A B@2 C D ~@8 E F G H I J K L@2 ~@8 M N O P Q R S T U V W X Y ~@8 Z AA AB AC@2 AD AE AF AG AH AI ~@7 A AJ
>`.pickRestart({
  A: "~@20 g3@4 c4@4 g4@3 ~", B: "[g4@8 f4@8 e4@6 ~ [e4,f4] d4@4 e4@24 ~@6 g3@2 c4@2 e4 ~]/2", C: "e4@2 d4 f4@3 e4@2",
  D: "c4@21 ~@11", E: "g4@16 f4@15 ~", F: "f4@16 d#4@15 ~", G: "d#4@16 d4@15 ~", H: "d4@15 ~ c4@4 g3@4 c4@4 g4@3 ~",
  I: "g4@15 ~ f4@15 ~", J: "f4@16 d#4@5 ~@11", K: "d#4@16 d4@15 ~, d4 ~@31", L: "[d4@16 c4@21 ~@27]/2",
  M: "f4@2 a#3 f4 d#4 g3 a#3 g3", N: "d#4@2 a#3 f3 d4 f3 a#3 f3", O: "d4 ~ a#3 g3 d4 g3 a#3 g3",
  P: "d#4@4 g3@4 c4@4 d#4@4 f4@5 ~@11", Q: "g4@4 g#3@4 c4@4 g#3@4 f4@4 g#3@4 c4@4 g#3@3 ~",
  R: "f4@3 ~ g3@4 a#3@4 g3@4 d#4@4 g3@4 a#3@4 ~@4", S: "d#4 f#3 a3 f#3 d4@2 a3 f#3",
  T: "d4@3 ~ e3@4 g3@4 e3@4 c4@3 ~ g3@4 c4@4 g4@3 ~", U: "g4@8 g#3@4 g4@4 f4@4 g#3@4 c4@4 f4@3 ~",
  V: "f4 g3 a#3 g3 d#4 g3 a#3 g3", W: "d#4@2 f#3@2 a3@2 f#3@2 d4@3 ~ a3@2 f#3@2",
  X: "d4@4 e3@4 g3@4 e3@4 c4@6 ~@2 g3@5 ~@3", Y: "c4@7 ~@9", Z: "d4@7 ~ d4@8 e4@7 ~ e4@4 g3@4",
  AA: "g4@7 ~ g4@8 f4@7 ~ f4@8", AB: "d4@15 ~ b3@8 d4@8", AC: "[b3@2 a3@2 b3@2 c4@6 c4 g3 c4 g3]/2",
  AD: "g4@7 ~ g4@7 ~ f4@7 ~ f4@8", AE: "d4@2 b3 d4", AF: "c4@7 ~ c4@24", AG: "d4@7 ~@2 d4@7 c4@7 ~ c4@8",
  AH: "f4@7 ~ f4@7 ~ d#4@6 ~@2 d#4@7 ~", AI: "d4@13 ~@19", AJ: "g4@15 ~@17",
})).s("gm_acoustic_guitar_nylon").gain(0.36).pan(0.7)

// other · acoustic guitar nylon · "Cinque giorni" · soft notes
const acoustic_guitar_nylon_2 = note("<~@30 A ~ A B ~ C D ~@3 D E ~@29>".pickRestart({
  A: "~@4 g3@5 ~@23", B: "~@5 c4 ~ c4, ~@24 g4@7 ~", C: "~@7 g3", D: "~@5 f#3 ~@2", E: "~@5 e3 ~ e3",
})).s("gm_acoustic_guitar_nylon").gain(0.24).pan(0.7)

// other · celesta · "Cinque giorni"
const celesta = note(`<
  A B@2 C D ~@8 E F G H I J G K ~@2 L@2 M N O P ~ F Q R S E T G U E J V K W ~@26 X@2
>`.pickRestart({
  A: "~@20 g4@4 c5@4 g5@3 ~", B: "[g5@7 ~ f5@7 ~ e5@8 d5@4 e5@29 ~ g4 ~ c5 ~ e5 ~]/2", C: "e5@8 d5@4 f5@11 ~ e5@8",
  D: "c5@15 ~@17", E: "g5@15 ~ f5@15 ~", F: "f5@16 d#5@15 ~", G: "d#5@16 d5@15 ~", H: "d5@15 ~ c5@4 g4@4 c5@3 ~ g5@3 ~",
  I: "g5@16 f5@15 ~", J: "f5@15 ~ d#5@15 ~", K: "d5 c5", L: "[e5@15 ~ d5@8 e5@23 ~ f5@15 ~]/2",
  M: "e5@20 g4@4 c5@3 ~ g5@3 ~", N: "g5@8 a5@7 ~ f5@8 e5@7 ~", O: "e5@8 d5@8 e5@7 ~ g5@8", P: "a5@16 g5@15 ~",
  Q: "d#5@8 d5@7 ~", R: "d5", S: "d#5@13 ~@3 f5@8 g5@7 ~", T: "f5@15 ~ d#5@14 ~@2",
  U: "d5@14 ~@2 c5@4 g4@4 c5@3 ~ g5@3 ~", V: "d#5@14 ~@2 d5@15 ~", W: "d5@15 ~ c5@8 ~@8", X: "[~@5 g4 c5 g5@3 ~@6]/2",
})).s("gm_celesta").gain(0.23).pan(0.3)

// other · synth strings 1 · "Cinque giorni"
const synth_strings_1 = note("<~ A B C D E F G H E F G H I J K L M J K L H N O N H N P Q R ~@41>".pickRestart({
  A: "f2 g2", B: "c2 a1", C: "f2@16 g2@15 ~", D: "c2@13 ~@3", E: "d#2", F: "a#1", G: "g2", H: "c2", I: "g#1@31 ~",
  J: "g1", K: "f#1", L: "e2", M: "g#1", N: "f1 g1", O: "c2@16 a1@15 ~", P: "c2 b1 a1 g1", Q: "f1@15 ~ g1@16",
  R: "c2@9 ~@7",
})).s("gm_synth_strings_1").gain(0.41)

// other · timpani · "Cinque giorni"
const timpani = note("<~@21 A@2 ~@2 B ~@35 C D ~@8>".pickRestart({
  A: "[~ c1@11 c1@3 ~ c1@21 ~@27]/2", B: "c1@5 ~ c1@9 ~",
  C: "~@16 e1 f1 e1 [e1,f1] f1 e1 [e1,f1] f1 e1 [e1,f1] f1 e1 [e1,f1] f1 e1 [e1,f1]", D: "f1 ~@31",
})).s("gm_timpani").gain(0.64)

// other · string ensemble 2 · "Cinque giorni"
const string_ensemble_2_2 = note(`<
  ~@16 A@5 B@6 C@3 ~@7 D@4 E F@2 G H@5 I ~@3 J@2 K L M ~ N O@2 P Q@4 R@2 S
>`.pickRestart({
  A: "[~@19 g3@5 c4@4 g4@20 f4@28 ~@3 d#4@33 d4@31 c4@17]/5",
  B: "[d4@16 c4@4 g3@4 c4@4 g4@11 f4@8 e4@8 d4@4 e4@19 ~@5 g3@4 c4@4 e4@13 d4@8 f4@7 e4@18 ~@10 g3@4 c4@4 g4@13 a4@7 f4@8 e4@9]/6",
  C: "[~@4 g4@3 e4@4 d4@8 c4@5 g3@3 c4@3 e4@9 d4@8 f4@8 e4@4 c4@19 ~@18]/3",
  D: "[~@19 g3@5 c4@3 g4@21 f4@27 ~@5 d#4@32 d4@16]/4", E: "~ c4", F: "[c2@20 g3@3 c4@4 g4@13 f4@8 e4@8 d4@8, c3 ~]/2",
  G: "e4@15 d4@8 c4@9",
  H: "[e4@8 d4@7 f4@9 e4@24 ~@3 g3@4 c4@4 g4@14 a4@6 f4@8 e4@16 d4@8 e4@8 g4@8 e4@8 d4@9 f4@7 e4@9]/5", I: "c4 ~@3",
  J: "[~ b3@7 a3@8 b3@8 ~@8 d4@15 e4@17, ~@3 c4@3 ~@2]/2", K: "c4 ~@31", L: "b3 d4", M: "~ c4@31", N: "a#3",
  O: "[g3@31 f4@16 e4@9 d4@8]/2", P: "e4@2 d4 c4",
  Q: "[~ e4@7 d4@7 f4@8 e4@28 g3@4 c4@4 g4@13 a4@8 f4@8 e4@16 d4@7 e4@8 g4@9]/4", R: "[a4@17 g4@14 f4@2 a4@31]/2",
  S: "[g4,c5]@31 ~", // C5
})).s("gm_string_ensemble_2").gain(0.44).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@30 A@21 B@2 A@2 B@2 A C@4 A@6 C ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@6 x!2 ~@7", C: "x",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@51 [~ x ~@2]!2 [~ x ~ x]!2 [~ x ~@2]!2 [~ x ~ x] [~@3 x]!3 ~@10>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@30 A@3 B A@7 B C A@3 C A@3 D ~@11 A@3 E A@2 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~@2", C: "~@2 x ~@2 x!2 ~", D: "~ x ~@2", E: "~ x!2 ~@3 x ~",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@3 A ~@3 A@2 ~ A ~ A ~@3 B ~@12 A ~ C ~ A ~@3>".pickRestart({
  A: "~@7 x", B: "~@13 x!2 ~", C: "~@6 x!2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~@30 A@20 ~ B@2 C@2 B@2 C D@3 ~ A@6 ~@3>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x!3 ~ x!2 ~@4", C: "x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~", D: "x!4",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@37 A ~@4 A ~ B ~ A ~ C ~ D ~@12 E ~ F ~ G ~@3>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@13 x ~@2", C: "~@13 x!2 ~", D: "~@3 x", E: "~@24 x!3 ~@5", F: "~@7 x ~ x!5 ~@2",
  G: "~@10 x ~ x!2 ~@2",
})).gain(0.45)

// … 20 more lines

More by Michele Zarrillo