Strudelify
L'anno che verra cover art

Caro Amico Ti Scrivo...

L'anno che verra

Dalla

KeyD majorTempo120 bpm
0:00/0:00
// L'anno che verra — Dalla
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "BASSO" named as a bass, played on electric bass finger (its pad new age patch is not one)
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "BASSO"
const bass = note(`<
  A B C B C B C B D E F G H I F J K L F G H I M C B C B D E F G H I F J K L F G H I M N O P Q R S T Q U V F Q R S T W O
  X P Q R S T Q Y Z AA AB AC U P AB AD AE AF AB AC U P AG AH AI AJ AK AL@2 AM AN@3 AO AL@2 AP AQ AN AR AO@2 AL@2 AS AM
  AR AT AU AV AW AX AY AZ BA BB BC BD BE BD BE BD BE BD BE BD BE BD BE BD BE BD BE ~
>`.pickRestart({
  A: "~@7 a2", B: "d3@2 d3@2 d3@2 ~ a2", C: "d3@2 a3@2 d3@2 ~ a2", D: "d3 ~", E: "g2@2 g2 d3", F: "a2@2 a2 c#3",
  G: "d3@2 d3 c#3", H: "b2@2 b2 f#3", I: "e2@2 e2 b2", J: "d3@2 d3 e3 f#3@2 d3@2 a3@2 g3@2 f#3@2 e3@2", K: "d3@2 a2 d3",
  L: "g2@2 g2 b2", M: "a2@2 a2 a3", N: "d3@3 d3 d3@2 d#3@2", O: "e3@2 e3!2", P: "a2@2 a2 e3", Q: "b2@2 b2 d#3",
  R: "e3@2 e3 d#3", S: "c#3@2 c#3 g#3", T: "f#2@2 f#2 c#3", U: "e3@2 e3 b3", V: "e3@2 b2 e3", W: "b2@2 b2 b3",
  X: "e3 ~", Y: "e3@2 e3 f#3", Z: "g3@2 g3!2", AA: "c3@2 c3 g3", AB: "d3@2 d3 f#3", AC: "g3@2 g3 f#3", AD: "g3@2 g3 d4",
  AE: "g3@2 d3 g3", AF: "c3@2 c3 e3", AG: "d3@2 d3 d4", AH: "g3@2 ~ g3 g3@2 g3@2", AI: "g3@8 g3@6 g3 f#3",
  AJ: "f3@2 g3@3 f3 g3@2", AK: "c3@2 ~ c3 c3@3 ~", AL: "c3@2 ~ c3 c3@3 g3", AM: "d3@2 ~ d3 d3@3 f#3",
  AN: "b2@2 ~ b2 b2@3 f#3", AO: "b3 b2 ~ b2 b3 b2 ~ b2", AP: "d3@2 ~ d3 d3@3 a3", AQ: "c3@2 ~ c3 c3@3 f#3",
  AR: "b2@2 ~ b2 b2@2 ~ f#3", AS: "c3@2 ~ c3 c3@2 ~ c3", AT: "b2@2 ~ b2 b2@2 ~ a2", AU: "b2@2 ~ b2 b2@3 ~",
  AV: "b2@2 ~ b2!2 ~ b2 ~", AW: "g2", AX: "a2@3 ~", AY: "d2", AZ: "g2@3 f#2", BA: "e2", BB: "a2@3 a2", BC: "d2@3 d2",
  BD: "g2@2 d3@2 g2@2 ~ d2", BE: "g2@2 g2@2 g2@2 ~ d2",
})).s("gm_electric_bass_finger").gain(0.52)

// chords · piano · "BRASS 3"
const piano = note("<A B@2 C@2 B@2 D E ~@124>".pickRestart({
  A: "~@6 a4 ~ [a3,d4,a4,d5] ~@3 [a3,e4,a4,e5] ~@3", // D5 A5
  B: "[[a4,f#5]!5 [a4,e5] a3!2 ~@3 a4 [a4,d5] ~ [a4,e5] ~, d3@10 ~@2 d4@4 d3@11 ~@5, [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,e4] ~ [a4,d5]@6 ~@6 [a3,d4] ~@3 [a3,e4] ~@3]/2", // D A5 D5 A5 D A5 D5 A5
  C: "[[a4,f#5]!5 [a4,e5] a3!2 ~@3 a4 [a4,d5] ~ [a4,e5] ~, d3@10 ~@2 a4@6 ~@6 [a3,d4] ~@3 [a3,e4] ~@3, [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,e4] ~ d5@8 ~@12, ~@12 d4@4 d3@11 ~@5]/2", // D A5 D5 A5 D5 A5 D A5
  D: "[a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,f#5]@2 [a4,e5]@2 [a3,d4,a4,d5]@2 a3 ~, d3@5 ~@3, [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,e4] ~@5", // D A5 D5 D A5
  E: "[d3,a3,d4] ~@15", // D5
})).s("gm_piano").gain(0.31)

// chords · harmonica · "BRASS 3"
const harmonica = note("<~@23 A B@2 C D ~@88 E F G H@2 I@2 H@2 I@2 H@2 I@2 J@2>".pickRestart({
  A: "~@8 [a3,d4,a4,d5] ~@3 [a3,e4,a4,e5] ~@3", // D5 A5
  B: "[[a4,f#5]!5 [a4,e5] a3!2 ~@3 a4 [a4,d5] ~ [a4,e5] ~, d3@10 ~@2 d4@4 d3@11 ~@5, [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,e4] ~ [a4,d5]@6 ~@6 [a3,d4] ~@3 [a3,e4] ~@3]/2", // D A5 D5 A5 D A5 D5 A5
  C: "[a4,f#5]!5 [a4,e5] [a3,d4,a4,d5]@2, d3@5 ~@3, [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,f#4] ~ [a3,e4] ~@5", // D A5 D5 D A5
  D: "[d3,a3,d4] ~@15", E: "~@8 d4@2 ~@2 [d4,a4] ~@3, ~@8 g4 ~ g4@4 ~@2",
  F: "[d4,b4]@2 [d4,b4]@2 [d4,b4]@2 [d4,b4]@2 [d4,b4] ~ [d4,a4] ~ [c4,d4,g4,a4]@4", // G D5 Csus2
  G: "[b3,g4]@3 ~ [g4,b4]@2 [a4,c5]@2, ~@8 d4 ~@3 d4 ~@3", // Em G Am
  H: "[[b4,d5]@2 [b4,d5]@2 [b4,d5]@2 b4@2 [d4,b4] ~ [a4,c5]@2 b4@2 [b4,d5]@4 [g4,b4]@4 ~@2 g4@4 a4@4, d4 ~ d4 ~ d4 ~ d5@4 ~@22, ~@6 d4 ~@3 d4 ~ [d4,g4]@4 ~@8 d4 ~@3 d4 ~@3]/2", // Bm G Am Bm G G5
  I: "[[d4,b4]!5 [c4,a4] [b3,g4]@4 ~@2 [g4,b4]@2 [a4,c5]@2, ~@10 d4 ~ d4@4 ~@8 d4 ~@3 d4 ~@3]/2", // G F Em G Am
  J: "[[b4,d5]@2 [b4,d5]@2 [b4,d5]@2 b4@2 [d4,b4] ~ [a4,c5]@2 b4@2 [b4,d5]@4 ~@14, d4 ~ d4 ~ d4 ~ d5@4 ~@22, ~@6 d4 ~@3 d4 ~ [d4,g4]@4 ~@16]/2", // Bm G Am Bm G5
})).s("gm_harmonica").gain(0.22)

// chords · electric bass pick · "BRASS 3"
const electric_bass_pick = note(`<
  ~@9 A B C D E F G H A I J K L M N ~@4 O P Q R S T U V W X Y Z S T AA AB AC AD AE@3 AF AG AH AI AD AJ AK@2 AL AM AN AO
  AP AQ@3 AR AS ~@42 AT AU AV AW AX AY AZ BA ~@16
>`.pickRestart({
  A: "[b3,d4,g4]", B: "[a3,c#4,g4]", C: "[d4,f#4]@2 [d4,f#4,d5,f#5] [c#4,e4,c#5,e5], a3", D: "[b3,d4,f#4,d5,f#5]",
  E: "[b3,e4,g4,e5]", F: "[a3,c#4,g4,c#5]",
  G: "d5@2 d5 e5 f#5@2 d5@2 a5@2 g5@2 f#5@2 e5@2, a3, [d4,f#4] [c#4,e4,g4,a4], d3 ~@3", H: "d5 ~@3 a4@4, [a3,d4,f#4]",
  I: "[a3,c#4,e4,g4]", J: "[a3,d4,f#4]@2 [a3,d4,f#4,d5,f#5] [a3,c#4,e4,c#5,e5]", K: "[b3,d5,f#5] [b3,d5], [d4,f#4]",
  L: "e5 b4, [b3,e4,g4]", M: "a4 c#5, [a3,c#4,g4]", N: "d5@2 ~@4 a4 ~@9, [a3,d4,f#4] ~", O: "[g4,b4,d5,g5]",
  P: "[g4,a4,c#5,g5]", Q: "[f#4,d5,f#5]@2 [d5,f#5] [c#5,e5], a4", R: "[b4,d5,f#5]", S: "[b3,e4,b4,e5,g5]",
  T: "[a3,c#4,a4,c#5,g5]", U: "d5@2 d5 e5 f#5@2 d5@2 [g5,a5]@2 g5@2 f#5@2 e5@2, a4, [d3,f#5] ~ c#5@2, ~@4 e5@3 ~",
  V: "a4!2, [d5,f#5]", W: "[d4,g4,b4,d5,g5]", X: "[a3,e4,a4,c#5,g5]", Y: "[d4,f#4,a4,d5,f#5]@2 [a4,d5,f#5] [a4,c#5,e5]",
  Z: "~ b3, [b4,d5,f#5]", AA: "[a3,d4,a4,d5,f#5]", AB: "[e3,e4,b4,e5,g#5]", AC: "[f#4,a4,c#5,e5,f#5]",
  AD: "[a4,b4] [a4,b4,e5] [f#4,a4,d#5] [d#4,f#4,c#5], f#5, d#5 ~", // Asus2 D#dim D#m7
  AE: "[[e4,g#4]@4 g#4 a4 b4 [c#5,e5] ~@6 [e4,g#4]@2 ~@6 c#5@2, [b4,e5]@6 ~ g#4@4 ~@5 [f#4,a4,e5,f#5]@8, ~@4 c#5@7 ~, ~ e5 ~]/3", // E C#m E E5 F#m7
  AF: "[f#4,a4,b4,d#5,f#5]", AG: "g#4@2 ~ a4 b4 e5 e5@2, e5@5 ~@3, [e4,b4] ~, ~ g#4 ~@2",
  AH: "e5@5 e5@2 ~, [g#4,b4,g#5], e4@3 ~, f#4 ~", AI: "[f#4,a4]@3 a4, [c#5,e5,f#5]",
  AJ: "g#4@2 ~ a4 b4 e5 e5@2, e5@5 ~@3, [e4,b4] ~, ~ g#4!2 ~", // E5
  AK: "[[e4,g#4]@2 [c#4,e4,g#4]@2 [e4,f#4,a4]@3 [e4,f#4,a4], c#5, e5 [e5,f#5]]/2", AL: "~ d#4, [f#4,a4,b4,d#5,f#5]",
  AM: "[b3,e4]@2 [b3,e4,g#4] [c#4,e4,a4,c#5,e5,a5], [b4,e5,g#5]@3 ~", AN: "[b3,e4,g#4,b4,e5,g#5]",
  AO: "[c#4,e4,f#4,a4,c#5,e5,f#5]", AP: "[a4,b4]!2, [d#4,d#5,f#5]",
  AQ: "[[b3,e4,g#4]@5 [f#4,f#5] [e4,d#5,e5] [d#4,d#5] ~@4 g#4@2 g#4@2 [e4,f#4,a4,e5,f#5]@8, g#5@2 ~, b4 c#5@2, e5@3 ~ e5@4 ~@4, ~@4 e4@3 ~@5]/3", // E F# Emaj7 D# F#m7
  AR: "b4 [b3,b4], [d#4,f#4,a4,d#5,f#5]", AS: "[b3,e4,g#4]@2 [b3,e4,g#4] [b3,e4,a4], [b4,e5]", AT: "[d4,g4,b4]",
  AU: "[e4,g4,a4,c5]", AV: "[d4,f#4,c5], c4 ~", AW: "[d4,g4,b4,g5]@2 [d4,b4] [d4,f#4,a4], ~ g4", AX: "[b3,e4,g4,b4]",
  AY: "[g4,a4]@3 a4, [a3,c4,e4,c5]", AZ: "[f#3,d4,f#4,c5]", BA: "~@2 b3 c4 ~@4, [d4,g4,b4] ~",
})).s("gm_electric_bass_pick").gain(0.22)

// chords · electric bass finger · "BRASS 3"
const electric_bass_finger = note(`<
  ~@67 A B C D E F G H I J K L M N O P Q R S T U@2 V@2 W@2 X T Y@3 Z AA@2 AB@2 AC@2 AD@3 AE ~@24
>`.pickRestart({
  A: "b5@3 b5, [d4,g4,b4,d5,g5]", B: "a4@2 ~ e5, [c5,g5,a5,c6], e5@3 ~, ~ a4",
  C: "[c5,d5] [c5,d5,e5,g5] [a4,c5,d5,f#5] [f#4,a4,c#5,d5,e5], a5, c6@3 ~, f#5 ~", // Csus2 C D7 F#m7
  D: "[g4,b4,d5]@4 b4 c5 d5 [b4,e5,g5], b5, g5@7 ~", E: "g4@2 ~ [g4,b4], [e5,g5], b4@3 ~, ~ e4",
  F: "~@3 e5, [a4,c5,g5], ~ g4", G: "[f#4,a4,c5,d5,f#5]", H: "b4@2 ~ c5 d5 g5@2 ~, g4, g5@5 ~@3, d5 ~, ~ b4 ~@2",
  I: "g5@5 ~ d4@2, [b4,d5], g4@3 ~, a4@4 ~ g5@2 ~", J: "[c4,c5,e5,g5]",
  K: "[c5,d5] [c5,d5,g5] [a4,c5] [f#4,a4,e5], a5, ~ f#5", L: "b4@2 ~ c5 d5 ~ f#5@2, g5@5 g5@2 ~, [g4,d5] ~, ~ b4 b4@2",
  M: "g4 [e4,g4], [b4,e5,g5]", N: "g4@2 [c4,f#4] [c4,e4], [a4,c5,e5,g5]", O: "f#4 [d4,f#4], [a4,c5,d5,f#5]",
  P: "[b3,d4,g4]@3 [b3,d4,g4] [b3,d4,g4]@2 [g3,c4,e4,g4,c5,e5,g5]@2, [b4,d5,g5]@3 ~", Q: "[b3,d4]!2, [g4,b4,d5,g5]",
  R: "[f4,g4,b4,d5]@10 [f4,g4,b4,d5]@5 ~, f5, [b3,d4] ~", S: "~@7 e4, [c4,g4,c5,e5]", T: "[c4,e4,g4,c5,e5,g5]",
  U: "[[d4,f#4]@3 ~ f#4 g4 a4 f#4 d4@4 d4@4, [d5,f#5], c4@3 ~, a4@3 ~ f#4@4]/2", // D
  V: "[[d4,f#4]@2 f#4 g4 a4 f#4 [g4,a4] a4 [b3,d4,f#4,b4]@8, [d5,f#5], b4 ~, [b3,a4] ~@3]/2", // D Gsus2 Bm D B7
  W: "[[d#4,f#4]@2 f#4 g4 a4 f#4 g4 a4 [d#4,f#4]@2 [d#4,f#4,a4]@2 [d#4,f#4,b4]@2 [a4,b4,d#5,f#5]@2, [d#5,f#5]@7 ~, b4@3 a5, [b3,a4] ~@3]/2", // D#m D#dim B B7 D#m B7
  X: "~@4 g4@3 ~, [e4,c5,e5,g5]", // C
  Y: "[f#4@2 g4@2 a4@2 f#4@2 g4@2 a4@2 f#4@2 g4@2 a4@2 f#4@2 g4@2 a4@2 f#4@2 g4@2 a4@2 f#4@2 a4@2 ~@2 a4 g4 f#4@2 a4@2 f#4@2 g4@2 a4@2, [d5,f#5,a5], ~ c5 b4]/3", // D
  Z: "~@4 b3@3 ~, [d4,f#4,a4,b4,d5,f#5,a5]", // Bm7
  AA: "[[b3,d#4,f#4,a4]@2 f#4 g4 a4 f#4 g4 a4 ~@4 b3@2 d#5@2, f#5, d#5@7 ~, b4 a4, ~@4 [d#4,f#4,b4]@3 ~]/2", // B7 B
  AB: "[[e4,g4]@4 g4@3 g4, [c5,e5,g5], ~ [e4,a4]]/2", // Em C A5
  AC: "[[d4,f#4,a4]@3 ~ [d4,f#4] g4 a4 f#4 ~@6 c5@2, [f#5,a5], [c5,d5]@4 d5@3 ~, ~@5 d4@2 ~ [d4,f#4]@8, ~@12 a3@3 ~]/2", // D F#m Csus2 D
  AD: "[[b3,d4,f#4]@2 ~@2 f#4@2 g4@2 a4@2 f#4@2 g4@2 a4@2 [a4,b4]@12 a4@4 [b3,d#4,f#4]@4 a4 g4 f#4@2 a4@2 f#4@2 g4@2 a4@2, f#5, d5@2 [b4,d#5], b4@8 [b3,d4,f#4]@8 a4 ~@7]/3", // Bm Asus2 B Bm
  AE: "f#4 g4 a4 f#4 g4 a4 b4@2, [b4,d#5,f#5]@3 ~, a4 ~@3", // B
})).s("gm_electric_bass_finger").gain(0.23)

// drums · kick
const kick = s("bd").struct("<~ A@8 ~@14 A@4 ~ B@56 C@7 B@2 C@7 B@3 C@5 B ~@7 A@16 ~>".pickRestart({
  A: "x", B: "x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~@2 x",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@27 [~@3 x]!38 ~@67>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@84 [~ x ~ x]!7 [~ x!2 ~@5]!2 [~ x ~ x]!7 [~ x!2 ~@5]!3 [~ x ~ x]!5 [~ x!2 ~@5] ~@24>")
  .gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@91 [~@7 x]!2 ~@7 [~@7 x]!3 ~@5 [~@7 x] ~@24>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~ A@7 ~@7 B ~@7 A@4 ~ C@38 D@18 E@7 ~@2 E@7 ~@3 E@5 ~@8 E@13 F ~@3>".pickRestart({
  A: "~@3 x", B: "~@2 x ~@2 x ~@2", C: "~@7 x", D: "~ x ~ x", E: "x!8", F: "x!6 ~@2",
})).gain(0.31)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ A@7 B ~@14 A@4 ~@102 C D@2 ~>".pickRestart({
  A: "x!6 ~ x", B: "~ x", C: "~@6 x!2", D: "x!8",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<A@8 ~@15 A@4 ~@64 B@2 ~@7 B@3 ~@5 B ~@7 A@15 ~@2>".pickRestart({
  A: "~@7 x", B: "~@3 x",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@8 x ~@124>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@91 [~@5 x ~@2]!2 ~@7 [~@5 x ~@2]!3 ~@5 [~@5 x ~@2] ~@24>").gain(0.51)

// drums · crash
const crash = s("cr").struct("<~@91 [~@7 x]!2 ~@7 [~@7 x]!3 ~@6 x ~@23>").gain(0.51)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@9 A@6 ~ A@7 ~@4 A B@38 ~@43 A@7 ~@17>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(2.08)

stack(
  bass, piano, harmonica, electric_bass_pick, electric_bass_finger, kick, rim, snare, low_tom, hihat, hihat_soft,
  mid_tom, open_hat, high_tom, crash, cabasa
)

More by Dalla