Strudelify

Che t'aggia di

Celentano

KeyA minorTempo94 bpm
0:00/0:00
// Che t'aggia di — Celentano
// 94 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 96 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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 · acoustic bass
const bass = note(`<
  ~@13 A B C D E F@2 G H I F J ~@14 K L M N O P Q R S T R U@5 V ~@4 W X Y Z W X Y Z K AA M AB K AA AC J K AA M N ~@4 K L
  AD J K AA AD J K AA AC J
>`.pickRestart({
  A: "e1@12 ~ g#1 ~@2 b1@14 ~@2", B: "a1@12 ~ c2 ~@2 e2@8 c2@6 ~@2", C: "e1@13 g#1@2 ~ b1@15 ~", D: "a1@31 ~",
  E: "a1@14 ~@2 e2@15 ~", F: "a1@16 e2@15 ~", G: "a1@15 ~ e2@15 ~", H: "a1@13 a2@3 e2@15 ~", I: "a1 e2", J: "a1@3 ~@29",
  K: "e2@11 ~@2 e2@2 ~ g#2@7 ~ b2@6 ~@2", L: "a2@10 ~@3 a2@2 ~ e2@7 ~ c2@6 ~@2", M: "e1@11 ~@2 e1@2 ~ g#1@7 ~ b1@6 ~@2",
  N: "a1@5 ~@27", O: "e1@13 ~@3", P: "a1@13 c2 ~@2 e2@13 c2@2 ~", Q: "a1@16 e2@12 ~ c2@3", R: "a1@16 e2@13 c2@3",
  S: "a1@13 c2@3 e2@13 c2@2 ~", T: "a1@13 c2@2 ~ e2@12 ~ c2@3", U: "a1@16 e2@13 c2@2 ~", V: "a1@16 e2@13 ~@3",
  W: "a1@13 c2@2 ~ e2@16", X: "a1@11 ~@2 a1 ~@2 a1@14 ~@2", Y: "a1@13 c2 ~@2 e2@15 ~", Z: "a1@11 ~@2 a1 ~@2 a1@15 ~",
  AA: "a2@10 ~@3 a2@2 ~ e2@8 c2@6 ~@2", AB: "a1@5 ~@19 f2@3 d2@2 d#2@3",
  AC: "e1@11 ~@2 e1@2 ~ g#1@7 ~ b1@3 c2@2 b1@2 ~", AD: "e1@11 ~@2 e1@2 ~ g#1@7 ~ b1@2 ~ c2@2 b1@2 ~",
})).s("gm_acoustic_bass").gain(0.64)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@2 B@5 C D@2 ~@2 A@2 C E F G@4 H@3 I ~@2 J@3 K@3 L I J@3 M@2 C E F N J@3 O@3 J@3 P@4 Q R L S@3 T@3 U@3 V E W@2 V E
  W@2 V E F ~@3 A@2 C E X@3 Y@4 Z@2
>`.pickRestart({
  A: "[~@32 [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@2 ~, ~@31 e3@4 ~@10 [g#3,b3,d4]@8 e3@5 ~@6, ~@16 e2@7 ~ b2@7 ~]/2", // G#dim E7 G#dim E7 G#dim
  B: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~ [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@3, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2 a2@16 e2@15 ~ e2@14 ~@7 e3@5 ~@6, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@7 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@9 ~@23 [g#3,b3,d4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@11 e3@5 ~@11 e3@6 ~@12 e3@4 ~@13 b2@14 ~@2]/5", // Am G#dim E7 G#dim E7 Am G#dim
  C: "[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~, a2 e2, e3@3 ~@10 [a3,c4,e4]@9 ~@10", // Am
  D: "[[g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4]@2 ~@3 e3@2 ~ g#3@5 e3@2 ~ [e3,g#3,b3,d4]@3 ~@2 [e3,g#3,b3]@2 ~ [e3,a3,e4,a4]@3 ~@29, e2@16 b2@15 ~ [e2,a2]@32, e3@3 ~@10 b3@10 ~@8 c4@3 ~@30, ~@13 g#3 ~@2 e3@2 ~@46]/2", // G#dim E7 E A5
  E: "[e3,g#3,b3]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3]@2 ~, e2@13 [g#3,b3,d4]@8 e3@5 ~@6, ~@8 b2@7 ~", // E E7 G#dim E G#dim
  F: "[a2,e3,a3,c4]@3 ~@29", // Am
  G: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2 a2@16 e2@15 ~, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@7 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@11 e3@5 ~@11 e3@6 ~@13]/4", // Am
  H: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@14]/3", // Am
  I: "[a2,e3,a3,c4,e4] ~@15", // Am
  J: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@14]/3", // Am A5 Am
  K: "[[g#3,b3]@5 e3 ~@2 [e3,g#3,b3] ~@4 e3@3 ~@5 e3 ~@2 [e3,g#3,b3,d4]@2 ~@11 e3@2 ~ [e3,g#3,b3,d4]@2 ~@11 e3@2 ~ [e3,g#3,b3,d4]@2 ~@11 e3 ~@2 [e3,g#3,b3,d4]@2 ~@11 e3 ~@2 [e3,g#3,b3,d4]@2 ~@3 [e3,g#3]@2 ~, e2@16 b2@16 e2@15 ~ b2@15 ~ e2@15 ~ b2@14 ~@2, e3@3 ~@10 [g#3,b3,d4]@9 ~@7 [g#3,b3,d4]@10 ~@6 [g#3,b3,d4]@9 ~@7 [g#3,b3,d4]@10 ~@6 [g#3,b3]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@14]/3", // G#m E E7 E G#dim G#m
  L: "[g#3,b3]@5 e3 ~@2 [e3,g#3,b3] ~@4 e3@3 ~@5 e3 ~@2 [e3,g#3,b3,d4]@2 ~@3 [e3,g#3]@2 ~, e2 b2, e3@3 ~@10 [g#3,b3,d4]@9 ~@10", // G#m E E7 E G#dim
  M: "[[e2,a2]@16 ~@16 [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@2 ~, [a3,c4]@7 ~@25 e2@14 ~@2 b2@14 ~@2, e3@3 ~@28 e3@4 ~@10 [g#3,b3,d4]@8 e3@5 ~@6]/2", // A5 G#dim E7 G#dim E7 Am G#dim
  N: "~ b3@18 ~@13, [e2,e3,g#3]@9 ~@7", // E
  O: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@14]/3", // Am A5 Am
  P: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3]@2 ~ [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@3, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2 e2@14 ~@7 e3@5 ~@6, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@23 [g#3,b3,d4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@13 e3@4 ~@13 b2@14 ~@2]/4", // Am A5 G#dim E7 G#dim E7 Am G#dim
  Q: "[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 e3, a2 e2, e3@3 ~@10 [a3,c4,e4]@9 ~@10", // Am
  R: "[g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3]@2 ~, e2@13 [g#3,b3,d4]@8 e3@5 ~@6, ~@8 b2@7 ~", // G#dim E7 G#dim E G#dim
  S: "[[a3,c4]@5 e3@2 ~ [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@10, ~@29 e3@5 ~@11 e3@6 ~@10 e3@6 ~@10 e3@5 ~@14]/3", // Am A5 Am
  T: "[[a3,c4]@5 e3 ~@2 [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ a2@15 ~ e2@14 ~@2, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4]@9 ~@10, ~@29 e3@6 ~@10 e3@6 ~@10 e3@6 ~@10 e3@5 ~@14]/3", // Am A5 Am
  U: "[[a3,c4]@5 e3@2 ~ [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4]@2 ~@11 e3@2 ~ [e3,a3,c4,e4] ~@4 [e3,a3,c4,e4]@2 ~ [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@2 ~, a2@16 e2@16 a2@15 ~ e2@15 ~ e2@14 ~@7 e3@5 ~@6, e3@3 ~@10 [a3,c4,e4]@9 ~@7 [a3,c4,e4]@10 ~@6 [a3,c4,e4]@9 ~@23 [g#3,b3,d4]@9 ~@10, ~@29 e3@6 ~@10 e3@6 ~@12 e3@4 ~@13 b2@14 ~@2]/3", // Am G#dim E7 G#dim E7 Am G#dim
  V: "[a3,c4]@5 e3@2 ~ [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~, a2@16 e2@15 ~, e3@3 ~@10 [a3,c4,e4]@9 ~@10", // Am
  W: "[[a2,e3,a3,c4]@3 ~@29 [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@2 ~, ~@31 e3@4 ~@10 [g#3,b3,d4]@8 e3@5 ~@6, ~@16 e2@7 ~ b2@7 ~]/2", // Am G#dim E7 G#dim E7 G#dim
  X: "[[a2,e3,a3,c4]@3 ~@29 [g#3,b3,d4]@5 e3@2 ~ [e3,g#3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@2 ~ [a3,c4]@5 e3@2 ~ [e3,a3,c4] ~@4 e3@3 ~@5 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~, ~@31 e3@4 ~@10 [g#3,b3,d4]@8 e3@5 ~@5 e3@3 ~@11 [a3,c4,e4]@9 ~@10, ~@32 e2@14 ~@2 b2@14 ~@2 a2@16 e2@15 ~]/3", // Am G#dim E7 G#dim E7 Am G#dim Am
  Y: "[[e3,g#3,b3]@5 e3@2 g#3 [e3,b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3]@2 ~ [a2,a3,c4]@3 ~@29 [g#3,b3,d4]@5 e3@2 [e3,g#3] [b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3,d4]@2 ~ [a3,c4]@5 e3@2 ~ [e3,a3,c4] ~@12 e3 ~@2 [e3,a3,c4,e4]@2 ~@3 [e3,a3,c4,e4]@2 ~, e2@13 [g#3,b3,d4]@8 e3@5 ~@5 e3@3 ~@29 e3@4 ~@10 [g#3,b3,d4]@8 e3@5 ~@5 e3@3 ~@11 [a3,c4,e4]@9 ~@10, ~@16 b2@14 ~@34 e2@14 ~@2 b2@14 ~@2 a2@15 e2@15 ~@2, ~@109 e3@4 ~@15]/4", // E E7 G#dim E Am G#dim E Bm …
  Z: "[[e3,g#3,b3]@5 e3@2 [e3,g#3] [b3,d4] ~@4 e3 ~@2 e3@3 ~@5 [g#3,b3,d4] ~@4 [e3,g#3,b3]@2 ~ [a2,a3]@3 ~@29, e2@13 [g#3,b3,d4]@8 e3@5 ~@5 [e3,c4]@3 ~@30, ~@8 b2@7 ~@17]/2", // E Bm G#dim E A G#dim C
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.6)

// other · violin
const violin = note("<~@27 A B C D E@3 F G H I J ~@33 K L M L ~@20>".pickRestart({
  A: "a3@3 c4", B: "e3@24 c4@7 ~", C: "a3 e3@3", D: "b3", E: "[b3@23 e4@8 d4@8 b3@8 d4@8 ~ b3@16 e4@7 d4@8 ~ b3@7 ~]/3",
  F: "a3@2 ~@6 a3@5 b3@3 c4@5 b3@3 c4@5 b3@2 ~", G: "a3@7 ~ a3@5 b3@3 c4@5 b3@3 c4@5 b3@3",
  H: "a3@6 ~ a3@5 ~ b3@3 c4@5 b3@3 c4@5 b3@3", I: "a3 c4 a3 e3", J: "a3@8 c4@8 a3@7 e3@9", K: "e2 ~@7", L: "a1@3 ~@29",
  M: "e2@3 ~@29",
})).s("gm_violin").gain(0.25).pan(0.7)

// other · flute
const flute = note("<~@28 A B C D E F ~@26 G H I ~@5 G J K ~ G J K ~@21>".pickRestart({
  A: "~@5 a4@2 ~ b4@3 ~@2 c5@2 ~ b4@4 ~ a4@2 ~ e4@5 ~@3", B: "~@5 a4@2 b4@5 ~ c5@2 ~ b4@4 ~ a4@2 ~ e4@6 ~@2",
  C: "~@5 g#4@2 ~ b4@4 ~ d5@2 ~ e5@4 ~ d5@2 ~ b4@4 ~@4", D: "~@5 e5@2 ~ d5@4 ~ b4@2 ~ g#4@5 ~@11",
  E: "~@4 g#4@2 ~ b4@4 ~@2 d5 ~@2 e5@4 ~ d5@2 ~@9",
  F: "~@3 d5 ~ c#5@2 ~ c5@2 b4 ~@2 a#4 ~@2 a4@2 g#4 ~@2 g4@2 ~ f#4@2 f4@2 ~ e4@2 ~", G: "~@13 c6 ~@2 d6@5 e6 ~@10",
  H: "~@13 d6 ~@2 e6@5 a6@2 ~@9", I: "~@13 c6 ~@2 d6@5 a5 ~@10", J: "~@13 e6 ~@2 g#6@5 a6 ~@10",
  K: "~@13 c6 ~@2 d6@4 ~ e6 ~@10",
})).s("gm_flute").gain(0.26).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@9 A ~@10 B C ~ D@4 ~@8 E F G ~ H I J K ~ L M N M N M O P Q R S T@2 ~@11 U V W X U V W X U V W X U Y@2 X Z AA AB ~ Z
  AA AC ~ Z AA AD ~
>`.pickRestart({
  A: "a4", B: "~@15 f6 e6 f6 ~ e6 f6 e6 ~ f6 e6 f6 ~ e6 f6 e6 ~ f6",
  C: "e6 f6 ~ e6 f6 e6 ~ f6 e6 f6 ~ e6 f6 e6 ~ f6 e6 f6 ~@14", D: "[~@31 a2@32 e2@32 a2@33]/4",
  E: "~@7 [e4,a4] c5 ~@23, ~@7 e5@2 ~@23", F: "~@7 e4 [a4,c5] ~@23, ~@4 e5 ~@11", G: "~@8 [e4,a4,c5] ~@23, ~@4 e5 ~@11",
  H: "~@8 [e4,g#4,b4,d5] ~@23", I: "~@8 [e4,a4,c5] ~@4 [e4,a4,c5] ~@18", J: "~@8 [g#4,b4,d5] ~@23, ~@4 e4 ~@11",
  K: "[e4,a4] ~@15, c5 ~@31", L: "~@7 [a2,a3]@6 [b2,b3] ~@10 [b2,b3]@5 [c3,c4] ~@2",
  M: "~@8 [c3,c4]@5 [d3,d4] ~@10 [d3,d4]@5 [e3,e4] ~@2", N: "~@8 [a2,a3]@5 [b2,b3] ~@10 [b2,b3]@5 [c3,c4] ~@2",
  O: "~@8 [a2,a3,c4]@5 [b2,b3,d4] ~@10 [b2,b3,d4]@4 [c3,c4] ~@3, ~@14 e4 ~", // Am Bm C
  P: "~@8 [c3,c4,e4]@5 [d3,d4,g4] ~@10 [d3,d4,g4]@4 e3 a4@2 ~, ~@29 e4 ~@2", // C G5
  Q: "~@8 [a2,a3,e5]@5 [b2,b3,d4] ~@10 [b2,b3,d4,g5]@5 [c3,a5]@2 ~, ~@7 c4@5 ~ g5@2 ~@14 [c4,e4] ~@2", // A5 Bm G F C
  R: "~@8 [c3,c4,e4,a5]@5 [d3,d4,g4,b5] ~@10 [d3,d4,g4,b5]@5 [a4,c6]@2 ~, ~@29 [e3,e4] ~@2", // Am G Am E
  S: "~@8 [a2,a3,c5]@5 [b2,b3] ~@10 [b2,b3,d5]@5 [c3,c4] ~@2, ~@13 d5@2 ~@14 e5@2 ~", // Am B Bm C
  T: "[~@8 [c3,c4,e5]@5 [d3,d4,g5]@2 ~@7 a5@7 e5@14 ~@21, ~@21 [e3,e4]@8 ~@35]/2", U: "g#3@2 a3@3 g#3@3 b3@2 ~@22",
  V: "a3@2 b3@3 a3@2 c4@2 ~@23", W: "g#3@2 ~ a3@2 g#3@3 b3@2 ~@22", X: "a3 ~@15",
  Y: "[a3@2 b3@3 a3@2 c4@2 ~ a3@2 ~@19 g#3@3 a3@3 g#3@2 ~ b3@2 g#3@3 a3@3 g#3@3 b3@2 g#3@3 a3@2 ~ g#3@2 b3@2 ~]/2",
  Z: "~@11 [g#4,g#5]@2 [a4,a5]@3 [b4,b5]@2 ~@14", AA: "~@11 a5@2 [b4,b5]@3 c5@2 ~@14, ~@10 a4@3 ~@3 c6 ~@15",
  AB: "~@10 [g#4,g#5]@3 [a4,a5]@2 b4@2 ~@15, ~@15 b5 ~@16", AC: "~@10 [g#4,g#5]@2 ~ [a4,a5]@2 b4@2 ~@15, ~@15 b5 ~@16",
  AD: "~@10 [g#4,g#5]@2 ~ a5@2 b4@2 ~@15, ~@12 a4@2 ~ b5 ~@16", // G#
})).s("gm_string_ensemble_1").gain(0.38)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@9 A@4 ~@7 B C ~@74>".pickRestart({
  A: "[a3@31 [e3,e4]@32 ~ a2@31 [e2,e3]@32 ~, ~@63 a3@32 ~@33]/4", B: "e6 f6 ~ e6 f6 e6 ~ f6 e6 f6 ~ e6 f6 e6 ~@18",
  C: "~@19 e6 f6 e6 ~ f6 e6 f6 ~ e6 f6 e6 ~ f6",
})).s("gm_string_ensemble_1").gain(0.19)

// other · orchestral harp · Bm Fm Bm E Bm E G#m
const orchestral_harp = note(`<
  ~@11
  [~@24 [b5,d6] [f5,g#5] [b4,d5] [e4,g#4] [b3,d4] [e3,g#3] [g#2,b2] e2]
  ~@22
  [~@2 c4@2 ~ a3@2 ~ e3@2 c3@2 ~ a2@2 ~ e2@2 ~@14]
  ~@61
>`).s("gm_orchestral_harp").gain(0.41)

// chords · pizzicato strings
const pizzicato_strings = note(`<
  ~@13 A B C D E F@6 ~@3 B F G H I J K L M F@2 ~ N O P Q ~@13 C R S T B F@6 U V W X@2 V W X@2 V W X@2 V W X@2 ~@3 Y ~@3
  Z ~@4
>`.pickRestart({
  A: "~@8 [g#4,b4] ~@15 [g#4,b4] ~@7, ~@4 d5 ~@7 d5 ~@3", B: "~@8 [a4,c5] ~@15 [a4,c5,e5] ~@7, ~@4 e5 ~@11",
  C: "~@8 [g#4,b4,d5] ~@15 [g#4,b4,d5] ~@7", D: "[a4,c5,e5] ~@31", E: "~@8 [a4,e5]@2 ~@14 [a4,c5,e5] ~@7, ~@8 c5 ~@23",
  F: "~@8 [a4,c5,e5] ~@15 [a4,c5,e5] ~@7", G: "~@4 [a4,c5,e5] ~@7 [a4,e5] ~@3, ~@24 c5 ~@7",
  H: "~@8 [g#4,b4,d5] ~@15 [g#4,d5]@2 ~@6, ~@24 b4 ~@7", I: "~@8 [g#4,b4,d5]@2 ~@14 [g#4,b4,d5] ~@7",
  J: "~@8 [g#4,b4,d5]@2 ~@14 [g#4,b4] ~@7, ~@12 d5 ~@3", K: "~@4 [b4,d5] ~@7 [g#4,d5] ~@3, ~@8 g#4 ~@15 b4 ~@7",
  L: "[a4,c5,e5] ~@15", M: "~@8 [a4,c5,e5] ~@15 [a4,c5] ~@7, ~@12 e5 ~@3",
  N: "~@8 [e4,b4] ~@15 [e4,b4,d5]@2 ~@6, ~@4 d5 ~@11", O: "~@8 [e4,a4] ~@15 [e4,a4] ~@7, ~@4 c5 ~@7 c5 ~@3",
  P: "~@8 [e4,b4,d5] ~@15 [e4,b4,d5]@2 ~@6", Q: "[e4,a4,c5] ~@15", R: "~@8 [e4,a4,c5] ~@15 [e4,a4,c5] ~@7",
  S: "~@8 [e4,g#4,b4,d5] ~@15 [g#4,b4,d5] ~@7", T: "~@8 [g#4,d5] ~@15 [g#4,b4,d5] ~@7, ~@4 b4 ~@11",
  U: "~@8 [c5,e5] ~@15 [c5,e5] ~@7", V: "~@8 [e4,b4,d5] ~@15 [e4,b4,d5] ~@7", W: "~@7 [a4,c5,e5] ~@15 [a4,c5,e5] ~@8",
  X: "[~@8 [e4,b4,d5] ~@15 [e4,b4,d5] ~@6 [a4,c5]@2 ~@31, ~@31 e5 ~@32]/2", // E7 Am
  Y: "~@10 a5 a4@2 [c5,c6] ~@2 [e5,e6]@2 [c5,c6] ~@2 a4@2 ~@9, ~@21 a5 ~@10", // C E C
  Z: "~@10 a4@2 ~ [c5,c6] ~@2 [e5,e6]@2 ~@14, ~@10 a5 ~@21", // C E
})).s("gm_pizzicato_strings").gain(0.3).pan(0.4)

// other · bandoneon
const bandoneon = note("<~@37 A@2 ~@21 B C D E F G H I ~@8 J K@3 ~@16>".pickRestart({
  A: "[e5 f5 g#5 a5 g#5 f5 e5 f5 g#5 a5 g#5 f5 e5 f5 g#5 a5 g#5 f5 e5 f5 g#5 a5 g#5 f5 e5@2 f5 e5 f5 e5@11 ~@24]/2",
  B: "~@28 g#4 ~ a4 ~", C: "b4 ~ a4 ~ b4 ~ a4 ~ g#4 ~ a4 ~ b4 ~ c5 ~ d5 ~ c5 ~ b4 ~ c5 ~ d5 ~ e5 ~ f5 ~ e5 ~",
  D: "f5 ~ e5 ~ d#5 ~ e5 ~ f5 ~ g#5 ~ a5 ~ b5 ~ a5 ~ g#5 ~ a5 ~ b5 ~ c6 ~ [b5,c6] ~ b5 ~ a5 ~", // Cmaj7
  E: "g#5 ~ a5 ~ b5 ~ a5 ~ g#5 ~ f5 ~ e5 ~ f5 ~ e5 ~ d5 ~ c5 ~ b4 ~ e5 ~ d5 ~ c5 ~ b4 ~", F: "~@30 a4 c5",
  G: "e5 c5 a4 c5 e5 ~ c5 a4 c5 e5 ~ [a4,c5] ~ c5 e5 c5 a4 c5 ~ e5 c5 a4 c5 e5 a5@6 ~@2", // Am
  H: "~@13 g#5 ~@2 a5 g#5 f5 e5@9 ~ d5 e5 d5", I: "c5 ~@31", J: "e5@11 g#5@2 a5@2 ~ b5@16",
  K: "[c6@11 b5@2 a5@2 ~@2 e5@9 f5 ~ e5 f5 e5@12 f5 ~@2 d#5 ~ e5@11 ~ d5 ~ c5 ~ a4@2 ~@31]/3",
})).s("gm_bandoneon").gain(0.3).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note("<A ~@43 B@8 C D E F ~@3 G@4 H@5 ~@15 I@5 J@8>".pickRestart({
  A: "[a3,c4,e4]@7 ~", // Am
  B: "[~@5 c3@2 ~ d#3@10 ~@3 e3@2 ~ d#3@5 c3@12 ~@12 a2@2 c3 ~ c3 ~ a2 c3 ~ a2@16 ~@7 g2@2 a2@2 b2@3 g2@2 ~ a2@20 ~@4 a2 ~ b2@2 g2@2 ~@3 [e4,a4]@20 ~ e2@6 ~ e2@8 a2@17 d#3@3 d3@4 ~@7 d3@2 d#3@3 c3@5 a2@11 a1@4 ~@22 g2@3 a2@3 b2@5 g2@2 ~, ~@4 a2@2 ~ e3@2 ~@47 a2@2 ~@60 g2@2 ~@6 a2@20 ~@43 d3@2 c4@24 ~@7 a3@28 ~@6, ~@127 [a3,c4]@21 ~@42 a3@25 ~@6 a1@3 ~@32, ~@192 e4@23 ~@8 c4@27 ~@6, ~@192 d#3 a4@23 ~@8 [e4,a4]@26 ~@6]/8", // A5 Am A5
  C: "a2@8 a1@4 ~ a1@3 ~@6 g2 a2@2 b2@4 g2@2 ~", D: "a2@8 a1@4 ~ a1@3 ~@6 g2 a2 b2@5 g2@2 ~",
  E: "a2@8 a1@4 ~ a1@3 ~@6 g2 ~ b2@5 c3@3, ~@23 a2@2 ~@7", F: "a2@8 a1@4 ~ a1@3 ~@16",
  G: "[~@4 [e4,a4]@5 ~@3 a4@4, ~@30 [a2,a3]@43 ~@21 [a2,a3]@34, ~@31 c4@41 ~@23 [c4,e4]@33]/4", // A5 A C
  H: "[~@32 a4@44 ~@20 a4@41 ~@23, ~@30 [a2,a3]@47 ~@17 [a2,a3]@43 ~@23, ~@31 [c4,e4]@45 ~@19 [c4,e4]@42 ~@23]/5", // A C
  I: "[~@32 [b3,d4]@27 ~@6 e4@27 ~@5 e4@25 ~@6 a4@28 ~@3 g#3, ~@30 [e2,e3]@29 ~@2 a2@31 ~@33 a2@31 ~@2 [e2,e3]@2, ~@31 g#3@28 ~@4 [e3,a3]@29 ~@2 e3@28 ~@5 [c4,e4]@30 ~@3, ~@64 c4@28 ~@3 [g#3,b3,d4]@26 ~@5 a3@31 ~@3]/5", // Bm E A5 C G#dim
  J: "[[b3,d4]@27 ~@6 e4@27 ~@5 e4@25 ~@6 a4@28 ~@4 [b3,d4]@27 ~@6 e4@27 ~@5 e4@25 ~@6 a4@28 ~@4, ~@29 a2@31 ~@33 a2@31 ~@2 [e2,e3]@29 ~@2 a2@31 ~@33 a2@31 ~@4, ~@31 [e3,a3]@29 ~@2 e3@28 ~@5 [c4,e4]@30 ~@35 c4@28 ~@3 [g#3,b3,d4]@27 ~@4 a3@31 ~@3, ~@32 c4@28 ~@3 [g#3,b3,d4]@27 ~@4 a3@31 ~@2 g#3@28 ~@4 [e3,a3]@29 ~@2 e3@28 ~@5 [c4,e4]@30 ~@3]/8", // Bm E A5 C G#dim A5 C
})).s("gm_electric_guitar_clean").gain(0.41).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@39 A@2 B ~ C D@12 C ~@3 D@8 ~@4 A@3 E ~@8 A@3 E A@3 E A@3 C>".pickRestart({
  A: "x!2", B: "x ~@15 x ~@12 x ~@2", C: "x", D: "x ~@12 x ~@2 x ~@15", E: "x ~@12 x ~@18",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct("<~@39 A@3 B ~ A@24 ~@4 A@3 C ~@8 A@11 ~>".pickRestart({
  A: "~ x ~ x", B: "x", C: "~ x ~@2",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@50 [x ~@4 x ~@26]!6 ~@38 [~@21 x ~@2 x ~@4 x ~@2] ~>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@39 A@3 ~@2 B@12 ~@4 B@8 C@3 ~ A@3 D C@3 ~@5 A@11 ~>".pickRestart({
  A: "~@5 x ~@7 x ~@7 x ~@2 x ~@4 x ~@2", B: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", C: "~ x ~ x",
  D: "~@5 x ~@7 x ~@2 x ~@12 x ~@2",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@41 A B C ~@2 D E ~ F ~ F G H@2 ~@7 D E ~@2 D E ~@7 I ~@14 J ~@3 K ~>".pickRestart({
  A: "~@5 x ~@26", B: "~@21 x ~@2 x ~@2 x ~ x ~@2", C: "~@21 x ~@3 x ~@6", D: "~@19 x ~@12", E: "~@19 x ~@9 x ~@2",
  F: "~@24 x ~@4 x ~@2", G: "~@13 x ~@2 x ~@2 x ~@4 x ~@4 x ~@2", H: "~@16 x ~@2 x ~@4 x ~@4 x ~@2", I: "~@3 x ~@28",
  J: "~@19 x ~ x ~@10", K: "~@11 x ~@4 x ~@15",
})).gain(0.48)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@42 A ~@6 A B C ~ D ~@42>".pickRestart({
  A: "~@19 x ~@12", B: "~@29 x ~@2", C: "~ x", D: "~@13 x ~@18",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~@43 [~@29 x ~@2] ~@31 [~@21 x ~@10] ~@20>").gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@39 A ~@2 A ~@12 B A ~@3 A ~@3 A ~@7 A ~@11 A ~@3 A ~@2 A@2 ~@3>".pickRestart({
  A: "x", B: "x ~@4 x ~@26",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct("<~@95 x>").gain(0.64)

// … 5 more lines

More by Celentano