Strudelify

Affida una lacrima al vento

Adamo

KeyE majorTempo149 bpm
0:00/0:00
// Affida una lacrima al vento — Adamo
// 149 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(149/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 finger · "tk2"
const bass = note(`<
  ~ A B@2 C D E F G H@2 I J K L M N O P Q R D E F G H@2 I J K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD AE AF AG D E F
  G H@2 I J K L M N O P Q R D E F G H@2 I J K L M N O P Q R O P Q R O P Q R O P AH@4
>`.pickRestart({
  A: "e1@4 ~@2 e1 ~ e1@7 ~", B: "e1@4 ~@2 e1 ~ e1@5 ~@3", C: "e1@4 ~@2 e1 ~ e1@3 ~ e1@2 ~@2",
  D: "a1@4 ~@2 a1 ~ e2@5 ~ e2@2", E: "a1@2 ~ a1 e2@4", F: "a1@4 ~@2 a1 ~ e2@6 a1 ~", G: "a1@5 ~ a1 ~ e2@4 a1@3 ~",
  H: "a1@4 ~@2 a1@2 e2@4 a1@3 ~", I: "e2@4 ~@2 e2@2 b1@5 ~ b1@2", J: "e2@2 ~ e2 b1@2 e2@2",
  K: "e1@5 ~ e1@2 b1@4 ~@2 b1@2", L: "e2@8 b1@4 e1@3 ~", M: "e1@7 ~ b1@5 ~ b1 ~", N: "e2@6 b1 ~ b1@4 e1@3 ~",
  O: "e1@6 b1 ~ b1@5 ~ b1@2", P: "e2@6 b1 ~ b1@3 ~ e1@4", Q: "a1@5 ~ a1 ~ e2@6 a1 ~", R: "a1@3 ~ a1@4 e2@4 a1@2 ~@2",
  S: "c#2@4 ~@2 c#2 ~ g#1@8", T: "c#2@4 ~@2 c#2 ~ g#1@5 ~ g#1@2", U: "f#1@5 ~ f#1@2 c#2@8",
  V: "f#1@5 ~ f#1@2 c#2@4 f#1@4", W: "c#2@5 ~ c#2@2 g#1@8", X: "c#2@5 ~ c#2@2 g#1@4 c#2@4",
  Y: "f#1@5 ~ f#1@2 c#2@5 ~ c#2@2", Z: "f#1@8 c#2@4 f#1 ~@3", AA: "d2@4 ~@2 d2 ~ d2@3 ~ a1@4",
  AB: "d2@4 ~@2 d2 ~ d2@4 a1@4", AC: "c#2@4 ~@2 c#2 ~ c#2@4 g#1@4", AD: "b1@4 ~@2 b1 ~ b1@6 ~@2",
  AE: "b1@4 ~@2 b1 ~ b1@4 b1@4", AF: "e1@4 ~@2 e1 ~ e1@3 ~ b1@4", AG: "e2@5 ~ e2@2 b1@4 e1@3 ~", AH: "[a1@15 ~]/4",
})).s("gm_electric_bass_finger").gain(0.34)

// chords · string ensemble 1 · "tk3"
const string_ensemble_1 = note(`<
  ~@5 A@2 B@4 C@2 D@2 E@4 F@2 A@2 B@4 C@2 D@2 E@4 F@2 G@2 H@2 G@2 H@2 I@2 J@2 K@2 L@2 A@2 B@4 C@2 D@2 E@4 F@2 A@2 B@4
  C@2 D@2 E@4 F@2 M@2 F@2 M@2 F@2 M@2 N@4
>`.pickRestart({
  A: "[e4,a4,c#5]/2", B: "[a3,c#4,e4,a4]/4", C: "[d4,e4,g#4]/2", D: "[b3,d4,e4,g#4]/2",
  E: "[[b3,g#4]@8 [d4,g#4]@7 ~, e4, ~ b3]/4", F: "[a3,c#4,e4,a4]/2", G: "[b3,f4]/2", H: "[a3,f#4]/2",
  I: "[[f#4,a4], d4@29 ~@3]/2", J: "[b4@8 g#4@23 ~, [c#4,e4]]/2", K: "[b3,d4,f#4]/2", L: "[b3,d4,g#4]/2",
  M: "[[d4,g#4]@7 ~, b3]/2", N: "[[a2,a3,c#4,e4]@15 ~]/4",
})).s("gm_string_ensemble_1").gain(0.31)

// chords · harmonica · "tk4"
const harmonica = note(`<
  ~@4 A B C D@2 E F G@2 H I J@2 K L M N B C D@2 E F G@2 H I J@2 K L O P Q R S@2 T U V@2 W X Y@2 Z AA AB ~ B C D@2 E F
  G@2 H I J@2 K L O P B C D@2 E F G@2 H I J@2 K L O AC K L O AD K L O AC K L AE@2 ~@2
>`.pickRestart({
  A: "~@12 [e4,a4]@3 ~", B: "[a4,c#5]@7 ~ [a4,c#5]@4 [b4,d5]@4", C: "[c#5,e5]@7 ~ [e5,g#5]@3 ~ [d5,f#5]@3 ~",
  D: "[d5@8 [c#5,e5]@19 ~ [e4,a4]@3 ~, f#5@7 ~@25]/2", E: "[a4,c#5]@7 ~ [a4,c#5]@3 ~ [b4,d5]@3 ~",
  F: "[c#5,e5]@8 [d5,f#5]@3 ~ [c#5,e5]@4", G: "[[b4,d5]@25 ~@3 [g#4,b4]@2 ~@2]/2",
  H: "[b4,d5]@8 [b4,d5]@3 ~ [b4,e5] ~@3", I: "[d5,f#5]@7 ~ [b4,d5]@3 ~ [g#4,b4] ~@3",
  J: "[[f#4,a4]@7 ~ [e4,g#4]@14 ~@2 [g#4,b4]@3 ~ [a4,c#5] ~@3]/2", K: "[b4,e5]@5 ~ b4@5 ~ b4@2 ~@2",
  L: "[g#4,b4]@5 ~ [f#4,a4]@5 ~ [g#4,b4]@2 ~@2", M: "[a4,c#5]", N: "~@12 [c#4,e4] ~@3", O: "[e4,a4]@7 ~",
  P: "~@12 a4 ~@3", Q: "b4@8 g#4@3 ~ a4@4", R: "b4@4 d5@3 ~ c#5@4 b4@3 ~", S: "[b4@8 a4@19 ~ a4@4]/2", T: "b4@2 g#4 a4",
  U: "b4 d5 c#5 b4", V: "[c#5@23 ~@9]/2", W: "a4@8 f#4@3 ~ g#4@4", X: "a4@4 c#5@3 ~ b4@3 ~ a4@4",
  Y: "[g#4@4 e4@25 ~@3]/2", Z: "f#4@3 ~ f#4@7 ~ f#4 ~ g#4 ~", AA: "a4@4 f#4@3 ~ g#4@4 a4@4", AB: "a4@3 ~ g#4@11 ~",
  AC: "~@4 b4@2 c#5 ~", AD: "~@2 b4 c#5", AE: "[a4@23 ~@9]/2",
})).s("gm_harmonica").gain(0.4)

// other · pad metallic · "tk5"
const pad_metallic = note("<~@8 A ~@6 B C D ~@15 D ~@31 D ~@15 D ~@17>".pickRestart({
  A: "d6@2 c#6@5 ~", B: "~@8 d6@7 ~", C: "c#6@4 b5@3 ~", D: "g#5@13 ~@3",
})).s("gm_pad_metallic").gain(0.4)

// chords · acoustic guitar nylon · "tk6"
const acoustic_guitar_nylon = note(`<
  ~ A@4 B@6 C@2 D@6 ~@2 B@6 C@2 D@6 ~ E F G ~@6 H I J K L M N O B@6 C@2 D@6 ~@2 B@6 C@2 D@6 ~@2 P@2 ~@2 P@2 ~@2 P@2 ~@4
>`.pickRestart({
  A: "[~@5 g#3 ~@7 g#3 ~ g#3, e2@4 [g#3,b3,e4]@6 ~@2 [b3,e4]@8 [b3,e4]@7 ~ [b3,e4]@4, ~@2 e3@4 e2@10 e2@5 ~ e2@9 ~, ~@4 e3@4 ~ e3@2 ~ e3@4, ~@14 g#3@5 ~ g#3@4 ~@8]/2", // E E5
  B: "[~@10 c#4 ~ a3@2 ~@12 c#4 ~@7 a2 ~@7 a2@2 ~@6 a2@2 ~@6 c#4 ~@15 c#4 ~ c#4@2 ~@12 c#4 ~ [c#4,e4]@2 a2@2, a2@4 [c#4,e4]@4 a3@4 [c#4,e4]@4 a3@6 a2@6 [c#4,e4]@4 a3@6 ~@2 a3@6 a2@4 ~@2 c#4@4 a3@6 a2@7 ~ a2@6 ~@2 a2@6 ~@2 a2@6 ~@4, ~@2 a3@4 a2@7 ~ a2@6 [c#4,e4]@4 a3@6 a2@4 ~@2 [c#4,e4]@6 ~@2 e4@6 ~@2 e4@6 ~@2 e4@7 ~ [c#4,e4]@6 ~@2 e4@5 ~@3 [c#4,e4]@5 ~@7, ~@44 c#4@4 a3@6 a2@6 c#4@4 a3@6 ~@2 a3@7 ~ a3@6 ~@2 a3@7 ~]/6", // C#m
  C: "[~@2 g#3@2 d5 ~ d5@2 ~@2 b3 ~ d5@2 ~@2 [g#3,g#4,d5]@2 ~@2 g#3@2 d5@2 ~@2 g#3@2 ~@2 g#3@2, e2@12 ~@2 e2@6 d5 ~ e2@6 ~@4, ~@2 [b3,d4]@2 [g#3,b4]@2 [b3,d4]@3 e3@2 e3@5, ~@6 e3@7 ~@3 e4@8 b4@4 ~@4, ~@10 [b3,d4]@3 ~ [b3,d4,d5]@2]/2", // G#dim Bm G#m Bm
  D: "[~@2 g#3@2 d5 ~ d5@2 ~@2 b3 ~ [b3,d4,d5]@2 ~@2 d5@3 ~ d5 ~ d5@2 ~@2 b3 ~ b3 ~@7 d5 ~ d5@2 ~@2 b3 ~ [b3,d4,d5]@2 ~@4 g#3@2 [b3,d4]@2 d5@2 ~@2 b3 ~ [d4,d5]@2 ~@2 g#4@4 [b3,d4]@2 d5@2 ~@2 b3@2 d5@2 ~@2 [g#4,d5]@3 ~ d5 ~ d5@2 b4@4 [g#3,d5]@2 e3@2, [e2,e4]@16 [e2,e4]@14 g#3@4 g#3@4 e3@10 [g#4,d5]@4 d5 ~@3 [g#3,b4]@4 ~@2 g#3@7 ~ e3@8 e2@18, [g#4,d5]@4 [b3,d4]@4 [g#3,b4]@4 ~@2 g#3@5 ~ [b3,d4]@4 [g#3,b4]@4 [d4,d5]@4 [g#4,d5]@4 [b3,d4]@4 [g#3,b4]@5 ~ g#3@4 ~@4 e3@9 ~ d5@2 ~@2 d5 ~@3 [g#3,b4]@4 [g#3,b3,d4]@5 ~@3 e3@2 g#3@2 b3@7 ~, ~@6 e3@11 ~@5 e3@10 [e2,e4]@15 ~ [e2,e4]@15 ~ [e2,e4]@15 ~ e4@14 ~@2, ~@86 d4@9 ~]/6", // Bm D Bm G#dim E G#dim G#m G#dim …
  E: "~@4 a4@4 g#4@3 ~ f#4@2 ~@2", F: "~ b3 [c#4,f4] b3 ~ b3 [c#4,f4] b3, c#3 g#3",
  G: "~@2 b3@2 [c#4,f4]@2 b3@2 ~@2 b3@2 [c#4,f4]@2 b3 ~, c#3@8 g#3@7 ~", // C#
  H: "~ a3 [d4,f#4] a3 ~ a3 [d4,f#4] a3, d3@8 a2@7 ~", I: "~ a3 [d4,f#4] ~@4 a3, d3@9 ~ d3@6, ~@3 a3@3 [d4,f#4]@2",
  J: "~@2 b3 ~ b3@2 ~@2 b3@4 [c#3,c#4,e4]@4, c#3@2 e4@3 ~@3, ~ c#4 ~@2, ~@6 c#3@5 ~@5", // C#m
  K: "b3 ~ b3 ~@2 b3 [c#4,e4] b3, ~ c#3@7, ~ [c#4,e4] ~@2, ~@6 g#3@9 ~", // C#m
  L: "~@2 b3@2 [d4,f#4]@4 b3 ~ b3@2 [d4,f#4]@2 b3@2, b2@3 ~", // D
  M: "~ b3 [d4,f#4]@2 ~@2 f#4 b3, b2@13 ~@3, ~@8 b3@5 ~@3, ~@10 d4@5 ~", // D
  N: "e2@4 g#3 ~@3 g#3@3 ~@3 g#3@2, ~ [b3,d4] ~ [b3,d4], ~@6 e2@7 ~@3", // Bm
  O: "~@10 g#3@2 [b3,d4]@2 g#3 ~, e2@2 [b3,d4]@3 ~@3, ~@2 e3@4 e2@9 ~, ~@8 e3@7 ~", // Bm
  P: "[g#4@4 [b3,d4]@2 d5@2 ~@2 b3@2 d5@2 ~@2 [g#4,d5]@3 ~ d5 ~ d5@2 b4@4 [g#3,d5]@2 e3@2, [e2,e4]@15 ~ e4@14 ~@2, d5@2 ~@2 d5 ~ e3@8 e2@18, ~@8 [g#3,b4]@4 [g#3,b3,d4]@5 ~@3 e3@2 g#3@2 b3@7 ~, ~@22 d4@9 ~]/2", // Bm G#dim E G#m G#dim
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.7)

// chords · electric guitar clean · "tk8"
const electric_guitar_clean = note(`<
  A B@2 C@2 ~@14 D E ~@15 E ~@3 F ~@3 G ~@6 H I ~@14 J K ~@14 J K ~@2 J K ~@2 J K ~@2 L@3 ~
>`.pickRestart({
  A: "~@4 a2@3 ~ g#2@4 f#2@3 ~",
  B: "[~@4 [g#3,b3,e4] ~@7 [g#3,b3,e4] ~@7 [g#3,b3,e4] ~@3 g#2@4 [g#3,b3,e4] ~@3, e2@20 a2@3 ~@5 f#2@3 ~]/2", // E
  C: "[~@4 [g#3,b3,e4] ~@7 [g#3,b3,e4] ~@7 [g#3,b3,e4] ~@7 [g#3,b3,e4] ~@3, e2@9 ~@7]/2", D: "~@4 a2@3 ~ g#2@4 f#2@4",
  E: "e2@13 ~@3", F: "[a4,c#5]@5 ~ a4@2 [g#4,b4]@3 ~ [f#4,a4]@3 ~, ~@6 c#5 ~@9",
  G: "[a4,c#5]@4 [g#4,b4]@3 ~ [g#4,b4]@3 ~ [f#4,a4]@2 ~@2", H: "~@6 e4 ~ [e4,g#4]@2 ~@2 [f#4,a4]@2 ~@2",
  I: "[g#4,b4]@5 ~ [e4,g#4] ~ [f#4,a4]@2 ~@2 [g#4,b4]@2 ~@2", J: "~ a2 g#2 f#2", K: "e2@7 ~", L: "[[a3,c#4]@19 ~@5]/3",
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.3)

// chords · acoustic guitar steel · "tk9"
const acoustic_guitar_steel = note(`<
  ~@5 A@2 B C@3 D@5 E@3 F@2 A@2 B C@3 D@5 E@3 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 A@2 B C@3 D@5 E@3 F@2 A@2 B C@3 D@5
  E@3 F@2 O@2 F@2 O@2 F@2 O@2 ~@4
>`.pickRestart({
  A: "[[c#4,e4,a4]@12 ~@2 [c#4,e4,a4] ~ [e4,a4]@13 ~@3, ~@15 c#4@14 ~@3, ~@15 a3@10 ~@7]/2", // A A5
  B: "[c#4,e4,a4]@11 ~@3 [c#4,e4,a4] [a3,c#4]", // A
  C: "[[c#4,e4,a4]@11 ~@3 [c#4,e4,a4] a3 [a3,e4,a4]@13 ~ [c#4,e4,a4] ~ [e4,a4]@13 ~@3, ~@15 c#4@14 ~@2 [a3,c#4]@14 ~@3]/3", // A A5 A A5 A
  D: "[[g#3,b3,e4]@8 ~@6 [g#3,b3,e4] ~ e4@13 ~ [g#3,b3] e4 e4@12 ~@2 [g#3,b3,e4] ~ e4@11 ~@3 [g#3,b3,e4] ~ e4@13 ~@3, ~@15 [g#3,b3]@14 ~@2 [g#3,b3]@14 ~@2 [g#3,b3]@13 ~@3 [g#3,b3]@14 ~@3]/5", // E G#m E G#m
  E: "[e4@12 ~@2 [g#3,b3,e4] ~ e4@11 ~@3 [g#3,b3,e4] ~ e4@13 ~@3, ~@15 [g#3,b3]@13 ~@3 [g#3,b3]@14 ~@3]/3", // E G#m
  F: "[[c#4,e4,a4]@12 ~@2 [c#4,e4,a4] ~ [e4,a4]@11 ~ [c#4,e4,a4] ~@3, ~@15 [a3,c#4]@12 ~@5]/2", // A A5 A
  G: "[[g#3,c#4,f4]@12 ~@2 [c#4,f4] ~ [c#4,f4]@13 ~@3, ~@15 g#3@15 ~@2]/2", // C#
  H: "[[f#3,a3,c#4]@9 ~@5 [a3,c#4] ~ [a3,c#4]@13 ~@3, ~@15 f#3@15 ~@2]/2", // F#m A
  I: "[[g#3,c#4]@13 ~ [c#4,f4] ~ [c#4,f4]@14 ~@2, f4@11 ~@4 g#3@16 ~]/2", // C#5 C#
  J: "[~ a3@12 ~ c#4 ~ [a3,c#4]@11 ~ [a3,c#4] ~@3, [f#3,c#4]@13 ~@2 f#3@14 ~@3]/2", // A F#5
  K: "[[a3,d4,f#4]@4 ~@2 [d4,f#4] ~ d4 ~ [d4,f#4] ~@4 [d4,f#4] [d4,f#4]@11 ~ [a3,d4,f#4] ~@3, ~@15 a3@12 ~@5]/2", // D
  L: "[[b3,c#4,e4]@4 ~@2 [b3,c#4,e4] ~@7 [b3,c#4,e4] ~ [b3,c#4,e4]@10 g#3@2 [b3,c#4,e4]@2 ~@2, ~@15 g#3@10 ~@7]/2", // C#m7
  M: "[[b3,d4] ~@5 f#4 ~ f#4@4 ~@2 [b3,d4,f#4] ~ [b3,d4,f#4]@10 ~@2 [b3,d4,f#4]@3 ~, ~@6 [b3,d4]@6 ~@3 f#3@10 ~ f#3@5 ~]/2", // Bm
  N: "[e3@5 ~ b3 g#3 ~@6 [g#3,e4] ~ [g#3,e4]@10 e3@2 [g#3,e4] ~@3, ~@15 e3@11 ~@6]/2", // C#m
  O: "[e4@11 ~@3 [g#3,b3,e4] ~ e4@13 ~@3, ~@15 [g#3,b3]@14 ~@3]/2", // E G#m
})).s("gm_acoustic_guitar_steel").gain(0.35)

// other · flute · "tk11"
const flute = note(`<
  ~@23 A B ~@2 C B ~@10 D E ~@2 D F ~@3 G ~@3 H ~@2 A B ~@2 C B ~@10 A B ~@2 C B ~@18 I@4
>`.pickRestart({
  A: "~@4 e6@3 ~ f#6@4 a6@4", B: "g#6@5 ~ f#6@2 e6@6 ~@2", C: "~ e6 f#6 a6", D: "~@3 c#5", E: "g#5@3 ~ f#5@10 ~@2",
  F: "g#5@3 ~ f#5@9 ~@3", G: "g#5@2 e5@5 ~", H: "f#5@4 e5@9 ~@3", I: "[~@5 e5@5 f#5@5 a5@5 g#5@10 f#5@9 ~ e5@20 ~@4]/4",
})).s("gm_flute").gain(0.37).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ [x ~@2 x!2 ~@3]!94 x ~@3>").gain(0.57)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!51 [~@4 x ~@5 x!3 ~@3] [~ x ~ x]!42 ~@4>").gain(0.57)

// drums · low tom
const low_tom = s("lt").struct("<~@52 [~@7 x] ~@46>").gain(0.43)

// drums · hihat
const hihat = s("hh").struct("<~@52 [x!8] ~@46>").gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@21 A ~@31 A ~@15 A ~@13 A ~@3 A ~@3 A ~@3 A ~@3>".pickRestart({
  A: "x",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B C B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ C B A B A B
  A B A B A B A B A B C B A B A B A B A B A B A B C B A B C B A B C B A B ~@4
>`.pickRestart({
  A: "x!5 ~ x!2", B: "x ~ x!3 ~ x ~", C: "~ x!4 ~ x!2",
})).gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A B A B A B A B C B A B A B A B A B C B A B A B A B A C A B A B A B A B A B A B A B A B A C@2 B A B A D A C A B A B
  A B A C A B A B A B A C A B A B A B A B A B A B A B A B C B A B A B A C ~@4
>`.pickRestart({
  A: "x!4 ~ x!3", B: "~ x!7", C: "x!8", D: "~ x ~ x",
})).gain(0.21)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~ A B A B A B A B ~ B A B A B A B A B ~ B A B A B A B A ~ A B A B A B A B A B A B A B A B A ~@2 B A B A ~ A ~ A B A B
  A B A ~ A B A B A B A ~ A B A B A B A B A B A B A B A B ~ B A B A B A ~@5
>`.pickRestart({
  A: "~ x", B: "x",
})).gain(0.14)

stack(
  bass, string_ensemble_1, harmonica, pad_metallic, acoustic_guitar_nylon, electric_guitar_clean, acoustic_guitar_steel,
  flute, kick, snare, low_tom, hihat, crash, ride, tambourine, tambourine_soft
)

More by Adamo