Strudelify

Le tue mani su di me

Antonello Venditti

KeyC majorTempo65 bpm
0:00/0:00
// Le tue mani su di me — Antonello Venditti
// 65 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 63 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · synth strings 1 · "TAPPETO"
const synth_strings_1 = note("<A@3 B@7 C@6 D@8 E@6 F@6 G@8 H@6 I@5 J@8>".pickRestart({
  A: "[[c2,c3,g3,c4,e4]@31 ~ [f3,a3,c4]@31 [c2,c3,g3,c4,e4]@33, ~@31 [f2,e4]@32 ~@33]/3", // C F C Fmaj7
  B: "[[f2,f3,a3,c4,e4]@31 [c2,c3,g3,c4,e4]@32 [f2,f3,a3,c4,e4]@32 ~@16 e4@16 [f2,f3,a3,c4,e4]@32 ~@32 d4@32 [c3,e4], ~@95 [c2,c3]@32 ~@32 [e2,e3]@64 ~, ~@96 [g3,c4]@31 ~@33 [g#3,b3,e4]@64]/7", // Fmaj7 C Fmaj7 C E C5 E
  C: "[c4@31 [f2,a3,c4,e4]@32 [c3,g3,c4,e4]@32 [f2,f3,a3,c4,e4]@32 ~@32 d4@32 [a2,c4,e4], ~@127 [e2,e3,g#3,b3,e4]@64 ~]/6", // Fmaj7 C Fmaj7 Am E
  D: "[~@29 [d3,a3,f#4]@30 g2@28 [e3,e4]@29 [a2,a3,c4,e4]@29 [d3,a3,d4,f#4]@28 [g2,d4,g4]@28 [e3,e4,g#4,b4]@28 [a2,a3,c4,e4]@27, ~@29 d4@58 ~@169, ~@59 g4@84 ~@113, ~@59 b3@56 ~@141]/8", // D E Am D G5 E Am
  E: "[~ [d3,a3,d4,f#4]@27 ~ [g2,d4]@28 [e3,e4,g#4]@27 [a2,c4,e4,g4]@28 [d3,a3,d4,f#4]@28 [g2,b3,d4,g4]@28 [e3,d4,e4]@24, ~@29 b3@56 ~@107, ~@29 g4@26 ~@137]/6", // D G5 E Am7 D G E7
  F: "[~@3 [c2,c3,g3,c4,d4,e4]@27 ~ c4@26 ~ [g3,c4]@27 [f2,f3,a3,c4,e4]@26 ~ [e2,e3,e4]@27 [b3,d4]@26 ~@2 [c3,g3,c4,e4]@25, ~@30 [f2,a3]@27 [c2,c3,e4]@28 ~@26 [b3,g#4]@28 ~@53]/6", // C C5 Fmaj7 E Bm C F C …
  G: "[~@2 [f2,f3,a3,c4,e4]@28 [c2,c3,g3,d4,e4]@28 [f2,a3,c4,e4]@27 ~@28 d4@29 [a2,a3,c4,e4,g4]@29 [d2,d3,a3,d4,f#4]@29 [g2,b3,d4,g4]@27 [e3,d4,e4,g#4]@28 ~, ~@85 [e2,e3,g#3,b3,e4]@57 ~@114]/8", // Fmaj7 C Fmaj7 Am7 D G E7 E
  H: "[[c2,c3]@14 [a1,a2,a3]@14 [a1,a2,a3,d4,f#4]@29 ~ [g2,b3,d4,a4]@27 [e2,e3,b3,e4,g4]@28 [a1,a2,a3,c4,e4,g4]@27 [a1,a2,a3,d4,f#4]@28 [g2,g3,b3,d4,a4]@24, [g3,c4,e4]@29 ~@163]/6", // C A D G Em Am7 D G …
  I: "[~@2 [e2,e3,b3,d4,e4,g#4]@27 [a1,a2,a3,c4,e4,g4]@26 ~ a2@28 [g2,b3,d4,a4]@26 [e2,e3,b3,d4,e4,g#4]@27 ~ [c2,c3,g3,c4,e4]@22, ~@55 [a1,a3,d4,f#4]@29 ~@76]/5", // E7 Am7 G E7 C D
  J: "[~@5 [f2,f3,a3,c4]@26 ~ c3@27 ~@13 e4@13 [c2,g3,c4,d4,e4]@27 [f2,a3]@27 [c2,c3,g3,c4,e4]@27 ~ [f2,a3]@27 [c2,c3,g3]@55 ~@7, ~@4 e4@27 [c2,g3,c4,e4]@28 [f2,a3,c4]@26 ~@27 [c4,e4]@25 ~@29 e4@82 ~@8, ~@167 c4@82 ~@7]/8", // F C F C F C5 C F …
})).s("gm_synth_strings_1").gain(0.26).pan(0.4)

// chords · synth strings 1 · "TAPPETO" · soft notes
const synth_strings_1_soft = note(`<
  ~@5 A@2 ~@3 B@2 ~@3 C@3 ~@3 D@2 E ~@2 F@2 ~ G@3 ~@2 H@2 ~ I@2 ~@4 J ~@12 K@3 ~@4
>`.pickRestart({
  A: "[~@31 e4@10 ~@23]/2", B: "[g3@31 f3@32 ~]/2", C: "[~@31 [a3,g4]@29 ~ d2@30 ~@5]/3", D: "[~@13 b3@29 ~@22]/2",
  E: "~@5 g4@27", F: "[~@5 a3@7 ~@4]/2", G: "[~@8 [b3,g#4]@28 ~@26 [f3,e4]@27 ~@7]/3",
  H: "[~@11 [e2,e3,g#3,e4]@27 ~@26]/2", I: "[~@13 f3@14 ~@5]/2", J: "~@3 [e2,b3]@28 ~",
  K: "[~@27 f3@26 c3@28 ~@15, ~@27 e4@11 ~@58]/3",
})).s("gm_synth_strings_1").gain(0.13).pan(0.4)

// chords · string ensemble 2 · "ARCHI"
const string_ensemble_2 = note("<~@36 A@8 B@6 C@4 D@7 E@2>".pickRestart({
  A: "[~@17 f4@13 d5@13 c5@14 [c5,a5]@28 ~ d5@56 [d5,e5,g5]@29 ~@21 a4@7 [a4,b4,d5]@28 ~ g#5@14 a5@14, ~@3 [a4,c5,e5]@27 [g4,e5]@29 ~@26 [b4,g#5]@57 ~@29 [d5,f#5]@28 ~@28 d5@29, ~@57 b4@7]/8", // F Em7 Bm7 Am C E D
  B: "[[c4,d5]@14 [a3,c5]@14 [a4,d5,f#5]@29 a5@26 ~@2 [e5,g5]@28 [a3,e4,e5,g5]@27 ~@14 a5@12 ~@2 [b4,d5,a5]@24, [g4,e5]@28 d4@9 ~@20 [b4,d5]@56 a4@53 ~@26, ~@113 c5@25 ~@2 [d4,d5,f#5]@27 ~@25]/6", // Csus2 Am D Em A7 Bm7 C Bm …
  C: "[~@2 [b4,d5,e5,g#5]@28 ~@13 g5@13 f#5@27 [b4,a5]@27 ~ g#5@17, ~@15 [a4,c5,e5]@13 d5@27 [b4,d5,e5]@9]/4", // E7 B7 Am E7
  D: "[~@10 g4@27 a4@26 g4@28 a4@26 g4@27 ~ a4@26 ~ g4@26 ~ c5@25, ~@10 [c5,e5]@107 e5@53 ~ e5@53, ~@72 c5@13 ~@14 a4@13]/7", // C
  E: "[~ [c4,g4,d5]@27 ~@4]/2", // Csus2
})).s("gm_string_ensemble_2").gain(0.19).pan(0.4)

// chords · piano
const piano = note("<~@2 A@2 B C@2 D ~@2 E F@2 G H@2 ~ I@2 J K@3 L M N@2 O@4 ~@23 P@2 Q@4 R@2 ~>".pickRestart({
  A: "[~@14 g5@2 c5@25 ~@21 g5@2]/2", B: "c5@11 ~@5", C: "[~@14 g5@2 c5@23 ~@25]/2", D: "~@14 g5@2 c5@15 ~",
  E: "~@3 g4 [e4,g4]@12, c3, ~ g3@10 ~@5, ~@4 c4@9 ~@19, ~@6 d4@7 ~@19", // Em
  F: "[c4@6 ~@14 c5@11 ~@9 c4@21 ~@3, f3@32 ~@3 g3@22 ~@7, a4@10 g4@21 [e4,g4]@30 ~@3, ~@6 c4@12 c4@13 c3@27 ~@6, ~@12 a4@19 d4@9 ~@24]/2", // Em
  G: "~@16 c6@13 ~@3, f3@29 ~@3, ~@4 c5@5 a4@3 c5@17 ~@3, ~@5 f4@9 f5@15 ~@3, ~@7 g4@21 ~@4",
  H: "[[e3,g#3,b3,d4,e4]@29 ~@3 e4@14 ~@18, ~@15 [e3,g#3]@8 ~@9, ~@31 b3@15 ~@18]/2", // E7 E
  I: "[~@11 a5@6 ~@15, ~@9 d3@11 d5@14 ~@30, ~@11 a3@24 ~@29, ~@6 d4@11 ~@15, ~@7 a4@10 ~@15]/2",
  J: "~@10 a3@7 b3@8 ~@7, ~@4 g4@13 ~@15, ~@3 f#4@6 ~@7, ~@4 d4@5 ~@7",
  K: "[~@42 a5@4 g5@13 d5@9 ~@28, ~@28 d3@19 ~@49, ~@30 a3@17 ~@49, ~@32 d4@15 ~@49, ~@33 a4@3 d5@11 ~@49]/3",
  L: "~@23 g4@9, ~@9 a2@23, ~@11 e3@21, ~@13 a3@19, ~@7 c4 e4@8",
  M: "~@17 f#5@10 ~@5, ~ d3@9 f#4@2 a4@2 d5@2 e5@12 ~@4, ~@5 a3@23 ~@4, ~@7 d4@21 ~@4, ~@2 e4@5 ~",
  N: "[~@10 b5@3 ~@3, ~@23 e2@13 e5@15 ~@13, ~@24 g#3@27 ~@13, ~@25 [b3,e4]@26 ~@13, ~@32 b4@19 ~@13]/2", // E5
  O: "[~@35 f#5@9 ~@14 d5@10 ~@25 [e5,e6]@6 ~@29, ~@21 d3@24 ~@26 [e2,b3]@28 ~@29, ~@22 f#4@6 e4@17 ~@27 e4@27 ~@29, ~@24 a3@5 f#4@2 a4@2 d5@12 ~@7 f#5@17 ~@59, ~@26 d4@18 [b4,g5]@24 ~@18 [b4,b5]@13 ~@29]/4", // E E5 Em B
  P: "[~@10 [d4,e4,g4]@16 ~@4 e4@7 ~@17 a4@10, ~@10 c2@27 [f2,a3,c4,e4]@27, ~@26 c3@7 ~@31, ~@28 c4@9 ~@15 c5@12, ~@29 g4@9 ~@12 e5@14]/2", // Em7 Fmaj7
  Q: "[[c2,d4,e4,g4]@27 ~@8 f3 ~@11 c5@6 ~ [d4,e4,g4]@12 ~@8 c4@6 ~@15 c5@13 [c2,g3,d4,e4]@17 ~@3, ~@27 [f2,a3,c4,e4]@10 a3@6 f4@2 a4 e5@3 ~@44 e5@15 ~@20, ~@34 c3@19 ~ c2@27 ~@47, ~@38 c4@11 ~@17 c4@7 d4@2 ~@6 [a3,e4]@28 ~@19, ~@40 e4@9 ~@19 g4@13 ~@11 f4@16 ~@20]/4", // C Em7 C Fmaj7 A5
  R: "[~@27 a3@8 [c2,c3,g3,c4,d4,e4]@28 ~, ~@7 [f2,e5]@14 e4@3 c4@10 ~@30, ~@7 a4@7 a4@21 ~@29, ~@10 c5@25 ~@29, ~@17 f4@18 ~@29]/2", // C Fmaj7
})).s("gm_piano").gain(0.2).pan(0.7)

// chords · piano · soft notes
const piano_soft = note("<~@11 A ~@7 B ~@3 C ~ D@2 ~ E@3 ~@24 F ~ G@3 ~@3>".pickRestart({
  A: "~@8 e4@23 ~", B: "~@3 f#4@3 ~@26", C: "~@11 c4@5", D: "[~@29 e3@23 ~@12, ~@25 b2@26 ~@13]/2",
  E: "[~@26 f#4@10 ~@4 [b2,e3]@27 ~@29, ~@20 a4@17 ~@2 g#3@28 ~@29]/3", F: "~ c3@4 ~@12 f4@15",
  G: "[~@26 c3@22 ~@11 f3@17 ~@20, ~@49 f2@27 ~@20, ~@14 c3@5 ~@5]/3",
})).s("gm_piano").gain(0.12).pan(0.7)

stack(synth_strings_1, synth_strings_1_soft, string_ensemble_2, piano, piano_soft)

More by Antonello Venditti