Strudelify
Cuccurucucu cover art

La Voce Del Padrone

Cuccurucucu

Battiato

KeyA majorTempo186 bpm
0:00/0:00
// Cuccurucucu — Battiato
// 186 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 191 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): CUCCURRU.
setcpm(186/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.

// other · electric guitar muted · "CUCCURRU"
const electric_guitar_muted = note(`<
  ~@8 A B C D B@2 C D A B C D A B C D E F G E@2 H C I E F G E@2 H C I J C J C K D L@2 M@2 N O A B C D B@2 C D A B C D A
  B C D E F G E@2 H C I E F G E@2 H C I J C J C K D L@2 M@2 N O A B C D B@2 C D A B C D A B C D P Q R S P T U V P Q R S
  P T U V P Q R S P T W X Y@2 ~@2 Z AA AB@2 Z AA AC@2 A B C D B@2 C D A B C D A B C D P Q R S P T U V P Q R S P T U V P
  Q R S P T W X AD@3
>`.pickRestart({
  A: "a2 a3 a2 a3 a2 a3 a2 a3", B: "a2@2 a3@2 a2@2 a3@2 a2@2 a3@2 a2@2 a3 ~", C: "e2 e3 e2 e3 e2 e3 e2 e3",
  D: "e2@2 e3@2 e2@2 e3@2 e2@2 e3 ~ e2@2 e3 ~", E: "f#2@7 ~ f#2@8", F: "a2@7 ~ e2@7 ~", G: "e2@7 ~ b2@8", H: "d2!2",
  I: "e2 e3 e2 e3 e3@2 ~@2", J: "a2@2 d3@3 ~ d3 ~ a2@2 e3@3 ~ e3 ~", K: "a2@2 d3@3 ~ d3@2 a2@2 e3@3 ~ e3 ~",
  L: "b2@2 b3@3 ~ b3@2 b2@2 b3@2 ~@2 b3@2", M: "b2@2 b3@3 ~ b3@2 b2@2 b3@3 ~ b3 ~",
  N: "e3@2 e4 ~ e3@2 e4@2 e3@2 e4@2 e3@2 e4@2", O: "e3 ~@3", P: "a2@2 a3@2 ~@2 a3@2 e2@2 e3@2 ~@2 e3 ~",
  Q: "e2@2 e3@3 ~ e3 ~ b2@2 b3@3 ~ b3@2", R: "f#2@2 f#3@2 ~@2 f#3@2 c#2@2 c#3@3 ~ c#3 ~",
  S: "d2@2 d3@3 ~ d3 ~ f#3@2 a3@3 ~ d3@2", T: "e2@2 e3@2 ~@2 e3 ~ e2@2 e3@2 ~@2 e3 ~", U: "b2 a3 b3 a3 b3 b3@2 e2",
  V: "f#2@2 e2@2 f#2@2 e2 ~ f#2@2 f#2@4 f#2 ~", W: "b2 a3 b3 a3 b3 b3@2 e3",
  X: "f#3@2 e3@2 f#3@2 e3@2 f#3@2 f#3@4 f#3 ~", Y: "[a2@2 a2@2 a2@2 a2 ~ a2@24]/2",
  Z: "[d3,d4]@2 ~@2 [c#3,c#4] ~ [d3,d4]@2 ~@2 [c#3,c#4] ~ [b2,b3]@4", AA: "[a2,a3]@11 ~ [a2,a3]@2 [b2,b3] ~",
  AB: "[[e2,e3]@6 [e3,e4]@3 ~ [e3,e4]@3 ~@5 [g#3,g#4]@10 ~@4, ~@7 [e3,e4]@3 ~@6]/2", // E G# E
  AC: "[[e2,e3]@6 [e3,e4]@3 ~ [e3,e4]@3 ~ [e3,e4]@6 ~@12]/2", AD: "[a2@2 a2@2 a2@2 a2 ~ a2@2 a2@2 a2@2 a2@24 ~@10]/3",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.3)

// chords · rock organ · "CUCCURRU"
const rock_organ = note(`<
  ~@8 A@8 B@8 C D E F@2 G H@2 C D E F@2 G I@2 J K L M L M N@4 O@2 P@2 Q@2 R@4 B@8 C D E F@2 G H@2 C D E F@2 G I@2 J K L
  M L M N@4 O@2 P@2 Q@2 R@4 B@8 S T U V S W X Y S T U V S W X Y S T U V S W X Y ~@4 A@16 B@8 S T U V S W X Y S T U V S W
  X Y S T U V S W X Y ~@3
>`.pickRestart({
  A: "[f#6@16 ~@16 g#6@32 f#6@16 ~@16 g#6@31 ~, a6 ~ a6 ~, ~@16 e6@49 ~@15 e6@47 ~]/8",
  B: "[f#6 ~ g#6@2 f#6 ~ g#6@2, a6 ~ a6 ~, ~@16 e6@49 ~@15 e6@48]/8", C: "[f#5,a5]", D: "[e5,a5]", E: "[e5,g#5]",
  F: "[f#5, d5 ~]/2", G: "[d5,f#5]", H: "[e5,g#5]/2", I: "[g#5@30 [g#3,a3] [a#3,b3,c4], e5]/2",
  J: "[a5,d6,f#6] [a5,c#6,e6], c#4 ~@15", K: "~@9 [e5,f5] [c5,d5] [a4,b4] [f4,g4] [d4,e4] [b3,c4] a3, e6, [g#5,b5]@3 ~",
  L: "[a5,d6,f#6] [a5,c#6,e6]", M: "[g#5,b5,e6]", N: "[[d5,f#5,b5] [d#5,f#5,b5]]/4", O: "[e5,g#5,b5]/2",
  P: "[e6 c#6, a6]/2", Q: "[b5,g#6]/2", R: "[f#6@16 ~@16 g#6@31 ~, a6 ~, ~@16 e6@47 ~]/4", S: "[e5,a5,c#6]",
  T: "[e5,g#5,b5]", U: "[f#5,a5]@7 ~, c#6", V: "[d5,f#5,a5]", W: "[g#5,b5], e5@7 ~", X: "[f#5,b5]", Y: "[f#5,c#6]",
})).s("gm_rock_organ").gain(0.37).pan(0.7)

// other · overdriven guitar · "CUCCURRU"
const overdriven_guitar = note("<~@39 A B C D@2 E ~@38 A B C D@2 E ~@51 F G H I F G H I ~@43>".pickRestart({
  A: "~@11 f#5@3 ~@2", B: "f#5@4 f#5@3 ~ f#5@4 e5@2 ~@2", C: "~@7 g#5", D: "[~@4 a5@3 ~@5 g#5 ~ g#5@8 ~@10]/2",
  E: "f#5 ~ f#5 ~ f#5 ~ f#5 ~ f#5@4 e5 ~@3", F: "a3!8", G: "~ a3!5 ~ a3", H: "~ e3!2 ~ e3 ~ e3 ~", I: "e3!8",
})).s("gm_overdriven_guitar").gain(0.35).pan(0.8)

// chords · string ensemble 2 · "CUCCURRU"
const string_ensemble_2 = note("<~@24 A@5 B C D A@5 B E@2 ~@28 A@5 B C D A@5 B E@2 ~@107>".pickRestart({
  A: "[a4 c#4 f#4 ~@2 e4 a4 c#5 b4 e4 g#4 ~@2 d4 f#4 ~@2 a#4 b4@2, [f#3,a3] e3@2 [f#3,b3] f#3, ~@12 a4@8 ~@24 b4@8 ~@8 b4@7 ~@13, ~ a3 g#3 ~@2]/5", // F#m B5
  B: "a4 d4 f#4 a4, [f#3,a3]", C: "[g#3,g#4] [b3,b4] [e3,e4] [g#3,g#4], e2 ~@7", D: "[a3,a4]@3 [g#3,g#4]",
  E: "[[g#3,g#4] [b3,b4] [e3,e4] [g#3,g#4] [g#3,g#4] [b3,b4] [e3,e4] [g#3,g#4], e2]/2", // G# B E G# B E G#
})).s("gm_string_ensemble_2").gain(0.49).pan(0.4)

// bass · fretless bass · "CUCCURRU"
const bass = note(`<
  ~@8 A B C D A B E D A B C D A B C D F G H I F A E D F G H I F A E D J K J K J K L@4 D@2 B@2 C D A B E D A B C D A B C
  D F G H I F A E D F G H I F A E D J K J K J K L@4 D@2 B@2 C D A B E D A B C D A B C D G H M N G K O P G H M N G K O P
  G H M N G K Q R S@2 ~@2 A B C D A B E D A B C D A B E D A B C D A B C D G H M N G K O P G H M N G K O P G H M N G K Q
  R T@3
>`.pickRestart({
  A: "d1@2 d2@2 ~@2 d2 ~ d1@2 d2@3 ~ d2 ~", B: "a1@2 a2@2 ~@2 a2@2 a1@2 a2@2 ~@2 a2 ~",
  C: "e1@2 e2@3 ~ e2 ~ e1@2 e2@3 ~ e2@2", D: "e1@2 e2@2 e1@2 e2 ~ e1@2 e2@2 e1@2 e2 ~",
  E: "e1@2 e2@2 ~@2 e2 ~ e1@2 e2@3 ~ e2@2", F: "f#1@2 f#2@2 ~@2 f#2 ~ f#1@2 f#2@3 ~ f#2 ~",
  G: "a1@2 a2@2 ~@2 a2@2 e1@2 e2@2 ~@2 e2 ~", H: "e1@2 e2@3 ~ e2 ~ b1@2 b2@3 ~ b2@2",
  I: "b0@2 b1@3 ~ b1 ~ f#1@2 f#2@3 ~ f#2@2", J: "d1 ~ a1@6 a1@8", K: "e1@2 e2@2 ~@2 e2@2 e1@2 e2@2 ~@2 e2 ~",
  L: "b1@2 b1@2 ~@2 b1 ~ b1@2 b1@3 ~ b1@2", M: "f#1@2 f#2@2 ~@2 f#2 ~ c#1@2 c#2@3 ~ c#2 ~",
  N: "d1@2 d2@3 ~ d2 ~ f#2@2 a2@3 ~ d2@2", O: "b1@2 a2@2 b2@2 a2 ~ b2@2 b2@4 e1 ~",
  P: "f#1@2 e1@2 f#1@2 e1 ~ f#1@2 f#1@4 f#1 ~", Q: "b1@2 a2@2 b2@2 a2 ~ b2@2 b2@4 e2 ~",
  R: "f#2@2 e2@2 f#2@2 e2 ~ f#2@2 f#2@4 f#2 ~", S: "[a1@2 a1@2 a1@2 a1 ~ a1@24]/2",
  T: "[a1@2 a1@2 a1@2 a1 ~ a1@2 a1@2 a1@2 a1@24 ~@10]/3",
})).s("gm_fretless_bass").gain(0.59)

// drums · kick
const kick = s("bd").struct("<~@8 [x!4]!180 [x ~ x ~ x ~ x!2] ~@2>").gain(0.52)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@8 [~ x ~@3 x ~@2]!181 ~@2>").gain(0.26)

// drums · snare
const snare = s("sd").struct("<~@8 A@41 B A@17 B A@25 B A@17 B A@77 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B A B A B A B A B A C A B A C D B A B A B A B A B A C A B A C A B A B A B A C A C D C A B A B A B A B A B A C A
  B A E D B A B A B A B A B A C A B A C A B A B A B A C A C D C A B A B A B A B A B A C A B A E D B A B A B A B D B A B
  A B A B D B A B A B A B D B A B A B A B A B A B A B A B A B A B A B A C A B A C D B A B A B A B D B A B A B A B D B A
  B A B A B F ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!6 ~@2", D: "~ x!7", E: "x!2 ~@2 x!2 ~@2", F: "~ x!6 ~",
})).gain(0.26)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@9 A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ A ~ A ~ B ~ B ~ B ~ A ~ A ~ A ~ A ~ A ~ B ~ A
  ~ C ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~@3 A ~ B ~ B ~ B ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ C ~ A ~@3 A ~@3 A ~ A ~ A ~@3
  A ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~ A ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~ x ~ x",
})).gain(0.26)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@87 A ~@27 A ~@3 A ~@7 A ~@7 A ~@7 A ~@3 A ~@31 A ~@3 A ~@7>".pickRestart({
  A: "~@7 x",
})).gain(0.13)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A B A@38 B A@84 C A@19 C A@34 D ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@2 x ~", C: "~@2 x ~@3 x!2", D: "~@2 x ~@4 x",
})).gain(0.39)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@8 A B A@38 B A@84 C A@19 C A@34 C ~@2>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@7 x", C: "~@3 x ~@4",
})).gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@25 A ~@17 A ~@25 A ~@17 A ~@7 A ~@7 A ~@7 A ~@27 A ~@7 A ~@7 A ~@7 B ~@2
>`.pickRestart({
  A: "x", B: "x ~@6 x",
})).gain(0.26)

stack(
  electric_guitar_muted, rock_organ, overdriven_guitar, string_ensemble_2, bass, kick, kick_soft, snare, hihat,
  open_hat, open_hat_soft, mid_tom, mid_tom_soft, crash
)

More by Battiato