Strudelify
Vai con lui cover art

1997 · L'Amore Sia Con Te

Vai con lui

Masini

KeyB majorTempo72 bpm
0:00/0:00
// Vai con lui — Masini
// 72.1 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72.1/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note("<~@13 A@8 B@8 C@8 D@8 E@8 F@8 G@8 H@8 I@8 ~>".pickRestart({
  A: "[~@47 a1@24 g#1@24 f#1@24 e1@24 d2@24 c#2@24 b1@24 e1@24 a1@24 g#1@24 f#1@24 e1@24 d2@24 e1@24 a1]/8",
  B: "[~@23 g#1@24 f#1@24 ~@18 e2@2 ~ f#2@2 ~ a1@24 g#1@24 f#1@24 e1@24 d2@24 c#2@24 b1@24 e1@24 a1@24 g#1@24 f#1@24 e1@24 d2, ~@71 e1@24 ~@289]/8",
  C: "[~@23 c#2@24 b1@23 e1@24 g#1@24 a1@24 g#1@24 f#1@24 e2@24 d2@24 c#2@24 b1@24 e1@24 a1@24 g#1@24 f#1@24 e1@2]/8",
  D: "[~@11 d2@12 e1@12 a1@12 g#1@12 f#2@12 f#1@12 b1@12 a#1@12 g#1@12 f#1@12 e2@12 d#2@12 c#2@12 f#1@12 b1@12 a#1]/8",
  E: "[~@22 g#1@24 f#1@24 e2@24 d#2@24 c#2@24 f#2@24 f#1@24 b1@23 a#1@24 g#1@24 f#1@24 e2@24 d#2@24 c#2@24 f#1@24 b1@3]/8",
  F: "[~@7 a#1@8 g#1@8 f#1@8 e1@8 f#1@8 b1@8 a#1@8 g#1@8 f#1@8 e2@8 d#2@8 c#2@8 f#1@8 b1@8 a#1@8 g#1]/8",
  G: "[~@7 f#1@8 e2@8 f#1@8 b1@8 a#1@8 g#1@8 f#1@8 e2@8 d#2@8 c#2@8 f#1@8 b1@8 a#1@8 g#1@8 f#1@8 e2]/8",
  H: "[~@21 f#1@24 b1@23 a#1@24 g#1@24 f#1@24 e2@24 d#2@24 c#2@24 f#1@24 b1@24 a#1@24 g#1@24 f#1@24 e2@24 f#1@24 b1@4]/8",
  I: "[~@20 a#1@24 g#1@24 f#1@24 e2@24 d#2@24 c#2@24 f#1@24 b1@24 a#1@24 g#1@24 f#1@24 e2@24 f#1@26 ~ b1@49]/8",
})).s("gm_acoustic_bass").gain(0.42)

// chords · electric guitar jazz · "CHOIR/GTR"
const electric_guitar_jazz = note("<~@29 A@8 B@2 C@2 ~@45>".pickRestart({
  A: "[~@70 f#4@24 f4@24 ~@9 a4@20 ~@67 d3@3 a3@3 ~@3 [f#4,a4]@16 ~@2 a3@3 c#4@3 e4@16 ~@8 [d4,a4]@15 ~@9 b4@17 ~@72, ~@23 b3@169, ~@119 a3@20 ~@100 c#3@8 ~@16 b2@18 ~@11 f4@10 ~@82, ~@121 c#4@18 ~@81 d4@6 ~@39 d3@6 ~@18 d4@11 ~@84, ~@124 e4@13 ~@131 a3@6 ~@12 a3@13 ~@85]/8", // F#m D5
  B: "[~@31 a4@15 ~@6 a3@3 e4@9 ~@32, ~@23 a3@13 ~@10 e3@9 ~@41, ~@25 d4@9 ~@15 f#3@7 ~@40, ~@7 e4@2 ~@15]/2",
  C: "[~@28 c#4@3 ~@21 c#4@7 ~@37, ~@11 g#3@12 f#3@8 ~@17, ~@25 b3@11 ~ c#4@7 ~@5 a#3@11 ~@36, ~@31 f#4@9 b3@16 ~@40]/2",
})).s("gm_electric_guitar_jazz").gain(0.43)

// chords · french horn · "FR.HORN"
const french_horn = note("<~ A B A B C D E F G@3 H I@8 J@2 K@8 L@2 M@6 N@8 O@8 P@8 Q@7 R@7 S@8 ~>".pickRestart({
  A: "a1 g#1", B: "f#1 e1", C: "[a1,e3,c#4] g#1", D: "[f#1,a3] [e1,a3]", E: "[d2,a3,d4] [c#2,e3,a3,c#4]",
  F: "[b1,f#3,d4] [e2,g#3,b3,d4,f4]", // Bm E7
  G: "[[a2,a3,c#4,e4]@24 [g#2,e3,g#3,b3]@23 ~ f#2@23 ~ e2@23 [d2,f#3,a3,d4]@24 [e2,e4]@24 a2, ~@47 e3@24 a3@24 ~@49]/3", // A E D E
  H: "~@23 g#2@24 [f#2,a3]", // F#m
  I: "[~@23 [e2,b3]@24 [a2,e3,a3,c#4]@24 [g#2,g#3,b3,e4]@24 f#2@24 e2@24 [d3,f#3,a3,d4]@24 [c#3,e3,a3,c#4]@24 [b2,f#3,a3,d4]@24 [e2,g#3,b3,d4,f4]@24 [a2,e3,c#4,e4]@24 [g#2,g#3,b3,e4]@24 f#2@24 e2@24 [d3,f#3,a3,d4]@24 [e3,f#3,a3,d4]@24 [a2,e3,a3,c#4], ~@95 [a3,c#4,e4]@47 ~@145 [a3,c#4,e4]@47 ~@50]/8", // E5 A E D A Bm7 E7 A …
  J: "[~@23 [g#2,g#3,b3]@24 [f#2,f#3,a3]@24 [e2,g#3,b3]@24 [a2,a3,c#4]]/2", // G#m F#m E A
  K: "[~@23 [g#2,g#3,b3]@24 f#2@24 e2@24 [d3,f#3,a3,d4]@24 [c#3,e3,a3,c#4]@24 [b2,f#3,a3,d4]@24 [e2,g#3,b3,d4,f4]@24 [a2,e3,a3,c#4]@24 [g#2,g#3,b3]@24 f#2@24 e2@24 [d3,f#3,a3,d4]@24 [c#3,e3,a3,c#4]@24 [b2,f#3,a3,d4]@23 [e2,a3,d4,f#4]@24 ~ [g#2,b3,d4,f4], ~@47 [a3,c#4]@47 ~@145 [a3,c#4]@47 ~@98]/8", // G#m D A Bm7 E7 A G#m D …
  L: "[~@11 [a2,e3,a3,c#4]@12 [g#2,g#3,b3]@12 [f#2,f#3,a3]@12 [a3,c#4], ~@23 e3@19 ~@6]/2", // A G#m F#m A
  M: "[~@11 [d3,f#3,a3,d4]@12 [c#3,e3,a3,c#4]@12 [b2,f#3,b3,d4]@12 [e2,g#3,b3,d4,f4]@12 [a2,a3,c#4]@12 [g#2,g#3,b3]@12 [f#2,f#3,a3]@12 [e2,e3,a3]@12 [d2,f#3,a3,d4]@12 [e2,f#3,a3,d4]@12 [a2,e3,a3,c#4]@12 [g#2,g#3,b3], ~@59 e3@36 ~@49]/6", // D A Bm E7 A G#m F#m A5 …
  N: "[~@11 [f#2,e3,f#3,b3]@12 [f#2,f#3,a#3,c#4]@12 [b2,f#3,b3,d#4]@12 [a#2,f#3,a#3,c#4]@12 [g#2,g#3,b3,d#4]@12 [f#2,g#3,b3,d#4]@12 [e2,g#3,b3,e4]@12 [d#2,f#3,b3,d#4]@12 [c#3,g#3,c#4,e4]@12 [f#2,a#3,c#4,e4,g4]@12 [b2,b3,d#4]@12 [a#2,f#3,a#3,c#4]@12 [g#2,g#3,b3,d#4]@12 [f#2,g#3,b3,d#4]@12 [e2,g#3,b3,e4]@12 [d#2,f#3,b3,d#4], ~@118 d#3@49 ~@143 d#3@49 ~@25]/8", // Esus2 F# B F# G#m G#m7 E B …
  O: "[~@22 [c#2,e3,g#3,c#4]@24 [f#2,f#3,b3,e4,g#4]@24 [f#2,a#3,c#4,e4,g4]@24 [b2,f#3,b3,d#4,f#4]@24 [a#2,f#3,a#3,c#4,f#4]@24 [g#2,d#3,g#3,b3,d#4]@23 [f#2,f#3,g#3,b3,d#4]@24 [e2,e3,g#3,b3,e4]@24 [d#2,f#3,b3,d#4,f#4]@24 [c#2,g#3,c#4,e4]@24 [f#2,a#3,c#4,e4,g4]@24 [b2,f#3,b3,d#4,f#4]@24 [a#2,f#3,a#3,c#4,f#4]@24 [g#2,d#3,g#3,b3,d#4]@24 [f#2,f#3,g#3,b3,d#4]@24 [e2,g#3,b3,e4]@3]/8", // C#m E F#7 B F# G#m G#m7 E …
  P: "[~@7 [f#2,b3,e4,f#4]@8 [b2,f#3,b3,d#4,f#4]@8 [a#2,f#3,a#3,c#4,f#4]@8 [g#2,d#3,g#3,b3,d#4]@8 [f#2,f#3,g#3,b3,d#4]@8 [e2,e3,g#3,b3,e4]@8 [d#2,f#3,b3,d#4]@8 [c#2,g#3,c#4,e4]@8 [f#2,a#3,c#4,e4,g4]@8 [b2,f#3,b3,d#4,f#4]@8 [a#2,a#3,c#4,d#4,g4]@8 [g#2,b3,d#4,g#4]@8 [f#2,b3,d#4,f#4,a4]@8 [e2,e3,g#3,b3,e4]@8 [f#2,f#3,a#3,c#4]@8 [b2,f#3,b3,d#4]]/8", // Esus2 B F# G#m G#m7 E B C#m …
  Q: "[~@21 [a#2,f#3,a#3,c#4,f#4]@24 [g#2,d#3,g#3,b3,d#4]@24 [f#2,f#3,g#3,b3,d#4]@24 [e2,e3,g#3,b3,e4]@24 [d#2,f#3,b3,d#4,f#4]@24 [c#2,g#3,c#4,e4]@24 [f#2,a#3,c#4,e4,g4]@24 [b2,f#3,b3,d#4,f#4]@23 [a#2,f#3,a#3,c#4,f#4]@24 [g#2,d#3,g#3,b3,d#4]@24 ~ [f#2,f#3,g#3,b3,d#4]@24 [e2,g#3,b3,e4]@23 [f#2,f#3,g#3,b3,e4]@24 [b2,f#3,b3,d#4]@4]/7", // F# G#m G#m7 E B C#m F#7 B …
  R: "[~@5 [a#2,f#3,a#3,c#4,f#4]@6 [g#2,d#3,g#3,b3,d#4]@6 [f#2,f#3,g#3,b3,d#4]@6 [e2,e3,g#3,b3,e4]@6 [d#2,f#3,b3,d#4,f#4]@6 [c#2,g#3,c#4,e4]@6 [f#2,a#3,c#4,e4,g4]@6 [b2,f#3,b3,d#4,f#4]@6 [a#2,f#3,a#3,c#4,f#4]@6 [g#2,d#3,g#3,b3,d#4]@6 [f#2,f#3,g#3,b3,d#4]@6 [e2,g#3,b3,e4]@6 [f#2,f#3,g#3,b3,e4]@6 [b2,f#3,b3,d#4]]/7", // F# G#m G#m7 E B C#m F#7 B …
  S: "[~@20 [a#2,f#3,a#3,c#4,f#4]@24 [g#2,d#3,g#3,b3,d#4]@24 [f#2,f#3,g#3,b3,d#4]@24 [e2,e3,g#3,b3,e4]@24 [d#2,f#3,b3,d#4,f#4]@24 [c#2,g#3,c#4,e4]@24 [f#2,a#3,c#4,e4,g4]@24 [b2,f#3,b3,d#4,f#4]@24 [a#2,f#3,a#3,c#4,f#4]@24 [g#2,d#3,g#3,b3,d#4]@24 [f#2,f#3,g#3,b3,d#4]@24 [e2,g#3,b3]@24 [f#2,f#3,g#3,b3,e4]@26 ~ [b2,d#3,f#3,b3]@49]/8", // F# G#m G#m7 E B C#m F#7 B …
})).s("gm_french_horn").gain(0.29)

// chords · french horn · "FR.HORN" · soft notes
const french_horn_soft = note(`<
  ~ A@4 B C D E F@2 G@3 ~@8 H@3 ~@2 I@2 ~@3 J@2 ~@2 K@4 ~@4 L ~@10 M ~@2 N ~@23 O@2 ~@2
>`.pickRestart({
  A: "[c#4 b3 a3 b3, e3]/2", B: "~ b3, e4", C: "e4", D: "f#3 ~", E: "b3 ~",
  F: "[~@48 c#3@23 ~ e3@24, ~@47 [a3,e4]@24 e4@24 ~]/2", G: "[~@23 [a3,d4]@24 c#4@24 b3@24 ~@49, ~@47 e3@93 ~@4]/3",
  H: "[~@47 e3@24 e4@24 e4@47 ~@2]/3", I: "[~@23 e4@24 e4@47 ~@2]/2", J: "[~@23 [e2,e3]@12 ~@13]/2",
  K: "[~@23 c#4@12 ~@12 e4@12 ~@12 e4@12 ~@13]/4", L: "~@22 f#4@23 ~@3", M: "~@7 g#3@8 ~", N: "~@7 f#4@8 ~",
  O: "[~@11 e4@6 ~@7]/2",
})).s("gm_french_horn").gain(0.12)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A B@3 C D B@9 E@5 B E@6 F E@4 F E F E@3 G E G@6 H I J K G J@2 L G M G N M N O N M N@2 M N M P M Q ~@2
>`.pickRestart({
  A: "~@47 x", B: "~@23 x ~@23 x", C: "~@23 x ~@24", D: "x ~@22 x ~@23 x", E: "~@11 x ~@11 x",
  F: "~@22 x ~@2 x ~@20 x ~", G: "~@7 x ~@7 x", H: "~@7 x ~@2 x ~@4 x", I: "x!3 ~@4 x ~@7 x", J: "~@7 x!2 ~@6 x",
  K: "~@2 x ~@4 x ~@7 x", L: "~@7 x!2 ~ x ~@4 x", M: "~@20 x ~@2 x ~@20 x ~@3", N: "~@5 x ~@5 x",
  O: "~@20 x ~@8 x ~@14 x ~@3", P: "~@2 x ~@2 x ~@14 x ~@23 x ~@3", Q: "~@5 x ~@6",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@31 A B@8 C B@3 D E@3 F E@10 F E@9 G H@10 I H@2 J ~@2>".pickRestart({
  A: "~@17 x ~@6", B: "~@5 x ~@11 x ~@6", C: "~@2 x ~@14 x ~@6", D: "~@8 x ~@8 x ~@6", E: "~@3 x ~@7 x ~@4",
  F: "~@3 x ~@9 x ~@2", G: "~@8 x ~@26 x ~@12", H: "~ x ~@2 x ~", I: "~@8 x ~@23 x ~@14 x", J: "~@8 x ~@24 x ~@14",
})).gain(0.38)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@14 [~@11 x ~@23 x ~@12]!17 ~@55>").gain(0.23)

// drums · low tom
const low_tom = s("lt").struct("<~@48 [~@13 x ~@2] ~@24 [~@23 x ~@24] ~@12>").gain(0.38)

// drums · hihat
const hihat = s("hh").struct("<~ A@8 B C@20 D@10 E D@5 A D F A@3 F A@6 F G A@6 B C@15 H ~@2>".pickRestart({
  A: "x!16", B: "x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  C: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  D: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  E: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", F: "x!14 ~ x",
  G: "x!3 ~ x!12", H: "~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@6 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@4",
})).gain(0.08)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 A B ~@3 B ~@3 C ~@3 D ~@2 D ~@3 E ~@6 D ~@2 F ~@16>".pickRestart({
  A: "~@7 x ~@40", B: "~@13 x ~@34", C: "~@3 x", D: "~@13 x ~@2", E: "~@2 x!2", F: "~@32 x ~@8 x ~@6",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@39 A B ~@3 B ~@3 C ~@3 D ~@2 D ~@3 E ~@9 F ~@3 G ~@12>".pickRestart({
  A: "~@37 x ~@10", B: "~@7 x ~@40", C: "~@9 x!2 ~@5", D: "~@3 x", E: "~@7 x ~@8", F: "~@29 x ~@18",
  G: "~@23 x ~@8 x ~@5 x ~@9",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct(`<
  ~@31 A ~@7 A@2 ~@7 B ~@3 B ~@2 B ~@4 C ~@5 B ~@2 B ~@3 D ~@2 D ~@4 E ~ F ~@2
>`.pickRestart({
  A: "~@11 x ~@12", B: "~@15 x", C: "~@3 x ~@12", D: "~@11 x", E: "~ x ~@4", F: "~@47 x",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct("<~@83 [~@2 x ~@2 x ~@6] ~@2>").gain(0.12)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  [~@15 x]!5
  [~@11 x]!20
  [~@43 x ~@4]!27
  [~@7 x]!18
  [~@41 x ~@6]!13
  [~@43 x ~@4]
  ~@2
>`).gain(0.51)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~ A@4 B@25 C@19 D C D@16 E F@15 G ~@2>".pickRestart({
  A: "~ x ~@11 x ~@2", B: "~ x ~@17 x ~@4", C: "~ x ~@35 x ~@10", D: "x ~@2 x", E: "x ~@34 x ~@11 x",
  F: "~@35 x ~@11 x", G: "~@37 x ~@10",
})).gain(0.51)

// drums · claves
const claves = s("clave:2").struct(`<
  ~
  [~@2 x ~@2 x ~ x ~ x ~@6]!5
  [~@5 x ~@8 x ~@5 x ~@5 x ~@21]!25
  [~@4 x ~@8 x ~@5 x ~@5 x ~@22]!15
  [~ x ~@2 x ~ x ~ x ~@7]!25
  [~@2 x ~@8 x ~@5 x ~@5 x ~@24]!13
  ~@2
>`).gain(0.75)

stack(
  bass, electric_guitar_jazz, french_horn, french_horn_soft, kick, snare, snare_soft, low_tom, hihat, mid_tom, high_tom,
  crash, ride, bongos, bongos_2, claves
)

More by Masini