Strudelify
Ci vorrebbe un amico cover art

TuttoVenditti

Ci vorrebbe un amico

Antonello Venditti

KeyE♭ majorTempo86 bpm
0:00/0:00
// Ci vorrebbe un amico — Antonello Venditti
// 86 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 8 "GUITAR" named as a guitar, played on electric guitar clean (its music box patch is not one)
// note: duplicate parts dropped: ch 11 "CANTO" string ensemble 2 (copy of ch 9 "CANTO" piano)
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(86/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · epiano2 · "E.PIANO"
const epiano2 = note(`<
  A@2 B C A@2 B C A@2 B C A@2 B D A E B C A E B D A@2 B C A@2 B D A E B C A E B D F G H I F G H J K L M N O P M N Q R H
  S T U V W G X H J L P Y N Z ~
>`.pickRestart({
  A: "[eb3,ab3,bb3]@13 [eb3,ab3,bb3]@3", B: "[db3,f3,ab3]@13 [db3,f3,ab3]@3", C: "[eb3,ab3,bb3]",
  D: "[eb3,ab3,bb3]@15 ~", E: "[f3,ab3,bb3]@13 [f3,ab3,bb3]@3", F: "[c4,d4,f4]@13 [c4,d4,f4]@3",
  G: "[bb3,c4,d4,f4]@13 [bb3,c4,d4,f4]@3", H: "[g3,bb3,eb4]@13 [g3,bb3,eb4]@3", I: "[c4,d4,f4]", J: "[bb3,c4,f4]@15 ~",
  K: "[c4,d4,g4]@13 [c4,d4,g4]@2 ~", L: "[c4,d4,g4]@12 ~ [c4,d4,g4]@3", M: "[a3,c4,f4]@13 [a3,c4,f4]@3",
  N: "[c4,d4,g4]@15 ~", O: "[c4,d4,g4]@13 [c4,d4,g4]@3", P: "[a3,c4,d4,g4]@12 ~ [a3,c4,d4,g4]@3",
  Q: "[bb3,c4,f4]@12 ~ [bb3,c4,f4]@3", R: "[g3,bb3,c4,f4]@12 ~ [g3,bb3,c4,f4]@2 ~", S: "[bb3,c4,d4,f4]@15 ~",
  T: "[bb3,c4,d4,f4]@12 ~ [bb3,c4,d4,f4]@3", U: "[g3,bb3,c4,d4]@12 ~ [g3,bb3,c4,d4]@3",
  V: "[g3,bb3,eb4]@12 ~ [g3,bb3,eb4]@3", W: "[bb3,c4,d4,f4]@7 ~", X: "[g3,bb3,c4,d4,f4]@15 ~",
  Y: "[a3,c4,f4]@12 ~ [a3,c4,f4]@3", Z: "[c4,d4,g4]",
})).s("gm_epiano2").gain(0.2)

// bass · synth bass 1 · "SYNTH BASS"
const bass = note(`<
  A B C A@2 B C A@2 B C A@2 B D E A B C A@2 B D E A B C A@2 B D E A B C A@2 B D E F G E F@2 G H B I J B I@2 J K G F G E
  F@2 G H B F G H B I J K G ~@2
>`.pickRestart({
  A: "ab2!2 ab3 ab2!2 ab3 ab2!2 ab3 ab2!2 ab3 ab2!2 ab3 ab2", B: "f2!2 f3 f2!2 f3 f2!2 f3 f2!2 f3 f2!2 f3 f2",
  C: "db2!2 db3 db2!2 db3 db2!2 db3 db2!2 db3 db2!2 db3 db2",
  D: "db3!2 db2 db3!2 db2 db3!2 db2 db3!2 db2 db3!2 db2 db3",
  E: "eb2!2 eb3 eb2!2 eb3 eb2!2 eb3 eb2!2 eb3 eb2!2 eb3 eb2",
  F: "bb2!2 bb3 bb2!2 bb3 bb2!2 bb3 bb2!2 bb3 bb2!2 bb3 bb2", G: "g2!2 g3 g2!2 g3 g2!2 g3 g2!2 g3 g2!2 g3 g2",
  H: "eb3!2 eb2 eb3!2 eb2 eb3!2 eb2 eb3!2 eb2 eb3!2 eb2 eb3", I: "c3!2 c4 c3!2 c4 c3!2 c4 c3!2 c4 c3!2 c4 c3",
  J: "a2!2 a3 a2!2 a3 a2!2 a3 a2!2 a3 a2!2 a3 a2", K: "f3!2 f2 f3!2 f2 f3!2 f2 f3!2 f2 f3!2 f2 f3",
})).s("gm_synth_bass_1").gain(0.31)

// bass · electric bass finger · "BASSO"
const bass_2 = note(`<
  A B C D A E C D A B C D F G H I J K L M N O P Q A E C D R G C S N O P T N O P Q U V W X Y Z W AA AB AC E AD AE AF AG
  AH U AI AJ AK AL AM AN AO AL AM AN AO AE AF AG AH AP ~
>`.pickRestart({
  A: "ab1@13 ab1@2 ~", B: "f1@13 f1@3", C: "db1@12 ~ db1@3", D: "ab1@11 ~ bb1 ab1 eb2@2", E: "f1@13 f1@2 ~",
  F: "ab1@13 ab1@3", G: "f1@12 ~ f1@3", H: "db2@12 ~ db2@3", I: "eb2@7 bb1 eb2@6 bb1 eb2", J: "ab1@13 eb1 ab1 eb1",
  K: "f1@12 ~ eb1@3", L: "db1@7 db1", M: "ab1@7 ~", N: "ab1", O: "f1@13 eb1@3", P: "db1@14 ab1 db1",
  Q: "eb1@6 ~ eb1 eb1@6 ~@2", R: "ab1@12 ~ ab1@3", S: "eb1@7 ~ eb1@6 ~@2", T: "ab1@6 ~ ab1 ab1@6 ~@2",
  U: "bb1@13 bb1@2 ~", V: "g1@13 g1@3", W: "eb1@12 ~ eb1@3", X: "bb1@11 ~ c2 bb1 f2@2", Y: "bb1@12 ~ bb1@3",
  Z: "g1@12 ~ g1@3", AA: "f1@7 ~ f1@6 ~@2", AB: "c2@13 c2@2 ~", AC: "a1@12 ~ a1@2 ~", AD: "c2@7 ~", AE: "c2",
  AF: "a1@13 g1@3", AG: "f1@14 c2 f1", AH: "g1@6 ~ g1 g1@6 ~@2", AI: "g1@12 ~ g1@2 ~", AJ: "eb1@13 eb1@2 ~",
  AK: "bb1@7 ~", AL: "bb1", AM: "g1@13 f1@3", AN: "eb1@14 bb1 eb1", AO: "f1@6 ~ f1 f1@6 ~@2", AP: "c1",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  ~@4 A@11 B C A@3 C A@2 B A@7 B C A@3 C A@2 B D@7 E F G@3 F G@2 H I D@3 I D@2 E I D@2 E F G@2 H J ~
>`.pickRestart({
  A: "~@2 [c4,eb4] ~@2 [c4,eb4] ~@2 [c4,eb4] ~ [bb3,db4] ~ [ab3,c4] [bb3,db4] ~@2", // Cm Bbm Ab Bbm
  B: "~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~", // Eb5
  C: "~@2 [c4,eb4] ~@2 [c4,eb4] ~@2 [c4,eb4] ~ [bb3,db4] ~ [ab3,c4] [bb3,db4] ~@2, ~@4 ab2@9 ~@3", // Cm Bbm Ab Bbm
  D: "~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~ [c4,eb4] ~ [bb3,d4] [c4,eb4] ~@2", // Dm Cm Bb Cm
  E: "~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~@2 [c4,f4] ~", // F5
  F: "~@2 [e4,g4] ~@2 [e4,g4] ~@2 [e4,g4] ~ [d4,f4] ~ [c4,e4] [d4,f4] ~@2, ~@4 c3@9 ~@3", // Em Dm C Dm
  G: "~@2 [e4,g4] ~@2 [e4,g4] ~@2 [e4,g4] ~ [d4,f4] ~ [c4,e4] [d4,f4] ~@2", // Em Dm C Dm
  H: "~@2 [d4,g4] ~@2 [d4,g4] ~@2 [d4,g4] ~@2 [d4,g4] ~@2 [d4,g4] ~", // G5
  I: "~@2 [d4,f4] ~@2 [d4,f4] ~@2 [d4,f4] ~ [c4,eb4] ~ [bb3,d4] [c4,eb4] ~@2, ~@4 bb2@9 ~@3", J: "[e4,g4,c5]",
})).s("gm_acoustic_guitar_steel").gain(0.51)

// chords · brass section · "BRASS" · Bb Bbsus2 Eb5 Bb Gm Eb F
const brass_section = note(`<
  ~@43
  [~@10 [bb4,bb5] [bb4,c5,c6] [bb4,eb5,eb6]@4]
  [[bb4,d5,d6]]
  [[g4,bb4,d5,g5]]
  [[eb4,g4,eb5,g5]]
  [[f4,a4,c5,f5]@15 ~]
  ~@26
>`).s("gm_brass_section").gain(0.22)

// other · string ensemble 1 · "STRINGS 1"
const string_ensemble_1 = note(`<
  ~@16 A B ~@2 A C ~@10 A B ~@2 A C ~@10 D E ~@2 D F ~@2 G H ~@2 G I ~@2 G I ~@2 D F ~@4
>`.pickRestart({
  A: "~ eb5@2 bb5", B: "g5@6 ab5@7 ~@3", C: "g5@3 ab5@5", D: "~ g5@2 d6", E: "b5@6 c6@7 ~@3", F: "b5@3 c6@5",
  G: "~ f5@2 c6", H: "a5@6 bb5@7 ~@3", I: "a5@3 bb5@5",
})).s("gm_string_ensemble_1").gain(0.2)

// other · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@16 A B ~@2 A C ~@10 A B ~@2 A C ~@10 D E ~@2 D F ~@2 G H ~@2 G I ~@2 G I ~@2 D F ~@2 J ~
>`.pickRestart({
  A: "~ [eb5,eb6]@2 [bb5,bb6]", B: "[g5,g6]@3 [ab5,ab6]@5", C: "[g5,g6]@6 [ab5,ab6]@9 ~", D: "~ [g5,g6]@2 [d6,d7]",
  E: "[b5,b6]@3 [c6,c7]@5", F: "[b5,b6]@6 [c6,c7]@9 ~", G: "~ [f5,f6]@2 [c6,c7]", H: "[a5,a6]@3 [bb5,bb6]@5",
  I: "[a5,a6]@6 [bb5,bb6]@9 ~", J: "[g4,e5,g5,e6,g6]@15 ~",
})).s("gm_pad_new_age").gain(0.24)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean = note(`<
  ~@4 A ~ A ~@11 A ~@3 B ~@11 A ~@3 B ~@11 C ~@3 C ~@3 D ~@3 E ~@3 E ~@3 F ~@3
>`.pickRestart({
  A: "~ eb4, ~ bb3@7, ~@5 ab3@11", B: "~@8 eb4@7 ~, ~ bb3@7, ~@5 ab3@11", C: "~ g4, ~ d4@7, ~@5 c4@11",
  D: "~ f4, ~@2 c4@13 ~, ~@5 bb3@10 ~", E: "~@8 f4@7 ~, ~ c4@7, ~@5 bb3@11", F: "~@8 g4@7 ~, ~ d4@7, ~@5 c4@11",
})).s("gm_electric_guitar_clean").gain(0.5)

// drums · kick
const kick = s("bd").struct("<A@23 B A@3 C A@11 B A@15 B A@7 B A@7 B D ~>".pickRestart({
  A: "x ~@7 x ~@2 x ~@4", B: "x ~@7 x ~@2 x!2 ~@3", C: "x ~@7 x ~@2 x ~@2 x ~", D: "x",
})).gain(0.64)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A@7 B A@3 B A@3 B A@3 B A@3 B A@7 B A@3 B A@3 B A@3 B A@11 B A@7 B A@7 B ~@2
>`.pickRestart({
  A: "~@7 x ~@7 x", B: "~@7 x ~@8",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@3 A ~@11 B ~@3 A ~@11 A ~@3 A ~@7 A ~@7 A ~@6>".pickRestart({
  A: "~@14 x!2", B: "~@13 x!2 ~",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<A@3 B A@19 C A@15 C A@15 C A@7 C A@8 ~@2>".pickRestart({
  A: "x!16", B: "x!13 ~@3", C: "x!12 ~@2 x!2",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@3 A ~@11 B ~@3 A ~@11 A ~@3 A ~@7 A ~@7 A ~@3 C ~@2>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@3 x ~@2 x ~", C: "~@3 x ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@15 A ~@3 B ~@11 C ~@3 B ~@11 A ~@3 B ~@7 B ~@7 B ~@3 C ~@2>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@9 x!3 ~@4", C: "~@3 x ~@12",
})).gain(0.56)

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

stack(
  epiano2, bass, bass_2, acoustic_guitar_steel, brass_section, string_ensemble_1, pad_new_age, electric_guitar_clean,
  kick, snare, snare_soft, low_tom, hihat, mid_tom, high_tom, crash
)

More by Antonello Venditti