Strudelify
Se io, se lei cover art

BIAGIO

Se io, se lei

Biagio Antonacci

KeyA majorTempo70 bpm
0:00/0:00
// Se io, se lei — Biagio Antonacci
// 70 bpm, 4/4, key A 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 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 · "PIANO 1"
const piano = note(`<
  A@5 B@2 C D@3 C E@2 F B@2 C D@3 C E@2 G H I J@2 K L M@2 N I J@2 K O@4 C D@3 C E@2 P C E@2 H I J@2 K L M@2 N I J@2 K
  Q@3 R@2 S T U@2 V W R@2 S X@5
>`.pickRestart({
  A: "[~@12 [f#4,f#5]@2 ~@14 [f#4,f#5]@2 ~@13 [d4,d5] [f#4,f#5]@2 ~@14 [f#4,f#5]@2 ~@2 [g1,g2]@13 ~@3, ~@7 [e4,e5]@7 ~ [e4,e5]@7 ~ [e4,e5]@6 [b3,b4]@2 [e4,e5]@9, ~ [e1,e2] [a1,a2] [b1,b2] ~]/5", // F# D F# G E B E A …
  B: "[~@8 a3@2 ~ d5@5, ~@15 [e4,a4]@17, ~ [b2,f#3], ~@8 d4@3 d4@4 ~, ~@20 a3@9 ~@3]/2", // A5 B5
  C: "a3 ~@5 a4@9 a4, [g2,d3,g3,e4], a4@3 ~@5, d4 d4@3, ~ a3@6 ~", // Em7
  D: "[a3 ~@11 d4@2 ~@2 a3@2 ~@6 e4@7 ~ a3@4 ~@2 d5@10, [d2,a2,d3,e4] [a2,e3] [b2,f#3], a4@6 a4@14 d4@11 [e4,a4]@17, d4@4 d4@8 ~@4 e4@6 [a4,e5]@9 ~@5 a3@9 ~@3, ~@2 a3@9 ~@5 d4@2 a3@13 ~ d4@6 d4@8 ~@2]/3", // Dsus2 A5 B5 A5
  E: "[a3 ~@11 d4@2 ~@2 a3@2 ~@6 e4@7 ~, [d2,a2,d3,e4] [a2,e3], a4@6 a4@14 d4@11 ~, d4@4 d4@8 ~@4 e4@6 [a4,e5]@9 ~, ~@2 a3@9 ~@5 d4@2 a3@13 ~]/2", // Dsus2 A5
  F: "~ g4@2 ~@5", G: "[c#3,f#4,g#4]@9 ~@7",
  H: "~@3 c#4!2 ~ [f#2,f#3,c#4,f#4,a#4,c#5]@2, ~@6 g4@5 c#3@5, ~@2 f#4 ~, ~@5 c#4 ~@2", // F#
  I: "[e2,b3]@5 g3 ~@6 e3@2 ~ e3, g4, e3@3 ~, ~@3 [e2,b3,d4]@5, ~@3 g3@4 g3", // E5 E7
  J: "[[e3,a3]@3 ~@2 a3 a3@5 ~@5 [d3,a3]@3 ~@2 a2 [d2,e4,f#4,a4,d5]@5 a3 a3@2 ~ f#3, [a2,d4,e4,a4]@3 [a2,c#4,a4]@4 e4 ~@2 d3@4 [c#3,c#4,e4,a4]@2, ~@3 a3@2 ~ e4@7 d4@2 a4@7 ~@10, ~@4 e3@7 a3@5 ~@3 a3@3 ~@8 a3@2, ~@6 e3@2 [d2,d4,f#4]@3 ~@5]/2", // A5 D5 D Asus4 A D
  K: "[b2,d4,f#4,a4]@6 [b2,b3,d4,f#4,a4,d5]@6 [a2,d4,f#4,a4]@3 b2, a3@11 ~ a3@2 ~@2", // Bm7 D
  L: "[e3,b3]@3 ~@2 b2 ~@6 e3@2 [d4,g4]@2, [e2,d4,e4,g4]@3 [e2,e4,b4,d5]@5, ~@3 b3@3 g4@8 ~@2, ~ e3@2 ~", // E5 G5 Em7 E7
  M: "[a3@3 ~@13 d3@3 ~@2 a2 a3@4 ~ d3 a3@2 a3@2, [a2,c#4,e4,g4]@5 e3@8 c#4 e4@2 ~@4 d3@7 ~ [c#3,c#4,e4,a4]@4, ~@3 b3@3 [c#4,e4]@6 a3@3 a4@13 ~@4, ~@4 a3@7 b3@5 a3@2 ~ a3@3 ~@4 a3@2 ~@4, ~@3 [a2,a4]@5 [d2,d4,f#4]@3 [d2,d4,e4]@3 ~@2]/2", // A7 A C#m A D Dsus2
  N: "a3@3 ~@2 a3 a3@4 ~ e3 a3@2 a3@2, [b2,d4,f#4,a4]@3 [b2,d4,f#4,a4]@3 [a2,d4,e4,a4]@2, ~@3 a3@2 ~@5 a3@2 ~@4, ~ f#3@2 ~", // Bm7 Asus4
  O: "[[e3,b3]@3 ~@2 b2 ~@6 e3@2 g4@2 [a2,a3,e4,g4]@31 ~ a3@4 ~@2 d5@10, [e2,d4,e4,g4]@6 [e2,b4,d5]@32 ~@14 a3@9 ~@3, ~@3 b3@3 e4@10 ~@31 [e4,a4]@17, ~ e3@2 ~@9 [b2,f#3]@4, ~@3 g4@4 d4@16 ~ d4@3 d4@4 ~]/4", // E5 A7 Em7 E7 A5 B5
  P: "~@3 d5@5, ~@4 a3@9 ~@3, ~@3 d4@4 ~",
  Q: "[[e3,b3]@3 ~@2 b2 ~@6 e3@2 g4@2 ~@16 [f#2,c#4]@5 a3 ~@6 f#3@2 ~ f#3, [e2,d4,e4,g4]@3 [e2,b4,d5]@13 a4@8, ~@3 b3@3 e4@10 [a3,e4]@22 [f#2,c#4,e4]@10, ~ e3@2 ~ [a2,g4]@8, ~@3 g4@4 d4@9 f#3@3 a3@4 a3]/3", // E5 F#5 Em7 E7 A5 F#7 A7
  R: "[[f#3,b3]@3 ~@2 b3 b3@5 ~@5 [e3,b3]@3 ~@2 b2 [e2,f#4,g#4,b4,e5]@5 b3 b3@2 ~ g#3, [b2,e4,f#4,b4]@3 [b2,d#4,b4]@4 f#4 ~@2 e3@4 [d#3,d#4,f#4,b4]@2, ~@3 b3@2 ~ f#4@7 e4@2 b4@7 ~@10, ~@4 f#3@7 b3@5 ~@3 b3@3 ~@8 b3@2, ~@6 f#3@2 [e2,e4,g#4]@3 ~@5]/2", // B5 E5 E Bsus4 B E
  S: "[c#3,e4,g#4,b4]@6 [c#3,c#4,e4,g#4,b4,e5]@6 [b2,e4,g#4,b4]@3 c#3, b3@11 ~ b3@2 ~@2", // C#m7 E
  T: "[f#3,c#4]@3 ~@2 c#3 ~@6 f#3@2 [e4,a4]@2, [f#2,e4,f#4,a4]@3 [f#2,f#4,c#5,e5]@5, ~@3 c#4@3 a4@8 ~@2, ~ f#3@2 ~", // F#5 A5 F#m7 F#7
  U: "[b3@3 ~@13 e3@3 ~@2 b2 b3@4 ~ e3 b3@2 b3@2, [b2,d#4,f#4,a4]@5 f#3@8 d#4 f#4@2 ~@4 e3@7 ~ [d#3,d#4,f#4,b4]@4, ~@3 c#4@3 [d#4,f#4]@6 b3@3 b4@13 ~@4, ~@4 b3@7 c#4@5 b3@2 ~ b3@3 ~@4 b3@2 ~@4, ~@3 [b2,b4]@5 [e2,e4,g#4]@3 [e2,e4,f#4]@3 ~@2]/2", // B7 B D#m B E Esus2
  V: "b3@3 ~@2 b3 b3@4 ~ f#3 b3@2 b3@2, [c#3,e4,g#4,b4]@3 [c#3,e4,g#4,b4]@3 [b2,e4,f#4,b4]@2, ~@3 b3@2 ~@5 b3@2 ~@4, ~ g#3@2 ~", // C#m7 Bsus4
  W: "[f#2,c#4]@5 a3 ~@6 f#3@2 ~ f#3, a4, f#3@3 ~, ~@3 [f#2,c#4,e4]@5, ~@3 a3@4 a3", // F#5 F#7
  X: "[[f#3,c#4]@3 ~@2 c#3 ~@6 f#3@2 a4@2 b2@2 ~@4 [b3,e4,f#4,b4]@10 ~@13 b3@2 ~ g3@2 ~@13 g6@15 ~@2, [f#2,e4,f#4,a4]@6 [f#2,c#5,e5]@26 e2@15 e3@7 g4@7 g5 d6@16 ~@2, ~@3 c#4@3 f#4@10 a4@32 g4@4 c4@27 ~, ~@4 f#3@8 ~@4 [b3,f#4]@2 b2@14 [e3,a3,e4]@2 b2@14 [g2,d4]@31 ~, ~@6 a4@8 e4@6 f#3@12 b3@4 e3@2 [a3,e4]@10 c4@2 g3@29 ~]/5", // F#5 Bsus4 F#m7 F#7 B5 A5 G5 A5
})).s("gm_piano").gain(0.35)

// chords · piano · "PIANO 1" · soft notes
const piano_soft = note(`<
  ~@6 A B C ~ A B C ~ D@2 A B C ~ A B C ~ E ~@4 F G@2 ~ H ~@3 F I@3 A B C ~ A B C ~ A B C ~@5 F G@2 ~ H ~@3 F I@3 ~@2 J
  K@2 ~ L ~@3 J M@2 N ~@2
>`.pickRestart({
  A: "~@15 a4, ~@13 a3@3, ~@7 d4", B: "~@7 a3", C: "~@11 a3@2 ~ d4@2, ~@13 a3@3",
  D: "[f#4 ~@3 f#4@4, [f#2,a#2,c#3,f#3,a#3,c#4], ~ f#4!3 ~@4, ~@3 g4@2 g4@2 g4@9]/2", E: "[f#2,f#3,c#4,c#5] ~",
  F: "~@11 a3 ~@2 a3@2", G: "[~@15 e3@6 ~@11]/2", H: "~@15 c3", I: "[~@5 e3@11]/3", J: "~@11 b3 ~@2 b3@2",
  K: "[~@15 f#3@6 ~@11]/2", L: "~@15 d3", M: "[~@15 f#3@5 ~@12]/2", N: "~@12 e3@3 ~",
})).s("gm_piano").gain(0.21)

// bass · electric bass finger · "FINGERED"
const bass = note(`<
  ~ A B C D@2 ~@10 E F G H E F G I ~@2 J K L M N O P Q J K L M N R@2 E F G I E F G I E F G I ~ J K L M N O P Q J K L M N
  S@2 T U V W X Y Z AA AB U V W ~@4
>`.pickRestart({
  A: "e1@6 e1 ~@7 e1 g1", B: "a1@6 a1@8 f#1 a1", C: "b1 a1", D: "g1/2", E: "b1@6 b1 ~@9", F: "g1@6 g1@8 e1 g1",
  G: "d1@3 d1@5", H: "a1@6 a1 ~@4 a2@3 e2 d2", I: "a1@6 a1 ~@9", J: "e1@6 e1@9 g1", K: "a1@6 a1@8 g1 a1",
  L: "d1@6 d1@5 d1 c#1@4", M: "b1@3 b1@3 a1@2", N: "e1@6 e1@8 g1 e1", O: "a1@6 a1@8 e1 a1", P: "d1@6 d1@5 d1 c#1@3 c#1",
  Q: "b1@6 b0@6 d1 b0 d1 d#1", R: "a1/2", S: "[~@16 f#1@6 f#1@9 a1, a1@31 ~]/2", T: "b1@6 b1 ~@7 a1 b1",
  U: "e1@6 e1@5 e1 d#1@4", V: "c#2@3 c#2@3 b1@2", W: "f#1@6 f#1@8 a1 f#1", X: "b1@6 b1@8 f#1 b1",
  Y: "e1@6 e1@5 e1 d#1@3 d#1", Z: "c#2@6 c#1@6 e1 c#1 e1 f1", AA: "f#1@6 f#1@9 a1", AB: "b1@6 b1@8 a1 b1",
})).s("gm_electric_bass_finger").gain(0.43)

// chords · pad halo · "HALO PAD"
const pad_halo = note(`<
  ~@2 A B C@2 ~@4 D E F G ~@2 D E F G H E F G I@2 ~@13 J@2 D E F G H E F G H E F G K ~@13 J@2 ~@12 L M@3
>`.pickRestart({
  A: "[a3,c#4,e4,a4]", B: "[a3,d4,f#4,a4]@3 [a3,c#4,e4,a4]", C: "[b3,d4,g4]/2", D: "[b3,d4,f#4,a4]", E: "[b3,d4,g4]",
  F: "[a3,d4,f#4,a4]", G: "[a3,e4,a4], d4 ~", H: "[b3,d4,f#4], a4 ~@15",
  I: "[[c#4,e4] ~@27 f#5@4, a#3, ~@5 c#5@3, ~@3 e5]/2", J: "[[e3,a3,b3,c#4]@31 ~, e4@27 ~@5, a4@3 ~]/2",
  K: "[c#4,e4] ~@11 f#5@4, a#3, ~@5 c#5@11, ~ e5", L: "[b3,e4,f#4,b4]",
  M: "[[e3,a3,b3,e4]@15 ~ [c4,d4]@32, ~@5 [g3,g4]@11]/3", // Esus4 Csus2 G
})).s("gm_pad_halo").gain(0.12)

// chords · pad halo · "HALO PAD" · soft notes
const pad_halo_soft = note("<A ~@12 B C@2 ~@3 B ~@3 B D@2 ~@13 E@2 ~@3 B ~@3 B ~@3 B F ~@13 E@2 ~@16>".pickRestart({
  A: "~ [g3,b3,d4,e4]@3", B: "~ c#4", C: "[[f#3,a#3,f#4], [c#4,e4] ~@31]/2", D: "[~ a#4, c#3 ~, ~@13 f#4@19]/2",
  E: "[a2@31 ~]/2", F: "~ a#4@7, [c#3,f#4]",
})).s("gm_pad_halo").gain(0.04)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@24 A B C D E F G H@2 I C D E F G J@2 ~@8 K L M N B C D E F G H@2 I C D E F G ~ O P Q R S T@2 U O P Q R S ~@4
>`.pickRestart({
  A: "~ g4 ~ g4 ~ g4 ~ g4", B: "~ [g4,b4] f#4 [g4,b4] [f#4,a#4] [g4,b4] [f#4,a#4] [g4,b4]", C: "[b3,d4,g4,b4,g5,g6]",
  D: "[c#4,a4,a5]", E: "[d4,f#4,d5,d6]@11 a4 [c#4,f#4,a4,c#5,c#6]@4", F: "b5@3 a5, [b3,d4,f#4,a4,b4]",
  G: "[b3,d4,g4,g5]", // G
  H: "[b3@5 ~@11 [d5,d6]@8 [e5,e6]@4 [c#4,e4,f#5,f#6]@4, [c#4,e4,a4,a5]@4 [d4,f#4]@3 ~, ~@3 a3@13]/2", // D E F#7 A D
  I: "~@3 [a3,c#5,c#6], [d4,f#4], [b3,d5,d6]@3 ~, ~@3 a4@5", J: "[~ [d4,d5] e4 d4 g3 ~@3, ~@3 b3@2 ~@3]/2",
  K: "[b2,d4,f#4]", L: "[g3,b3,d4,g4]", M: "[d4,f#4,a4]", N: "d4 c#4, [e4,a4]", O: "[c#4,e4,a4,c#5,a5,a6]",
  P: "[d#4,b4,b5]", Q: "[e4,g#4,e5,e6]@11 b4 [d#4,g#4,b4,d#5,d#6]@4", R: "c#6@3 b5, [c#4,e4,g#4,b4,c#5]",
  S: "[c#4,e4,a4,a5]", // A
  T: "[c#4@5 ~@11 [e5,e6]@8 [f#5,f#6]@4 [d#4,f#4,g#5,g#6]@4, [d#4,f#4,b4,b5]@4 [e4,g#4]@3 ~, ~@3 b3@13]/2", // E F# G#7 B E
  U: "~@3 [b3,d#5,d#6], [e4,g#4], [c#4,e5,e6]@3 ~, ~@3 b4@5", // B E C#m
})).s("gm_string_ensemble_1").gain(0.25)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@24 A B ~@13 C D ~@8 E ~ F@2 B ~@31>".pickRestart({
  A: "~@2 f#4 ~ f#4 ~ f#4 ~", B: "[f#4,a#4] ~ a#4 ~@5", C: "~ [f#4,f#5] [c#4,c#5,e5] [b4,d5]",
  D: "[g4,b4] [a3,c#4,f#4,a4]@3", E: "[a3,a4]", F: "a3",
})).s("gm_string_ensemble_1").gain(0.15)

// drums · kick
const kick = s("bd").struct("<~ A@3 B ~@11 A@8 ~ C A@13 B ~ A@3 B A@8 D A@13 D A@13 ~@4>".pickRestart({
  A: "x ~@2 x ~@4", B: "x", C: "~@11 x ~@4", D: "x ~@10 x ~@4",
})).gain(0.57)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@16 A ~ A ~ A ~ A ~@4 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~ A
  ~ A ~ B ~@3
>`.pickRestart({
  A: "~@15 x", B: "x",
})).gain(0.29)

// drums · rim
const rim = s("rim").struct("<~@4 A ~@5 A@4 ~@2 A@8 ~@2 A@13 ~@2 A@3 ~ A@8 ~ A@13 ~ A@13 ~@4>".pickRestart({
  A: "~ x ~ x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ A@3 ~@21 B A@13 ~@14 B A@13 C A@13 ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@3 x", C: "~ x!4 ~ x ~",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@9 B ~@22 C ~@3 D B ~@13 E ~@17>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@3 x", C: "~@13 x!2 ~", D: "~@14 x!2", E: "~ x!4 ~@3",
})).gain(0.64)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A@2 B A ~@4 C A@3 B ~@2 A@3 B A@3 B ~@5 D ~@3 D ~@3 D ~@3 A@3 E A@3 B A@3 B ~@4 D ~@3 D ~@3 D ~@5 D ~@3 D ~@3 D ~@5
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~@11 x ~@4", D: "~ x ~@2", E: "~@3 x!3 ~@10",
})).gain(0.14)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@48 [~@9 x ~@6] ~@3 [~@3 x] ~@32>").gain(0.71)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@5 A ~@8 B ~@24 C ~@4 D ~@8 B ~@13 C ~@17>".pickRestart({
  A: "~@7 x", B: "x", C: "x!2", D: "~@11 x!2 ~@3",
})).gain(0.29)

// drums · high tom
const high_tom = s("ht").struct("<~@48 [~@5 x ~@10] ~@3 [~@5 x ~@2] ~@32>").gain(0.71)

// drums · ride
const ride = s("rd").struct(`<
  ~@5 A ~@20 B@3 C B@3 C B@3 C B D ~@14 B@3 C B@3 C B@3 C B D B@3 C B@3 C B@3 C B ~@4
>`.pickRestart({
  A: "~@10 x!2 ~@4", B: "x!4", C: "x!3 ~ x ~ x ~", D: "x",
})).gain(0.43)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@26 A@3 B A@3 B A@3 B A ~ C ~@13 A@3 B A@3 B A@3 B A ~ A@3 B A@3 B A@3 B A ~@4
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~ x ~@2", C: "~@11 x!2 ~@3",
})).gain(0.21)

// drums · tambourine
const tambourine = s("tb").struct("<~@10 [~@3 x]!4 ~@2 [~@3 x]!8 ~@17 [~@3 x]!12 ~@32>").gain(0.64)

// drums · claves
const claves = s("clave:2").struct("<~@10 A@2 B C ~@2 A@2 B C A@2 B C ~@17 A@2 B C A@2 B C A@2 B C ~@32>".pickRestart({
  A: "~@12 x!2 ~ x", B: "~@12 x ~@2 x", C: "~@12 x!2 ~@2",
})).gain(1.05)

// drums · claves · soft notes
const claves_soft = s("clave:2").struct("<~@12 A B ~@4 A B ~@2 A B ~@19 A B ~@2 A B ~@2 A B ~@32>".pickRestart({
  A: "~@7 x", B: "~@15 x",
})).gain(0.7)

stack(
// … 4 more lines

More by Biagio Antonacci