Strudelify

Bambino io, bambino tu (Legenda)

Zucchero

KeyG majorTempo129 bpm
0:00/0:00
// Bambino io, bambino tu (Legenda) — Zucchero
// 129 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 4 electric guitar clean (copy of ch 3 electric guitar clean)
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(129/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.

// other · pan flute
const pan_flute = note("<~@35 A B C ~ A D E ~@78>".pickRestart({
  A: "~@8 b6 ~ a6 ~ g6 ~ f#6 ~", B: "e6@3 ~ f#6 ~ g6 ~ f#6@2 ~@2 g6 ~ a6 ~", C: "d6@3 ~@13",
  D: "e6@2 ~@2 f#6 ~ g6 ~ f#6@2 ~@2 g6@2 a6 ~", E: "g6@3 ~@13",
})).s("gm_pan_flute").gain(0.27).pan(0.1)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@29 A B A ~@16 C@3 ~ D E@2 F@2 ~@16 A B A ~@25 A B A ~ A B A ~ A B A ~ A B A ~@4
>`.pickRestart({
  A: "~ g4 f#4 g4 d4 ~ g4 f#4", B: "~ g4 d4@2 ~@4",
  C: "[~@17 e4@19 ~@2 c4@9 ~, ~@7 c3@9 ~@8, ~@5 g3@6 ~@5, ~@4 c4@5 ~@3]/3", D: "~@2 e4 ~@2 d4@3, ~@3 f#4@5",
  E: "[~@6 e4@17 ~@9, c3@7 ~@9]/2",
  F: "[~@28 d4@3 ~, ~@4 d4@6 a3@5 ~ d3@6 f#4@7 ~@3, ~@6 f#4@6 d4@6 ~@2 d4@6 a3@5 ~]/2",
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.9)

// other · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@32 A ~@17 B C@2 D@2 E@2 ~@19 A ~@27 A ~@3 A ~@3 A ~@3 A ~@3>".pickRestart({
  A: "~@2 g4@2 d4 ~@11", B: "~@4 g3@6 ~@2 g3@3 ~, ~@2 c3@13 ~, ~@10 e4@5 ~",
  C: "[~@6 f#4@13 ~@9 b3@4, d3@7 ~@9, ~@2 a3@15 ~@15, ~@2 d4@7 ~@7]/2", D: "[~@18 c3@11 ~@3, ~ g3@15, ~@3 c4@2 ~@3]/2",
  E: "[~@2 a3@5 ~ d3@6 ~@4 a3@5 ~ d3@6 f#4 ~, d3@3 ~@4 f#4@3 ~@6]/2",
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.9)

// chords · epiano2
const epiano2 = note(`<
  ~@13 A B A B A B A B A B A B C B A B ~@4 A B A B A B A B A B A B C B A B D ~ E F G ~ E H ~@20 A B A B A B A B A B A B
  C B A B A B A B C B A B ~@19
>`.pickRestart({
  A: "~@4 [g3,b3,d4] ~@7 [g3,b3,d4] ~@3", B: "~@4 [g3,c4,e4] ~@7 [a3,d4,f#4] ~@3",
  C: "~@4 [b3,e4,g4] ~@7 [f#3,a3,d4] ~@3", D: "c5@7 ~, g4@11 ~@5", E: "[a4,d5]@3 ~", F: "[b4,d5]@3 ~",
  G: "[g4,c5]@5 ~@3", H: "[a4,d5]@6 ~@2 [a4,d5] ~@3 [a4,d5] ~ [a4,d5] ~",
})).s("gm_epiano2").gain(0.41).pan(0.3)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@13 A B C D A B E F G F A F H I J F ~@4 A B C D A B E F G F A F H I J F ~@8 A B C D A B E F G F A F H I J F ~@4 A B C
  D A B E F G F A F H I J F G F A F H I J F ~@19
>`.pickRestart({
  A: "~@2 g3 ~ b3 ~ d4 ~ b3 ~@3 g3 ~@3", B: "~@2 g3 ~ c4 ~ e4 ~ f#4 ~ d4 ~ a3 ~@3", C: "~@4 b3 ~ d4 ~ b3 ~@7",
  D: "~@2 g3 ~ c4 ~ e4 ~@5 d4 ~ f#4 ~", E: "~@4 b3 ~ d4 ~ e4 ~@3 b3 ~@3", F: "~@2 g3 ~ c4 ~ e4 ~@3 a3 ~ d4 ~ f#4 ~",
  G: "~@2 g3 ~ b3 ~ d4 ~ g4 ~ d4 ~ b3 ~@3", H: "~@2 b3 ~ e4 ~ g4 ~@5 e4 ~ g4 ~", I: "~@4 c4 ~ e4 ~@5 d4 ~ f#4 ~",
  J: "~@4 b3 ~ g4 ~ d4 ~@3 b3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.8)

// other · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  ~@15 A B ~@2 C ~@5 D E C ~@7 A B ~@2 C ~@5 D E C ~@11 A B ~@2 C ~@5 D E C ~@7 A B ~@2 C ~@5 D E C ~@5 D E C ~@20
>`.pickRestart({
  A: "~@2 g3 ~@9 g3 ~@3", B: "~@10 a3 ~@5", C: "~@2 g3 ~@13", D: "~@10 b3 ~@5", E: "~@2 g3 ~@7 a3 ~@5",
})).s("gm_electric_guitar_muted").gain(0.2).pan(0.8)

// chords · pad halo
const pad_halo = note(`<
  ~@5 A@6 B@2 ~@16 C@2 D@3 E@7 F@5 G@3 H@4 I@4 J K@7 F@5 G@3 C@2 L@2 J K@7 F@5 M@8 N@3 C@2 L@2 O@2 L@2 O@2 L@2 O@2 P@5
>`.pickRestart({
  A: "[~@13 c4@31 a3@20 [d3,b3]@12 [e3,c4]@11 [f#3,a3,d4]@9, ~@13 g3@75 ~@8, ~@13 [g2,d4]@51 ~@32]/6", // G C D G5
  B: "[[d3,b3]@11 c4@12 [f#3,a3]@7 [g3,b3]@2, g3@11 ~@5, ~@11 e3@11 ~ d3@9]/2", // G F#m G
  C: "[[d3,b3]@12 [e3,c4]@11 [f#3,a3,d4]@9, g3@23 ~@9]/2", // G C D
  D: "[[d3,b3]@11 c4@12 [f#3,a3]@7 [g3,b3,d4]@18, g3@11 ~@13, ~@11 e3@11 ~ d3@9 ~@16]/3", // G F#m G
  E: "[~@8 a3@7 ~ b3@15 [c4,e4]@8 ~@8 b3@16 [c4,e4]@8 ~ [a3,f#4]@7 b3@16 [c4,e4]@8 ~ d4@8, [c4,e4]@8 d4@24 ~@7 d4@24 ~@8 d4@24 ~@17, ~@7 f#3@8 g3@24 [f#3,a3]@10 ~@54 [f#3,a3]@9, ~@47 g3@24 ~@8 g3@24 ~@9]/7", // C D C F#m
  F: "[b3@15 [c4,e4]@8 ~@9 b3@15 ~ c4@8 [f#3,a3,d4]@7 ~ e3@7 ~ [f#3,d4]@8, g3@23 [f#3,a3]@8 g3@25 ~@7 [g3,b3]@8 a3@8 ~, ~@24 d4@23 e4@9 ~@24]/5", // C D F#m G
  G: "[[g3,e4]@8 [f#3,a3]@7 b3@16 ~ e4@8 [f#3,a3,d4]@8, c4@7 ~ d4@23 c4@7 ~@10, ~@15 g3@25 ~@8]/3", // C F#m D
  H: "[[g3,c4,e4]@31 a3@16 b3@17, ~@31 [d4,f#4]@32 ~]/4", // C D
  I: "[~@31 f#4@9 e4@8 f#4@14 ~@2, [g3,c4,e4]@33 ~@31, ~@31 [a3,d4]@31 ~@2]/4", J: "[g3,b3,d4]",
  K: "[[c4,e4]@8 [f#3,a3]@7 ~ b3@15 [c4,e4]@8 ~@8 b3@16 [c4,e4]@8 ~ [a3,f#4]@7 b3@16 [c4,e4]@8 ~ d4@8, ~@8 d4@24 ~@7 d4@24 ~@8 d4@24 ~@17, ~@15 g3@24 [f#3,a3]@10 ~@54 [f#3,a3]@9, ~@47 g3@24 ~@8 g3@24 ~@9]/7", // C F#m C D C F#m
  L: "[[d3,b3]@11 c4@12 [d3,f#3,a3]@9, g3@11 ~@5, ~@11 e3@11 ~@10]/2", // G D
  M: "[[g3,e4]@8 [f#3,a3]@7 b3@16 ~ e4@8 [f#3,a3]@8 [g3,b3]@15 [c4,e4]@8 ~@9 b3@15 ~ c4@7 ~ [f#3,a3,d4]@7 ~ e3@7 ~ [f#3,d4]@8, c4@7 ~ d4@23 c4@7 ~@2 d4@23 ~@8 [f#3,a3]@8 g3@25 ~@7 [g3,b3]@8 a3@8 ~, ~@15 g3@25 ~@8 d5@55 c5@8 b4@17, ~@72 d4@23 e4@9 ~@24]/8", // C F#m G C D F#m G
  N: "[c4@7 ~ [f#3,a3]@7 b3@16 ~ e4@8 [f#3,a3,d4]@8, [g3,e4]@8 d4@23 c4@7 ~@10, ~@7 a4@8 g4@33, ~@15 g3@25 ~@8]/3", // F#m D C
  O: "[b3@12 [e3,c4]@11 [f#3,a3,d4]@9, g3@23 ~@9, d3 ~@31]/2", // C D
  P: "[[d3,b3]@11 c4@12 [f#3,a3]@7 [g3,b3]@35 ~@15, g3@11 ~@29, ~@11 e3@11 ~ d3@42 ~@15]/5", // G F#m G
})).s("gm_pad_halo").gain(0.15)

// other · flute
const flute = note("<~@9 A B C D ~@16 E B C D ~@16 F@2 G@2 H@2 I J ~@52 A B C D K B C D ~@3>".pickRestart({
  A: "~@8 b5@2 a5 ~ g5 ~ f#5@2", B: "e5@2 ~@2 f#5 ~ g5@2 f#5@2 ~@2 g5 ~ a5@2", C: "d5@2 ~@6 b5 ~ a5 ~ g5 ~ f#5@2",
  D: "e5@2 ~@2 f#5 ~ g5@2 f#5@2 ~@2 d5@2 g4@2", E: "~@2 g5@2 f#5@2 g5@2 b5@2 a5 ~ g5 ~ f#5@2",
  F: "[g5@8 e5@13 ~@3 e5@3 f#5@2 ~ g5@2]/2", G: "[f#5@4 d5@9 ~@3]/2", H: "[g5@8 e5@14 ~@2 e5@3 f#5@3 g5@2]/2",
  I: "f#5 e5", J: "d5@8 a4@7 ~", K: "~@4 b5 a5 g5 f#5",
})).s("gm_flute").gain(0.41).pan(0.3)

// other · flute · soft notes
const flute_soft = note("<A@2 B@2 C@2 D@3 ~@48 E ~@62>".pickRestart({
  A: "[[g5,b5]@7 ~ [e5,g5]@12 ~@4 [b4,e5]@3 ~ d5@2 [e5,g5]@2, ~@27 f#5@3 ~@2]/2", // G Em E5 Em
  B: "[~ f#5@8 a4@15 ~@8, ~ d5@23 ~@8]/2", C: "[[g5,b5]@8 [e5,g5]@12 ~@4 [b4,e5]@3 [d5,f#5]@3 [e5,g5]@2]/2",
  D: "[~ f#5@9 e5@9 d5@12 f#4@17, ~ d5@8 ~ a4@38]/3", E: "b4 ~",
})).s("gm_flute").gain(0.21).pan(0.3)

// bass · electric bass finger
const bass = note(`<
  ~@9 A ~ A ~ B C D E D F G H G I G J K L M N A ~ A ~ B C D E D F G H G I G J K L M N O@2 P Q R@2 S T B C D E D F G H G
  I G J K L M N A ~ A ~ B C D E D F G H G I G J K L M N G I G J K L M N A ~ A ~ A ~ A ~ A ~ A ~ A ~ A U@4
>`.pickRestart({
  A: "g2 ~@2 b2 ~@2 c3 ~", B: "~@2 g2 ~ g2@2 ~@2 g2@2 ~@2 b2 ~@3", C: "c3 ~@3 d3 ~@3",
  D: "~@2 g2 ~ g2@2 ~@2 g2@2 ~@2 b2@2 ~@2", E: "c3 ~@3 c3 d3 g3 g2", F: "c3@2 ~@6 d3@2 ~@4 g2 ~",
  G: "~@2 g2 ~ g2@2 ~@4 g2 ~ b2@2 ~@2", H: "c3 ~@3 d3 ~@2 g3", I: "c3@3 ~@5 d3@3 ~@3 g2@2", J: "c3@2 ~@6 d3@2 ~@4 e3 ~",
  K: "~ d3 e3 ~@3 b2 ~", L: "c3@2 ~@6 d3@6 g2 ~", M: "~@2 g2 ~ g2@2 ~@4 g2 ~ b2@3 ~", N: "c3@3 ~@5 d3@4 ~@4", O: "c3/2",
  P: "d3@15 ~", Q: "b2", R: "[c3@31 ~]/2", S: "d3 c3", T: "b2@8 f#2@7 ~", U: "[~@4 d3 ~@2 g2@23 ~@2]/4",
})).s("gm_electric_bass_finger").gain(0.64)

// other · soprano sax
const soprano_sax = note("<~@51 A B ~@2 C D ~@2 E F@2 ~ G H@2 ~@13 I@3 ~ J K ~@35>".pickRestart({
  A: "~@13 b4 d5 f#5", B: "e5@3 d5 b4@4 a4@3 d5 ~@4", C: "~@9 e5 ~@3 d5 b4 ~, ~@11 a5@2 ~@3, ~@6 f#5 ~",
  D: "a4@6 g4 b4 ~ d5@7", E: "~@4 b4 e5 ~ b4", F: "[a4@4 g4@3 ~ f#4@2 ~@2 e5@2 d5@6 ~@12]/2",
  G: "~@4 b5@2 c6 ~ d6@2 b5@2 g5@2 e5 ~", H: "[g5@4 e5@2 d5 ~ b5@4 e5@2 g5@6 ~@12, ~@12 f5 ~@19]/2",
  I: "[~@2 d5 ~ b4@2 a4 ~ g4@4 ~@2 a4@6 ~@4 d4@4 ~@2 g4@9 ~@9]/3", J: "~@10 e4 ~ a4@2 f#4 ~",
  K: "g4@2 b4 ~ d5@2 f#5 ~ e5@4 d5@4",
})).s("gm_soprano_sax").gain(0.27).pan(0.8)

// other · soprano sax · soft notes
const soprano_sax_soft = note("<~@52 [~@3 b4] ~@6 [~@6 d5 ~] ~@19 [~@12 e4 ~@3] [~@4 e4@2 d4 ~@5 e4@2 ~@2] ~@39>")
  .s("gm_soprano_sax").gain(0.13).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@9 A@3 ~ A@19 ~ A@43 ~ A@15 B A@11 ~ A@3 C A@3 ~ A@3 ~@4>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@7 x",
})).gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@41 A ~@6 B ~@27 A ~@27 A ~@15>".pickRestart({
  A: "~ x ~@6", B: "~@5 x ~@2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@76 A ~@27 A ~@4 B ~ B C B ~ B D ~@3>".pickRestart({
  A: "~@6 x!2", B: "~ x", C: "~ x ~@2", D: "~@7 x",
})).gain(0.72)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@32 A ~@22 A ~@20 B ~@27 B ~@7 C ~@3 A ~@3>".pickRestart({
  A: "~ x ~@2 x ~@3", B: "x ~@5 x!2", C: "~@3 x ~@12",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@12 A ~@6 B A ~@2 B A ~@3 C ~@3 A ~@6 B A ~@2 B A ~@3 C D@8 ~@6 B A ~@2 B A ~@3 C ~@3 E ~@6 B A ~@2 B A ~@3 C ~@2 B A
  ~@3 C ~@3 E ~@3 E F@3 ~ F@3 G ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@6 x!2", C: "~@3 x", D: "x!2", E: "~@3 x!2 ~@2 x", F: "~ x ~ x", G: "~@2 x ~@3 x!2",
})).gain(0.56)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@49 [~ x!3 ~ x!3]!8 ~@63>").gain(0.24)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@2 A ~@2 B ~@6 C ~@15 D ~@6 E ~@8 F ~@3 G H ~@13 I ~@3 J ~@4 D ~@6 K ~@4 L ~@3 M N ~@2 D E ~@6 D ~@7 O ~@3 M ~@7
>`.pickRestart({
  A: "~@9 x ~@6", B: "~ x ~@8 x ~@5", C: "~@6 x!3 ~ x ~ x ~@3", D: "~@6 x!2", E: "~@2 x!2 ~@4", F: "~@5 x ~@10",
  G: "~@14 x!2", H: "x", I: "x!2 ~@4 x!2 ~@3 x!2 ~@3", J: "~@2 x!2 ~@12", K: "~@6 x!3 ~ x ~@5", L: "~@4 x!2 ~ x",
  M: "~ x ~@6", N: "~@5 x!2 ~", O: "x ~@2 x ~ x ~ x!3 ~ x ~@4",
})).gain(0.48)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct(`<
  ~ A B ~@2 C ~@22 D ~@6 E ~@12 F ~@23 D ~@6 G ~@9 H ~@2 D I ~@6 D ~@7 J ~@3 K ~@7
>`.pickRestart({
  A: "~@15 x", B: "x ~@6 x ~@8", C: "x ~@8 x ~@6", D: "~@10 x!2 ~@4", E: "~@2 x!2 ~@12", F: "~@13 x ~@2",
  G: "~@5 x ~@10", H: "~ x", I: "~ x ~@6", J: "~ x ~@14", K: "~@3 x ~@12",
})).gain(0.24)

// drums · crash
const crash = s("cr").struct("<~@32 A ~@24 B ~@6 A ~@12 C ~@7 D ~@6 A E ~@14 A ~@4 B ~@2 A ~@3>".pickRestart({
  A: "~@7 x", B: "x", C: "x!2", D: "~ x ~@2", E: "~ x",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct(`<
  ~@7 A B C D@3 ~@15 E D@4 ~@15 E F G F G F G F G ~@15 E D@3 H ~@15 E ~@7 E D@3 H D@3 H D@8 ~@3
>`.pickRestart({
  A: "~@6 x!3 ~ x ~@5", B: "~@10 x!6", C: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", D: "x!8", E: "~@3 x", F: "x!3 ~",
  G: "x ~@2 x!2 ~@3", H: "x!4 ~ x!2 ~",
// … 153 more lines

More by Zucchero