Strudelify

Piero e Cinzia

Antonello Venditti

KeyC majorTempo125 bpm
0:00/0:00
// Piero e Cinzia — Antonello Venditti
// 125 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B
  C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B C D A B C D A B C D A B C D ~
>`.pickRestart({
  A: "~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@4", B: "~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@4",
  C: "~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~@4", D: "~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@3 [c4,f4,a4] ~@4",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0)

// bass · electric bass pick
const bass = note(`<
  ~ A B C D A B C E F G H I F G H J A B C D A B C E F G H I F G H J A B C D A B C E F G H I F G H J A B C D A B C E F G
  H I F G H J A B C D A B C E F G H I F G H J A B C D A B C E A B C D A B C E F G H I F G H J A B C D A B C E F G H I F
  G H J A B C D A B C E F G H I F G H J A B C D A B C E ~
>`.pickRestart({
  A: "c2@15 c2", B: "g1@15 g1", C: "a1@15 a1", D: "f1@8 f1@2 a1@5 a1", E: "f1@8 f1@2 c2@4 ~ c2", F: "c2", G: "g1",
  H: "a1", I: "f1@4 f1 a1@3", J: "f1@4 f1 c2@2 c2",
})).s("gm_electric_bass_pick").gain(0.4).pan(0.8)

// other · epiano2
const epiano2 = note(`<
  A@3 B@2 C@3 D@3 E F C@3 ~@4 G H I ~ J@2 K ~ L M ~@2 N O ~@2 P M Q R@3 ~@2 P M Q S@2 T U V F C@3 ~@4 G H I ~ J@2 K ~ L
  M ~@2 N O ~@2 P M Q R@3 ~@2 P M Q S@2 T U V F C@3 ~@4 G H I ~ J@2 K ~ L M ~@2 N O ~@2 P M Q R@3 ~@2 P M Q S@2 T U V F
  C@3 ~@4 G H I ~ W@2
>`.pickRestart({
  A: "[~@4 g4@3 ~ g4@3 e4, ~@12 e4@7 ~@9 e4@7 ~@13]/3", B: "[~@4 c4@3 ~, g4@15 ~@17, ~@6 e4@3 ~@7]/2",
  C: "[e4@7 ~ e4@3 ~ e4 ~@2 e4@4 ~ d4@3 ~ d4@3 ~ c4 ~@2 c4@14 ~@3]/3",
  D: "[~@8 g4@6 ~@8 e4 ~, ~@12 e4@7 ~@9 e4@6 ~@14, ~@16 g4@7 ~]/3", E: "g4 ~@3 g4@2 g4@6 d5@4", F: "c5@7 ~@9",
  G: "~@5 f4@3, ~@2 c4 ~", H: "e4", I: "b4", J: "[~ c6, ~@2 g5@3 ~ b5@3 ~@7, ~@4 a5@3 ~@9]/2", K: "b5@15 ~",
  L: "~@5 a4@3, ~@8 c4@7 ~", M: "g4@15 ~", N: "~@3 c4, a3@7 ~ a3@7 ~, ~@4 c4@7 ~@5", O: "g3@7 ~@9",
  P: "~@5 c5@3, ~@8 a4@7 ~", Q: "g4@11 ~@5",
  R: "[e4@11 ~@21 e4@11 ~@5, ~@12 a4@6 ~@2 b4@11 ~@17, ~@16 c5@11 ~ g4@11 ~@9, ~@24 a4@11 ~@13]/3",
  S: "[e4@11 ~@5 c5@4 b4@4 a4@4 e4@4, ~@6 a4@3 ~@7]/2", T: "g4@5 ~ e4 ~", U: "g4@11 ~ e4@2 ~@2",
  V: "g4 ~@3 g4@2 g4@2 ~@4 d5@3 ~", W: "[~@6 b5@3 ~@7, ~@2 g5@3 ~@11, ~@4 a5@3 ~@9]/2",
})).s("gm_epiano2").gain(0.35).pan(0.3)

// other · tenor sax
const tenor_sax = note(`<
  ~@32 A B C D@2 E F G A H I J@2 K L@2 ~@24 A B C D@2 M F G A H N J@2 K L@2 ~@24 A B C D@2 M F G A H N J@2 K L@2 ~ O P@3
  Q R@3 O S@3 Q T@3 ~
>`.pickRestart({
  A: "~@6 b4 ~, ~@11 a4@2 ~@3", B: "c5@6 d5 c5", C: "b4@7 ~ c5@2 b4@4 ~@2", D: "[a4@13 ~@2 a4@12 ~@5]/2",
  E: "~@8 e5 ~ e5@3 ~ d5 ~", F: "c5 e5@11 d5@4", G: "c5@15 ~", H: "c5@14 ~ c5, ~@7 d5", I: "b4@8 c5@2 b4@5 ~",
  J: "[a4@4 c5@4 e5@3 ~ f5@7 ~@13]/2", K: "~@8 e5 ~ e5@3 ~ d5 c5", L: "[e5@10 ~ d5@2 c5@15 ~@4]/2",
  M: "~@8 e5 ~@2 e5@3 d5 ~", N: "b4@9 ~ b4@5 ~, ~@9 c5@2 ~@5", O: "~@8 c5@7 ~",
  P: "[b4@3 a4@2 ~ b4@3 ~ c5@2 a4@14 ~@2 a4@12 ~@8]/3", Q: "~@8 e5@7 ~",
  R: "[d5@3 ~ c5@2 d5@3 ~ e5@2 c5@14 ~@2 c5@12 ~@8]/3", S: "[b4@3 a4@2 ~ b4@3 ~ c5@2 a4@14 ~@3 a4@12 ~@7]/3",
  T: "[d5@3 c5@2 ~ d5@3 ~ e5@2 c5@14 ~@2 c5@12 ~@8]/3",
})).s("gm_tenor_sax").gain(0.29).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ [x ~@14 x]!144 ~>").gain(0.32)

// drums · snare
const snare = s("sd").struct("<~ [~ x]!144 ~>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~ [x!4]!144 ~>").gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~ x!144 ~>").gain(0.32)

// drums · splash
const splash = s("cr").struct("<~@17 [x!4 ~@12] ~@128>").gain(0.24)

// drums · splash · soft notes
const splash_soft = s("cr").struct("<~@17 [~@4 x!2 ~@10] ~@128>").gain(0.08)

stack(electric_guitar_muted, bass, epiano2, tenor_sax, kick, snare, hihat, low_tom, splash, splash_soft)

More by Antonello Venditti