Strudelify
Benvenuti in paradiso cover art

1991 · Benvenuti In Paradiso

Benvenuti in paradiso

Antonello Venditti

KeyD majorTempo97 bpm
0:00/0:00
// Benvenuti in paradiso — Antonello Venditti
// 97 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/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 · epiano1
const epiano1 = note(`<
  ~@4 A@2 B@2 C@3 D A@2 B@2 C@3 D A@2 B@2 C@3 E F G H@4 I D H@4 I E F G ~@8 A@2 B@2 C@3 D A@2 B@2 C@3 E F G H@4 I D H@4
  I E J G ~@14 I E F G H@4 I D H@4 I E F G K
>`.pickRestart({
  A: "[[f#3,a3,d4]@3 [g3,a3,d4]@4 [f#3,a3,d4]@9]/2", B: "[f#3@6 g3@7 a3 ~ a3@17, [a3,d4]@7 [g3,d4]@9]/2",
  C: "[[f#3,a3,d4]@6 [g3,a3,d4]@8 [f#3,a3,d4]@12 d4@2 a3@2 ~@2 [e3,b3,d4]@15 ~, ~@5 g3@3]/3", // D Gsus2 D E7
  D: "[a3,b3,d4]@3 [a3,c#4,d4]@5", E: "[f#3,a3,c#4,d4]@15 ~", F: "[g3,a3,b3,d4]@15 ~", G: "[a3,c#4,d4]",
  H: "[d4@11 ~ e4 f#4 ~@2 [g3,f#4]@16, f#3@15 b3@17, a3@10 ~ a3@2 ~ d4@18]/2", I: "[e3,b3,d4]@15 ~",
  J: "[a3,b3,d4]@15 ~", K: "[f#3,a3,d4]@3 ~@13",
})).s("gm_epiano1").gain(0.26)

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

// other · electric guitar muted
const electric_guitar_muted = note(`<
  [~@2 a3 ~ b3 ~ b3 ~ f#3 ~ f#3 a3 ~ a3 d4!2]
  [d4!2 a3 ~ b3 ~ b3 ~ f#3 ~ f#3 a3 ~ a3 d4!2]!43
  ~@6
  [d4!2 a3 ~ b3 ~ b3 ~ f#3 ~ f#3 a3 ~ a3 d4!2]!34
  ~@6
  [d4!2 a3 ~ b3 ~ b3 ~ f#3 ~ f#3 a3 ~ a3 d4!2]!26
  ~
>`).s("gm_electric_guitar_muted").gain(0.17)

// other · brass section
const brass_section = note("<~@47 A@2 ~@38 B@3 ~@27>".pickRestart({
  A: "[~@8 [g4,g5] ~ [f#4,f#5] ~ [d4,d5] ~ [e4,e5] [a3,a4]@5 ~@12]/2", // G F# D E A
  B: "[~@8 [g4,g5] ~ [f#4,f#5] ~ [d4,d5] ~ [e4,e5] [a3,a4]@18 ~@15]/3", // G F# D E A
})).s("gm_brass_section").gain(0.47)

// chords · pad warm
const pad_warm = note("<~@44 A B C B D B ~@34 A B C B D B ~@26 E>".pickRestart({
  A: "[a3,c#4,e4,a4]@15 ~", B: "[b3,d4,g4] [a3,d4,f#4]", C: "[a3,c#4,e4], a4@7 ~", D: "[a3,c#4,e4,a4]",
  E: "[d3,f#3,a3,d4]@3 ~@13", // D
})).s("gm_pad_warm").gain(0.17)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@4 A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D F G H I J I J D K I J I J D F G L M@7 ~ A@2 B@2 C@2 D E A@2 B@2 C@2
  D F G H I J I J D K I J I J D F G L M@7 ~@7 D F G L I J I J D K I J I J D F G L N
>`.pickRestart({
  A: "[f#4@3 g4@4 a4@9]/2", B: "[f#4@6 g4@9 a4@17]/2", C: "[f#4@3 g4@4 a4@4 g4 f#4 d4 [a3,a4] [g3,g4]]/2",
  D: "a4 g4 d5@6", E: "[g4,a4,b4,d5]@3 [a4,c#5,d5]@5", F: "a4 d5@7", G: "b4 d5@7", H: "~@3 a5, [c#5,d5]",
  I: "[a4,a5,a6]", J: "[b4,b5,b6]", K: "[g4,a4,b4,d5]@6 ~@6 [b4,b5,b6]@3 ~, ~@3 [a4,c#5,d5]@5",
  L: "~ [g4,g5,g6] [a4,a5,a6]@2 [b4,b5,b6]@4, [c#5,d5]", M: "[[a4,a5,a6]@25 ~@3]/7", N: "[d5,d6,d7] ~@7",
})).s("gm_string_ensemble_2").gain(0.19)

// other · synth drum
const synth_drum = note("<[~@9 g1!2 ~@5]!97 [~ f1 a1 e2!3 a2!2 ~@8, a1 ~@7] [~@9 g1!2 ~@5]!18 ~>")
  .s("gm_synth_drum").gain(0.39).pan(0.6)

// chords · flute
const flute = note(`<
  ~@29 A B ~@3 C ~@5 C@2 D E ~@25 A B ~@3 C ~@5 C@2 D E ~@14 C@2 D E B ~@3 C ~@5 C@2 D E ~
>`.pickRestart({
  A: "~@4 [a5,c#6] [b5,d6] [a5,c#6] [b5,d6] [a5,c#6] [b5,d6] [a5,c#6] [b5,d6] [a5,c#6] [b5,d6] [a5,c#6] b5", // A Bm A Bm A Bm A Bm …
  B: "a5 ~@15", C: "~@2 [d5,f#5] ~ [e5,g5] ~ [f#5,a5] [b4,d5] ~@2 [d5,f#5] ~ [e5,g5] ~ [f#5,a5] ~",
  D: "~@2 [d5,f#5] ~ [e5,g5] ~ [f#5,a5] [b4,d5] ~@2 [d5,f#5] ~ [e5,g5] ~ [d5,f#5] ~", // D Em F#m Bm D Em D
  E: "~@2 [e5,g5] ~ [f#5,a5] ~ [b4,d5] [c#5,e5] ~@2 [e5,g5] ~ [f#5,a5] ~ [c#5,e5] ~", // Em F#m Bm C#m Em F#m C#m
})).s("gm_flute").gain(0.22).pan(0.2)

// other · distortion guitar
const distortion_guitar = note("<~@44 A ~ A ~ A ~@35 B ~ C ~@27 D ~@2>".pickRestart({
  A: "a2!2 a2@2 ~@12", B: "a2!2 a2@2 ~ a2!2 a2@2 ~@7", C: "~@5 a2!2 a2@2 ~@7", D: "~@5 d3@3 ~@8",
})).s("gm_distortion_guitar").gain(0.49).pan(0.4)

// chords · overdriven guitar
const overdriven_guitar = note("<~@44 A B A C A B D ~@33 A B A C A B D ~@26>".pickRestart({
  A: "[e4,a4] e4!2 [e4,a4] ~ [e4,a4] ~ e4 [e4,a4] e4 ~ [e4,a4] ~ e4!2 ~", // A5
  B: "[d4,a4] d4!2 [d4,a4] ~ [d4,a4] ~ d4 [d4,a4] d4 ~ [d4,a4] ~ d4!2 ~", // D5
  C: "[d4,a4] d4!3 ~ [d4,a4] ~ d4 [d4,a4] d4!2 [d4,a4] ~ d4 [d4,a4] ~", D: "[d4,a4] ~@15",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.8)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~@44 A B A C A B ~@34 A B A C A B ~@27>".pickRestart({
  A: "~@6 e4 ~@3 e4 ~@3 a4 e4", B: "~@6 d4 ~@3 d4 ~@3 a4 d4", C: "~@15 d4",
})).s("gm_overdriven_guitar").gain(0.14).pan(0.8)

// other · electric guitar muted
const electric_guitar_muted_2 = note("<A B@43 C ~@5 D B@33 C ~@5 D B@25 C>".pickRestart({
  A: "~@4 a3 ~ [a3,b3] ~ b3 ~ [f#3,b3] ~ f#3 a3 f#3 a3", // Asus2 B5
  B: "d4 [a3,d4] d4!2 [a3,d4] d4 [a3,b3] ~ b3 ~ [f#3,b3] ~ f#3 a3 f#3 a3", C: "d4 [a3,d4] d4!2 ~@12",
  D: "~@2 d4!2 [a3,d4] d4 [a3,b3] ~ b3 ~ [f#3,b3] ~ f#3 a3 f#3 a3", // D5 Asus2 B5
})).s("gm_electric_guitar_muted").gain(0.12)

// other · alto sax
const alto_sax = note("<~@97 A B C D@2 ~@15>".pickRestart({
  A: "~@7 f#4", B: "g4 d5!2 d5@4 g4", C: "a4 d5!2 d5@4 a4",
  D: "[b4@2 d5@2 d5@2 d5@4 f#5@4 f#5@4 g5 f#5 e5@12, ~@10 f5 ~@3 f5 ~@17]/2",
})).s("gm_alto_sax").gain(0.5)

// drums · kick
const kick = s("bd").struct("<A@30 B@14 C@6 A@20 B@14 C@6 A@8 B@17 A D>".pickRestart({
  A: "x ~ x ~@3 x!2 ~@8", B: "x ~ x ~@3 x!2 ~@2 x ~@5", C: "x ~ x ~@4 x ~@2 x ~@5", D: "x",
})).gain(0.58)

// drums · snare
const snare = s("sd").struct("<A@29 B A@13 C D@6 A@19 B A@13 C D@6 A@11 C A@13 B ~>".pickRestart({
  A: "~@4 x ~@2 x ~ x ~@2 x ~@2 x", B: "~@4 x ~@2 x!9", C: "~@4 x ~@2 x ~ x ~@2 x!4", D: "~ x ~ x",
})).gain(0.52)

// drums · low tom
const low_tom = s("lt").struct("<[~@5 x ~@2]!97 ~ [~@5 x ~@2]!18 ~>").gain(0.45)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<[~@9 x ~@6]!97 ~ [~@9 x ~@6]!18 ~>").gain(0.26)

// drums · hihat
const hihat = s("hh").struct(`<
  A@30 B@6 C B@3 C B@3 C B C B@3 A@20 B@6 C B@3 C B@3 C B C B@3 A@7 D C B@9 C B@3 C B@2 A ~
>`.pickRestart({
  A: "x!2 ~@2 x ~@3 x ~@3 x ~@3", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", C: "~ x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
  D: "x!2 ~@2 x ~@7 x ~@3",
})).gain(0.39)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x ~ x ~ x]!116 ~>").gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@36 A ~@3 A ~@3 A ~ A ~@29 A ~@3 A ~@3 A ~ A ~@10 B A ~@9 A ~@3 A ~@3 A>".pickRestart({
  A: "x", B: "~ x",
})).gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<[x!16]!84 ~@6 [x!16]!26 x>").gain(0.26)

// drums · congas
const congas = s("conga:13").struct("<[~@3 x]!44 ~@6 [~@3 x]!34 ~@6 [~@3 x]!26 ~>").gain(1.86)

// drums · triangle
const triangle = s("triangles:35").struct("<~@4 [x!8]!40 ~@8 [x!8]!32 ~@14 [x!8]!18 ~>").gain(2.25)

// drums · triangle · soft notes
const triangle_soft = s("triangles:35").struct(`<
  ~@4
  [~@3 x ~ x ~@5 x ~ x ~@2]!40
  ~@8
  [~@3 x ~ x ~@5 x ~ x ~@2]!32
  ~@14
  [~@3 x ~ x ~@5 x ~ x ~@2]!18
  ~
>`).gain(1.12)

stack(
  epiano1, bass, electric_guitar_muted, brass_section, pad_warm, string_ensemble_2, synth_drum, flute,
  distortion_guitar, overdriven_guitar, overdriven_guitar_soft, electric_guitar_muted_2, alto_sax, kick, snare, low_tom,
  low_tom_soft, hihat, open_hat, crash, tambourine, congas, triangle, triangle_soft
)

More by Antonello Venditti