Strudelify
Volami nel cuore cover art

1998 · Cremona

Volami nel cuore

Mina

KeyF majorTempo84 bpm
0:00/0:00
// Volami nel cuore — Mina
// 84 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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.

// other · overdriven guitar
const overdriven_guitar = note("<~@2 A@4 ~@55 A@4 ~@4 A@4 ~@2>".pickRestart({
  A: "[~@11 e5@12 f5@29 ~@12]/4",
})).s("gm_overdriven_guitar").gain(0.06)

// bass · fretless bass
const bass = note(`<
  A@2 B C D E F G H@2 ~@3 I J K L M F N O P O Q R S T U V W X Y J K L M F N Z AA P O Q R S T U V W T U AB W AC AD AE AF
  AG AH AI@2 AJ G AK E AL G AI@2 B G AK E F AM
>`.pickRestart({
  A: "[f1@12 ~ c2@19]/2", B: "g1@3 bb1", C: "c3 bb2", D: "a2@3 f3@13", E: "d2", F: "g1@12 ~@2 bb1 b1", G: "c2 bb1",
  H: "e1/2", I: "~@3 bb1", J: "g1@14 ~ b1", K: "c2@3 gb1", L: "f1@12 ~@2 c2 db2", M: "d2@8 c3@4 d2@3 ~",
  N: "c2@10 c2!2 g2@2 c2@2", O: "bb1@6 ~ bb1 bb1@7 ~", P: "bb1@6 ~ bb1 c2@4 ab2@4", Q: "bb1@6 ~ bb1 c2@2 ab2@2 f2@4",
  R: "g1@6 ~ g1 g1@7 ~", S: "g1@6 ~ g1 g2@3 d2@3 g1@2", T: "d2@6 ~ d2 d2@8", U: "g1@4 g1!2 g2 g1 ~ g1 g1@2 g2@2 g1!2",
  V: "c2@7 c2 c2@7 c2", W: "a1@4 a1!2 a2 a1 ~ a1 a1@2 g2@3 a1", X: "d2@7 d2 d2@8", Y: "d2@5 e2@2 c3@5 ~@4",
  Z: "c2@3 ~@5", AA: "ab1@6 ~ ab1 ab1@7 ~", AB: "e1@7 e1 e1@7 e1", AC: "d2@6 ~ d2!2 ~ d2@3 ~ d2@2",
  AD: "f1@5 f2 f1 g1 ~ g1 g1@2 g1@2 g1 f1", AE: "e1@6 ~ e1 e1@5 ~ e1 g1", AF: "a1@5 a1 ~ a1 ~ a1 a1@3 ~ a1@2",
  AG: "d2@6 ~ d2 d2@2 d2@4 d2 e2", AH: "f2 f1@3 f2@2 f1@2 g1@7 ~", AI: "[a1@12 ~ c2@19]/2", AJ: "bb1@3 bb1",
  AK: "a1@3 f2@13", AL: "bb1@12 ~@2 bb1 b1", AM: "c2@4 bb1@3 ~",
})).s("gm_fretless_bass").gain(0.4)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A@2 B C D E B F G@2 H I@3 ~@6 J@2 K@2 L@2 M@4 N@2 ~@7 J@2 K@2 L@2 M@4 O@4 P Q@3 R@2 A@2 B C D E B F A@2 B C D E B S
>`.pickRestart({
  A: "[f4@15 ~ e4@5 ~ [d4,f4]@10, a3@31 ~, c4@11 ~@5]/2", B: "[bb3,d4,f4]", C: "f4 e4, [bb3,c4]",
  D: "~ c5@3, [a3,c4,f4]", E: "[c4,e4]@6 [d4,f4]@9 ~, a3", F: "f4@8 e4@7 ~, [bb3,c4]@15 ~", G: "[[f3,a3,c4]@31 ~]/2",
  H: "[f3,d4]@8 [g3,c4]@7 ~, bb3@15 ~", I: "[c4@8 d4@7 ~ [g3,bb3,d4]@6 [g3,bb3,c4,f4]@26, f4@7 ~@9, a3@7 ~@17]/3",
  J: "[bb3,d4,f4,a4]/2", K: "[[bb3,eb4,g4,bb4]@31 ~]/2", L: "[g3,d4,g4,b4]/2",
  M: "[a4 ~ b3 a3, [c4,d4,f4] [c4,e4], ~ g4@3]/4", N: "[[c4,d4,f4,a4]@31 ~]/2",
  O: "[~@2 b3 a3, [c4,d4,f4,a4]@31 ~ [d4,e4]@32, ~ g4@3]/4", P: "[c4,d4,f4,a4]",
  Q: "[[c4,f4,ab4] [b3,d4] ~@2 a3@2, ~ g4@5, ~ [c4,e4]@2]/3", R: "[[a3,d4]@16 [ab3,c4]@8 [g3,b3,d4,g4]@7 ~, f4@3 ~]/2",
  S: "f4@6 ~@2 e4@5 ~@3, [bb3,c4]@13 ~@3", // Bbsus2
})).s("gm_synth_strings_1").gain(0.12)

// other · pad halo
const pad_halo = note(`<
  ~@13 A@2 ~@11 B C@2 D E F G ~@4 H@2 ~@6 B C@2 D I C@2 J ~@6 K@2 L M N@2 L M K@2 L M N@2 L O
>`.pickRestart({
  A: "[~ [f5,a5,d6]@7]/2", B: "d4@15 ~", C: "g4@15 ~", D: "d5 c5 b4 g4", E: "f4",
  F: "e4 f4 e4 d4@5 [e4,g4]@4 [f4,a4]@4", G: "[g4,bb4]", H: "[~@13 [g4,d5,a5]@19]/2", I: "[d4,f4]", J: "a4@3 b4",
  K: "[c5@31 ~]/2", L: "~@3 c6", M: "bb5 a5 g5 c6", N: "[c5@27 ~@5]/2", O: "bb5 a5 g5 ~",
})).s("gm_pad_halo").gain(0.25)

// chords · piano
const piano = note(`<
  A B C D E B F@3 G H I J@3 K L M C N O@2 P Q R S@4 T U@2 C K L M C V@2 O@2 P Q R S@4 T W X Y Z AA AB AC AD AE AF A B C
  D E B AG@3 B C D E B AH@2
>`.pickRestart({
  A: "[f2,g3,a3,c4]@15 ~", B: "[g3,c4,e4]@3 [a3,c4,f4]@5, [d2,d3]", C: "[g2,a3,bb3,d4,f4]",
  D: "[g3,c4,f4] [g3,c4,e4], [c2,c3]", E: "[a2,g3,a3,c4,f4]",
  F: "[[g2,a3,bb3,d4,f4]@15 ~ [g3,bb3,c4,f4]@8 [g3,c4]@8 [f2,g3,a3,c4,f4]@16, ~@15 [c2,c3]@32 ~, ~ [bb3,e4]]/3", // Gm7 C5 F C Bbdim
  G: "[d2,g3,a3,c4,d4]", H: "[g2,a3,bb3,d4,f4] [c3,g3,bb3,c4,e4]", I: "[f2,g3,a3,c4,f4]@2 ~ f4, ~ [d2,a3,c4,d4,e4]",
  J: "[[g2,a3,bb3,d4,f4]@3 ~@13 [g2,a3,bb3,d4,f4]@8, ~@3 [c3,g3,c4]@16 ~@5, ~@3 [bb3,f4]@11 c5@10, ~@14 bb4@2 c5@3 [g4,a4]@3 bb4@2 c5@3 [g4,a4]@21, ~@15 [g4,a4]@3 bb4@2 c5@3 [g4,a4]@3 bb4@22]/3", // Gm7 C5 Bb5 Gsus2
  K: "[c3,g3,bb3,c4,f4]", L: "[f2,g3,a3,c4,f4]", M: "[g3,a3,c4] [gb3,a3,c4], d3",
  N: "[g3,bb3,c4,f4]@6 g3@4 ~@2 [g3,c4]@3 ~, c3@5 g3 ~@2, ~@6 [bb3,f4]@9 ~, ~@6 c4@5 c3@4 ~", // Gm7 C5 Bb5
  O: "[~@31 bb3, bb2@14 bb3@2 f4@4 f3@3 bb2@9, f4@5 f4@2 f3@4 c4@7 bb3@3 f4@3 f4@4 f3 f4@3, ~@2 bb3@4 bb3@2 f4@4 f3@7 c4@5 ~@3 c4@5, ~@3 c4@7 bb3@3 f4@2 bb2@7 bb3@2 ~@2 bb3@4 f3@2]/2",
  P: "~@15 g3, eb3, f4@4 g3@2 bb3@3 g3@5 bb3@2, ~@2 bb3@3 f4@2 g3 f4@3 eb4@5, ~@3 eb4@7 bb3@3 f4@3",
  Q: "~@15 bb3, eb3@6 bb3@3 g3@2 eb4@2 f4@3, [g3,f4]@4 g3@3 eb3@9, ~@2 bb3@3 f4@2 g3 f4@4 g3@4, ~@3 eb4@7 bb3@4 eb4@2", // G7
  R: "~@15 g3, [g3,g4]@2 g3 b3@2 b3@2 b3, ~@2 b3@3 g4@2 g3@2 g3@6 ~, ~@3 d4@8 d4@5, ~@8 g4@5 g4@3", // G
  S: "[~@16 [c4,d4,f4]@6 ~ [d4,f4,a4]@2 [d4,f4,a4]@2 ~ [c4,d4,f4,a4]@2 [c4,d4]@5 ~ [c4,d4,g4] ~@2 [c4,d4,g4]@2 ~@3 [c4,d4,f4]@2 ~@2 b3@6 b3@3 b3 ~@2 [b3,e4,g4]@2 [b3,e4,g4]@2, g4@5 g4@3 g4@5 d4 g4@16 a4@11 d4 c4 g3@21, ~ g3@6 g3@4 b3@19 f4@5 g3@2 [c4,d4,g4] g3@3 g4@5 [c4,d4,f4,a4]@18, ~@2 b3@4 b3@4 a3@6 d3@32 [e4,g4]@9 [e4,g4]@2 c3@5, ~@3 d4@9 g3@10 a3 c4@4 a3@31 b3@2 ~@4]/4", // Dm7 Dm Dm7 Csus2 Dm7 Em Csus2 Dm7 …
  T: "[b3,c4,e4,g4]@2 ~ [b3,c4,e4,g4] ~@2 [a3,b3,c4,e4,g4]@4 b3 ~ e4@2 b3@2, ~@11 a3@5, ~@3 [c4,g4], ~@12 b3 ~@3", // Cmaj7 Am7 C5
  U: "[[c4,e4,f4,a4]@6 ~ [c4,e4,f4,a4] ~ [e4,f4,a4] c4 ~ [e4,f4,a4]@2 c4 ~ [c4,e4,f4,a4]@2 [c4,e4,f4,a4] ~@2 c4 a3 [c4,e4,f4,a4] ~ [c4,e4,f4,a4] ~ c4 a3 [c4,e4,f4,a4]@2 ~, d3@9 ~@2 d3@3 ~ d3@3 ~@2 d3@11 ~, ~@12 c4 ~@19]/2", // Fmaj7
  V: "[[g3,bb3,c4,f4]@6 ~@6 [g3,c4,f4,g4,bb4,d5]@19 ~, c3@31 ~]/2", // Gm7
  W: "[c4,d4,f4]@4 ~@2 a3 [c4,d4,f4,a4] ~ [d4,f4,a4] ~ a3 [c4,d4,f4,a4]@2 [c4,d4,f4,a4] ~, d3@9 ~@7, [e4,a4]@3 ~@5", // Dm7 Dm Dm7 A5
  X: "~@4 [c4,d4,g4]!2 g3 [c4,d4,g4] ~ [d4,g4] c4 ~ [c4,d4] ~ [c4,d4,f4,a4] ~, ~@3 g3@2 ~@6 g3@4 ~, ~@6 f4 ~", // Csus2 G5 Csus2 Dm7
  Y: "b3@5 ~ b3@3 [b3,e4,g4] b3 ~ [b3,e4,g4]@2 [b3,e4,g4] ~, [e4,g4]@9 ~@7", // Em
  Z: "[d4,e4,a4]@2 [d4,e4,a4]@2 ~ [d4,e4]@2 [d4,e4,a4]@2 [d4,e4,a4]@2 ~ [d4,e4,a4]@2 [d4,e4,a4]@2, ~ a3@3, ~@11 a2@5", // Dsus2
  AA: "[c4,d4,f4,a4]@6 c4 [c4,d4,f4,a4] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4]@2 [c4,d4,f4,a4]@2, ~@11 d3@5", // Dm7
  AB: "[c4,f4,ab4] ~ [c4,f4,ab4]@2 ~ [c4,f4,ab4]@2 [b3,d4,g4] ~ [b3,d4,g4]@2 ~ [d4,g4] ~ [b3,d4,g4]@2, f3@4 f3@3 ~ g3@2 ~ g3@5, ~@6 b3 ~", // Fm G G5 G
  AC: "[c4,e4,g4]@2 ~ [c4,e4,g4]@3 c4@4 ~@2 c4 e4@3, e3@5 c4 [d4,g4]@2, ~@6 [e4,g4]@5 e3@5", // C G5 Em
  AD: "[a3,c4,e4,g4]@3 [a3,c4,e4,g4] ~@2 a3@4 ~@2 g4 f4 g4@2, ~@3 a2@5, ~@6 [c4,e4,g4]@5 e3@5, ~@5 a3 [a3,c4]@2", // Am7 C Am
  AE: "[a3,c4,d4,f4]@2 c4 [a3,d4] ~@2 [c4,d4,f4]@4 a3 ~ [a3,c4,d4,f4]@2 [a3,c4,d4,f4]@2, d3@11 d3@5, ~@6 a3@3 ~@7", // Dm7 D5 Dm7
  AF: "[ab3,c4,f4]@2 ~ [ab3,c4,f4]@3 [ab3,c4,f4]@2 g3@4 g2@3 ~, f3@8 [b3,d4,g4]@7 ~", // Fm G
  AG: "[[g2,a3,bb3,d4,f4]@15 ~ [g3,bb3,c4,f4]@8 [g3,c4]@8 [f2,g3,a3,c4]@15 ~, ~@15 [c2,c3]@32 ~, ~@24 [bb3,e4]@23 ~]/3", // Gm7 C5 F C Bbdim
  AH: "[[g2,a3,bb3,d4,f4]@15 ~ [g3,bb3,c4,f4]@8 [g3,bb3,c4,e4]@5 ~@3, ~@15 [c2,c3]@15 ~@2]/2", // Gm7 C7 C
})).s("gm_piano").gain(0.42)

// bass · fretless bass
const bass_2 = note("<~@38 A@2 ~@19 B C D ~ B C E ~ B C E ~ B C E ~>".pickRestart({
  A: "[~@7 g2@2 c3 f3 a2 c3@2 g3 bb3@9 ~@8]/2", B: "~@5 f3@3", C: "a3@3 g3", D: "c3@3 ~", E: "c3@7 ~",
})).s("gm_fretless_bass").gain(0.18)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A B C ~ A B C A ~@10 D E F E F E F E ~ G ~ G H ~@7 E F E F E F E ~ G ~ E ~ E I E ~ E ~ E@2 ~@16
>`.pickRestart({
  A: "x", B: "x ~@2 x", C: "x!2", D: "~@15 x", E: "~@7 x ~@8", F: "~@7 x ~@3 x ~@4", G: "~@7 x ~@7 x",
  H: "~@10 x ~@2 x ~@2", I: "~@11 x ~@4",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct("<~@14 A@6 ~@12 B A B A B A ~@21 C D@7 C D@7>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~ x!3", D: "x!4",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct("<~@20 A@5 B A@5 C ~@6 D A@5 B A@7 E A@5 C ~@16>".pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~", C: "~ x ~@2", D: "~ x", E: "~@4 x ~@4 x!2 ~ x ~@3",
})).gain(0.54)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@27 A ~ A ~@16 A ~ A ~ A ~@3 A ~ A ~@18>".pickRestart({
  A: "~@9 x ~@6",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~ B ~@7 C ~@7 A ~ B ~@2 D ~@5 C ~@30>".pickRestart({
  A: "~@3 x", B: "~@11 x!2 ~@3", C: "~@11 x ~@2 x ~", D: "~@7 x",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@14 A B C D E F A G H I J K ~@5 L A B C D E M N A G H I J K ~@14 O P Q R O P S T O P Q R O P S T
>`.pickRestart({
  A: "~@2 x!6", B: "~ x!2 ~ x ~ x ~@2 x ~@6", C: "x!8", D: "x!6 ~@2", E: "x ~ x!6", F: "~ x!2 ~ x ~ x ~@3 x ~@5",
  G: "x!5 ~ x!2", H: "x ~ x ~ x ~ x ~ x ~@3 x!4", I: "x ~ x ~ x ~ x ~ x ~@3 x!2 ~@2", J: "~@2 x ~ x ~ x ~ x ~@3 x!4",
  K: "x", L: "~@3 x", M: "~ x!2 ~ x ~ x ~@3 x!4 ~@2", N: "~@2 x!2 ~@4", O: "~@2 x!5 ~",
  P: "x ~ x!3 ~ x ~ x ~@3 x ~ x!2", Q: "x ~@3 x ~ x ~ x ~@3 x ~ x!2", R: "x ~ x!3 ~ x ~ x!2 ~@2 x!2 ~@2",
  S: "x ~@3 x ~@3 x ~@3 x ~ x!2", T: "x ~@3 x ~ x ~ x!2 ~@2 x!2 ~@2",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@7 A ~@6 B C D ~ B ~ E F G@3 H ~@6 B C D ~ B ~@2 E F G@3 H ~@14 I J@2 K I J L K I J@2 K I J L K
>`.pickRestart({
  A: "~ x ~@6", B: "~@15 x", C: "~ x", D: "~@7 x ~@8", E: "~ x ~@3 x ~ x ~ x ~ x ~ x ~ x",
  F: "~ x ~ x ~ x ~ x ~ x ~@3 x ~ x", G: "~ x ~ x ~ x ~ x ~ x ~@6", H: "~ x ~@6 x ~@7",
  I: "~ x ~@3 x ~ x ~ x ~ x ~ x ~@2", J: "~ x ~@3 x ~ x ~ x ~@3 x ~@2", K: "~ x ~@3 x ~@10",
  L: "~ x ~@3 x ~@3 x ~@3 x ~@2",
})).gain(0.18)

// drums · mid tom
const mid_tom = s("mt").struct("<~@19 A ~@5 B ~@5 A ~@6 C ~@5 B ~@7 D ~@5 C ~@6 E ~@7 E ~>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@11 x ~@2 x ~", C: "~@3 x", D: "~@7 x", E: "~@3 x ~@4",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@2 B@2 A@2 B C ~@4 D E F G ~ H F I F J@2 K J L ~@5 H F G ~ H F I M F J@2 K J L ~@7 N ~@5 O P J Q R P J Q S P J Q R P
  J Q S
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~@3 x!2 ~@11", D: "~@3 x ~@4", E: "~@3 x", F: "~ x ~@6", G: "x ~@6 x ~@2 x ~ x ~@3",
  H: "~@7 x", I: "x ~@6 x ~@6 x ~", J: "~@5 x ~@2", K: "~@5 x ~ x", L: "~ x!3 ~@4", M: "~ x ~@2 x!2 ~@2", N: "~@6 x!2",
  O: "~@2 x!6", P: "~ x ~@5 x", Q: "~ x ~@3 x ~@2", R: "~@7 x ~@2 x ~@3 x ~", S: "~@2 x ~@4 x ~@2 x ~@3 x ~",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct("<~@19 A ~@11 A ~@6 B ~@12 C D ~@5 B ~@16>".pickRestart({
  A: "~ x", B: "~@11 x ~@4", C: "~@15 x", D: "~ x ~@11 x ~@2",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~@5 A ~@3 A ~ A ~ A ~ A ~ A ~@4 B ~ A ~@3 A ~ A ~ A ~ A ~ A C A ~ A ~ A@3 ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x", B: "~ x", C: "~@15 x",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  A B C D ~ B C E ~@4 F ~@13 G H G H G I ~@6 D ~@6 G H G H G H J I G H J H G K ~@16
>`.pickRestart({
  A: "~ x", B: "~@5 x!9 ~@2", C: "x ~@6 x ~@2 x ~@2 x ~@2", D: "x", E: "x ~@7 x ~@2 x ~ x!2 ~", F: "x ~ x!2 ~@4",
  G: "~@2 x!14", H: "x ~ x ~ x!12", I: "x ~ x ~ x!5 ~@7", J: "~@2 x!13 ~", K: "~@2 x!9 ~@5",
})).gain(0.18)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~ [~@2 x!3 ~@9 x!2] x ~@2 [~@2 x!3 ~@9 x!2] x ~@68>").gain(0.06)

// drums · tambourine
const tambourine = s("tb").struct("<~@15 A ~ A ~@3 A ~ A ~@9 A ~ A ~@4 A ~ A ~@20 A ~@7 A ~@3>".pickRestart({
  A: "~@3 x",
})).gain(0.42)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@61>".pickRestart({
  A: "~@10 x!4 ~@2",
})).gain(1.22)
// … 13 more lines

More by Mina