Strudelify

Amore mio di provincia

Battisti

KeyE majorTempo140 bpm
0:00/0:00
// Amore mio di provincia — Battisti
// 140.4 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140.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.

// chords · piano
const piano = note(`<
  A@8 B@2 C@2 B@2 D E B@2 C@2 B@2 D E F@3 G H@3 I J@3 K B@2 C@2 B@2 D E B@2 C@2 B@2 D E F@3 G H@3 I L@7 M N@3 O P@4 Q
  R@3 C@2 B@2 D E B@2 C@2 B@2 D E F@3 G H@3 I J@3 S@8 T U
>`.pickRestart({
  A: "[[g#3,b3,e4]@9 ~@5 [f#3,b3,d#4,e4]@11 ~@5 [a3,d4,e4]@11 ~@5 [e3,a3,c#4,e4]@5 ~ [f#3,b3,d4] ~@3 [f#3,b3,d4] ~ [e3,a3,c#4] ~@3 [g#3,b3,e4]@11 ~@5 [f#3,b3,d#4,e4]@11 ~@5 [a3,d4,e4]@11 ~@5 [e3,a3,c#4,e4]@5 ~ [f#3,b3,d4] ~@3 [f#3,b3,d4] ~ [e3,a3,c#4] ~@5, ~@30 f#3@13 ~@51 f#3@13 ~@21]/8", // E B Asus4 A Bm A E B …
  B: "[[e3,g#3,b3,e4]@9 ~@5 [f#3,a3,c#4,e4]@13 ~@5]/2", C: "[[g#3,b3,d#4,e4]@9 ~@5 [f#3,a3,c#4,e4]@13 ~@5]/2",
  D: "[g#3,b3,d#4,e4]@9 ~@5 [f#3,a3,c#4,e4]@2", E: "~@2 [f#3,a3,c#4,e4]@3 ~ [f#3,a3,c#4,e4] ~@9",
  F: "[~@4 [e5,g#5,b5] ~ [e5,g#5,b5] ~@5 [b3,e4,g#4] ~ [b3,d#4,f#4]@5 ~ [b3,d#4,f#4] ~ [c#4,e4,a4]@4 ~@2 [c#4,e4,a4] ~ [b3,e4,g#4]@5 ~ [c#4,f#4,a4] ~@3 [c#4,f#4,a4] ~ [b3,e4,g#4] ~@5, [b3,e4,b4] ~@5]/3", // E B A E F#m E E5
  G: "~@4 [c#4,f#4,a4] ~@3 [c#4,f#4,a4] ~ [b3,e4,g#4] ~@5", // F#m E
  H: "[~@4 [e5,g#5,b5] ~ [e5,g#5,b5] ~@5 [c#4,e4,g#4] ~ [f#3,a3,d#4,f#4]@5 ~ [f#3,a3,d#4,f#4] ~ [c#4,d#4,f#4,a4]@4 ~@2 [c#4,d#4,f#4,a4] ~ [c#4,e4,g#4]@5 ~ [c#4,f#4,a4] ~@3 [c#4,f#4,a4] ~ [c#4,e4,g#4] ~@5, [c#4,e4,g#4] ~@5]/3", // E C#m D#dim D#m7b5 C#m F#m C#m
  I: "~@4 [c#4,f#4,a4] ~@3 [c#4,f#4,a4] ~ [c#4,e4,g#4] ~@5", // F#m C#m
  J: "[~@4 [e5,g#5,b5] ~ [e5,g#5,b5] ~@5 [g#3,c#4,e4,g#4] ~ [a3,c#4,e4,f#4]@5 ~ [a3,c#4,e4,f#4] ~ [a3,c#4,e4,a4]@4 ~@2 [a3,c#4,e4,a4] ~ [a3,c#4,e4,g#4]@13 ~@5, [g#3,c#4,e4,g#4] ~@5]/3", // E C#m F#m7 A Amaj7 C#m
  K: "[a3,c#4,e4,g#4,b4]@9 ~@5 [e3,g#3,b3,e4]@2", // Amaj7 E
  L: "[~@4 [e5,g#5,b5] ~ [e5,g#5,b5] ~@5 [g#3,c#4,e4,g#4] ~ [a3,c#4,e4,f#4]@5 ~ [a3,c#4,e4,f#4] ~ [a3,c#4,e4,a4]@4 ~@2 [a3,c#4,e4,a4] ~ [a3,c#4,e4,g#4]@11 ~@5 [a3,c#4,e4,g#4]@10 ~@6 [d4,g4,b4]@10 ~@4 [d4,g4,b4] ~ [d4,f#4,a4]@5 ~ [d4,f#4,a4] ~ [e4,g4,c5]@4 ~@2 [e4,g4,c5] ~ [d4,g4,b4]@5 ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~ [d3,g3,b3] ~@5, [g#3,c#4,e4,g#4] ~@13]/7", // E C#m F#m7 A Amaj7 G D C …
  M: "~@4 [e3,a3,c4] ~@3 [e3,a3,c4] ~ [d3,g3,b3] ~@5", // Am G
  N: "[[e4,g4,b4]@8 ~@4 [e4,g4,b4] ~ [c4,e4,f#4,a4]@5 ~ [c4,e4,f#4,a4] ~ [e4,f#4,a4,c5]@4 ~@2 [e4,f#4,a4,c5] ~ [e4,g4,b4]@5 ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~ [e3,g3,b3] ~@5]/3", // Em F#m7b5 Em Am Em
  O: "~@4 [e3,a3,c4] ~@3 [e3,a3,c4] ~ [e3,g3,b3] ~@5", // Am Em
  P: "[[g4,c5,e5]@8 ~@4 [g4,c5,e5] ~ [g4,b4,d5]@5 ~ [g4,b4,d5] ~ [a4,c5,f5]@4 ~@2 [a4,c5,f5] ~ [g4,c5,e5]@5 ~ [a3,d4,f4] ~@3 [a3,d4,f4] ~ [g3,c4,e4] ~@3 [g3,c4,e4]@5 ~ [a3,d4,f4] ~@3 [a3,d4,f4] ~ [a3,c4,e4] ~@5]/4", // C G F C Dm C Dm Am
  Q: "[a3,c#4,e4]@11 ~@5", R: "[[a3,c#4,e4,g#4,b4]@9 ~@5 [e3,g#3,b3,e4]@11 ~@5 [f#3,a3,c#4,e4]@13 ~@5]/3",
  S: "[[a3,c#4,e4,g#4,b4]@9 ~@5 [e3,g#3,b3,e4]@11 ~@7 d#4@11 ~@3 [f#3,a3,e4]@14 ~@2 [e3,a3,c#4,e4]@5 ~ [f#3,b3,d4] ~@3 [f#3,b3,d4] ~ [e3,a3,c#4] ~@3 [e3,g#3,b3,e4]@11 ~@7 d#4@11 ~@3 [f#3,a3,e4]@14 ~@2 [e3,a3,c#4,e4]@2, ~@30 [f#3,b3,e4]@13 ~@3 d4@11 ~@37 [f#3,b3,e4]@13 ~@3 d4@11 ~@7]/8", // Amaj7 E F#m7 A Bm A E F#m7 …
  T: "~@4 [f#3,b3,d4] ~@3 [f#3,b3,d4] ~ [e3,a3,c#4] ~@3 [g#3,b3,e4] ~", U: "[e3,g#3,b3,e4,g#4,b4]@11 ~@5",
})).s("gm_piano").gain(0.15)

// bass · acoustic bass · "Basso"
const bass = note(`<
  A@7 B C D C D C D C E C D C D C D C E A@3 F G@3 H I J K L C D C D C D C E C D C D C D C E A@3 F G@3 H I J K M N O@2 P
  A@3 Q R@3 S K T C D C D C D C E C D C D C D C E A@3 F G@3 H I J K L A@2 C D A@3 U V
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "e2 ~ g#1 ~ a1 ~ a#1 ~ b1 ~ d2 ~ d#2 ~ e2 ~",
  C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ b1 ~ c#2 ~ e2 ~", D: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ c#2 ~ b1 ~ c#2 ~",
  E: "e2 ~ g#1 ~ a1 ~ a#1 ~ b1 ~ d2 ~ d#2 ~ b1 ~", F: "e2 ~ e2 ~ e2 ~ e2 ~ d#2 ~ d#2 ~ d#2 ~ d#2 ~",
  G: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~", H: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  I: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", J: "a1 ~ a1 ~ a1 ~ a1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~",
  K: "f#1 ~ f#1 ~ g#1 ~ g#1 ~ a1 ~ a1 ~ a#1 ~ a#1 ~", L: "b1 ~ b1 ~ c#2 ~ c#2 ~ d2 ~ d#2 ~ e2 ~ e1 ~",
  M: "b1 ~ b1 ~ c#2 ~ c#2 ~ d#2 ~ e2 ~ f#2 ~ g2@2", N: "~@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  O: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", P: "g2 ~ g2 ~ g2 ~ g2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~",
  Q: "e2 ~ e2 ~ e2 ~ e2 ~ d2 ~ d2 ~ d2 ~ d2 ~", R: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  S: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ b1 ~ a1 ~ g1 ~", T: "b1 ~ b1 ~ c#2 ~ c#2 ~ d2 ~ d2 ~ d#2 ~ d#2 ~",
  U: "e2 ~ g#1 ~ a1 ~ a#1 ~ b1 ~ d2 ~ d#2 ~ g#1 ~", V: "e2@11 ~@5",
})).s("gm_acoustic_bass").gain(0.64)

// other · harpsichord · "Sint."
const harpsichord = note("<~@64 A B@2 C@2 D@2 E@2 F@4 G ~@28 H I J K L M@2 N ~>".pickRestart({
  A: "g5@11 ~@5", B: "[f#5 g5 f#5@3 ~ d5@4 ~@2 e5 ~ d5@7 ~@3 b4 c5 d5@3 ~ g4@2]/2",
  C: "[~@2 a4 ~ b4@3 ~ d4@3 ~ e4 ~ d4@7 ~@3 g5@5 ~@3]/2", D: "[f#5 g5 f#5@3 ~ d5@4 ~@2 f#5 ~ e5@6 ~@2 b4@7 ~@3]/2",
  E: "[g4 a4 b4@4 ~@2 e4 f#4 g4@3 ~ c4@6 ~@2 c6@7 ~@3]/2",
  F: "[b5 c6 b5@4 ~@2 a5 b5 a5@3 ~ g5@7 ~@3 e5 f5 g5@3 ~ e5@5 ~ d5 ~ c5@4 ~@2 b4 ~ a4@13 ~@5]/4", G: "b5@11 ~@5",
  H: "e5 ~ e5 ~ b5 ~@5 e5 ~ e5 ~ d#5@2", I: "~@2 d#5 ~ b5 ~@5 d#5 ~ d#5 ~ d5@2", J: "~@2 d5 ~ b5 ~@5 d5 ~@3 c#5@2",
  K: "~@2 d5 ~ d5 ~ c#5 ~ d5 ~ c#5 ~@3 e5@2", L: "~@2 e5 ~ b5 ~@5 e5 ~ e5 ~ d#5@2",
  M: "[~@2 d#5 ~ b5 ~@5 d#5 ~ d#5 ~ d5@5 ~ b5 ~@5 d5 ~@3 c#5@2]/2", N: "~@2 d5 ~ d5 ~ c#5 ~ d5 ~ c#5 ~ c#5 ~ e5 ~",
})).s("gm_harpsichord").gain(0.64)

// other · melodic tom · "Batt."
const melodic_tom = note(`<
  [g#4 ~@3 g#4 ~@3 g#4 ~@3 g#4 ~@3]!64
  [g4 ~@3 g4 ~@3 g4 ~@3 g4 ~@3]!12
  [g#4 ~@3 g#4 ~@3 g#4 ~@3 g#4 ~@3]!38
  ~
>`).s("gm_melodic_tom").gain(0.64)

stack(piano, bass, harpsichord, melodic_tom)

More by Battisti