Strudelify

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: edit a riff to change every repeat.

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

// chords · vibraphone · "VIBE/J.GTR"
const vibraphone = note("<A@2 B@2 C D ~@64 E@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@6 f#4@7 d4@5 f#4@6 d4@6 f#4@6 d4@6 f#4@6 d4@6 f#4@6 d4@6 f#4@6 d4@7 f#4@6]/2",
  C: "d4@5 f#4@6 ~ d4@5 f#4@6 d4@6 f#4@7 d4@6 f#4@6", D: "d4@3 f#4@3 d4@3 f#4@3 d4@3 f#4@3 d4@3 f#4@2 ~",
  E: "[~@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@12 ~@12 a3@6 ~@12 f#3@18 ~@39 f#4@3 ~@30 g4@12 ~@3 g4@2, ~@6 f#3@36 ~@12 f#3@36 ~@12 e3@32 ~@34 a4@30 ~@25 a3@24 ~@12 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 ~@13 d3@36 ~@12 d3@42 ~@18 g3@29, ~@24 f#4@31 ~@17 f#4@30 ~@18 e4@30 ~@13 e4@8 ~@3 e4@24 ~@19 d4@30 ~@18 d4@24 ~@6 d4@41, ~@30 d4@25 ~@23 c#4@24 ~@12 b3@12 b3@24 ~@7 c#4@24 c#4@17 ~@7 f#3@24 ~@24 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 I@2 ~ J K@2 L M ~ N ~@4 O ~@3 P ~@3 Q R@2 S@4 ~@2 T@2 U@2 ~ V@2 ~@3 W ~@3 X
  ~@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: "[~@43 d3@12 ~@41]/2",
  J: "~@31 a3@7 ~@10", K: "[~@7 g3@8 ~@16 g3@9 ~@3 g3@10 ~@2 g3@8 ~@16 g3@8 ~@9]/2", L: "~@31 d3@7 ~@4 d3@6",
  M: "~@13 e3@11 ~@7 e3@16 ~, ~@7 g3@13 ~@28", N: "~@43 g3@5", O: "~@31 a3@12 ~@5", P: "~@33 a3@8 ~@7",
  Q: "~@13 e4@3, ~@7 c#4@17", R: "[~@11 f#3@2 ~@11]/2", S: "[~@44 g3@7 ~@29 e3@12 e3@7 ~@41 d3@12 ~@40]/4",
  T: "[~@8 g3@8 ~@16 g3@10 ~@2 g3@10 ~@2 g3@9 ~@15 g3@8 ~@8]/2",
  U: "[~@32 d3@8 ~@4 d3@8 ~@11 e3@11 ~@6 e3@16, ~@28 g3@7 ~@13]/2", V: "[~@15 g3@2 ~@15]/2", W: "~@11 a3@4 ~",
  X: "~@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@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 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 Q R S@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: "~@2 a3@5 ~ b3@6 a3@6 ~ b3@5 a3@6 b3@6 a3@5 ~ b3@4", R: "~@3 a3@5 b3@3 a3@5 ~ b3@3 a3@25 ~@3",
  S: "[~@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 F@7 E F@3 G F H F@2 I J@4 K J@6 K L J@4 M@2 N@12 O N@3 P@2 Q R Q@13 R S ~@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 ~@16 x ~@5 x ~@24",
  E: "x ~@5 x!2", F: "x ~@2 x!2 ~@3", G: "~ x ~@16 x ~@5 x ~@23", H: "x ~@36 x ~@4 x ~@5", I: "x ~@18 x ~@4 x ~@23",
  J: "~ x ~@17 x ~@5 x ~@22", K: "~ x ~@35 x ~@5 x ~@4", L: "~@2 x ~@16 x ~@5 x ~@22", M: "~ x ~@17 x ~@6 x ~@21",
  N: "~ x ~@8 x ~@2 x ~@10", O: "~ x ~@17 x ~@2 x ~", P: "~@3 x ~@16 x ~@5 x ~@21", Q: "~ x ~@5 x ~ x ~@6",
  R: "~ x ~@11 x ~ x", S: "~ 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@4 B C B@7 D B@5 D B@3 E@4 F E@6 F E@7 G H@11 I H@2 J H@2 K L M K@12 L N ~@2
>`.pickRestart({
  A: "~@11 x ~@23 x ~@12", B: "~ x ~ x", C: "~@12 x ~@20 x ~@5 x ~@2 x ~ x ~@3", D: "~@4 x ~@6 x ~ x!3",
  E: "~@13 x ~@23 x ~@10", F: "~@13 x ~@20 x ~@5 x ~@2 x ~@2 x ~", G: "~@13 x ~@24 x ~@9", H: "~@7 x ~@11 x ~@4",
  I: "~@14 x ~@20 x ~@5 x ~@2 x ~@2 x", J: "~@14 x ~@24 x ~@8", K: "~@5 x ~@7 x ~@2", L: "~@5 x ~@6 x ~ x!2",
  M: "x ~@4 x ~@7 x ~@2", N: "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
// … 27 more lines

More by Adriano Celentano