Strudelify

Solo una sana e consapevole libidine salva il giovane dallo stress e dall'Azione Cattolica

Zucchero

KeyA majorTempo90 bpm
0:00/0:00
// Solo una sana e consapevole libidine salva il giovane dallo stress e dall'Azione Cattolica — Zucchero
// 90 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 38, 4/4 at bar 38) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 89 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): guitar program 30.
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: edit a riff to change every repeat.

// chords · synth strings 1
const synth_strings_1 = note("<~@6 A B@5 C ~@7 A B@7 C ~@8 D E F@3 E G@2 ~@8 H@32 I ~@3>".pickRestart({
  A: "~ [a3,c#4]", B: "[b3,d4] [a3,c#4]", C: "[b3,d4]@3 ~@5", D: "[a3,c#4]", E: "[b3,d4]", F: "[a3,c#4]/3",
  G: "[[a3,c#4]@19 ~@13]/2", H: "[a3,c#4] [b3,d4]", I: "[a3,c#4]@3 ~@13",
})).s("gm_synth_strings_1").gain(0.33)

// bass · electric bass finger
const bass = note(`<
  ~@6 A B@2 C@2 D E F G H I J I J K L B@2 L B@3 M F G F G J I F N O@2 P Q O@2 P R ~@8 S@2 T@2 S T@3 S@2 T@2 S T@3 S@2
  T@2 S T@3 S@2 T@2 S T@3 ~@4
>`.pickRestart({
  A: "~@8 a1!3 a1@2 ~ a1!2", B: "a1!3 ~@5 a1!3 a1@2 ~ a1!2", C: "a1!2 a1@2 ~@4 a1!3 a1@2 ~ a1!2",
  D: "a1!2 a1@2 ~@4 a1!3 a1@3 a1!2", E: "a1!2 a1@2 ~@4 e1!3 e1@3 e1!2", F: "e1!3 ~@5 e1!3 e1@2 ~ e1!2",
  G: "d2@4 a1@3 ~ e1!3 e1@2 ~ e1!2", H: "e1!2 e1@2 ~@4 e1!3 e1@2 ~ e1!2", I: "d2@4 a1@3 ~ e1!3 e1@3 e1!2",
  J: "e1!3 ~@5 e1!3 e1@3 e1!2", K: "d2@4 a1@3 ~ a1!3 a1@3 a1!2", L: "a1!3 ~@5 a1!3 a1@3 a1!2",
  M: "a1!3 ~@5 e1!3 e1@3 e1!2", N: "a1", O: "a1@6 ~ a1!2 ~ a1@5 ~", P: "f#1@6 ~ f#1!2 ~ f#1@5 ~",
  Q: "f#1@6 ~ f#1!2 ~ f#1@6", R: "f#1 ~@7", S: "a1!3 a1@3 a1!5 ~@5", T: "a1!3 a1@2 ~ a1!5 ~@5",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · percussive organ
const percussive_organ = note("<~@6 A@7 ~ B ~ B ~ B ~ C@8 D ~ E ~ E ~ E F@2 G@8 ~@8 H@8 I@8 J@8 K@8 ~@4>".pickRestart({
  A: "[~@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 f#5@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 f#5@8 [c#5,e5]@8 [d5,f#5]@7 ~@9, ~@8 a5@95 ~@9, ~@32 d5@7 ~@41 d5@7 ~@25]/7", // C#m D C#m D C#m D C#m D
  B: "d5@4 c#5@3 ~@9, a4@7 ~@9",
  C: "[[a4,d5]@4 [a4,c#5]@3 ~ [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 f#5@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8, ~ a5@15, ~@32 d5@3 ~@29]/8", // D5 A C#m D C#m D C#m D …
  D: "[d5,f#5]@7 ~@9", E: "[a4,d5]@4 [a4,c#5]@3 ~@9", F: "[~@7 [a4,e5]@9]/2",
  G: "[~@4 f#5@4 e5@12 f#5@4 e5@7 ~, a5@31 ~]/8",
  H: "[[c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] f#5 [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5], a5@127 ~, ~@72 d5@7 ~@49]/8", // C#m D C#m D C#m D C#m D …
  I: "[[c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@7 ~ [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8 [c#5,e5]@8 [d5,f#5]@8, a5]/8", // C#m D C#m D C#m D C#m D …
  J: "[[c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5], a5@127 ~]/8", // C#m D C#m D C#m D C#m D …
  K: "[[c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] f#5 [c#5,e5] f#5 [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5] [c#5,e5] [d5,f#5], a5, ~@20 d5@3 ~@5 d5@3 ~@33]/8", // C#m D C#m D C#m D C#m D …
})).s("gm_percussive_organ").gain(0.19)

// chords · distortion guitar
const distortion_guitar = note("<~@12 A B A C A D E F ~@8 A G H I H J A K ~@53>".pickRestart({
  A: "~@15 [b2,e3]", B: "e2 b2 e2 [b2,e3] e2 [b2,e3] e2 [b2,e3] ~@8", C: "e2 b2 c#2 [b2,e3] e2 [b2,e3] e2 [b2,e3] ~@8",
  D: "~@2 e2 [b2,e3] e2 ~ e2 [b2,e3] ~@8", E: "~@13 b2 ~ [b2,e3]", F: "e2 ~@2 [b2,e3] e2 ~@2 [b2,e3] ~@8",
  G: "e2 ~ e2 [b2,e3] ~ [b2,e3] e2 [b2,e3] ~@8", H: "~@12 e2 ~ e2 [b2,e3]", I: "e2 b2 e2 [b2,e3] e2 b2 e2 b2 ~@8",
  J: "~ b2 e2 [b2,e3] e2 [b2,e3] e1 [b2,e3] ~@8", K: "e2 ~@2 [b2,e3] e2 b2 e2 [b2,e3] ~@8",
})).s("gm_distortion_guitar").gain(0.44)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@15 A B C B D ~@9 E ~ F G H B A ~@53>".pickRestart({
  A: "~@2 e2 ~@13", B: "~@14 e2 ~", C: "~ b2 ~@3 [b2,e3] ~@10", D: "~ [b2,e3] e2 ~@2 b2 e2 ~@9", E: "~ b2 ~@2 e2 ~@11",
  F: "~ e3 ~@3 e3 ~ e3 ~@8", G: "~@13 b2 ~@2", H: "e2 e3 ~@14",
})).s("gm_distortion_guitar").gain(0.27)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@6 A B@5 C ~@7 A B@7 C ~@24 D@32 ~@4>".pickRestart({
  A: "~@8 [c#4,e4]@2 ~ [c#4,e4]@2 ~ [c#4,e4] ~", // C#m
  B: "[d4,e4]@2 ~ [d4,e4]@2 ~ [d4,e4] ~ [c#4,e4]@2 ~ [c#4,e4]@2 ~ [c#4,e4] ~", C: "[d4,e4]@2 ~ [d4,e4]@2 ~ [d4,e4] ~@9",
  D: "[c#4,e4]@2 ~ [c#4,e4]@2 ~ [c#4,e4] ~ [d4,e4]@2 ~ [d4,e4]@2 ~ [d4,e4] ~", // C#m Dsus2
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.4)

// other · brass section
const brass_section = note("<~@14 A ~ B@2 C D E@2 ~@8 A ~ B@2 C ~ F@2 ~@51>".pickRestart({
  A: "~ [b3,b4] [d4,d5] [e4,e5] [f#4,f#5] [e4,e5] [d4,d5] [e4,e5] ~ [b3,b4] ~@6", // B D E F# E D E B
  B: "[~ [a4,d5] ~@2 [a4,d5] ~ [a4,d5] [b4,e5]@15 ~@10]/2", // D5 E5
  C: "~ [b3,b4] [d4,d5] [e4,e5] [f#4,f#5] [d4,e5] [d4,d5] [e4,e5] ~ [b4,b5] ~@6", // B D E F# Dsus2 D E B
  D: "~@8 [d4,d5] [e4,e5] ~ [g4,g5] ~ [a4,a5] ~ [b4,b5]", // D E G A B
  E: "[~ [d5,d6] [b4,b5] ~ [a4,a5] [b4,b5] [g4,g5] [a4,a5]@17 ~@8]/2", F: "[~@4 [a4,a5] [b4,b5] [g4,g5] [a4,a5]@25]/2",
})).s("gm_brass_section").gain(0.48)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~@6 A@7 B C B C B C B D@6 E@3 B C F C B C G H ~@31 I J K L M@3 N O P@2 Q R S@2 T U ~@4
>`.pickRestart({
  A: "[~@8 a3@27 ~ b3@4 a3@31 ~ a3@28 ~@4 [b3,e4]@2 [b3,e4] ~@5]/7", B: "~@8 [b3,e4]@2 [b3,e4] ~@5",
  C: "[a3,d4]@4 [e3,a3]@3 ~ [b3,e4]@2 [b3,e4] ~@5", D: "[d4@4 e3@3 ~ a3@28 b3@4 a3@16 a4@16 a3@24, a3@7 ~@89]/6",
  E: "[~@4 b3@4 a3@29 ~@3 [b3,e4] ~ [b3,e4] ~@5]/3", F: "~@8 [b3,e4]@2 [b3,e4] ~ b2@3 ~",
  G: "~@8 [b3,e4] ~ [b3,e4] ~@5", H: "[e3,a3]@15 ~", I: "~@15 a3",
  J: "e4 a3 f#4 a3 e4 a3 f#4 a3 e4 a3 f#4 a3 g4 a3 f#4 a3", K: "e4 a3 f#4 a3 g4 a3 f#4 a3 e4 a3 d4 a3 c4 c#4 d4 d#4",
  L: "e4 [c4,c#4]@2 a3 ~ g3 ~ [a3,b3]@2 a3 g3 a3 g3 e3 c#3 e3", // C#maj7 Asus2
  M: "[a3 e3 g3 a3 e4 g4 a4 e4 g4 a4 c5 e4 g4 a4 g4 a4@7 e5@12 d5 e5 [c5,c#5] a4 g4 e4 d4 c#4 e4 a4 e4 g4 c5 e4]/3", // C#maj7
  N: "a4@7 g4@2 g4 a4 e4 g4 [e4,a4] e4 g4", O: "a4 e4 g4 a4 e4 g4 a4 e4 g4 a4 e4 g4 a4 e4 g4 e4",
  P: "[a4@9 g4 ~ g4 ~ [g4,a4] ~ g4@2 g4 f#4 d4 e4 d4 c4 c#4 a3 g3 e3 g3 a3 e3 g3 e3]/2", Q: "a3@7 a4@7 ~@2",
  R: "[a3,c4]!2 [e3,g3] [e3,c4] [a3,c4] [e3,g3] [e3,c4] [a3,c4] [e3,g3] [e3,c4] [a3,c4] [e3,g3] [e3,c4] [a3,c4] [e3,g3] [a3,c4]", // Am Em C Am Em C Am Em …
  S: "[a3@6 ~ a4@8 c#5@3 d5@3 d#5@3 e5@2 d5 e5 [c5,c#5] a4 g4 e4, g3 ~@31]/2", // C#maj7
  T: "a4 e4 e5 e4!2 a4 e4!2 e5 e4!2 a4 e4!2 e5 e4", U: "e4 a4 e4!2 e5 e4!2 a4 e4!2 e5@4 ~@2",
})).s("gm_overdriven_guitar").gain(0.62)

// chords · distortion guitar
const distortion_guitar_2 = note("<~@30 [~@4 c#4@3 ~@9] ~@58>").s("gm_distortion_guitar").gain(0.18).pan(0.2)

// chords · harpsichord
const harpsichord = note("<~@37 A@3 B@4 ~@45>".pickRestart({
  A: "[[a3,c#4]@10 ~@6 d4@17 ~@5 e4@4 a3@2 b3@2 a3@2, ~@10 e3@4 a3@19 ~ a3@4 ~@10, ~@6 c#4@2 ~@10 b3@3 ~@3]/3", // A
  B: "[~@2 a3@2 ~@2 e4@3 ~ a3@2 b3@2 ~@2 [c#4,c#5]@10 ~@2 c#4@2 ~@10 [e4,e5]@4 c#5@2 ~@4 a3@2 ~@2 e4@4 a3@2 b3@2 a3@2, ~@4 b3@6 ~@4 a3@12 e3@4 a3@19 ~@3 b3@6 ~@6, ~@32 d4@17 ~@15, ~@46 a4@7 ~@11]/4", // C# E
})).s("gm_harpsichord").gain(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@6 [~@15 x] [~@2 x ~@12 x]!30 [~@7 x ~@2 x ~@5]!48 ~@4>").gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A ~@3 A ~@3 B ~@3 B ~@7 A ~@3 A ~@7 C ~@3 D ~@7 E ~@3 E ~@3 F ~@3 G ~@7 H ~@7 I ~@3 J ~@4
>`.pickRestart({
  A: "~ x ~@2", B: "~@2 x!2 ~@4", C: "~@6 x!2", D: "~@2 x ~@3 x!2", E: "~@7 x", F: "~@15 x", G: "~@2 x ~@2 x ~@2",
  H: "~@5 x ~@5 x ~@2 x!2", I: "x ~@2 x ~@2 x ~", J: "~@13 x!3",
})).gain(0.64)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@8 A ~@3 A ~@15 A ~@3 A ~@19 B ~@11 C ~@24>".pickRestart({
  A: "~@3 x ~@4", B: "~@15 x", C: "~@3 x!2 ~@3",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@7 C B@3 D B@3 C B@3 D B@3 D B@3 E B@3 D B@4 F B@3 F B F G B@7 H F B@2 I F B@2 J F B@2 E F B@2 K F B@3 F B@3 F B@2
  F@2 B@2 F ~@4
>`.pickRestart({
  A: "~@8 x!8", B: "x!16", C: "x!4 ~ x!11", D: "x!4 ~ x!3 ~ x!7", E: "~ x!3 ~ x!11", F: "~ x!15",
  G: "~ x!3 ~ x!3 ~ x!3 ~ x!3", H: "x!14 ~@2", I: "x!10 ~ x ~ x!3", J: "~ x!3 ~ x!5 ~ x!3 ~@2", K: "~ x!9 ~ x!3 ~@2",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@3 B ~@3 C ~@3 C ~@3 D ~@3 E ~@3 A ~@7 F ~@3 G ~@3 H ~@3 I ~@3 J ~@3 I ~@3 K ~@7 L ~@3 M ~@3 N ~@8
>`.pickRestart({
  A: "~ x ~@2", B: "~@4 x!2 ~@10", C: "~@2 x ~ x!2 ~@10", D: "~ x!2 ~@5", E: "x ~@3 x!2 ~@10", F: "~ x",
  G: "~@8 x ~@2 x!2 ~@3", H: "~@6 x!2", I: "~@7 x", J: "~@5 x!2 ~", K: "~@2 x ~ x!2 ~ x ~ x ~ x ~ x ~@2",
  L: "~@2 x ~@2 x ~@2 x ~@2 x ~@4", M: "~@8 x ~@4 x ~@2", N: "x!2 ~@4 x!2 ~ x ~ x ~ x ~@2",
})).gain(0.64)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@28 [~ x ~@6] ~@3 [~@3 x ~@12] ~@7 [~@5 x!2 ~] ~@48>").gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@3 x ~@4]!6 ~@82>").gain(0.4)

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

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

// drums · tambourine
const tambourine = s("tb").struct("<~@45 [~ x ~ x]!40 ~@4>").gain(0.64)

stack(
  synth_strings_1, bass, percussive_organ, distortion_guitar, distortion_guitar_soft, acoustic_guitar_steel,
  brass_section, overdriven_guitar, distortion_guitar_2, harpsichord, kick, rim, snare, low_tom, low_tom_soft, hihat,
  mid_tom, mid_tom_soft, open_hat, high_tom, crash, tambourine
)

More by Zucchero