Strudelify
Perdono cover art

Casco D'oro

Perdono

Caterina Caselli

KeyE majorTempo90 bpm
0:00/0:00
// Perdono — Caterina Caselli
// 90 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 electric guitar muted (copy of ch 2 fretless bass); ch 16 piano (copy of ch 5 choir aahs)
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
// note: The whole transcription plays 56 ms ahead of the beat; the grid follows it, so its parts stay together.
setcpm(90/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 · fretless bass
const bass = note(`<
  ~@5 A B@8 C D E F C D E G C D H B@6 C D E F C D E G C D I B@4 C D E F C D E G C D H C D E G C D E G C D E G C D I J@2
>`.pickRestart({
  A: "~@9 e2 ~@2 e2 b1 ~@2", B: "~ e2 ~@2 e2 b1 ~@3 e2 ~@2 e2 b1 ~@2", C: "~ e2 ~@2 e2 b1@2 ~@2 c#2 ~@2 c#2 g#1@2 ~",
  D: "~ c#2 ~@2 c#2 g#1 ~@3 a1@2 ~ a1 e1@2 ~", E: "~ a1 ~@2 a1 e1@2 ~@2 b1@2 ~ b1 f#1@2 ~",
  F: "~ b1 ~@2 b1 f#1 ~@3 e2 ~@2 e2 b1@2 ~", G: "~ a1@2 ~ a1 b1@2 ~@2 e2 ~@2 e2 b1@2 ~",
  H: "~ a1 ~@2 a1 e1@2 ~@2 e2 ~@2 e2 b1@2 ~", I: "~ a1 ~@2 a1 e1@2 ~@2 e2 ~@2 e2 b1 ~@2",
  J: "[~ e2 ~@2 e2 b1 ~@2 b1 e1@16 ~@7]/2",
})).s("gm_fretless_bass").gain(0.39)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@7 B C@2 D C D C E F G H I J K L I J M C@2 D C D C E F G H I J K L I J M D C D C E F G H I J K L I J N I J K L I J K
  L I J K L I J M O@2
>`.pickRestart({
  A: "[~@17 e4@23 ~ [c#4,e4,g#4]@21 ~ [e4,a4]@25 ~ [b3,e4,g#4]@17 ~@6, ~@15 b2@24 ~ [c#3,g#3]@21 ~@27 [b2,e3]@18 ~@6, ~@16 [e3,g#3]@24 ~@22 [e3,a3,c#4]@25 ~@25, ~@8 b3@11 ~@37]/7", // C#m A5 E C#5 E5 E A
  B: "~@9 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@3", // E
  C: "~ [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]!3 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@3", // E
  D: "~ [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]!3 [e3,a3,c#4,e4]@2 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@3", // A E
  E: "~ [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]!3 [e3,g#3,b3,e4]@2 [g#3,c#4,e4,g#4]@3 [g#3,c#4,e4,g#4] [g#3,c#4,e4,g#4]@3", // E C#m
  F: "~ [g#3,c#4,e4,g#4]@3 [g#3,c#4,e4,g#4]!3 [g#3,c#4,e4,g#4]@2 [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@3", // C#m A
  G: "~ [e3,a3,c#4,e4]@3 [e3,a3,c#4,e4]!3 [e3,a3,c#4,e4]@2 [f#3,b3,d#4,f#4]@3 [f#3,b3,d#4,f#4] [f#3,b3,d#4,f#4]@3", // A B
  H: "~ [f#3,b3,d#4,f#4]@3 [f#3,b3,d#4,f#4]!3 [f#3,b3,d#4,f#4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // B E
  I: "[e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!3 [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4] [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4]!2", // E C#m
  J: "[g#3,c#4,e4,g#4] [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4] [g#3,c#4,e4,g#4]@2 [g#3,c#4,e4,g#4]!3 [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!2", // C#m A
  K: "[e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!3 [f#3,b3,d#4,f#4]@2 [f#3,b3,d#4,f#4] [f#3,b3,d#4,f#4]@2 [f#3,b3,d#4,f#4]!2", // A B
  L: "[f#3,b3,d#4,f#4] [e3,a3,c#4,e4]!4 [f#3,b3,d#4,f#4]!4 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // B A B E
  M: "[e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!3 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@3", // A E
  N: "[e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4] [e3,a3,c#4,e4]@2 [e3,a3,c#4,e4]!3 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4] [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // A E
  O: "[~ [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]!3 ~@2 e4@23, ~@7 b2@24 ~, ~ [e3,g#3]@3, ~@4 b3@11 ~]/2", // E
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.4)

// other · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note("<~@41 A@5 ~@28>".pickRestart({
  A: "[~@7 b3@2 b3@6 e4@2 c#4@2 b3@2 a3 b3 ~ c#4 ~ b3@8 ~@5 b3@2 b3@6 e4@2 c#4@2 b3@2 a3 b3 ~ c#4 b3@11 ~@12]/5",
})).s("gm_acoustic_guitar_nylon").gain(0.68).pan(0.4)

// other · harpsichord
const harpsichord = note(`<
  A@2 B@5 C@3 D@2 E@2 F G H I F G J K F G L@3 D@2 E@2 F G H I F G J K F G M D@2 E@2 F G H I F G J K F G N F G J O F G J
  O F G J O F G M P@2
>`.pickRestart({
  A: "[~@17 b5@15, ~@15 b4@16 ~, ~ [e5,g#5]]/2", // E
  B: "[~@9 g#5@16 ~@6 a5@21 ~@6 e6@17 ~@5, ~@7 g#4@17 ~@6 [a4,c#5,e5]@22 ~@5 [b4,e5,g#5,b5]@18 ~@5, ~ [c#5,e5]@2 ~@7]/5", // A E C#m
  C: "[~@9 [g#3,g#5]@6 [f#3,f#5]@2 [a3,a5]@2 [g#3,g#5]@4 [f#3,f#5]@2 [g#3,g#5]@6 [f#3,f#5]@2 [a3,a5]@2 [g#3,g#5]@5 ~@8]/3", // G# F# A G# F# G# F# A …
  D: "[~@9 [g#3,g#5]@6 [f#3,f#5]@2 [a3,a5]@2 [g#3,g#5]@4 [f#3,f#5]@2 [g#3,g#5]@6 ~]/2", // G# F# A G# F# G#
  E: "[~@9 [g#3,g#5]@6 [f#3,f#5]@2 [a3,a5]@2 [g#3,g#5]@4 [f#3,f#5]@2 [b3,b5] [e4,e6] [g#4,g#6] [e4,e6] ~@3]/2", // G# F# A G# F# B E G# …
  F: "~ [b3,b5] [e4,e6] [g#4,g#6] [e4,e6] ~@4 [c#4,c#6] [e4,e6] [g#4,g#6] [e4,e6] ~@3", // B E G# E C# E G# E
  G: "~ [c#4,c#6] [e4,e6] [g#4,g#6] [e4,e6] ~@4 [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] ~@3", // C# E G# E C# E A E
  H: "~ [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] ~@4 [b3,d#4,b5,d#6]@3 ~ [c#4,e4,c#6,e6]@3", // C# E A E B C#m
  I: "~ [b3,d#4,b5,d#6]@3 ~ [a3,c#4,a5,c#6]@3 ~ [b3,b5] [e4,e6] [g#4,g#6] [e4,e6] ~@3", // B A B E G# E
  J: "~ [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] ~@4 [d#4,d#6] [f#4,f#6] [b4,b6] [f#4,f#6] ~@3", // C# E A E D# F# B F#
  K: "~ [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] [d#4,d#6] [f#4,f#6] [b4,b6] [f#4,f#6] [b3,b5] [e4,e6] [g#4,g#6] [e4,e6] ~@3", // C# E A E D# F# B F# …
  L: "[~ [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] ~@4 [g#3,g#5]@6 [f#3,f#5]@2 [a3,a5]@2 [g#3,g#5]@4 [f#3,f#5]@2 [g#3,g#5]@6 [f#3,f#5]@2 [a3,a5]@2 [g#3,g#5]@5 ~@8]/3", // C# E A E G# F# A G# …
  M: "~ [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] ~@11", // C# E A E
  N: "~ [c#4,c#6] [e4,e6] [a4,a6] [e4,e6] ~@4 [b3,b5] [e4,e6] [g#4,g#6] [e4,e6] ~@3", // C# E A E B E G# E
  O: "~ [b3,b5] [d#4,d#6] [f#4,f#6] [b4,b6] ~@4 [b3,b5] [e4,e6] [g#4,g#6] [e4,e6] ~@3", // B D# F# B E G# E
  P: "[~@9 b5@15 ~@8, ~@7 b4@16 ~@9, ~ [e5,g#5]@2 ~]/2", // E
})).s("gm_harpsichord").gain(0.36).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@13 A@8 B@4 ~ C@3 D@4 E@5 F@6 D@4 E@5 G@7 H@8 I@4 J@2>".pickRestart({
  A: "[~@9 [e4,g#4,b4]@15 ~ [e4,g#4,c#5]@15 ~ [e4,a4,c#5]@15 ~ [f#4,b4,d#5]@15 ~ [e5,g#5,b5]@16 [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@16 [f#5,b5,d#6]@7]/8", // E C#m A B E C#m A B
  B: "[~ [e5,a5,c#6]@4 [f#5,b5,d#6]@4 [e5,g#5,b5]@15 ~ [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@12 ~@11]/4", // A B E C#m A
  C: "[~@9 [b3,g#4]@8 [c#4,a4]@8 [b3,e4,g#4]@23, ~@9 e4@16 ~@23]/3", // E F#m E
  D: "[~ [c#4,e4,a4]@8 [b3,e4,g#4]@16 [e4,g#4,b4]@15 ~ [e4,g#4,c#5]@15 ~ [e4,a4,c#5]@7]/4", // A E C#m A
  E: "[~@9 [f#4,b4,d#5]@15 ~ [e5,g#5,b5]@16 [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@16 [f#5,b5,d#6]@7]/5", // B E C#m A B
  F: "[~ [e5,a5,c#6]@4 [f#5,b5,d#6]@4 [e5,g#5,b5]@15 ~ [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@12 ~@4 [b3,g#4]@8 [c#4,a4]@8 [b3,e4,g#4]@23, ~@57 e4@16 ~@23]/6", // A B E C#m A E F#m E
  G: "[~ [e5,a5,c#6]@4 [f#5,b5,d#6]@4 [e5,g#5,b5]@15 ~ [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@12 ~@4 [e5,g#5,b5]@16 [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@16 [f#5,b5,d#6]@7]/7", // A B E C#m A E C#m A …
  H: "[~ [e5,a5,c#6]@4 [f#5,b5,d#6]@4 [e5,g#5,b5]@15 ~ [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@16 [f#5,b5,d#6]@7]/4", // A B E C#m A B
  I: "[~ [e5,a5,c#6]@4 [f#5,b5,d#6]@4 [e5,g#5,b5]@15 ~ [e5,g#5,c#6]@15 ~ [e5,a5,c#6]@12 ~@4 [b3,e4,g#4]@7]/4", // A B E C#m A E
  J: "[~ [e4,g#4,b4]@8 [g#4,b4,e5]@14 ~@9]/2", // E
})).s("gm_string_ensemble_2").gain(0.15)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@5 A B C D@2 E D E D F G H I ~@6 J D@2 E D E D F G H I ~@6 J E D E D F G H I ~@24
>`.pickRestart({
  A: "~@12 e4 b3 ~@2", B: "~ e4 ~@2 e4 b3 ~@3 e4 ~@2 e4 b3 ~@2", C: "~ e4 ~@2 e4 b3 ~@5 [b3,e4,g#4] ~@3 [b3,e4,g#4]",
  D: "~@3 [b3,e4,g#4] ~@7 [b3,e4,g#4] ~@3 [b3,e4,g#4]", E: "~@3 [c#4,e4,a4] ~@7 [b3,e4,g#4] ~@3 [b3,e4,g#4]",
  F: "~@3 [b3,e4,g#4] ~@7 [c#4,e4,g#4] ~@3 [c#4,e4,g#4]", G: "~@3 [c#4,e4,g#4] ~@7 [c#4,e4,a4] ~@3 [c#4,e4,a4]",
  H: "~@3 [c#4,e4,a4] ~@7 [d#4,f#4,b4] ~@3 [d#4,f#4,b4]", I: "~@3 [d#4,f#4,b4] ~@12",
  J: "~@11 [b3,e4,g#4] ~@3 [b3,e4,g#4]", // E
})).s("gm_electric_guitar_clean").gain(0.36).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@7 [~@9 x ~@3 x ~@2] [~ x ~@3 x ~@3 x ~@3 x ~@2]!64 [~ x ~@3 x ~@10] ~>").gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A ~ B C@5 D C E C D C@3 D C@8 D C@3 D C@3 D C@6 F C E C D C@3 D C@6 G C@3 D C@3 D C@3 H ~
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@9 x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", D: "~ x ~@9 x ~ x ~ x",
  E: "~ x ~ x ~ x ~@3 x ~ x ~ x ~ x", F: "~ x ~ x ~@7 x ~ x ~ x", G: "~ x ~ x ~ x ~@5 x ~ x ~ x", H: "~ x ~@14",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 A ~@16 A ~@10 B ~@3 C ~@6 C ~@7 C ~@3 C ~>".pickRestart({
  A: "~@3 x!2 ~@3", B: "~ x ~@3 x ~ x ~@8", C: "~@6 x!3 ~@7",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@9 [~@11 x ~@3 x] [~@3 x ~@3 x ~@3 x ~@3 x]!62 [~@3 x ~@3 x ~@8] ~>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@13 A ~@3 A ~@3 A ~@8 A ~@3 A ~@3 A ~@6 A ~@3 A ~@3 A ~@6 A ~@3 A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "~@9 x ~@6",
})).gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~@6 A B@2 C D@7 E B@8 C D@7 E B@6 C D@7 E B@22 F ~>".pickRestart({
  A: "~@9 x!7", B: "x!16", C: "x!9 ~@2 x ~@3 x", D: "~@3 x ~@3 x ~@3 x ~@3 x", E: "~@3 x ~@3 x ~ x!7", F: "x!9 ~@7",
})).gain(0.64)

stack(
  bass, acoustic_guitar_nylon, acoustic_guitar_nylon_2, harpsichord, string_ensemble_2, electric_guitar_clean, kick,
  snare, hihat, mid_tom, tambourine, crash, shaker
)

More by Caterina Caselli