Strudelify

Ti lascio una canzone

Gino Paoli

KeyA majorTempo111 bpm
0:00/0:00
// Ti lascio una canzone — Gino Paoli
// 111 bpm, 4/4, key A 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 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 · "ACOU BASS"
const bass = note(`<
  ~@3 A B C D E F G H I F J C K L M K N@2 B C F O@2 P Q G R I G B S T Q G R I G E B C B C U@2 F G V I F G H I W X I Y Z
  AA G AB AC X I Y Z I AD G E G E AE@2 C I AF Z C I G E C AG@5
>`.pickRestart({
  A: "~@5 g#2@3", B: "g2", C: "f#2", D: "e2 f#2", E: "g#2", F: "e2", G: "a2", H: "d3", I: "b2", J: "a2 g2", K: "b2 a2",
  L: "g2@3 d3", M: "c#3 f#2", N: "g#2/2", O: "g2/2", P: "d3@7 ~ f#2@8", Q: "g2 b2", R: "a#2 f#2", S: "a2@3 c#2",
  T: "d2 f#2", U: "b2/2", V: "d3@3 c#3", W: "e3@7 ~ g#2@8", X: "a2 c#3", Y: "c3 g#2", Z: "c#3", AA: "b2@15 ~",
  AB: "b2@4 b2 c#3 d#3@2", AC: "e3 g#2", AD: "a#2", AE: "c#3/2", AF: "e3@3 d#3", AG: "[~ b2@19 e2@48 ~@12]/5",
})).s("gm_acoustic_bass").gain(0.23)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note("<A B C D ~@42 E ~@28 F ~@14>".pickRestart({
  A: "g2", B: "f#2", C: "e2", D: "a2@5 ~@3", E: "b3", F: "c#4",
})).s("gm_acoustic_bass").gain(0.13)

// chords · piano · "A.PIANO"
const piano = note(`<
  A B@3 C D E@2 F@4 G@6 H@3 I@2 J@3 K@4 L M N O P@4 L Q R S T@2 U@2 V W X Y@3 Z AA AB AC@4 AD AE AF AG AH@4 AD AE AI AJ
  AK@2 AL@3 AM@2 AN@4 AO@7 ~
>`.pickRestart({
  A: "~ d5, d4", B: "[~@16 d4@17 ~@15, ~ d4 ~@6, ~@8 d5@25 ~@15]/3", C: "f#4 ~@3 e5@11 g5, g4@7 ~, ~@2 b4@13 ~",
  D: "~ e5@2 ~ a5@2 ~ c#6@2 a5@7, f#5@2 ~ f#5@2 ~ d6@2 ~@8",
  E: "[~@3 b4@3 ~@7 a4@3 b4@15 ~, g#4@6 e5@5 e5@21, ~@8 a4@5 ~@19]/2",
  F: "[~@2 f#3@4 d4@4 ~@8 f#3@3 ~ d4@3 ~ a4@5 ~ c#4@16 ~@6 [a3,f#4]@2 ~@8, e2@8 a2@8 ~@9 d4@3 ~@4, d4@5 ~@5 a4@11 ~@11 f#4@22 ~@10, ~@16 d4@5 ~@10 a3@23 ~@10, ~@13 a4 ~@2]/4", // D
  G: "[~@26 a4@5 ~ a4@15 ~ a3@3 ~@2 [c#4,e4]@3 ~@5 d#4@2 ~ b4@6 ~@6 [d3,f#4]@4 b3@8 [f#2,a#3,e4]@8, e2@15 ~@9 g2@8 ~@24 a2@8 g2@16 ~@16, d4@6 d4@9 ~ d4@6 d4@9 ~@17 e4@5 ~@3 [d#4,f#4]@5 ~@2 d4@7 [d4,g4,b4]@10 f#4@16, ~@2 f#3@14 ~@2 f#3@13 [f#3,e4]@16 f#3@6 ~@11 d5@10 ~@22, ~@10 a4@16 ~@25 a3@5 ~@3 b3@5 f#4@12 c#4@19 ~]/6", // C#m D F#7 D#m G F#7
  H: "[e4@4 d4@4 e4@4 f#4@3 ~@17 f#5@14 ~@2, a3@7 ~ [a3,c#4]@32 ~@8, ~@15 f#4@5 ~@2 c#5@24 ~@2, ~@15 d4@3 ~@10 d5@18 ~@2, ~@8 [g#3,b4]@15 ~]/3", // A G#m
  I: "[~@6 b4@9 ~@11 d4@2 ~@2 a3@2, g2 f#2, b4@3 ~@7 e5@4 d4@2, ~@2 b3@13 a3@11 [e4,a4]@6, ~@4 e4@10 ~@2 [d4,a4]@6 d5@9 ~]/2", // A5 D5
  J: "[[a3,d4,f#4]@4 [b3,d4,g4]@11 ~ [a#3,e4]@31 ~, e2@15 g3@32 ~]/3", // D G A#dim
  K: "[[d2,a3,d4]@4 d4@2 ~@4 g4 f#4 ~@8 d6@3 ~ [a#2,c#4]@4 ~@2 [a#4,g5]@2, f#4@6 ~@2 f#2@8 g3@10 g3@4 d5@2 [a2,f#5]@16 ~@8 c#4@7 ~, ~@4 [a3,e4]@3 ~ [b3,a4]@15 f#3@7 ~@2, ~@12 d4@16 b4@19 ~ e4@12 ~@4, ~@16 g2@8 [b2,g4]@23 a#3@13 ~@4]/4", // D5 A#m D# D A5 B7 Em
  L: "[b2,a4,f#5]", M: "f#5@3 c#5@3 [a4,c#5]@2, a2, a4@11 ~@5, ~@3 e5@5", N: "[g2,b4,d5]",
  O: "~@4 a3@7 ~ [a3,c#4,e4]@4, a2, ~@2 e3@13 ~", // A
  P: "[[d2,d3,d4,f#4,a4]@4 [d4,a4]@4 ~@12 d6@3 ~ a#2@4 ~@2 [a#4,g5]@2, ~@4 [f#2,e4]@9 g3 b4 d5 [a2,f#5]@8 ~@4 [f#2,c#4]@4, ~@8 [g2,b3,d4,a4]@15 f#3@7 ~@2, ~@16 g3@8 [b2,g4]@23 ~ e4@12 ~@4, ~@20 g4@2 f#4@25 c#4@7 ~@10]/4", // D D5 D# F#7 D F#5 G Em
  Q: "f#5@6 c#5@5 ~ [a4,c#5]@4, a2, a4@11 ~@5, ~@3 e5@5", R: "[b4,d5]@11 ~ e5@2 c#5@2", S: "[a4,d5]@15 ~, b4@13 ~@3",
  T: "[~@7 c#6 ~@3 e5@5, ~@2 c#5@3 a5@3, ~@5 d5@11, ~@6 a5@3 c#6@7, ~ d6]/2",
  U: "[~ f#5, ~ d4@2 a5@5, ~@3 a4@13, ~ c#5@3, ~@5 d5@11]/2", V: "~@7 [a#3,f#4]", W: "[e2,b3,g4]", X: "[a2,d4,g4]@15 ~",
  Y: "[~@8 e4@2 ~@2 [d4,a4]@4 a4@4 e4 ~@11 [b3,g4]@13 ~@3, [d2,a3]@2 e2, d4@5 e4@5 a4 e4@6 ~@7, ~@4 f#4@6 f#4@7 ~@7, ~@4 a4@2 ~@2 d4@5 [d4,a4]@4 ~@7]/3", // D5 Em D5
  Z: "[a2,d4,g4]", AA: "~@8 e4 ~@3 d4@4, [d2,a3], d4@3 ~, ~ [f#4,a4], ~@5 e4@3",
  AB: "[a3,c#4,e4] [b3,d#4,f#4], b1@15 ~", // A B
  AC: "[[e2,b3,e4,g#4]@4 e4@2 ~@4 a4 g#4 ~@8 e6@3 ~ [c3,d#4]@4 ~@2 [c5,a5]@2, ~@8 g#2@8 a3@10 a3@4 e5@2 [b2,g#5]@16 ~@8 d#4@7 ~, ~@4 [b3,f#4]@3 ~ [c#4,b4]@15 g#3@7 ~@2, ~@12 e4@16 c#5@19 ~ f#4@12 ~@4, ~@16 a2@8 [c#3,a4]@23 c4@13 ~@4]/4", // E Cm F E B5 C#7 F#m
  AD: "[c#3,b4,g#5]", AE: "g#5@6 d#5@5 ~ [b4,d#5]@4, b2, b4@11 ~@5, ~@3 f#5@5", AF: "[a2,b4,c#5,e5]",
  AG: "~@4 b3@7 ~ [b3,d#4,f#4]@4, b2, ~@2 f#3@13 ~", // B
  AH: "[[e2,e4,g#4,b4]@4 [e4,b4]@4 ~@12 e6@3 ~ c3@4 ~@2 [c5,a5]@2, ~@4 [g#2,f#4]@9 a3 c#5 e5 [b2,g#5]@8 f#4@6 ~@2, ~@8 [a2,c#4,e4,b4]@15 g#3@7 ~@2, ~@16 a3@8 [c#3,a4]@23 d#4@9 [g#2,d#4]@8, ~@20 a4@2 g#4@25 c4@13 ~@4]/4", // E E5 F G#7 E A F#m G#5
  AI: "[a#4,c#5,e5]@11 ~ f#5@2 d#5@2", AJ: "[b4,e5]@15 ~, c#5@13 ~@3",
  AK: "[~@7 d#6 ~@3 f#5@5, ~@2 d#5@3 b5@3, ~@5 e5@11, ~@6 b5@3 d#6@7, ~ e6]/2",
  AL: "[~@8 g#5@8 ~@7 [c4,g#4], ~@2 d#4@8 e5@2 b5@3 e5@28 ~@5, ~ e4@7 ~@4, ~@3 b4@13 ~@8, ~ d#5@3 ~@2]/3", // Fm
  AM: "[[f#2,c#4,a4]@15 ~ [b2,e4,a4]@16, ~@15 b3@16 ~]/2", // F#m Esus4
  AN: "[~@8 f#4 ~@3 e4@4 b4@4 f#4 ~ f#4@4 ~@6 [c#4,a4]@15 ~ [e4,a4]@15 ~, [e2,b3]@7 ~@9, g#4@5 g#4@2 ~@9, e4@12 ~@4 e4@10 e4@20 ~ b3@16 ~, ~@8 b4@8 ~@6 b4@25 ~@17]/4", // F#m A5 E5
  AO: "[~@8 g#5@2 f#5@2 ~@8 g#5@2 f#5@4 ~@14 g#5@2 f#5@2 ~@9 g#5@2 ~ f#5@4 e5@7 ~@2 e6@43, [a2,c#5]@16 [g#2,b4]@16 a#4@16 b4@7 ~@12 [e2,e5]@45, ~@12 e5@8 f#5 ~@5 e5@14 ~@4 e5@9 ~@15 [g#5,b5]@44, ~@49 a4@20 ~@43]/7", // A G#m E G#m
})).s("gm_piano").gain(0.38)

// chords · piano · "A.PIANO" · soft notes
const piano_soft = note(`<
  ~@4 A ~@3 B C D@2 E F G@2 H I J@3 ~@3 K@2 ~@3 L ~@2 M ~@3 N@2 ~@2 O P Q@2 R@3 S@2 T ~ S@2 T ~@4 U ~@10 V W X@2 ~ Y@2 ~
  Z AA ~ AB AC ~@2 AB AD@2 ~@3
>`.pickRestart({
  A: "~@15 f#5", B: "~@2 g3 ~@5", C: "~@4 g3 ~@11", D: "[~@11 e4 [a3,c#4,e4]@4, d3@3 ~, ~ b2, ~@2 c#4 ~]/2",
  E: "~ g3@3", F: "~@2 g3@5 ~, a2 ~", G: "[~@21 f#3@3 b3@3 ~@2 f#4@3, f#2@3 ~, ~@2 b2 ~]/2", H: "~@5 d5@3", I: "c#3 ~",
  J: "[b2@4 ~@9 f#4@10 ~, c#4 ~ a2@8 ~@2, ~@16 g#2@31 ~, ~@9 d4@3 d4@11 ~, ~@10 f#4@3 ~@11]/3",
  K: "[~@8 d4@23 ~, g2@27 ~@5]/2", L: "~ f#2", M: "a4", N: "[~@15 a#3@13 ~@4]/2", O: "g#2, g#4@11 ~@5", P: "g2",
  Q: "[~@8 c#6 ~@7, ~ c#4@15, ~ d4@7, ~@3 a4@13]/2", R: "[~@32 b1@15 ~, ~ c#4@15 ~@8, ~@28 b2@19 ~]/3",
  S: "[~ b3, ~@15 a3@16 ~]/2", T: "f#4 ~", U: "~ g#2", V: "a#2", W: "a2",
  X: "[~@8 d#6 ~@7, ~ d#4@15, ~ e4@7, ~@3 b4@13]/2", Y: "[~ c#2, c#3, f#5@7 ~]/2", Z: "c#4", AA: "~@5 f#4 ~@2",
  AB: "f#2", AC: "[b2,c#4]", AD: "[~@7 c#5@5 b4@8 ~@12, ~ b2@19 ~@12]/2",
})).s("gm_piano").gain(0.23)

// chords · acoustic guitar steel · "GTR/STRING"
const acoustic_guitar_steel = note(`<
  A B C D E B F@2 G@2 H I G@2 ~ J K L M N@2 O P Q ~@18 R S T U V W@8 ~@16 X Y X Z AA AB@6 ~@8
>`.pickRestart({
  A: "~@2 f#4 d4", B: "a3@2 f#4@3 d4@3", C: "g#3@7 ~ [b3,f#4]@2 ~@2 d4@4",
  D: "~@3 e4@2 d4@2 ~, g3@5 ~@3, ~@2 f#4@3 ~@3", E: "b3@2 f#4 d4", F: "[~@3 e4@7 ~ e4@20 ~]/2",
  G: "[d4@3 ~@5 d4@3 ~@2 a4@3, ~@6 d4@9 ~@7 d4@10, ~@5 a4@8 ~@3]/2", H: "~@2 a3@13 ~, f#4 ~@3", I: "~ d4 a4 ~ e4@4",
  J: "e4 f#4", K: "f#4@3 g4@3 f#4@2", L: "f#4 ~", M: "e4@4 d4@4 e4@3 ~ f#4@4", N: "[~@3 f#4@5, ~@6 e4@23 ~@3]/2",
  O: "b4@4 ~@2 b4@9 ~, ~ e4@3", P: "~@4 [d4,e4]@2 d4@9 ~, a4@15 ~", Q: "~@3 b4", R: "~@6 a4@9 ~, ~ d4@3",
  S: "d5@3 ~@3 a4@9 ~", T: "~@6 a4@9 ~, ~@4 d4@11 ~", U: "a4@3 e4@3 ~@2", V: "~@7 f#3",
  W: "[~@6 d4@15 ~ d4@12 ~@6 [e3,f#3] ~ e3@2 [d3,a3]@3 ~ [d3,a3]@4 f#3@2 e3@4 ~@28 d4@17 ~ [e3,f#3] ~ e3 ~ [d3,a3]@3 ~@2 e4@6 ~@9, b3@15 ~@21 e4@22 ~@6 d4@4 g3@12 ~@4 g3@18 ~@26, d4@6 ~@28 d4@15 ~@3 e3 ~@5 d3@12 d4@14 ~@44, g3@4 g3@11 ~@23 a4@21 ~@7 f#3@14 ~@2 f#3@13 ~@16 f#3@7 ~@10, ~@2 f#3@14 ~@24 a3@4 ~@8 a3@24 ~@28 a3@4 ~@4 b3@7 ~@9]/8", // Esus2 D5 Esus2 D5
  X: "~@6 b4@9 ~, ~@4 e4@11 ~", Y: "e5@3 ~@3 b4@9 ~", Z: "b4@3 [f#4,d#5]@3 ~@2", AA: "~@7 g#3",
  AB: "[~@6 e4@14 ~@2 e4@12 ~@6 [f#3,g#3] ~ f#3 ~ [e3,b3]@3 ~ [e3,b3]@4 g#3@2 f#3@4 ~@28 e4@9 ~, c#4@20 ~@16 f#4@16 f#3 ~@5 e3@12 e4@15 ~@11, e4@6 ~@28 e4@24 ~@6 e4@4 a3@14 ~@2 a3@11 ~, a3@4 a3@13 ~@3 a3@15 ~@3 b4@22 ~@6 g#3@14 ~@2 g#3@13 ~, ~ g#3@7 ~@12 b3@2 ~@4 b3@12 ~@10]/6", // F#sus2 E5
})).s("gm_acoustic_guitar_steel").gain(0.18)

// chords · acoustic guitar steel · "GTR/STRING" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@2 A ~@7 B C ~@2 D ~@2 E F G@2 ~@3 H ~@17 I J K@3 ~ L ~@5 M ~@16 N O P@3 ~ Q ~@12
>`.pickRestart({
  A: "~@7 g#3@2 ~@7", B: "~@6 f#4@9 ~, ~@4 c#4@11 ~", C: "c#4@2 ~@4 [e4,f#4] ~@9", D: "~@4 c#4@2 e4@9 ~",
  E: "~@8 e4@7 ~", F: "d4 ~@15", G: "[b4@23 ~@9]/2", H: "a#4", I: "~ c#4@6 ~",
  J: "[e4,f#4,a4,c#5] ~@3 [d4,a4]@2 d4@9 ~", K: "[~@2 c#4@13 ~ d5@6 c#5@6 [d4,a4]@12 ~@8, ~@5 f#4@2 ~@9]/3",
  L: "~ g3@3, ~ f#3@7", M: "c#4@7 ~@9", N: "~ d#4@6 ~", O: "[f#4,g#4,b4,d#5] ~@3 [e4,b4]@2 e4@9 ~",
  P: "[~@2 d#4@13 ~ e5@6 ~@6 [e4,b4]@12 ~@8, ~@5 g#4@2 ~@9]/3", Q: "~ g#3@7",
})).s("gm_acoustic_guitar_steel").gain(0.11)

// chords · string ensemble 1 · "GTR/STRING"
const string_ensemble_1 = note("<~@25 A@5 B@3 C@5 D@3 ~@13 E@5 F@3 G@8 ~@12 H@5 ~@3>".pickRestart({
  A: "[~@8 g4@2 a4@2 b4@2 d4@2 f#4@8 e4@7 ~@6 f#4@2 [g3,g4]@8 ~ f#3@8 [a3,d5]@7 a#3@8 f#3@8 ~, ~@14 a4@22 g4@2 ~@9 f#4@16 e4@17, ~@16 d5@31 a5@9 ~@24, ~@31 d4@17 ~@32]/5", // G D5
  B: "[b3@15 a3@16 ~ [a3,d4]@16, d4@31 b3@16 ~]/3", // D5
  C: "[e4@4 ~ b4@2 ~@3 [d4,b4,d5]@2 [c#4,e4,c#5,e5]@3 ~@8 [c#4,e5]@4 ~ a3@4 ~@3 g4@2 f#4@2 ~ g3@7 ~ [a4,a5]@7 ~ d5@7 ~ a#3@7 f#3@9, c#4@8 [c#4,a4,c#5]@2 ~@5 [d4,f#4,f#5]@8 e4@8 ~ [b3,d4]@15 f#4@16 [e4,c#6]@17, ~@4 a4@2 ~ a3@2 b3@2 ~@5 a4@21 ~@2 g4@8 f#3@8 d6@8 ~@17, ~@27 d5@21 a3@16 ~@16]/5", // G C#m A F#m D Bm C#m
  D: "[b3@15 a3@16 ~ f#4@16, [d4,b4]@11 ~@5]/3", // G
  E: "[~ a5@2 c#6@2 ~@5 [g#4,e5]@2 [f#4,f#5]@2 e4@2 g#4@8 f#4@8 ~@5 g#4@2 [a3,a4]@8 ~@9 b3@7 c4@8 g#3@8 ~, ~@8 d#6@8 b5@16 ~@15 b5@8 e5@9 ~@16, ~@14 b4@22 a4@2 ~@9 g#4@16 [f#4,d#5]@17, ~@14 b3@18 [e4,e6]@16 [g#3,b4]@9 ~@23]/5", // C#m F# A D#m E G#m
  F: "[c#4@15 b3@16 ~ [b3,e4]@16, [e4,e5]@31 c#4@16 ~]/3", // E5 E
  G: "[f#4@3 b4@2 c#5@2 ~@3 e4@2 [d#4,f#4,d#5,f#5]@3 [e4,g#4,g#5]@8 [d#4,f#5]@4 ~ b3@4 ~@5 g#4@2 ~ a3@7 ~ [b4,b5]@7 ~ e5@7 ~ c4@7 g#3@8 ~ c#4@15 b3@16 ~ g#4@16, d#4@7 [b3,d#4]@2 [c#4,c#5,e5]@2 ~@12 f#4@8 ~ [c#4,e4]@15 g#4@16 [f#4,d#6]@17 [e4,c#5]@33 ~@15, ~@8 [b4,d#5]@2 ~@5 b4@21 a4@2 ~ a4@8 g#3@8 e6@8 ~ d#5@17 ~@30 a#3@17, ~@27 e5@21 b3@16 ~@15 g#5@33 ~@16]/8", // D#m E D#m B C#m D#m C#m B
  H: "[e4@79 ~]/5",
})).s("gm_string_ensemble_1").gain(0.18)

// chords · string ensemble 1 · "GTR/STRING" · soft notes
const string_ensemble_1_soft = note("<~@25 A@2 ~ B@2 C@2 ~@5 D@5 ~@12 E ~@13 F@3 ~@19>".pickRestart({
  A: "[~@5 f#4 e4 a3@9]/2", B: "[a4@8 ~@7 c#5@16 ~]/2", C: "d5/2",
  D: "[~@15 f#5@32 g#3@16 ~ [g3,a3]@12 ~@4, c#5@17 ~@30 d5@29 ~@4, ~@63 d4@13 ~@4]/5", E: "~@3 e6 d#5 ~@3",
  F: "[~@8 [a3,b3]@3 ~, ~@15 e5@28 ~@5, ~@31 e4@13 ~@4]/3", // Asus2
})).s("gm_string_ensemble_1").gain(0.11)

// chords · acoustic guitar nylon · "PRG.CHANGE"
const acoustic_guitar_nylon = note("<A B C D E F G H I@4 J@3 K L M N O ~ P@2 Q@2 ~@65>".pickRestart({
  A: "~@5 e4 ~@2, ~@4 d3@11 ~, ~ g3", B: "~ d3@2 [d3,e4] ~@2 d3@2, f#2@7 ~ f#2@8",
  C: "~@5 e4 ~@2, e2@15 ~, ~ b2@3, ~ b3", D: "~@4 [e3,g3]@5 ~ [g#2,f#3,c4]@5 ~, a2@9 ~@7",
  E: "~@5 e4 ~@2, g2@15 ~, ~@4 d3@11 ~, ~@8 g3@7 ~", F: "~@2 d3@3 ~ [d3,e4]@2 ~@4 d3@4, f#2!2",
  G: "g#3@5 g#3@3 a3@5 ~ a3@2", H: "b3",
  I: "[~@2 f#3@2 ~@10 g3@2 ~@2 f#3@2 ~@12 [a3,c#4]@10 ~@2 c#4@6 ~@4 c#4 ~ c#4@6 ~@2, ~@4 g3@8 f#3@4 ~@4 g3@8 ~@3 f#3@10 ~ a3@7 ~@15, ~@5 a4@7 ~ a4@5 ~@14]/4", // A
  J: "[~ f#3 ~@5 g3 ~ f#3 ~@4 f#3 a3 ~@2 a3@4 ~@2, ~ g3@2 f#3 ~ g3@2 ~ e4@2 ~@2, ~@5 a4@7 ~ a4@5 ~@6, ~@34 f#3@7 ~@7]/3",
  K: "~@3 a3@2 c#4@3 ~@3 b3@2 d#4@3", L: "~@6 e4@5 ~ [a3,c#4]@4, ~@11 f#3@5", M: "b3@2 ~@2 b3@4 a#3@7 ~, ~ c#4@7",
  N: "[f#3,a3]@7 ~", O: "~@4 b3@11 ~", P: "[~@4 e4@11 ~ a4@14 ~@2, g2@15 [a3,d4]@15 ~@2, ~ b3@7 ~@8]/2",
  Q: "[[f#3,a3,d4]@3 ~ d4@6 d4@5 g3@16 ~, ~@4 [g3,b3]@11 ~@17]/2", // D G
})).s("gm_acoustic_guitar_nylon").gain(0.22)

// chords · acoustic guitar nylon · "PRG.CHANGE" · soft notes
const acoustic_guitar_nylon_2 = note("<~@3 A ~@5 B ~ C ~@2 D ~ E ~@2 F@2 ~@3 G ~@65>".pickRestart({
  A: "~ [e3,g3] ~@6", B: "~@12 f#3@3 ~", C: "~@6 f#3 a3", D: "~@3 c#4", E: "~@4 b3@7 ~@5, ~@2 g3@9 ~@5",
  F: "[~ [b3,d4,f#4], ~ f#3@14 ~]/2", G: "e4",
})).s("gm_acoustic_guitar_nylon").gain(0.11)

// chords · acoustic guitar steel · "PRG.CHANGE"
const acoustic_guitar_steel_3 = note(`<
  ~@26 A B@2 C D E F@2 G H@2 I J@2 K L ~@13 M N@2 O P Q R@2 S T@2 U V@2 W X ~@19
>`.pickRestart({
  A: "[f#4,a4,d5]@7 ~ [a4,d5,e5]@8", // D Asus4
  B: "[[g4,b4]@5 ~@5 [b4,d5] a4@4 ~, d5@12 b4@7 ~@13, ~@10 g4@11 ~@11, ~@14 d5@4 c#5@13 ~, ~@16 f#5@15 ~]/2", // G Bm
  C: "a#4 c#5 ~@2 f#4@3 ~, e5@6 c#5@9 ~, ~@4 a#4@11 ~", D: "~@3 d5@5, ~ f#4@7, ~ b4@3", E: "f#5@3 e5@3 c#5@2",
  F: "[~@3 d5@4 ~ a5 c#5@3 [a4,c#5] [b4,d5] [c#5,e5]@2, ~ g4@6 ~@9, ~@4 b4@10 ~ c#5@3 a5@9 ~@5]/2", // A Bm C#m
  G: "[a4,d5,f#5]@7 ~ [a4,e5]@8", H: "[~@5 a4 ~@3 c#5 ~ a4@5, ~@8 d5@11 ~ d5@12, ~@3 g5 f#5@3 ~, ~@7 a4@4 ~@5]/2",
  I: "a#4@11 ~ [e4,c#5]@4", // C#m
  J: "[[d4,b4]@2 ~@4 d5@2 ~@6 f#4@3 ~@5 e5@6 c#5@4, ~ f#4@5 b4@3 f#4@3 ~@4, ~@2 b4@3 d5@5 a4@2 ~@4, ~@4 f#5@7 d5 ~@4]/2", // G
  K: "~ b4, f#5 d5@3, ~ b4@2 f#5@5", L: "~@2 a4 ~ a4@4, d5@5 ~ d5@10, ~ g4@7", M: "[g#4,b4,e5]@7 ~ [b4,e5,f#5]@8",
  N: "[[a4,c#5]@5 ~@5 [c#5,e5] b4@4 ~, e5@12 c#5@7 ~@13, ~@10 a4@11 ~@11, ~@14 e5@4 d#5@13 ~, ~@16 g#5@15 ~]/2", // A C#m
  O: "c5 d#5 ~@2 g#4@3 ~, f#5@3 d#5@4 ~, ~@4 c5@11 ~", P: "~@3 e5@5, ~ g#4@7, ~ c#5@3", Q: "g#5@3 f#5@3 d#5@2",
  R: "[~@3 e5@4 ~ b5 d#5@3 [b4,d#5] [c#5,e5] [d#5,f#5]@2, ~ a4@6 ~@9, ~@4 c#5@10 ~ d#5@3 b5@9 ~@5]/2", // B C#m D#m
  S: "[b4,e5,g#5]@7 ~ [b4,f#5]@8", T: "[~@5 b4 ~@3 d#5 ~ b4@5, ~@8 e5@11 ~ e5@12, ~@3 a5 g#5@3 ~, ~@7 b4@4 ~@5]/2",
  U: "c5@11 ~ [f#4,d#5]@4", // D#m
  V: "[[e4,c#5]@2 ~@4 e5@2 ~@6 g#4@3 ~@5 f#5@6 d#5@4, ~ g#4@5 c#5@3 g#4@3 ~@4, ~@2 c#5@3 e5@5 b4@2 ~@4, ~@8 g#5@13 ~ e5@2 ~@8]/2", // C#m
  W: "~ c#5, g#5 e5@3, ~ c#5@2 g#5@5", X: "~@2 b4 ~ b4@4, e5@5 ~ e5@10, ~ a4@7",
})).s("gm_acoustic_guitar_steel").gain(0.28)

// chords · french horn · "PRG.CHANGE"
const french_horn = note("<~@42 A B@2 C@2 D@2 E@2 F@2 G ~@17 H I@2 J@2 K@2 L@2 K@2 M@7 ~>".pickRestart({
  A: "~ c#4 d4 a4 c#5 d5 a5 c#6", B: "[d6 c#6 a5 e5@6 c#4 d4 a4 c#5 d5 a5@2, c#6 ~@31]/2",
  C: "[f#5@12 ~@3 [a#3,f#4]]/2", D: "[[b3,g4]@15 ~ [b3,d4,g4]@16, ~@15 a3@17]/2", E: "[d2,a3,d4,f#4]/2",
  F: "[[b3,g4]@15 ~ [b3,d4,g4]@16, ~@15 a3@16 ~]/2", G: "[a3,d4,f#4]@15 ~", H: "~ d#4 e4 b4 d#5 e5 b5 d#6",
  I: "[e6 d#6 b5 f#5@6 d#4 e4 b4 d#5 e5 b5@2, d#6 ~@31]/2", J: "[g#5@12 ~@3 [c4,g#4]]/2",
  K: "[[c#4,a4]@15 ~ [c#4,e4,a4]@16, ~@15 b3@17]/2", L: "[e2,b3,e4,g#4]/2",
  M: "[~@8 g#5@2 f#5@2 ~@8 g#5@2 f#5@4 ~@14 g#5@2 f#5@2 ~@9 g#5@2 ~ f#5@4 e5@7 ~@2 e6@43, [a3,c#4,c#5]@16 [g#3,b3,b4]@16 [a#3,a#4]@17 [b3,a4]@19 [g#5,b5]@44, e4@12 e5@8 f#5 ~@5 e5@14 ~@4 e5@9 ~@14 e5@2 ~@43]/7", // A G#m A# B7 G#m
})).s("gm_french_horn").gain(0.11)

// chords · french horn · "PRG.CHANGE" · soft notes
const french_horn_soft = note("<~@82 A@2 B C@4 ~>".pickRestart({
  A: "[~@4 g#4 f#4 ~@4 g#4 f#4@2 e4@3, ~@6 e4@7 ~@3, ~@20 f#4 ~@11]/2", B: "~@4 g#4 f#4 e4@2, f#3, e4@3 ~",
  C: "[~@5 g#4@2 ~ f#4@5 e4@6 ~@2 e5@43, ~ a3@19 [g#4,b4]@44, ~ e4@12 ~@6 e4@45]/4", // G#m
})).s("gm_french_horn").gain(0.06)

// drums · kick
const kick = s("bd").struct("<~@26 A@7 B A@8 C@4 ~ A@6 D E A@7 B A@8 C@4 ~ A@9 F G ~@3>".pickRestart({
  A: "x", B: "x ~@2 x", C: "~ x", D: "x ~@6 x", E: "~@3 x ~@3 x", F: "~ x ~@14", G: "~ x ~@2",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@26 A B@14 ~@6 B@7 ~ C ~@20 B@9 D ~@4>".pickRestart({
  A: "x!2", B: "~ x", C: "x", D: "~@5 x ~@2",
})).gain(0.44)

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~@34 A ~@6 B ~@21 A ~@22 C ~@3>".pickRestart({
  A: "x", B: "~ x", C: "~ x ~@2",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@55 [~ x]!16 ~@19>").gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@54 [~@3 x] ~@35>").gain(0.5)

// drums · hihat
// … 56 more lines

More by Gino Paoli