Strudelify
Senza Una Donna cover art

1987 · Blue's

Senza Una Donna

Zucchero

KeyC majorTempo80 bpm
0:00/0:00
// Senza Una Donna — Zucchero
// 80 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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.

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@4 A B C D A B C D E F G F E F G F H I H J K I H L A B C D A B C D E F G F E F G F H I H J K I H M N A B C D A B C D
  E F G F E F G F H I H J K I M O H I H J K I P Q ~
>`.pickRestart({
  A: "a1@3 a1 g1@3 g1", B: "f#1@3 f#1 e1@3 e1", C: "d1@3 d1 d2@4", D: "d1@3 d1 d2@3 d1", E: "a1@3 a1 a1@4",
  F: "g1@3 g1 g1@4", G: "f1@3 f1 f1@4", H: "c2@3 c2 b1@3 b1", I: "a1@3 a1 g1@4", J: "f1@3 f1 g1@3 g1",
  K: "c2@2 c2!2 b1@3 b1", L: "f1@3 f1 g1@2 g#1@2", M: "f1@3 f1 e1@3 e1", N: "g1@3 g1 g1@2 g#1@2", O: "g1@3 g1 g1@3 g1",
  P: "f2@2 e2 d2", Q: "c2 ~@15",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · pad warm · "PAD"
const pad_warm = note("<~@4 A@8 B@8 ~@8 A@8 B@8 ~@9 A@8 B@8 ~@14 C@3>".pickRestart({
  A: "[[a3,c4]@8 [g3,b3]@8 [f#3,a3]@8 [e3,g3]@8 ~@8 e4@8 d4@7 ~ e4@8, e4@23 ~ d4@16 ~@24, ~ [f#3,a3]]/4", // Am G F#m Em F#m
  B: "[[a2,a3,c4] [g2,g3,b3] [f2,f3,a3] [g2,g3,b3] [a2,a3,c4] [g2,g3,b3] [f2,f3,a3] [g2,g3,b3], e4]/8", // Am G F G Am G F G
  C: "[[f2,f3,a3]@7 ~ [e2,e3,g3]@4 [d2,d3,f3]@4 [c2,c3,e3]@18 ~@14, c4@17 ~@7, ~@16 f3 ~@31]/3", // F Em Dm C
})).s("gm_pad_warm").gain(0.35)

// chords · synth strings 1 · "STRINGS"
const synth_strings_1 = note(`<
  A@4 B@8 C@8 D E@2 F@2 G H I B@8 J@8 D E@2 F@2 G H K@2 B@8 J@8 D E@2 F@2 G L@2 D E@2 F@2 G M@3
>`.pickRestart({
  A: "[a2,e3,a3,c4]/4", // Am
  B: "[[a3,c4]@8 [g3,b3]@8 [f#3,a3]@8 [e3,g3]@8 ~@8 e4@8 d4@7 ~ e4@8, e4@23 ~ d4@16 ~@24, ~ [f#3,a3]]/4", // Am G F#m Em F#m
  C: "[[a3,c4]@15 ~ [g3,b3]@15 ~ [f3,a3]@16 [g3,b3]@16 [a3,c4]@15 ~ [g3,b3]@16 [f3,a3]@15 ~ [g3,b3]@16, e4]/8", // Am G F G Am G F G
  D: "[c4,e4]@7 ~ [b3,d4]@8, g4", E: "[[a3,c4,f4]@8 [b3,d4]@7 ~ [c4,e4]@8 [b3,d4]@8, ~ g4@3]/2",
  F: "[[a3,c4,f4]@8 [b3,d4]@7 ~ [c4,e4]@8 [b3,d4]@8, ~@8 g4@23 ~]/2", G: "[a3,c4,f4] [b3,d4,g4]",
  H: "[c4,e4]@7 ~ [b3,d4]@8, g4@15 ~", I: "[f3,a3,c4]@2 [g3,b3,d4] [g#3,b3,d4]",
  J: "[[a2,a3,c4] [g2,g3,b3] [f2,f3,a3] [g2,g3,b3] [a2,a3,c4] [g2,g3,b3] [f2,f3,a3] [g2,g3,b3], e4]/8", // Am G F G Am G F G
  K: "[[f2,f3,a3]@2 [e2,e3]@2 [g2,b3]@3 [g#2,g#3,b3], c4@15 ~ d4@16, ~@8 g3@19 ~@5]/2", // F E G G#m
  L: "[[f2,f3,a3] [e2,e3] [g2,b3,d4]@2, c4@15 ~@17, ~ g3@3]/2", // F E G
  M: "[[f2,f3,a3]@7 ~ [e2,e3,g3]@4 [d2,d3,f3]@4 [c2,c3,e3]@18 ~@14, c4@17 ~@7, ~@16 f3 ~@31]/3", // F Em Dm C
})).s("gm_synth_strings_1").gain(0.19)

// chords · acoustic guitar nylon · "AC GUIT 1"
const acoustic_guitar_nylon = note(`<
  ~ A@2 ~@9 B C D E F C G H ~@16 B C D E F C G H ~@9 I J K@2 L@2 M N B C D E F C G H ~@17
>`.pickRestart({
  A: "[~@15 a4@3 c5 a4@12 ~]/2", B: "[a3,c4,e4]@7 ~", C: "[g3,b3,e4]@13 ~@3", D: "[f3,a3,c4]@11 ~@5",
  E: "[g3,b3,e4]@3 ~", F: "[a3,c4,e4]@13 ~@3", G: "[f3,a3,c4]@3 ~", H: "[g3,b3,e4]", I: "~@4 e4!2 a4 ~ a4@5 ~ a4 e4",
  J: "a4@6 e4 ~ e4 g4 d4@3 c4 d4 c4", K: "[d4@2 c4 a3 c4 d4 a3@12 ~ g3 a3 b3 c4 d4 e4 f4 g4 a4 b4 c5 e5 c5]/2",
  L: "[e5@6 e5 c5 ~@8 c5@3 a4 g4 a4 ~@2 c5 a4 g4 a4@4 ~, ~@8 e5@11 ~@13]/2", M: "~@4 [g4,d5]@2 d5 ~@9",
  N: "d5 [b4,c5] [a4,c5] [a4,b4] [g4,b4] [g4,a4] [f#4,a4] [f#4,g4] d4@4 ~@4, ~@8 e4 ~@7", // Cmaj7 Am Asus2 G Gsus2 F#m Gmaj7
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// other · electric guitar muted · "MUTED GUI"
const electric_guitar_muted = note(`<
  ~@4 A B C@2 A B C@2 ~@8 D E F@5 G A B C@2 A B C@2 ~@8 D E F@5 G ~@17 D E F@5 G D E F@5 ~@2
>`.pickRestart({
  A: "a3@2 ~ a3 ~@2 a3 ~@3 e3!2 g3!2 e3 ~", B: "a3 ~@2 a3 ~@2 a3 ~@3 e3!2 g3!2 e3 ~",
  C: "d3 ~@2 d3 ~@2 d3 ~@4 d3 d4!2 d3 ~", D: "c4!2 ~@4 a3 g3 c4!2 ~ c4 ~ c4 a3 g3",
  E: "c4!2 ~@5 c4 ~ c4 a3 g3 c4!2 a3 g3", F: "c4!2 ~@4 c4!2 ~ c4 a3 g3 c4!2 a3 g3", G: "c4!2 ~@4 c4!2 ~ c4 a3 g3 ~@4",
})).s("gm_electric_guitar_muted").gain(0.4)

// other · woodblock
const woodblock = note("<~@4 [~@5 d6 ~@7 d6 ~@2]!80 ~@2>").s("gm_woodblock").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@3 A B@23 C B@24 C B@15 C B@15 D ~>".pickRestart({
  A: "~@11 x ~@4", B: "x ~@2 x!2 ~@3", C: "x ~@5 x ~ x ~@2 x ~@4", D: "x",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct("<~@3 [~@3 x] [~ x ~ x]!80 ~@2>").gain(0.6)

// drums · hihat
const hihat = s("hh").struct("<~@4 [x!16]!80 ~@2>").gain(0.42)

// drums · low tom
const low_tom = s("lt").struct("<~@76 [~@7 x] ~@9>").gain(0.6)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@3 B ~@3 B ~@3 C ~@3 C ~@3 D ~@7 C ~@3 E ~@3 C ~@3 B ~@3 F ~@12 E ~@7 D ~@7 G ~@3 F ~@5
>`.pickRestart({
  A: "~@3 x", B: "~@13 x ~@2", C: "~@10 x ~@2 x ~@2", D: "~@13 x ~ x", E: "~@7 x", F: "~@11 x!2 ~ x ~",
  G: "~@8 x ~@2 x!2 ~@3",
})).gain(0.6)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@11 A ~@11 A ~@11 B ~@3 A ~@3 A ~@16 C ~@3 D ~@3 E ~@3 D ~@3 F ~@3 D ~@5
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x!2 ~@3 x ~@3", C: "~@7 x", D: "~@11 x!2 ~@3", E: "~@10 x ~@2 x ~@2", F: "~@2 x ~@2 x ~@10",
})).gain(0.6)

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

// drums · congas
const congas = s("conga:13").struct("<~@4 [~ x ~ x]!78 ~@4>").gain(1.92)

// drums · congas
const congas_2 = s("conga:18").struct("<~@4 [~ x ~@3 x ~@2]!78 ~@4>").gain(1.92)

stack(
  bass, pad_warm, synth_strings_1, acoustic_guitar_nylon, electric_guitar_muted, woodblock, kick, snare, hihat, low_tom,
  mid_tom, high_tom, splash, congas, congas_2
)

More by Zucchero