Strudelify
Diavolo in me cover art

All The Best - Zu & Co

Diavolo in me

Zucchero

KeyE majorTempo126 bpm
0:00/0:00
// Diavolo in me — Zucchero
// 126 bpm, 4/4, key E 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 111 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): DoubleGt, ElettGtr, DoubleGt.
setcpm(126/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 · piano · "AcusPno"
const piano = note(`<
  ~@10 A ~ B C D@6 E ~ F ~ G H I ~ B C J D K L J D M N O P Q R S T S ~@7 U V J D K L J D M ~@8 W X Y Z AA AB AC AD AE
  ~@7 AF AG AF AH AI AJ AF AK AF AG AF AH AI AJ AF AK ~@10
>`.pickRestart({
  A: "~@6 e6 [e5,e6] e5 e6 [e5,e6]!2 e5 e5@3, ~@5 [g5,a5,d#6]@11, ~@12 e6@3 ~", // E Am7b5
  B: "~@2 [a#5,d6,e6] b5 a5 g5 e5 d5 [a#5,e6] b5 a5 g5 e5 d5 b4 d5", // Em7b5 A#dim
  C: "e5@2 ~@6 [g4,a4,b4,c#5]@2 ~ [g4,a4,b4,c#5] ~@4", D: "~@8 [g4,a4,b4,c#5]@2 ~ [g4,a4,b4,c#5] ~@4",
  E: "~@8 [g4,a4,b4,c#5,e5]@3 [g4,a4,b4,c#5,e5] ~@4", F: "~@8 a#5 a5 g5 e5 [a5,e6] g5 e5 ~, ~@4 [b5,e6] ~@3",
  G: "~@5 e4 g4 a4 a#4 b4 d5 e5 g5 a5 a#5 b5", H: "d6 ~@15",
  I: "~@8 [f#4,g4,a4,c#5] e4 [f#4,g4,a4,c#5] e4 [f#4,g4,a4,c#5] e4 ~ e4", // F#m
  J: "~@4 [g4,a4,b4,c#5,e5] ~@3 [g4,a4,b4,c#5,e5]@2 ~ [g4,a4,b4,c#5,e5] ~@4", // A7
  K: "~@4 [g4,a4,b4,c#5,e5] ~@3 [g4,a4,b4,c#5,e5]@2 ~ [g4,a4,b4,e5] ~@4, ~@11 c#5@2 ~@3", // A7 Em
  L: "~@4 [g4,a4,b4,c#5,e5] ~@3 [g4,a4,b4,c#5,e5]@3 [a4,b4,c#5]@2 ~@3, ~@11 [g4,e5] ~@4", // A7 A C
  M: "~@4 [g4,a4,b4,c#5,e5] ~@3 [g4,a4,b4,c#5,e5]@2 ~ [a4,b4,e5] ~@4, ~@11 [g4,c#5]@2 ~@3", // A7 Asus2 Gdim
  N: "[e2,d4,g4]@2 ~ [g#3,d4,g4]@2 ~@11, g#3 ~@2 e2 ~@12", O: "[d4,g4]@2 ~ [e2,d4,g4]@2 ~@11, [e2,g#3] ~@2 g#3 ~@12",
  P: "[d4,g4]@2 ~ [e2,d4]@2 ~@11, [e2,g#3] ~@2 [g#3,g4] ~@12", // G5 E7 E G#maj7
  Q: "[e2,g#3,g4] ~@2 [e2,d4]@2 ~@11, d4@2 ~ [g#3,g4] ~@12", R: "[d4,g4]@2 ~ [e2,g#3,d4,g4]@2 ~@11, [e2,g#3] ~@15",
  S: "[d4,g4]@2 ~ [e2,g#3,g4] ~@12, [e2,g#3] ~@2 d4@2 ~@11", T: "[e2,d4,g4]@2 ~ [e2,g#3,d4,g4]@2 ~@11, g#3 ~@15",
  U: "~@2 g5 e5 f#5 d5 e5 b4 d5 a#4 a4 g4 e4 d4 b3 d4", V: "e4 ~@7 [g4,a4,b4,c#5]@2 ~ [g4,a4,b4,c#5] ~@4",
  W: "~@7 [a3,d4,g4] [b5,e6] a5 g5 [a3,d4,g4] [e5,g5] [a3,d4,g4] [d5,g5]!2", // Dsus4 E5 Dsus4 Em Dsus4 G5
  X: "~@5 b3 a#4 c4 c#4 b4 [a3,c#4,f4,c5] f5 a#5 [b3,d#4,g4,c6] f6 a#6", // F Cm
  Y: "~@7 g4 [a4,b4,d5,e5]!2 g4!2 [a4,b4,d5,e5] g4 [a4,b4,d5,e5] ~", // Asus4
  Z: "~@7 [a3,d4,g4] [a#5,b5] a5 [a3,d4,g4] [a#5,b5,e6] [a3,d4,g4,a5] g5 [e5,f5]@2, ~@4 e6 ~@3", // Dsus4 Bmaj7 Dsus4 E Dsus4 Fmaj7
  AA: "~@6 [e4,g4] [f4,g#4] [f#4,a4] [g4,g#4,a#4] [a4,b4] [a#4,c5,d5,e5,f5] [b4,g5,a5,b5] [c6,d6,e6,f6,g6] [a6,e7] [f7,g7,a7,b7,c8], ~@7 b6", // Em Fm F#m Gm Asus2 A# Em C …
  AB: "~@7 [a3,d4,g4] [a#5,b5] a5 g5 [b3,e4,a4] [g#5,a5] g5 [b5,d6,e6] ~, ~@8 e6@3 ~ e6@2 ~@2", // Dsus4 Bmaj7 Esus4 Amaj7 E7
  AC: "~@7 g4 [a#4,b4] a4 g4 [b4,e5] a4 g4 e4 d4, ~@4 e5 ~@3", // Bmaj7 E5
  AD: "b3 d4 d#4 e4 g4 a4 a#4 b4 d5 [a3,c#4,f4,d#5] e5 g5 g#5 [b3,d#4,g4,a5] a#5 b5", AE: "e6 ~@7",
  AF: "~@8 [g4,a4,b4,c#5,e5]@2 ~ [g4,a4,b4,c#5,e5] ~@4", // A7
  AG: "~@8 [a4,b4,e5] ~@2 [g4,a4,b4,e5] ~@4, ~@8 [g4,c#5]@2 ~ c#5@2 ~@3", // Asus2 Em Gdim
  AH: "[b4,d5,e5]!2 d5 a4 [b4,d5,e5] ~@3 [g4,a4,c#5,e5]@2 ~ [g4,a4,b4,c#5,e5] ~@4, ~@8 [b4,d5] ~@7", // E7 A7 Bm
  AI: "~@8 [g4,a4,b4,c#5,e5]@2 ~ [g4,a4,b4,e5] ~@4, ~@11 c#5@2 ~@3", // A7 Em
  AJ: "~@8 [g4,a4,b4,c#5]@2 ~ [g4,a4,b4,c#5,e5] ~@4, ~@8 [d5,e5] ~@7", // A7 Dsus2
  AK: "[b4,d5,e5]!2 d5 a4 [b4,d5,e5] ~@3 [g4,a4,b4,c#5,e5]@2 ~ [g4,b4,e5] ~@4, ~@11 [a4,c#5]@2 ~@3", // E7 A7 Em A
})).s("gm_piano").gain(0.22).pan(0.6)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B@2 C B C B C B C B C D E F@2 C F C G C@2 B C B C B C D E G F C F C G C H@2 I H J H@2 I C B C D C B C D E G F C F C
  G C K L@3 M@3 N H@2 I H J H@2 O C B C D C B C D E G F C F C G C E G F C F P Q C R@2 M@2 R S@5
>`.pickRestart({
  A: "~@15 c#1", B: "e1 c#1 e1 ~ g1 ~ g#1 ~ a1@2 ~ a1@2 c#1 e1 c#1", C: "e1 c#1 e1 ~ g1 ~ g#1 ~ a1@2 ~ a1 ~ c#1 e1 c#1",
  D: "e1 c#1 e1 ~ g1 ~ g#1 ~ a1@2 ~ d2@2 b1 d2 e2", E: "e1 c#1 e1 ~ g1 ~ g#1@2 a1@2 ~ a1@2 b1 d2 e2",
  F: "e1 c#1 e1@2 g1 ~ g#1 ~ a1@2 ~ a1@2 b1 d2 e2", G: "e1 c#1 e1 ~ g1 ~ g#1 ~ a1@2 ~ a1@2 b1 d2 e2",
  H: "e1@2 ~ e1@2 ~@11", I: "e1@2 ~ e1@2 ~@10 c#1", J: "e1@2 ~ e1 ~@12", K: "e1@6 ~@2 e1@7 ~",
  L: "[e1@7 ~ e1@6 ~@4 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~, ~@14 d1@25 ~@9]/3",
  M: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", N: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@3 ~",
  O: "e1@2 ~ e1 ~@2 a#1@2 d2@2 ~ b1 a1 g1 e1 d1", P: "e1 c#1 e1@2 g1 ~ g#1 ~ a1@2 ~ a1 ~ c#1 e1 c#1",
  Q: "e1 [c#1,e1] e1 ~ g1 ~ g#1 ~ a1@2 ~ a1@2 b1 d2 e2", R: "e1@5 ~ e1 ~ e1@5 ~ e1 ~",
  S: "[e1@5 ~ e1 ~ e1@6 d1@55 ~@11]/5",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · acoustic guitar steel · "DoubleGt"
const acoustic_guitar_steel = note("<~ A@36 B C B@2 D@3 C A@16 ~@16 A@24 ~@10>".pickRestart({
  A: "~@9 [c#4,e4,g4,a4]@2 ~@5", B: "[b3,d4,e4,g4] ~@2 [b3,d4,e4,g4] ~@12", C: "[b3,d4,e4,g4]@2 ~ [b3,d4,e4,g4] ~@12",
  D: "[b3,d4,e4,g4] ~@2 [b3,d4,e4,g4]@2 ~@11", // Em7
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.8)

// chords · distortion guitar · "DoubleGt"
const distortion_guitar = note("<~@61 A B@3 A B@3 C D C@2 E@3 D ~@24 A B@3 A F@5>".pickRestart({
  A: "g#4 a4 b4 e4 f#4 g#4 b3 c#4", B: "[e4@2 g#3@2 a3@2 b3@2 e3@2 f#3@2 g#3@2 d4@33 ~]/3",
  C: "[b3,d4,e4,g4] ~@2 [b3,d4,e4,g4] ~@12", D: "[b3,d4,e4,g4]@2 ~ [b3,d4,e4,g4] ~@12",
  E: "[b3,d4,e4,g4] ~@2 [b3,d4,e4,g4]@2 ~@11", F: "[e4@2 g#3@2 a3@2 b3@2 e3@2 f#3@2 g#3@2 d4@53 ~@13]/5",
})).s("gm_distortion_guitar").gain(0.31).pan(0.8)

// chords · brass section · "Brass"
const brass_section = note("<~@44 A ~@17 B@3 ~ C@3 ~@7 D ~@8 E@2 F ~ E@2 F ~ G@2 H ~ G@2 I ~@2 B@3 ~ J@5>".pickRestart({
  A: "[e4,e5,e6] ~@2 e4 d6 [d5,e5,f5,g5,a5,b5,c6] [d4,e4,f4,g4,a4,b4,c5] ~@9, ~@3 [e5,e6]@2 ~@11", // E Dm7 E
  B: "[~@7 a4@9 d5@8, ~@7 [d4,e4,f#4]@17]/3", C: "[~@3 d5 [c#5,e5]@2, ~@7 [d4,e4,f#4,a4]@17]/3",
  D: "[e4,e5] ~@2 e4 d6 [d5,e5,f5,g5,a5,b5,c6] [b3,c4,d4,e4,f4,g4,a4,b4,c5] a3 ~@8, e6@2 ~ [e5,e6]@2 ~@11", // E Dm7 Bm7b5 E
  E: "[[e4,e5]@10 [d4,d5] ~ [b3,b4] ~ [d4,d5]@4 [e4,e5] ~@13]/2", F: "[e4,e5]@10 [d4,d5] ~ [b3,b4] ~ [d4,d5] ~",
  G: "[[e4,g4,b4,e5]@10 [d4,f#4,a4,d5] ~ [b3,d4,f#4,b4] ~ [d4,f#4,a4,d5]@4 [e4,g4,b4,e5] ~@13]/2", // Em D Bm D Em
  H: "[e4,g4,b4,e5]@10 [d4,f#4,a4,d5] ~ [b3,d4,f#4,b4] ~ [e4,g4,b4,e5]@2", // Em D Bm Em
  I: "[e4,g4,b4,e5]@10 [d4,f#4,a4,d5] ~ [b3,d4,f#4,b4] ~ [e4,g4,b4,e5] ~", J: "[~@7 [d4,f#4,a4,e5]@27 ~@6]/5",
})).s("gm_brass_section").gain(0.32).pan(0.7)

// bass · slap bass 2 · "SlapBass"
const bass_2 = note("<~@40 [~@10 a#2@2 d3 ~ d2 ~] ~@31 [~@10 a#2@2 d3 ~ d2 ~] ~@38>").s("gm_slap_bass_2").gain(0.64)

// chords · electric guitar clean · "ElettGtr"
const electric_guitar_clean = note(`<
  ~ A@11 ~ B ~ B ~ B ~ B ~ A@7 ~ B ~ B ~ B ~ B ~ C D@2 E F@2 C D A@7 ~ B ~ B ~ B ~ B ~@9 C D@2 E F@2 C D A G A G A G A ~
  B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@11
>`.pickRestart({
  A: "~@13 a#3 ~@2", B: "~@2 d5 ~", C: "[g#3,b3,d4,e4]@2 ~ [g#3,b3,d4,e4]@2 ~@11",
  D: "[g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4]@2 ~@11", E: "[g#3,b3,d4,e4]@2 ~ [g#3,b3,d4,e4] ~@12",
  F: "[g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~@12", G: "~@13 a#3 b3 d4",
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.1)

// chords · rock organ · "Organ"
const rock_organ = note(`<
  ~ A ~@11 B ~@3 A ~@11 C ~@3 D ~@19 E ~@3 F ~@3 G H@3 G H@3 ~@16 I ~ J ~ K ~@3 L ~ M ~ N ~@3 G H@3 G O@5
>`.pickRestart({
  A: "~@4 [d#6,e6] [c6,d6] [d5,e5,f5,g5,a5,b5] [d4,e4,f4,g4,a4,b4,c5] [e3,f3,g3,a3,b3,c4] ~@7", // Emaj7 Csus2 Em7 Dm7 Cmaj7
  B: "~@4 e6@2 [g5,a5,b5,c6,d6] [g4,a4,b4,c5,d5,e5,f5] [a3,b3,c4,d4,e4,f4] [f3,g3] ~@6, ~@4 d#6 ~@11", // G G7 Dm7 Fsus2
  C: "~@4 [d#6,e6] d6 [f5,g5,a5,b5,c6] [f4,g4,a4,b4,c5,d5,e5] [a3,b3,c4,d4,e4] ~@7", // Emaj7 F Fmaj7 Am
  D: "~@4 d#6 d6 [e5,f5,g5,a5,b5,c6] [f4,g4,a4,b4,c5,d5] [g3,a3,b3,c4,d4,e4] [e3,f3] ~@6, ~@2 e6 ~@5", // Cmaj7 Dm7 Cmaj7 Fmaj7
  E: "~@4 e6@2 d6 [e5,f5,g5,a5,b5,c6] [f4,g4,a4,b4,c5,d5] [g3,a3,b3,c4,d4,e4] [e3,f3] ~@5, ~@4 d#6 ~@11", // Cmaj7 Dm7 Cmaj7 Fmaj7
  F: "~@4 e6@2 d6 [g5,a5,b5,c6] [b4,c5,d5,e5,f5] [d4,e4,f4,g4,a4] [g3,a3,b3,c4] e3 ~@4, ~@4 d#6 ~@11", // Cmaj7 Bdim Dm Cmaj7
  G: "g#5 a5 b5 e5 f#5 g#5 b4 c#5", H: "[e5 g#4 a4 b4 e4 f#4 g#4 [a4,d5,f#5]@17]/3",
  I: "~@4 e6@3 d6 [e5,f5,g5,a5,b5,c6] [g4,a4,b4,c5,d5] [b3,c4,d4,e4,f4] [e3,f3,g3,a3] ~@4, ~@4 d#6 ~@11", // Cmaj7 G Bdim Fmaj7
  J: "~@8 [g5,a5,c#6]@2 ~ [g5,a5,c#6] ~@4", // A7
  K: "~@4 e6@3 [c6,d6] [f5,g5,a5,b5] [g4,a4,b4,c5,d5,e5] [b3,c4,d4,e4,f4] [b2,c3,d3,e3,f3,g3,a3] ~@4, ~@4 d#6 ~@11", // Csus2 G7 Cmaj7 Bdim Bm7b5
  L: "~@4 e6@3 [b5,c6,d6] [d5,e5,f5,g5,a5] [e4,f4,g4,a4,b4,c5] [f3,g3,a3,b3,c4,d4] [b2,c3,e3] ~@4, ~@4 d#6 ~@11", // Bm Dm Cmaj7 Dm7 Cmaj7
  M: "~@8 [g5,a5,c#6]@3 [g5,a5,c#6] ~@4", // A7
  N: "~@4 e6@2 [c6,d6] [e5,f5,g5,a5,b5] [f4,g4,a4,b4,c5,d5] [g3,a3,b3,c4,d4,e4] e3 ~@5, ~@4 d#6 ~@11", // Csus2 Em Dm7 Cmaj7
  O: "[e5 g#4 a4 b4 e4 f#4 g#4 [a4,d5,f#5]@26 ~@7]/5", // D
})).s("gm_rock_organ").gain(0.16).pan(0.2)

// chords · overdriven guitar · "DoubleGt"
const overdriven_guitar = note(`<
  ~ A@36 ~@8 A@15 B ~@16 A B A B A B A B A B A B A B A B A B A B A B A B ~@10
>`.pickRestart({
  A: "[g#3,b3,d4,e4]!8 [c#4,e4,g4,a4]@3 [c#4,e4,g4,a4] ~@2 [g#3,b3,d4,e4]!2", // E7 A7 E7
  B: "[g#3,b3,d4,e4]!8 [c#4,e4,g4,a4]@3 [c#4,e4,g4,a4] ~@4", // E7 A7
})).s("gm_overdriven_guitar").gain(0.1).pan(0.1)

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

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!106 ~@4>").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~@2 x!2 ~ x!5 ~ x ~@3]!106 ~@4>").gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ [~ x ~@6]!106 ~@4>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@7 x]!105 ~@5>").gain(0.56)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@13 A@8 ~@8 A@8 ~@16 A@8 ~@24 A@16 ~@10>".pickRestart({
  A: "x!16",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~ [x!8]!36 ~@8 [x!8]!24 ~@8 [x!8]!30 ~@4>").gain(0.4)

// drums · agogo bells
const agogo_bells = s("agogo:4").struct("<~ [~@3 x!2 ~@11]!106 ~@4>").gain(2.04)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [x ~@2 x!2 ~ x!5 ~ x ~@3]!106 ~@4>").gain(1.62)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~ [~ x ~@6]!106 ~@4>").gain(0.81)

stack(
  piano, bass, acoustic_guitar_steel, distortion_guitar, brass_section, bass_2, electric_guitar_clean, rock_organ,
  overdriven_guitar, kick, snare, hihat, hihat_soft, open_hat, crash, tambourine, ride, agogo_bells, cabasa, cabasa_soft
)

More by Zucchero