Strudelify
Una carezza in un pugno cover art

...Adriano

Una carezza in un pugno

Adriano Celentano

KeyD majorTempo90 bpm
0:00/0:00
// Una carezza in un pugno — Adriano Celentano
// 90.4 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 79 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90.4/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass pick · "PICK BASS"
const bass = note(`<
  A@5 B@2 C D E F G D E H I F J E@2 K C D E L G M N O P Q R S T U V S R W X Y Z AA X AB AC AD AE AF AG AH AI AJ AK AH AL
  AM AE AG AN AO AP AQ AR AS AT AU@2 AV AW AX AY AZ BA AZ AX BB@3
>`.pickRestart({
  A: "[d2@11 ~@6 d2@3 ~@3 d2@21 ~@3 g1@14 ~@4 g1@3 ~@3 a1@15 ~@3 a1@3 ~@3 d2@15 ~@3 d2@3 ~@3 d2@16 ~@2 d2@4 ~@2 d2@15 ~@3 d2@4 ~@2 g1@16 ~@3 g1@3 ~@2 d2@15 ~@3 d2@3 ~@3 d2@15 ~@4 d2@3 ~@3]/5",
  B: "d2@15 ~@3 d2@3 ~@3 d2@19 ~@5", C: "f#1@5 ~ f#1 ~ f#1@7 ~", D: "e1@5 ~ e1 ~ e1@7 ~", E: "a1@5 ~ a1 ~ a1@7 ~",
  F: "d2@15 ~@3 d2@2 ~@4 d2@20 ~@4", G: "b1@15 ~@3 b1@2 ~@4 b1@22 ~@2", H: "g1@16 ~@2 g1@3 ~@3 g1@21 ~@3",
  I: "a#1@5 ~ a#1 ~ a#1@7 ~", J: "e2@5 ~ e2 ~ e2@7 ~", K: "d2@15 ~@3 d2@2 ~@4 d2@21 ~@3",
  L: "~ d2@16 ~@2 d2@3 ~@3 c#2@23", M: "~ e2@15 ~@3 e2@3 ~@3 e2@20 ~@3", N: "a1@15 ~@4 a1@3 ~@3 a1@21 ~@2",
  O: "~ g1@16 ~@2 g1@3 ~@3 g1@21 ~@2", P: "~ a#1@16 ~@2 a#1@2 ~@4 a#1@21 ~@2", Q: "~ d2@15 ~@3 d2@3 ~@3 d2@21 ~@2",
  R: "~ e1@14 ~@4 e1@2 ~@4 e1@21 ~@2", S: "~ f#1@15 ~@3 f#1@2 ~@4 f#1@21 ~@2", T: "~ g1@15 ~@3 g1@2 ~@4 g1@19 ~@4",
  U: "~ e1@14 ~@4 e1@3 ~@3 a1@16 ~@2 a1@4 ~", V: "~ d2@15 ~@3 d2@3 ~@3 d2@15 ~@3 d2@3 ~@2",
  W: "~ a1@15 ~@3 a1@3 ~@3 a1@21 ~@2", X: "~@2 d2@15 ~@2 d2@3 ~@3 d2@23", Y: "~ b1@15 ~@3 b1@3 ~@4 b1@22",
  Z: "~ e2@14 ~@4 e2@2 ~@5 e2@11 b1@11", AA: "~@2 a1@14 ~@3 a1@7 b1@12 c#2@9 ~",
  AB: "~@2 f#2@15 ~@3 f#2@2 ~@4 f#2@12 b1@10", AC: "~@2 e2@15 ~@3 e2@2 ~@3 e2@23",
  AD: "~ a1@15 ~@4 a1@2 ~@4 a1@12 e2@10", AE: "~@2 d2@16 ~@2 d2@3 ~@3 d2@22", AF: "~ f#1@8 ~ f#1@2 ~ f#1@11",
  AG: "~@2 e1@15 ~@3 e1@2 ~@4 e1@22", AH: "~@2 a1@15 ~@3 a1@3 ~@3 a1@21 ~", AI: "~ d2@8 ~ d2 ~@2 c#2@11",
  AJ: "~@2 b1@15 ~@3 b1@2 ~@4 b1@22", AK: "~@2 e2@15 ~@3 e2@3 ~@3 e2@21 ~", AL: "~@2 g1@16 ~@2 g1@3 ~@3 g1@21 ~",
  AM: "~@2 a#1@15 ~@3 a#1@2 ~@4 a#1@21 ~", AN: "~@3 f#1@15 ~@2 f#1@2 ~@5 f#1@20 ~",
  AO: "~@2 g1@15 ~@4 g1@2 ~@4 g1@19 ~@2", AP: "~@3 e1@14 ~@4 e1@4 ~@2 a1@15 ~@3 a1@3",
  AQ: "~@3 d2@15 ~@3 d2@4 ~@2 d2@14 ~@4 d2@3", AR: "~@3 f#1@15 ~@3 f#1@2 ~@4 f#1@20 ~", AS: "~ e1@5 ~ e1 ~ e1@7",
  AT: "~@3 a1@15 ~@3 a1@2 ~@4 a1@21", AU: "[~@3 d2@15 ~@3 d2@2 ~@4 d2@24 b1@15 ~@2 b1@3 ~@4 b1@21]/2",
  AV: "~@3 e2@14 ~@4 e2@2 ~@4 e2@11 b1@10", AW: "~@3 a1@14 ~@4 a1@6 b1@12 c#2@9", AX: "~ d2@5 ~ d2 ~ d2@7",
  AY: "~ g1@5 ~ g1 ~ a1@5 ~ a1", AZ: "~@3 d2@15 ~@3 d2@3 ~@3 d2@16 ~@2 d2@3",
  BA: "~@3 d2@15 ~@3 d2@4 ~@2 g1@16 ~@2 g1@3", BB: "[~ d2@40 ~@7]/3",
})).s("gm_electric_bass_pick").gain(0.19)

// chords · vibraphone · "VIBE/J.GTR"
const vibraphone = note("<A@4 B C ~@64 D@8 ~>".pickRestart({
  A: "[d4@5 f#4@6 d4@6 f#4@7 d4@5 f#4@6 d4@6 f#4@6 d4@6 f#4@6 d4@7 f#4@5 ~ d4@5 f#4@6 d4@6 f#4@7]/2",
  B: "d4@5 f#4@6 ~ d4@5 f#4@6 d4@6 f#4@7 d4@6 f#4@6", C: "d4@3 f#4@3 d4@3 f#4@3 d4@3 f#4@3 d4@3 f#4@2 ~",
  D: "[~@95 f#4@32 ~, ~ d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@4 d4@32 ~@3, ~@3 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 f#4@4 ~@33]/8",
})).s("gm_vibraphone").gain(0.36)

// chords · electric guitar jazz · "VIBE/J.GTR"
const electric_guitar_jazz = note(`<
  ~@6 A@6 B C D@2 E F G H I@7 J K@2 L M@3 N@8 O@3 P@5 Q R@4 S@3 T@3 U V W@3 X Y@3 ~@9
>`.pickRestart({
  A: "[~@14 f#3@4 ~@4 c#4@2 ~@6 f#3@4 ~@12 e3@4 ~@4 e4@2 ~@6 a3@4 ~@4 a3@2 ~@4 f#3@6 ~@13 f#4, ~@3 f#3@18 ~@6 f#3@18 ~@6 e3@16 ~@20 e4@12 ~@9 d4@15 ~@9 d4@9 e4@3, ~@12 a3@24 a3@19 ~@5 a3@24 a3@18 ~@6 g3@24 ~@18 a3@36 ~@12 d3@36 ~@12 d3@42, ~@24 f#4@31 ~@17 f#4@30 ~@18 e4@30 ~@18 a4@30 ~@24 a3@24 ~@12 b3@12 b3@18, ~@30 d4@25 ~@23 c#4@24 ~@12 b3@12 b3@24 ~@6 c#4@19 ~@5 c#4@17 ~@7 f#3@24 ~@24 f#3@24 f#3@12]/6",
  B: "~@10 g4@4 ~ g4, g4@5 ~@2 f#4, ~ d4@7, ~ b3@3, ~@3 g3@5",
  C: "~@9 a3@6 ~@3 [c#4,a4]@3 a3@2 ~, a4@3 ~, ~ e4@5 ~@2, ~@12 c#4@23 ~@13", // F#m
  D: "[~@5 g3 ~ g3@2 g3 ~ g3 ~@3 g3, ~@12 g4@19 ~@5 g4@10 ~@14 g4@24 g4@12, ~@24 d4@31 ~@17 d4@24, ~@13 g3@2 ~]/2",
  E: "~@3 a3, f#4@3 f#3@5, ~ d4@7", F: "~@3 b3 ~@3 d3, b3@3 ~ d4@4, ~ g3@2 g3, ~@5 b3@3",
  G: "c#4@3 ~ e4@2 a4@2, ~@9 c#4@5 ~@10",
  H: "~@15 a3@3 ~@3 a3@2 ~, g4@13 ~@11, ~@3 a3@10 ~@11, ~@6 e4@7 ~@5 e4@6, ~@18 c#4@19 ~@11",
  I: "[~@42 f#3@12 ~@12 c#4@6 ~@18 f#3@12 ~@36 e3@12 ~@37 a3@11 ~@12 a3@6 ~@12 f#3@18 ~@40 f#4@3 ~@30 g4@12 ~@3 g4@2, ~@6 f#3@36 ~@12 f#3@36 ~@12 e3@32 ~@34 a4@30 ~@24 a3@24 ~@13 b3@12 b3@12 e4@6 g4@30 ~@12 f#4@5, ~@12 a3@24 a3@19 ~@5 a3@24 a3@18 ~@6 g3@24 ~@18 a3@36 ~@12 d3@36 ~@13 d3@42 ~@18 g3@29, ~@24 f#4@31 ~@17 f#4@30 ~@18 e4@30 ~@13 e4@8 ~@3 e4@24 ~@18 d4@30 ~@19 d4@24 ~@6 d4@41, ~@30 d4@25 ~@23 c#4@24 ~@12 b3@12 b3@24 ~@7 c#4@24 c#4@17 ~@6 f#3@24 ~@25 f#3@24 f#3@12 ~@12 b3@35]/7",
  J: "~@19 a3@12 ~@6 [c#4,a4]@6 a3@4 ~, ~ a4@36 ~@11, ~@7 e4@29 ~@12, ~@13 c#4@23 ~@12", // F#m
  K: "[~@19 g3@6 ~@12 d4@21 ~@9 g3@6 ~@18 g3@5, ~@13 d4@21 ~@27 d4@21 ~@3 d4@11, ~@25 g4@39 ~@9 g4@23]/2",
  L: "~@19 d3@12 ~@6 d4@11, ~@2 d4@35 ~@11, ~@7 a3@31 ~@10, ~@13 f#3@25 ~@10",
  M: "[~ b3@18 ~@24 d4@7 ~@29 c#4@12 ~@3 c#4@3 ~@36 d4@11, ~@19 e4@28 ~@3 c#4@29 ~@12 b3@6 d4@18 d4@18 ~@11, ~@55 a3@42 ~@6 b3@24 b3@17, ~@61 f#3@36 ~@13 g3@29 ~@5]/3",
  N: "[~ d4@18 c#4@6 b3@12 c#4@10 ~@3 f#4@26 ~@20 c#4 c#4@45 ~@4 g4@48 ~@17 a3@12 ~@12 a3@4 ~@98 g4@19 g4@24 f#4@3 g4, ~@47 a3@29 ~@18 f#3@40 ~@8 g3@53 ~@11 c#4@35 d4@46 a3@47 g3@50, ~@49 d4@29 ~@18 a3@38 ~@9 b3@52 ~@5 e4@29 [e4,a4]@13 f#4@47 c#4@46 b3@49, ~@144 e4@50 a4@35 ~@10 a3@47 f#3@50 e4@48, ~@145 f#4@24 ~@23]/8", // A5
  O: "[~@20 a3@10 ~@14 a3@3 ~@2 f#4@45 ~@3 f#4@43 e4@3 f#4, ~ a4@17 ~ a4@5 d4@24 c#4@22 ~@2, ~@8 e4@43 ~@43 f#3@46 ~@4, ~@14 c#4@23 ~@10 a3@48 a3@46 ~@3]/3",
  P: "[~@20 g3@24 f#4@3 g4@3 ~@42 a3@7 ~@17 d4@6 ~@12 a3@13 ~@41 f#3@12 ~@12 d4@6 ~@11 b3@11, ~ g4@46 ~@3 a4@37 a4@12 ~@23 f#4@25 ~@22 f#4@24 ~@25 g4@22, ~@8 d4@39 ~@9 e4@31 ~@23 a3@23 ~@25 a3@22 ~@2 a3@11 ~@13 b3@23 ~@11, ~@14 b3@33 ~@21 a3@24 ~@12 f#3@31 ~@17 f#3@31 ~@17 g3@36 ~@4, ~@128 d4@20 ~@15 c#4@10 ~@3 c#4@23 ~@24 d4@17]/5",
  Q: "~@10 e3@6 ~@3 [a3,e4]@5, ~@3 e4@35 ~@10, ~ c#4@5, ~@7 a3@12 ~@5", // A5
  R: "[~@19 a3@8 ~@11 f#3@17 ~@13 b3@6 ~@18 e4@3 f#4@3 ~@13 b3@5 ~@26 g4@4 ~@12 c#4@6 [a3,a4]@18 ~ a3@9, ~@8 d3@32 ~@16 d3@41 ~@95, ~@14 f#3@22 ~@27 f#3@23 f#3@10 ~@20 [g3,g4]@29 ~@47, ~@27 d4@29 ~@18 d4@22 ~@3 g4@17 ~@24 f#4@5 ~ a4@14 ~@32, ~@32 a3@24 ~@24 b3@16 ~@9 d4@29 ~@18 e4@30 [e4,a4]@10]/4", // A G A5
  S: "[~@20 g3@6 ~@12 d4@21 ~@33 g3@7 ~@17 d3@12 ~@7 d4@9, ~@14 d4@21 ~@28 d4@20 ~@3 d4@12 ~ d4@36 ~@9, ~@26 g4@39 ~@4 g3@8 ~@27 a3@31 ~@9, ~@74 g4@24 ~@12 f#3@25 ~@9]/3",
  T: "[~@2 b3@18 ~@24 d4@7 ~@30 c#4@11 ~@3 c#4@3 ~@37 d4@9, ~@20 e4@28 ~@3 c#4@30 ~@11 b3@6 d4@18 d4@18 ~@10, ~@56 a3@42 ~@7 b3@24 b3@15, ~@62 f#3@36 ~@13 g3@30 ~@3]/3",
  U: "~@3 d4@17 c#4@6 b3@13 c#4@9", V: "~@3 f#4@26 ~@19, a3@29 ~@19, ~ d4@14 ~@9",
  W: "[~@2 c#4 c#4@44 ~@4 g4@48 ~@18 a3@12 ~@6 [e4,a4]@6 a3@3, f#3@40 ~@7 g3@52 a4@35 ~@10, ~ a3@38 ~@9 b3@52 ~@11 c#4@33, ~@50 e4@50 ~@5 e4@30 ~@9]/3", // A5
  X: "~ f#4@15, ~ a3@47, ~ d4@23",
  Y: "[~@50 g4@19 g4@24 f#4@3 g4@3 ~@19 a3@10 ~@16, f#3@47 g3@50 ~@47, ~ a3@47 b3@49 ~@14 c#4@23 ~@10, ~@2 c#4@48 e4@47 ~@47, ~@3 f#4@48 ~@48 a4@34 ~@11]/3",
})).s("gm_electric_guitar_jazz").gain(0.24)

// chords · electric guitar jazz · "VIBE/J.GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@6 A ~ B@2 C@2 ~ D E ~ F G H ~ A ~ B@2 C@2 ~ I J@2 K L ~ M ~@4 N ~@3 O ~@3 P Q@2 R@4 ~@2 S@2 T@2 ~ U@2 ~@3 V ~@3 W
  ~@9
>`.pickRestart({
  A: "~@3 d4@2 ~@3", B: "[~@6 g3@3 ~@7]/2", C: "[~@7 d3@2 ~@7]/2", D: "~@15 a3@4 ~@5", E: "~@3 g3@5 ~ g3@6 ~@9",
  F: "~@5 d3@2 d3, ~ a3@2 ~", G: "~ d3@6 ~", H: "~@12 a3@13 ~@5 a3@7 ~@11, ~@6 e3@19 ~@23", I: "~@31 a3@7 ~@10",
  J: "[~@7 g3@8 ~@16 g3@9 ~@3 g3@10 ~@2 g3@8 ~@16 g3@8 ~@9]/2", K: "~@31 d3@7 ~@4 d3@6",
  L: "~@13 e3@11 ~@7 e3@16 ~, ~@7 g3@13 ~@28", M: "~@43 g3@5", N: "~@31 a3@12 ~@5", O: "~@33 a3@8 ~@7",
  P: "~@13 e4@3, ~@7 c#4@17", Q: "[~@11 f#3@2 ~@11]/2", R: "[~@44 g3@7 ~@29 e3@12 e3@7 ~@40 d3@12 ~@41]/4",
  S: "[~@8 g3@8 ~@16 g3@10 ~@2 g3@10 ~@2 g3@9 ~@15 g3@8 ~@8]/2",
  T: "[~@32 d3@8 ~@4 d3@8 ~@11 e3@11 ~@6 e3@16, ~@28 g3@7 ~@13]/2", U: "[~@44 g3@7 ~@45]/2", V: "~@11 a3@4 ~",
  W: "~@17 a3@4 ~@3",
})).s("gm_electric_guitar_jazz").gain(0.16)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
  A@6 B C@3 D@4 E@2 F@2 G@2 H@4 I J K@3 ~ L@2 M N O P@8 Q R S@2 T@4 U V W@3 X@3 Y Z AA AB@8 ~@2 AC AD@5 ~
>`.pickRestart({
  A: "[a4@5 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 ~@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@7, ~@107 d6@12 a5@12 f#5@11 ~ a5@11 ~ d5@12 g5@12 b5@12 a4@7 ~@90, ~@64 a5@25 ~@7]/6",
  B: "~@11 [d4,d5]@12 [f#4,f#5]@25, ~@11 [a3,a4]@37", // D F# A
  C: "[~@11 [a3,a4]@12 [c#4,c#5]@12 [d4,d5]@12 [c#4,e5]@24 [b3,d5]@24 ~@36 a2@13, ~@95 [a3,c#5]@49]/3", // A C# D C#m Bm A
  D: "[~@5 d3@5 ~ d3@6 c#3@5 ~ c#3@6 b2@5 ~ b2@6 a2@6 b2@48 e3@48 a3@48 ~]/4",
  E: "[[b4,d5,b5,d6]@2 ~@4 [d5,g5,d6]@8 ~@4 [b4,d5,g5,b5,d6]@9 ~@3 [b4,d5,g5,d6]@8 ~@4 [b4,g5,b5,d6]@2 ~@3 [a#4,d5,f5,a5,a#5,d6]@3 ~@4 [a#4,d5,f5,a5,a#5,d6]@6 ~@6 [a#4,d5,f5,a5,a#5,d6]@25 ~@5, g5 ~@4 [b4,b5]@9 ~@15 b5@8 ~@4 d5@2 ~@53]/2", // Bm G5 G A#maj7 B
  F: "[[a3,a4,d5,f#5] [e3,b4,e5,g5], d4]/2", G: "[a3,c#4,e4,a4]/2",
  H: "[~@48 c#5@33 d5@14 g5@25 ~@18 e5@3 ~@3 c#5@24 d5@12 c#5@12, [f#3,a3]@94 ~ [g3,b3]@48 [a3,c#4]@48 ~, d4@46 ~ c#4@48 ~@36 e3@59 ~@2, ~@23 f#5@30 ~@67 d5@20 ~ d5@4 ~@47]/4", // F#m G A
  I: "~@6 [a3,d4,f#4]@10 ~@2 [a3,d4,f#4]@3 ~@9 [a3,d4,f#4]@10 ~@2 [a3,d4,f#4]@3 ~@3, [d3,d5]@29 ~@19, ~ c#3, ~@25 c#5@23", // D
  J: "~@6 [b3,d4,f#4]@11 ~ [b3,d4,f#4]@3 ~@3 [a#2,a#4]@6 b4@6 [c#3,c#5]@6 [b3,d4,f#4]@3 ~@3, [b2,b4]@12 ~@3 [b2,b3,d4,f#4]@5 ~ [b2,b4]@3", // Bm A# C# Bm B Bm B
  K: "[~@6 [b3,e4,g4]@10 ~@2 [b3,e4,g4]@3 ~@9 [b3,e4,g4]@9 ~@3 [b3,g4]@6 [c#4,a4]@48 ~@48, [b2,b4]@25 ~@17 e4@55 ~@47]/3", // Em F#m B
  L: "[d3@12 e3@6 f#3@5 a3@7 g3@6 f#3@6 g3@6]/2", M: "a3@2 b3 c#4", N: "e4@12 d4@13 c#4@9 b3@12 ~@2",
  O: "a3@22 c#3@8 ~ d3@6 ~@6 [a3,a4]@5, ~@37 e3@11", // A
  P: "[~ [d4,d5]@6 [e4,e5]@6 [f#4,f#5]@6 [e4,e5]@6 [f#4,f#5]@17 ~@7 [f#4,f#5]@6 [c#4,c#5]@12 [b3,b4]@6 [c#4,c#5]@17 ~@7 [e4,e5]@6 [f#4,f#5]@6 [g4,g5]@6 [f#4,f#5]@6 [g4,g5]@17 ~@13 [e4,e5]@41 ~@25 f#5@23 ~@24 c#4@11 ~ d5@11 ~@2 g5@24 ~@18 e5@3 ~@3 c#5@24 d5@12 c#5@11, ~ f#3@95 g3@48 a3@97 ~@46 g3@48 ~ a3@48, ~ d3@47 c#3@49 e3@97 ~@46 b3@25 ~@10 d4@12 ~@37 b3@12 ~@48, ~@42 e5@8 ~@41 b4@8 ~@39 a5@7 [f#4,f#5]@10 ~@37 f#3@95 e3@97, ~@43 e4@8 ~@39 b3@8 ~@41 a4@8 ~@94 c#5@35 ~@37 d5@20 ~ d5@4 ~@46]/8", // D E F# E F# C# B C# …
  Q: "~@25 [f#3,f#5]@23", R: "~ c#5@35 ~ d5@11, c#3@3 b2",
  S: "[~ g5@24 d5@19 e5@2 ~@3 c#5@24 d5@12 c#5@11, e3@25 b3@23 a3@48, ~@23 d5@2 ~@23]/2",
  T: "[~@50 c#5@32 ~@2 d5@11 ~ g5@25 ~@19 e5@2 ~@3 c#5@24 d5@12 c#5@11, ~@2 [f#3,a3]@95 ~@35 e3@59 ~, ~@2 d4@46 c#4@48 ~@25 d5@20 ~ d5@4 ~@46, ~@24 f#5@30 ~@41 [g3,b3]@48 [a3,c#4]@48 ~]/4", // F#m G A
  U: "~@8 [a3,d4,f#4]@10 ~ [a3,d4]@3 ~@9 [a3,d4]@10 ~@2 [a3,d4,f#4]@3 ~@2, ~ [d3,d5]@14 f#4@5 ~@4, ~@18 f#4@3 ~@5 [c#3,c#5]@22", // D D5 D C#
  V: "~@7 [b3,d4,f#4]@10 ~@2 [b3,d4,f#4]@3 ~@3 [a#2,a#4]@6 ~@6 [c#3,c#5]@6 [b2,f#4,b4]@5, ~ [b2,b4]@25 ~@5 [b2,b4]@8 ~@9, ~@32 [b3,d4,f#4]@10 ~ [b3,d4]@2 ~@3", // Bm A# C# B5 B Bm
  W: "[~@7 [b3,e4,g4]@10 ~@2 [b3,e4,g4]@3 ~@10 g4@9 ~@2 [b3,g4]@6 [c#4,a4]@49 ~ [b4,g5,b5,d6]@2 ~@3 [b4,d5,g5,b5,d6]@8 ~@4 [b4,d5,g5,b5,d6]@10 ~@2 [b4,d5,g5,b5,d6]@9 ~@2 [b4,g5,b5,d6]@4 ~, ~ [b2,b4]@26 ~@4 [b3,e4]@10 ~@2 e4@55 ~ d5 ~@39 d5@2 ~@3]/3", // Em F#m G B E5
  X: "[~ [a#4,d5,f5,a5,a#5,d6]@3 ~@4 [a5,d6]@8 ~@3 [a#4,f5,a#5,d6]@30 d3@24 e3@12 f#3@11 ~@13 g3@12 f#3@12 g3@11, ~@7 [a#4,d5,f5,a#5]@8 ~@4 [d5,a5]@77 a3@15 ~@33, ~@49 f#5@47 g5@48, ~@97 [e5,b5]@47]/3", // A#maj7 D5 A# D5 E5
  Y: "~@25 b3@12 c#4@11, ~ f#5@47, ~ a3@25 ~@22, ~ [a5,c#6]@23", // A
  Z: "~@14 d4@11 c#4@11 b3@12, ~ e4@13 ~@34, ~ [g5,b5,d6]@23", // G
  AA: "~ [b4,d5]@11 ~@4 d3@3 ~@3 [a3,a4]@2, ~ a3@23 c#3@9 ~@5 e3@10, ~ g4@21 ~@2, ~@25 a4@19 ~@4, ~@13 c#5@11", // Bm A
  AB: "[~@2 [d4,d5]@6 [e4,e5]@6 [f#4,f#5]@6 [e4,e5]@6 [f#4,f#5]@18 ~@6 [f#4,f#5]@6 [c#4,c#5]@12 [b3,b4]@6 [c#4,c#5]@18 [b3,b4]@6 [e4,e5]@6 [f#4,f#5]@6 [g4,g5]@6 [f#4,f#5]@6 [g4,g5]@17 ~@7 [f#4,f#5]@7 [e4,e5]@41 ~@71 c#4@12 ~ d5@11 ~ g5@24 ~@24 c#5@24 d5@12 c#5@10, ~@2 f#3@96 g3@47 a3@96 b3@25 ~@11 d4@12 g3@46 d5@4 ~@45, ~@2 d3@47 c#3@50 ~@41 [a4,a5]@9 ~@45 f#3@95 e3@95, ~@44 [e4,e5]@8 ~@46 e3@97 ~@23 f#5@30 ~@77 b3@12 a3@47, ~@242 c#5@35 ~@37 d5@19 e5@4 ~@47]/8", // D E F# E F# C# B C# …
  AC: "~@5 d6@4 a5@4 f#5@3", AD: "[~@3 a5@11 ~ d5@12 g5@12 b5@12 ~@96 [f#3,a3,d4]@51 ~@42, ~@17 a5@49 ~@14]/5",
})).s("gm_string_ensemble_2").gain(0.14)

// chords · string ensemble 2 · "STRINGS" · soft notes
const string_ensemble_2_soft = note("<~@10 A@4 ~@14 B C@3 D E F ~@35 G@7 ~@2>".pickRestart({
  A: "[~@5 d5@12 c#5@12 b4@12 a4@4 ~@50 g4@46 ~@3 e4@48, ~@47 [b4,d5]@96 [a4,c#5]@49]/4", // Bm A
  B: "~ [b4,g5,b5,d6]@2 ~@4 [d5,g5,d6]@8 ~@3 [b4,d5,g5,b5,d6]@10 ~@2 [b4,d5,g5,b5,d6]@9 ~@3 [b4,d5,g5,b5,d6]@3 ~@3, ~ d5 ~@4 [b4,b5]@8 ~@34", // G G5 G B
  C: "[[a#4,d5,f5,a5,a#5,d6]@3 ~@3 [a#4,d5,f5,a5,a#5,d6]@8 ~@4 [a#4,f5,a#5,d6]@30 f#5@46 ~@2 [e5,b5]@48, ~@9 [d5,a5]@38 g5@25]/3", // A#maj7 A# E5 D5
  D: "[f#5,a5,c#6]", E: "~ [g5,b5,d6]@47", F: "~ [b4,d5]@24 c#5@23, ~ g4@42 ~@5, ~@25 a4@18 ~@5",
  G: "[~@3 a4@5 b4@7 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@5 b4@7 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@5 b4@7 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@6 a4@6 b4@7 ~@44]/7",
})).s("gm_string_ensemble_2").gain(0.05)

// chords · piano · "PNO/TRMBNE"
const piano = note("<A@4 B@2 ~@64 C@6 D@3>".pickRestart({
  A: "[[a3,d4,f#4]@47 [b3,d4]@24 [c#4,e4]@24 [a3,d4,f#4]@30 [f#3,a3,d4]@43 [b3,d4]@24]/4", // D Bm C#m D Bm
  B: "[d4@54 ~@12 a3@6 ~@12 d4@11 ~, a3@66 ~@6 [f#3,e4]@23 ~, f#4@30 f#4@7 ~@11, ~@27 [d4,a4]@10 ~@11]/2", // F#7 D5
  C: "[~@4 f#3@46 ~ [g3,b3]@24 e3@24 ~@66 f#3@4 ~@2 [g3,b3]@24 ~@48 d3@45, ~@3 d3@71 ~@25 f#3@60 a3@12 ~@24 f#3@42 f#3@51, ~@3 [a3,d4]@47 ~@25 a3@78 d4@17 ~@25 a3@36 a3@57, ~@100 d3@122 ~@3 d4@63]/6", // G D5
  D: "[~@3 [a2,d3,f#3]@115 ~@26]/3", // D
})).s("gm_piano").gain(0.36)

// other · trombone · "PNO/TRMBNE"
const trombone = note("<~@18 A B ~@3 C ~@2 D E F G ~ H I J K ~@18 L M N O P@2 Q R@2 ~@17>".pickRestart({
  A: "~@30 c#5@5 ~ d5@5 ~ e5@6", B: "a5@4 ~@8 b5@6 a5@3 ~@15 [a5,a6]@4 ~@8",
  C: "~@28 [a3,a4]@2 ~@2 [a3,a4]@3 ~@2 [a3,a4]@11", D: "~ e4@13 ~@5 e4@29", E: "~ a4@14 ~@4 a4@25 ~@4",
  F: "~ [g4,b4,d5]@2 ~@4 [g4,b4,d5]@7 ~@5 [g4,b4,d5]@8 ~@4 [g4,b4,d5]@10 ~@2 [g4,b4,d5]@3 ~@2", // G
  G: "~ [f4,a#4,d5] ~@5 [f4,a#4,d5]@8 ~@4 [f4,a#4,d5]@26 ~@3", H: "~ a3@5 ~ b3@5 ~ a3@6 b3@5 ~ a3@6 b3@6 a3@5 ~ b3@5",
  I: "~ a3@6 b3@2 ~ a3@5 ~ b3@3 a3@25 ~@4", J: "~@25 a4@5 ~ b4@5 ~ a4@5 ~ b4@5", K: "~ a4@5 ~ b4@3 a4@4 ~@2 b4@3 a4@29",
  L: "~@2 e4@13 ~@5 e4@28", M: "~@2 a4@14 ~@4 a4@25 ~@3",
  N: "~@2 [b4,d5]@2 ~@4 [g4,b4,d5]@8 ~@5 [b4,d5]@8 ~@3 [g4,b4,d5]@10 ~@2 [g4,b4,d5]@2 ~@2, ~@2 g4 ~@17 g4@8 ~@20", // Bm G Bm G
  O: "~@2 [f4,a#4,d5] ~@5 [f4,a#4,d5]@8 ~@4 [f4,a#4,d5]@25 ~@3", P: "~@2 a3@5 ~ b3@6 a3@6 b3@6 a3@6 b3@6 ~ a3@5 b3@4",
  Q: "~@3 a3@5 b3@3 a3@5 ~ b3@3 a3@25 ~@3",
  R: "[~@2 a4@5 ~@2 b4@5 ~ a4@5 ~ b4@6 a4@5 ~ b4@5 ~ a4@5 ~ b4@6 a4@5 ~ b4@3 a4@4 ~@2 b4@3 a4@27]/2",
})).s("gm_trombone").gain(0.2)

// other · trombone · "PNO/TRMBNE" · soft notes
const trombone_soft = note(`<
  ~@30
  [~ a3@5 ~ b3@5 ~ a3@6 b3@6 a3@6 b3@6 a3@5 ~ b3@5]
  ~@2
  [~ a4@5 ~ b4@5 ~ a4@5 ~ b4@6 ~@23]
  ~@45
>`).s("gm_trombone").gain(0.1)

// drums · kick
const kick = s("bd").struct("<A B@2 C D E D@7 E D@5 F G@7 H G@6 H G@3 I@16 J I@3 K I K L K@13 L M ~@2>".pickRestart({
  A: "x ~@16 x ~@5 x ~@23 x", B: "~@17 x ~@5 x ~@23 x", C: "~@17 x ~@5 x ~@24", D: "x ~@2 x!2 ~@3", E: "x ~@5 x!2",
  F: "x ~@36 x ~@4 x ~@5", G: "~ x ~@17 x ~@5 x ~@22", H: "~ x ~@35 x ~@5 x ~@4", I: "~ x ~@8 x ~@2 x ~@10",
  J: "~ x ~@17 x ~@2 x ~", K: "~ x ~@5 x ~ x ~@6", L: "~ x ~@11 x ~ x", M: "~ x ~@14",
})).gain(0.32)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@5 A ~@7 A ~@5 A ~@7 B ~@6 B ~@19 C ~@6 D ~@13 D ~@3>".pickRestart({
  A: "~@4 x!2 ~@2", B: "~@25 x ~@5 x ~@16", C: "~@13 x ~@2 x ~@7", D: "~@9 x ~ x ~@4",
})).gain(0.14)

// drums · snare
const snare = s("sd").struct("<A@2 B@3 C B@7 C B@5 C B D@6 E D@6 E D@10 F@9 G F@6 H I J@12 H K ~@2>".pickRestart({
  A: "~@11 x ~@23 x ~@12", B: "~ x ~ x", C: "~@4 x ~@6 x ~ x!3", D: "~@13 x ~@23 x ~@10",
  E: "~@13 x ~@20 x ~@5 x ~@2 x ~@2 x ~", F: "~@7 x ~@11 x ~@4", G: "~@14 x ~@20 x ~@5 x ~@2 x ~@2 x",
  H: "~@5 x ~@6 x ~ x!2", I: "x ~@4 x ~@7 x ~@2", J: "~@5 x ~@7 x ~@2", K: "x",
})).gain(0.32)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@5 A ~@7 A ~@5 B ~@7 C ~@6 C ~@19 D ~@6 E ~@13 E ~@3>".pickRestart({
  A: "~@8 x!3 ~ x ~@3", B: "~@24 x ~@2 x ~@2 x ~@6 x ~@10", C: "~@25 x ~@2 x ~@2 x ~@5 x ~@10",
  D: "~@26 x ~@2 x ~@2 x ~@5 x ~@9", E: "~@9 x!3 ~ x ~@2",
})).gain(0.09)

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

// drums · crash
const crash = s("cr").struct(`<
  A B ~@2 A ~ A ~@3 A ~@3 A ~ A@3 ~ C ~@3 C ~@3 C ~ C ~ C@2 ~ C ~@3 C@2 ~@6 D ~@3 D ~@3 D ~ E ~ E@2 ~ E ~@3 E@2 ~@2 E ~
  E ~ E ~ E ~@2
>`.pickRestart({
  A: "x", B: "~@47 x", C: "~ x ~@46", D: "~ x ~@22", E: "~ x ~@14",
})).gain(0.27)
// … 8 more lines

More by Adriano Celentano