Strudelify
Bella senz'anima cover art

1974 · Anima

Bella senz'anima

Riccardo Cocciante

KeyE minorTempo120 bpm
0:00/0:00
// Bella senz'anima — Riccardo Cocciante
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 112 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · slap bass 2 · "SLAPBASS"
const bass = note(`<
  A B A B A B A B A B A B A B A B C D E F G H I J K L M L M L M L M L M L M L M L N O P Q R O P Q S D E F G H T U V W X
  D E F G H I J K L M L M L M L M L M L M L M L N O P Q R O P Q S D E F G H T U V W X D E F G H T U V W X Y
>`.pickRestart({
  A: "~ e2@2 ~@7 e2 ~@2 e2 ~@10", B: "~ g2@2 ~@7 g2 ~@2 a2@2 ~@9", C: "~ a2 ~@2 a2 ~@2 b2@4 ~@2 c3@5 ~@4 c3@2",
  D: "~ d3@4 ~@5 d3@3 e3@4 ~@5 e3@2", E: "~ e2@6 d2@5 ~ [c2,c3]@4 ~@5 c3@2", F: "~ d3@3 ~@6 d3@2 ~ g2@6 ~@3 g2@2",
  G: "~@4 g3@3 f#3@3 d3@3 c3@5 ~@4 c3@2", H: "~ d3@4 ~@5 d3@3 e3@6 ~@3 e3@2", I: "~ e2@6 d2@5 ~ c2@5 ~@4 c3@2",
  J: "~ d3@6 ~@3 d3@3 g2@6 ~@3 g2@2", K: "~ f#2@6 ~@6 e2 ~@8 e2 ~", L: "~ e2 ~@11 g2@2 ~@7 g2 ~",
  M: "~ a2@2 ~@10 e2@2 ~@7 e2 ~", N: "~ a2@2 ~@10 c3@4 ~@5 c3 ~", O: "~ c3@3 ~@9 b2@4 ~@5 b2@2",
  P: "~ b2 ~@2 b2@2 ~@7 a2@4 ~@5 a2@2", Q: "~ a2@3 ~@9 b2@4 ~@5 b2 ~", R: "~ b2 ~@2 b2@3 ~@6 c3@4 ~@5 c3 ~",
  S: "~ b2 ~@2 b2@2 ~ d3@3 b2 ~@2 c3@5 ~@4 c3@2", T: "~ e2@6 d2@5 ~ c3@5 ~@4 c3 ~", U: "~ c3@4 ~@5 b2@10 ~@2 b2 ~",
  V: "~ b2@7 ~@2 b2 ~@2 a2@5 ~@4 a2 ~", W: "~ a2@4 ~@5 b2@10 ~@2 b2 ~", X: "~ b2 b3 ~ b2 ~@2 b2@3 ~@3 c3@5 ~@4 c3@2",
  Y: "~ d3@4 ~@2 d3@3 e3@3 ~@11",
})).s("gm_slap_bass_2").gain(0.8)

// bass · slap bass 2 · "SLAPBASS" · soft notes
const bass_soft = note(`<
  A B A B A B A B A B A B A B A B ~@2 C ~ D ~ E ~ F G H G H G H G H G H G H G H G I ~@9 C ~ D ~ C ~@5 C ~ D ~ E ~ F G H
  G H G H G H G H G H G H G I ~@9 C ~ D ~ C ~@5 C ~ D ~ C ~@5
>`.pickRestart({
  A: "~ e3 ~@8 e3 ~@2 e3 ~@10", B: "~ g3 ~@8 g3 ~@2 a3 ~@10", C: "~@7 d3@3 ~@14", D: "~ g3 ~@22",
  E: "~@7 d3@3 ~@3 c3@3 ~@8", F: "~@7 f#2@3 ~@3 e3 ~@8 e3 ~", G: "~ e3 ~@11 g3 ~@8 g3 ~", H: "~ a3 ~@11 e3 ~@8 e3 ~",
  I: "~ a3 ~@22",
})).s("gm_slap_bass_2").gain(0.4)

// chords · orchestral harp · "HARP/A.GTR"
const orchestral_harp = note(`<
  A B C@2 D E F@2 G H I J K L M N ~@8 O P Q R S T U R V W X Y Z AA AB AC AD AE@2 AF AG AE@2 AF AH ~@17 O P Q R S T U R
  AI P Q R S T U R AJ AE@2 AF AG AE@2 AF AH ~@21
>`.pickRestart({
  A: "~ e4 ~@5 [e4,a4,b4] ~@2 e4 ~@5 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~", // Esus4 Em Esus2
  B: "~ e4 ~@2 e4 ~@2 [e4,b4] ~@2 e4 ~@2 e4 ~@2 [e4,a4,b4] ~@2 e4 ~@2 [e4,b4] ~", // E5 Esus4 E5
  C: "[~ e4 ~@5 [e4,a4,b4] ~@2 e4 ~@2 e4 ~@2 [e4,g4,b4] ~@5 [d4,g4,b4]@6 e4 ~@2 [d4,e4,g4,b4] ~@5 [c#4,e4,a4] ~@2 [c#4,e4,a4]@3 e4 ~@2 e4@2, ~@22 e4 ~@25]/2", // Esus4 Em G Em7 A
  D: "~ e4 ~@2 e4 ~@2 [e4,a4,b4] ~@2 e4 ~@2 e4 ~@2 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~", // Esus4 Em Esus2
  E: "~ e4 ~@5 [e4,b4]@2 ~ e4 ~@2 e4 ~@2 [e4,a4,b4] ~@5 e4@2, ~@22 b4 ~", // E5 Esus4
  F: "[~ e4 ~@2 e4 ~@2 [e4,a4,b4] ~@5 e4 ~@2 [e4,g4,b4] ~@5 [d4,g4,b4]@6 e4 ~@2 [d4,e4,g4,b4] ~@5 [c#4,e4,a4] ~@2 [c#4,e4,a4]@4 ~@2 e4 ~, ~@22 e4 ~@25]/2", // Esus4 Em G Em7 A
  G: "~ e4 ~@5 [a4,b4]@2 ~@7 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~, ~@7 e4 ~@16", // Asus2 Em Esus2
  H: "~ e4 ~@5 [e4,b4] ~@8 [e4,a4,b4] ~@2 e4 ~@2 [e4,b4] ~", // E5 Esus4 E5
  I: "~ e4 ~@5 [e4,b4] ~@2 e4 ~@2 e4 ~@2 [e4,g4,b4] ~@5 [e4,f#4,b4] ~, ~@7 a4@2 ~@15", // E5 Em Esus2
  J: "~@4 e4 ~@2 [e4,b4] ~@5 e4 ~@2 [a4,b4] ~@2 e4 ~@2 e4@2, ~@16 e4@2 ~@4 b4 ~", // E5 Asus2
  K: "~ e4 ~@2 e4 ~@2 [e4,a4,b4] ~@5 e4 ~@2 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~", // Esus4 Em Esus2
  L: "~ e4 ~@5 [e4,b4] ~@5 e4 ~@2 [e4,a4,b4] ~@5 e4@2, ~@22 b4 ~", // E5 Esus4
  M: "~ e4 ~@5 [e4,a4,b4] ~@8 [g4,b4] ~@5 [f#4,b4] ~, ~@8 e4 ~@2 e4", // Esus4 G B5
  N: "~@4 e4 ~@2 e4@2 ~@4 e4 ~@2 [a4,b4] ~@5 e4@2, ~@7 b4 ~@8 e4@2 ~@4 b4 ~", O: "~@13 e4 ~@5 [e4,a4,b4] ~@2 e4 ~",
  P: "~@4 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~@2 e4 ~@2 e4 ~@2 [e4,b4] ~@2 e4 ~", // Em Esus2 E5
  Q: "~ e4 ~@2 [e4,a4,b4] ~@2 e4 ~@2 e4@2 ~ e4 ~@5 [e4,a4,b4] ~@2 e4 ~, ~@10 b4 ~@13", // Esus4
  R: "~ e4 ~@2 [e4,g4,b4] ~@5 [d4,g4,b4]@6 e4 ~@2 [d4,e4,g4,b4] ~@4, ~@10 e4 ~@13", // Em G Em7
  S: "~ [c#4,e4,a4] ~@2 [c#4,e4,a4]@3 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2 [e4,a4,b4] ~@2 e4 ~", // A Esus4
  T: "~ e4 ~@2 [e4,g4,b4] ~@2 e4 ~@2 [e4,b4] ~@2 e4 ~@5 [e4,b4]@2 ~ e4 ~, ~@5 f#4 ~@6", // Em E5
  U: "~ e4 ~@2 [e4,a4,b4] ~@5 [e4,b4]@2 ~ e4 ~@2 e4 ~@2 [a4,b4]@2 ~@3, ~@19 e4 ~@4", // Esus4 E5 Asus2
  V: "~ [c#4,e4,a4] ~@2 [c#4,e4,a4]@4 ~@2 e4 ~@2 e4 ~@5 [e4,a4,b4] ~@4", // A Esus4
  W: "~@4 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~@2 e4 ~@5 [e4,b4] ~@4", // Em Esus2 E5
  X: "~@4 [e4,a4,b4] ~@2 e4 ~@2 [e4,b4] ~@2 e4 ~@5 [e4,a4,b4] ~@2 e4 ~", // Esus4 E5 Esus4
  Y: "~ e4 ~@2 [e4,g4,b4] ~@5 [e4,f#4,b4] ~@5 e4 ~@2 [e4,b4] ~@4", // Em Esus2 E5
  Z: "~ e4 ~@2 [a4,b4] ~@2 e4 ~@2 [e4,b4] ~@2 e4 ~@2 e4 ~@2 [e4,a4,b4] ~@4, ~@2 e4 ~@9", // Asus2 E5 Esus4
  AA: "~ e4 ~@2 [e4,g4,b4] ~@2 e4 ~@2 [e4,f#4,b4] ~@2 e4 ~@5 [e4,b4] ~@4", // Em Esus2 E5
  AB: "~ e4 ~@2 [e4,a4,b4] ~@5 [e4,b4] ~@2 e4 ~@5 [e4,a4] ~@4, ~@19 b4@2 ~@3", // Esus4 E5 A5
  AC: "~@4 [g4,b4] ~@5 [e4,f#4,b4] ~@5 e4 ~@2 e4@2 ~@3, ~@4 e4@2 ~@13 b4 ~@4", // G Esus2
  AD: "~ e4 ~@2 [e4,a4,b4] ~@5 e4@2 ~@7 e4 ~@4, ~@10 b4 ~@13", AE: "~@4 e4 ~@5 e4 ~@8 e4 ~@4", AF: "~@4 e4 ~@14 e4 ~@4",
  AG: "~ e4 ~@2 e4 ~@14 e4 ~@4", AH: "~ e4 ~@2 e4 ~@19",
  AI: "~ [c#4,e4,a4] ~@2 [c#4,e4,a4]@4 ~@2 e4 ~@2 e4 ~@5 [a4,b4]@2 ~ e4 ~, ~@19 e4 ~@4", // A Asus2
  AJ: "~ [c#4,e4,a4] ~@2 [c#4,e4,a4]@4 ~@2 e4 ~@8 e4 ~@4", // A
})).s("gm_orchestral_harp").gain(0.54)

// chords · orchestral harp · "HARP/A.GTR" · soft notes
const orchestral_harp_soft = note(`<
  A ~ B C ~ B D E F@2 B C G H I E ~@8 J K J L ~ J M L N O P L Q R N S T U@2 V W U@2 V X ~@17 J K J L ~ J M L Y K J L ~ J
  M L T U@2 V W U@2 V X ~@21
>`.pickRestart({
  A: "~@4 e4 ~@8 e4 ~@10", B: "~@4 e4 ~@14 e4 ~@4", C: "~ e4 ~@8 e4 ~@13", D: "~@10 e4 ~@8 e4 ~@4",
  E: "~ e4 ~@8 e4 ~@8 e4 ~@4", F: "~@4 e4 ~@5 e4 ~@2 e4 ~@10", G: "~@10 e4 ~@13", H: "~@4 e4 ~@5 e4 ~@8 e4 ~@4",
  I: "~@4 e4 ~@5 e4 ~@2 e4 ~@5 e4 ~@4", J: "~@16 e4 ~@7", K: "~ e4 ~@22", L: "~@7 e4 ~@5 e4 ~@8 e4 ~",
  M: "~@7 e4 ~@14 e4 ~", N: "~@7 e4 ~@8 e4 ~@5 e4 ~", O: "~ e4 ~@14 e4 ~@5 e4 ~", P: "~ e4 ~@14 e4 ~@7", Q: "~@22 e4 ~",
  R: "~@16 e4 ~@5 e4 ~", S: "~ e4 ~@5 e4 ~@5 e4 ~@8 e4 ~", T: "~@7 e4 ~@5 e4 ~@2 e4 ~@5 e4 ~",
  U: "~ e4 ~@5 e4 ~@5 e4 ~@2 e4 ~@5 e4 ~", V: "~ e4 ~@5 e4 ~@2 e4 ~@5 e4 ~@7",
  W: "~@7 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@5 e4 ~", X: "~@7 e4 ~@2 e4 ~@13", Y: "~@7 e4 ~@8 e4 ~@7",
})).s("gm_orchestral_harp").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  A@16 B C D C E C D C E B@17 F B F B F B@2 C D C E C D G E G E C D C E C D C E B@17 F B F B F B@2 C D C E C D G E G E C
  D C E C D G E G E H
>`.pickRestart({
  A: "~ x ~@8 x ~@2 x ~@10", B: "~ x ~@11 x ~@8 x ~", C: "~ x ~@8 x ~@2 x ~@8 x ~", D: "~ x ~@2 x ~@5 x ~@2 x ~@8 x ~",
  E: "~ x ~@3 x ~@4 x ~@2 x ~@8 x ~", F: "~ x ~@2 x ~@8 x ~@8 x ~", G: "~ x ~@8 x ~@11 x ~", H: "~ x ~@5 x ~@2 x ~@13",
})).gain(0.8)

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

// drums · low tom
const low_tom = s("lt").struct("<~@111 [~ x ~@22]>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct(`<
  A@3 B A@3 B A@3 B A@3 B C A@3 D A@3 D A@3 D A@3 D A@3 D A@3 D A@3 D A@3 D A@3 D A@3 D A D A@3 D A@3 D A@3 D A@3 D A@3
  D A@3 D A@3 D A@3 D A@3 D A@3 D A D A@3 D A@3 D A D E
>`.pickRestart({
  A: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", B: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@4",
  C: "~@13 x ~@2 x ~@2 x ~@2 x ~", D: "~ x ~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~", E: "~ x ~@5 x ~@2 x ~@13",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@111 x>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A ~@3 B ~@3 A ~@3 B ~@4 C ~@3 D ~@3 C ~@3 D ~@3 C ~@3 D ~@3 C ~@3 D ~@3 C ~@3 D ~ D ~@3 C ~@3 D ~@3 C ~@3 D ~@3 C
  ~@3 D ~@3 C ~@3 D ~@3 C ~@3 D ~ D ~@3 C ~@3 D ~ D ~
>`.pickRestart({
  A: "~@11 x", B: "~@8 x ~@2 x", C: "~@5 x ~@6", D: "~@2 x ~@2 x ~@6",
})).gain(0.4)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct(`<
  ~@3 A ~@7 A ~@8 B ~@7 B ~@7 B ~@7 B ~@7 B ~@9 B ~@7 B ~@7 B ~@7 B ~@7 B ~@9 B ~@7
>`.pickRestart({
  A: "~@2 x", B: "~ x ~@4",
})).gain(0.24)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~ A ~ A ~@3 A ~ A ~ A ~@3 A ~@2 B ~ B ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~@3 B ~ B ~@3 B ~
  B ~ B ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~@3 B ~@3 B ~ B ~@3 B ~ C ~
>`.pickRestart({
  A: "~@19 x ~@4", B: "~@7 x ~@16", C: "~@23 x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct("<~@8 [~ x ~@22] ~@23 [~@13 x ~@10] ~@79>").gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  ~@16 A ~@3 A ~@19 A ~@7 A ~@3 A ~@5 A ~@3 A ~@19 A ~@7 A ~@3 A ~@5 A ~@3 A ~@5 A B
>`.pickRestart({
  A: "~@13 x ~@10", B: "~@7 x ~@2 x ~@13",
})).gain(0.48)

stack(
  bass, bass_soft, orchestral_harp, orchestral_harp_soft, kick, snare, low_tom, hihat, mid_tom, open_hat, open_hat_soft,
  high_tom, crash, ride
)

More by Riccardo Cocciante