Strudelify
Il Tuo Bacio E Come Un Rock cover art

Il Tuo Bacio E Come Un Rock

Celentano

KeyG♯ minorTempo130 bpm
0:00/0:00
// Il Tuo Bacio E Come Un Rock — Celentano
// 130 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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.

// chords · piano
const piano = note(`<
  ~@2 A B@2 C D E@3 F@2 G@2 H I A B@2 C D E@3 F@2 G@2 H ~ J K L K M K N K O@2 P@2 Q E R S A B@2 C D E@3 F@2 G@2 H T U T
  U V ~@5
>`.pickRestart({
  A: "[b3,d#4]@5 ~ [b3,d#4]@5 ~ [b3,d#4]@3 ~, g#2@15 ~", // B
  B: "[[b3,d#4]@4 g#3@2 b3@4 ~@2 b3@3 ~ b3@4 g#3@2 [b3,d#4]@4 g#3@2 [b3,d#4]@3 ~, g#2@31 ~, ~@6 d#4@9 ~ d#4@6 ~@10]/2", // B
  C: "[b3,d#4]@4 g#3 ~ [b3,d#4]@5 ~ [b3,d#4]@3 ~, g#2@15 ~", // B
  D: "[b3,d#4]@5 ~ b3@4 g#3@2 d#4@2 ~@2, g#2, ~@6 d#4@6 b3 ~@3", // B
  E: "[g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~", // C#m
  F: "[a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~", // F#
  G: "[g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~", // C#m F#
  H: "[f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~", // B
  I: "[a#4,c#5,g5] ~@15", J: "~@8 [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~",
  K: "[g#2,b3,d#4,g#4] ~@15", // G#m
  L: "~@6 [g#2,d#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~", // G#5 G#m
  M: "~@4 d#4 ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~", // G#m
  N: "~@4 g#2 ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~", // G#m
  O: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // A
  P: "[g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~", // G#m
  Q: "[g4,a#4,d#5] ~ [g4,a#4,d#5] ~ [g4,a#4,d#5] ~ [g4,a#4,d#5] ~ [g4,a#4,d#5] ~ [g4,a#4,d#5] ~ [g4,a#4,d#5] ~ [g4,a#4,d#5] ~", // D#
  R: "[g4,a#4,c#5] ~ [g4,a#4,c#5] ~ [g4,a#4,c#5] ~ [g4,a#4,c#5] ~ [g4,a#4,c#5] ~ [g4,a#4,c#5] ~ [g4,a#4,c#5] ~ [g4,a#4,c#5] ~", // Gdim
  S: "[g4,a#4,c#5] ~@15", // Gdim
  T: "[a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~", // A#dim
  U: "[b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~", // B
  V: "[a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~@7", // A#dim
})).s("gm_piano").gain(0.45).pan(0.7)

// chords · piano · soft notes
const piano_soft = note("<~@2 A B C D E ~@9 A B C D E ~@9 F ~ G ~ H ~ I ~@9 A B C D E ~@12 J K L K L K>".pickRestart({
  A: "~@2 g#3 ~@2 g#3 ~@2", B: "g#3@3 ~@7 g#3@2 ~@4", C: "~@14 g#3 ~", D: "~@5 g#3 ~@2", E: "~@4 g#3 ~@11",
  F: "~@4 [g#2,d#4,g#4] ~ [g#2,b3,d#4,g#4] ~@9", G: "~@4 [g#2,b3,d#4,g#4] ~ [b3,g#4] ~@9", H: "~@4 [g#2,b3,g#4] ~@11",
  I: "~@4 [b3,d#4,g#4] ~@11", J: "~@10 [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~",
  K: "[b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5,f#5] ~", // B
  L: "[a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~ [a#4,c#5,e5] ~", // A#dim
})).s("gm_piano").gain(0.19).pan(0.7)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@2 A@5 B@3 C@3 D E F A@5 B@3 C@3 D E ~ G ~ G ~ G ~ H@2 I@2 J@2 K L K ~ A@5 B@3 C@3 D E M E M E ~@6
>`.pickRestart({
  A: "[g#3,b3,d#4]/5", B: "[[g#3,c#4,e4]@47 ~]/3",
  C: "[[a#3,c#4,f#4]@31 [g#3,e4]@8 ~ a#3@8, ~@31 c#4@16 ~, ~@39 f#4@8 ~]/3", D: "[g#3,e4]@8 [a#3,f#4]@7 ~, c#4@15 ~",
  E: "[b3,d#4,f#4]@15 ~", F: "[a#3,c#4,g4]@3 ~@13", G: "~ [b3,d#4,g#4]@3", H: "[~@4 [b3,d#4,g#4]@15 ~@13]/2",
  I: "[[a3,c#4,e4]@31 ~]/2", J: "[g#3,b3,d#4]/2", K: "[a#3,c#4,d#4,g4]", L: "[g#3,c#4,e4]", M: "[a#3,c#4,e4,f#4]",
})).s("gm_synth_strings_1").gain(0.31)

// chords · synth strings 1 · soft notes · F#7 B F#7 B F#7 B
const synth_strings_1_soft = note(`<
  [d#4@13 ~@3]
  ~@62
  [[a#3,c#4,e4,f#4]@15 ~]
  [[b3,d#4,f#4]]
  [[a#3,c#4,e4,f#4]@15 ~]
  [[b3,d#4,f#4]]
  [[a#3,c#4,e4,f#4]@15 ~]
  [[b3,d#4,f#4]]
>`).s("gm_synth_strings_1").gain(0.15)

// bass · electric bass finger
const bass = note(`<
  ~@2 A@5 B C B D E F G H I A@5 B C B D E F G H J K L K L K L K L M@2 N O P Q R S A@5 B C B D E F G H T U T V ~@6
>`.pickRestart({
  A: "g#1@5 ~ b1 ~ e2 ~ e2@2 d#2@2 b1@2", B: "c#2@6 e2@2 a2 ~ a2@2 g#2@2 e2@2", C: "c#2@6 e2@2 a2 ~ a2 ~ g#2@2 e2 ~",
  D: "f#1@5 ~ a#1@2 c#2@2 c#2@2 a#1@2 c#2@2", E: "f#1@6 a#1@2 c#2 ~ c#2@2 a#1@2 f#2@2", F: "c#2@6 g#2@2 f#1@5 ~ f#2@2",
  G: "c#2@6 g#2@2 f#1@4 f#2@3 ~", H: "b1!2 d#2 f#2 g#2 f#2 d#2 f#2", I: "a#1 ~@7", J: "b1 ~@7",
  K: "~@4 g#1@2 b1@2 e2 ~ e2 ~ d#2@2 b1@2", L: "g#1 ~@7", M: "a1@4 c#2@3 ~ e2@3 ~ c#2 ~ e2@2",
  N: "g#1@3 ~ b1 ~ g#1 ~ d#2@3 ~ b1@2 d#2@2", O: "g#1@3 ~ b1@2 g#1@2 d#2@4 c#2@2 d#2@2",
  P: "a#1@3 ~ c#2@2 a#1 ~ d#2@3 ~ c#2@2 d#2@2", Q: "c#2@3 ~ c#2@2 e2 ~ g#2@3 ~ e2@2 c#2@2",
  R: "d#2@4 a#1@2 d#2@2 c#2@3 ~ a#1 ~ c#2 ~", S: "d#2@3 ~@13", T: "c#2 ~ c#2@4 e2 ~ f#2 ~ f#2@2 c#2@2 f#2@2",
  U: "b1 ~ b1@2 d#2@2 f#2@2 g#2@2 f#2@2 d#2@2 f#2@2", V: "b1 ~ b1@2 d#2@2 f#2@2 g#2@2 f#2@2 ~@4",
})).s("gm_electric_bass_finger").gain(0.49)

// bass · electric bass finger · soft notes
const bass_soft = note(`<
  ~@62
  [~@6 d#2 f#2]
  [c#2 ~ c#2@4 e2 ~ f#2 ~ f#2@2 c#2@2 f#2@2]
  [b1 ~ b1@2 d#2@2 f#2@2 g#2@2 f#2@2 d#2@2 f#2@2]
  [c#2 ~ c#2@4 e2 ~ f#2 ~ f#2@2 c#2@2 f#2@2]
  [b1 ~ b1@2 d#2@2 f#2@2 g#2@2 f#2@2 d#2@2 f#2@2]
  [c#2 ~ c#2@4 e2 ~ f#2 ~ f#2@2 c#2@2 f#2@2]
  [b1 ~ b1@2 d#2@2 f#2@2 g#2@2 f#2@2 d#2@2 f#2@2]
>`).s("gm_electric_bass_finger").gain(0.18)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@2 A@5 B@3 C@2 D@2 E@2 A@5 B@3 C@2 D@2 F G H I H I H I H I J@2 A@2 K B K L A@5 B@3 C@2 D@2 F M N M O ~@6
>`.pickRestart({
  A: "~@4 [b3,d#4,g#4] ~@7 [b3,d#4,g#4] ~@3", B: "~@4 [c#4,e4,g#4] ~@7 [c#4,e4,g#4] ~@3",
  C: "~@4 [a#3,c#4,f#4] ~@7 [a#3,c#4,f#4] ~@3", D: "~@4 [g#3,c#4,e4] ~@7 [a#3,c#4,f#4] ~@3",
  E: "[~@4 [b3,d#4,f#4] ~@7 [b3,d#4,f#4] ~@3 [d#4,g4]@4 ~@12, ~@15 [a#3,c#4]@4 ~@13]/2", // B D# A#m
  F: "~@4 [b3,d#4,f#4] ~@7 [b3,d#4,f#4] ~@3", G: "[b3,d#4,f#4] ~@15", H: "~@4 g#2@2 b2 ~ e3 ~ e3@2 d#3@2 b2@2",
  I: "g#2 ~@7", J: "~@4 [a3,c#4,e4] ~@7 [a3,c#4,e4] ~@3", K: "~@4 [c#4,d#4,g4] ~@7 [c#4,d#4,g4] ~@3",
  L: "[c#4,d#4,g4] ~@15", M: "~@4 [e4,f#4,a#4] ~@7 [e4,f#4,a#4] ~@3", N: "~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4] ~@3",
  O: "~@4 [d#4,f#4,b4] ~@11", // B
})).s("gm_electric_guitar_clean").gain(0.4).pan(0.7)

// chords · electric guitar clean · soft notes · B F#7 B F#7 B F#7 B
const electric_guitar_clean_2 = note(`<
  ~@62
  [~@12 [d#4,f#4,b4] ~@3]
  [~@4 [e4,f#4,a#4] ~@7 [e4,f#4,a#4] ~@3]
  [~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4] ~@3]
  [~@4 [e4,f#4,a#4] ~@7 [e4,f#4,a#4] ~@3]
  [~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4] ~@3]
  [~@4 [e4,f#4,a#4] ~@7 [e4,f#4,a#4] ~@3]
  [~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4] ~@3]
>`).s("gm_electric_guitar_clean").gain(0.12).pan(0.7)

// other · brass section
const brass_section = note(`<
  ~@2 A B@3 C D@3 E@2 F@2 G H A B@3 C D@3 E@2 F@2 I J ~@8 K L M N O P Q R A B@3 C D@3 E@2 F@2 G S G S G T ~@5
>`.pickRestart({
  A: "g#3@4 ~@2 b3 ~ e4 ~ e4@2 d#4@2 b3@2", B: "g#3@5 ~ b3 ~ e4 ~ e4@2 d#4@2 b3@2", C: "g#3@3 ~@5",
  D: "c#3@5 ~ e3 ~ a3 ~ a3@2 g#3@2 e3@2", E: "f#3@4 ~@2 f#3 ~ f#3@7 ~", F: "c#3@5 ~ c#3@2 f#3@5 ~ f#3@2",
  G: "b2 ~ b2 ~ d#3 ~ f#3 ~ g#3@2 f#3 ~ g#3@2 f#3 ~", H: "a#3 ~@7", I: "b2 ~ b2 ~ d#3 ~ f#3 ~ g#3@2 f#3 ~ d#3@2 f#3@2",
  J: "b3 ~@15", K: "a3@9 ~ a3@6", L: "a3", M: "d#4@10 d#4@5 ~", N: "d#4@15 ~", O: "d#4@11 ~ d#4@4",
  P: "c#4@9 ~ c#4@5 ~", Q: "d#4@9 ~@3 c#4@3 ~", R: "d#4 ~@7", S: "c#3 ~ c#3@3 ~ e3 ~ f#3 ~ f#3@2 g#3@2 f#3@2",
  T: "c#3 ~@15",
})).s("gm_brass_section").gain(0.43)

// other · brass section · soft notes
const brass_section_soft = note(`<
  ~@63
  [~@2 c#3@3 ~ e3 ~ f#3 ~ f#3@2 g#3@2 f#3@2]
  [b2 ~ b2 ~ d#3 ~ f#3 ~ g#3@2 f#3 ~ g#3@2 f#3 ~]
  [c#3 ~ c#3@3 ~ e3 ~ f#3 ~ f#3@2 g#3@2 f#3@2]
  [b2 ~ b2 ~ d#3 ~ f#3 ~ g#3@2 f#3 ~ g#3@2 f#3 ~]
  [c#3 ~ c#3@3 ~ e3 ~ f#3 ~ f#3@2 g#3@2 f#3@2]
  [b2 ~ b2 ~ d#3 ~ f#3 ~ g#3@2 f#3 ~ g#3@2 f#3 ~]
>`).s("gm_brass_section").gain(0.16)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A@5 B C@2 D@2 E F G H A@5 B C@2 D@2 E F G I ~@8 J@2 K L M N O P A@5 B C@2 D@2 E F G F Q F Q ~@6
>`.pickRestart({
  A: "[d#5@68 g#4@3 ~ a#4@4 b4@4]/5", B: "c#5", C: "[e5@3 g#5]/2", D: "f#5/2", E: "b4@7 ~ a#4@8", F: "e5 c#5", G: "d#5",
  H: "d#5 ~@7", I: "b4 ~@7", J: "a5/2", K: "g#5 d#5", L: "g#4@15 ~", M: "a#4 d#5", N: "g#5", O: "g5 d#5", P: "a#4 ~@7",
  Q: "b4",
})).s("gm_string_ensemble_1").gain(0.38).pan(0.4)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@63 [e5 c#5] [b4@15 ~] [e5 c#5] [b4@15 ~] [e5 c#5] [b4@15 ~]>")
  .s("gm_string_ensemble_1").gain(0.16).pan(0.4)

// other · electric guitar clean
const electric_guitar_clean_3 = note("<~@30 A B A B C B C D E@2 F G H I J K ~@13 L M L M N ~@5>".pickRestart({
  A: "~@4 d#4 ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~", B: "[b3,d#4,g#4] ~@15",
  C: "~@6 [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~ [b3,d#4,g#4] ~", D: "[b3,d#4,g#4] ~@7",
  E: "a2@4 c#3@3 ~ e3@3 ~ c#3 ~ e3@2", F: "g#2@3 ~ b2 ~ g#2 ~ d#3@3 ~ b2@2 d#3@2",
  G: "g#2@3 ~ b2@2 g#2@2 d#3@4 c#3@2 d#3@2", H: "a#2@3 ~ c#3@2 a#2 ~ d#3@3 ~ c#3@2 d#3@2",
  I: "c#3@3 ~ c#3@2 e3 ~ g#3@3 ~ e3@2 c#3@2", J: "d#3@4 a#2@2 d#3@2 c#3@3 ~ a#2 ~ c#3 ~", K: "d#3@3 ~@13",
  L: "c#3 ~ c#3@4 e3 ~ f#3 ~ f#3@2 c#3@2 f#3@2", M: "b2 ~ b2@2 d#3@2 f#3@2 g#3@2 f#3@2 d#3@2 f#3@2", N: "c#3 ~@15",
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.2)

// other · electric guitar clean · soft notes
const electric_guitar_clean_4 = note("<~@30 A ~ A ~ B ~ B ~@26 C D E D E D>".pickRestart({
  A: "~@4 [b3,g#4] ~@11", B: "~@4 [b3,d#4,g#4] ~@11", C: "~@2 c#3@4 e3 ~ f#3 ~ f#3@2 c#3@2 f#3@2",
  D: "b2 ~ b2@2 d#3@2 f#3@2 g#3@2 f#3@2 d#3@2 f#3@2", E: "c#3 ~ c#3@4 e3 ~ f#3 ~ f#3@2 c#3@2 f#3@2",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@2 A@13 B A@13 B C B C B D B C E A@7 B A@16 E ~@6>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "~@4 x!4", D: "~@3 x!5", E: "x ~@2 x ~@4",
})).gain(0.64)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@30 A ~ A ~ B ~ A ~@25 C D@6>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~ x ~@2", C: "~ x", D: "x ~@2 x!2 ~@3",
})).gain(0.29)

// drums · snare
const snare = s("sd").struct("<~@2 A@12 B ~ A@12 B ~ C D E D C D E F A@6 G D A@16 H ~@6>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~@2", C: "~@4 x!4", D: "x", E: "~@3 x!5", F: "x ~@5 x!2", G: "~@4 x ~@7 x!4",
  H: "~ x ~@2",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 A ~ B ~ A ~ B C ~@24 D E@6>".pickRestart({
  A: "~@2 x!2 ~@4", B: "~ x ~@2", C: "~@5 x ~@2", D: "~@3 x", E: "~ x ~ x",
})).gain(0.29)

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

// drums · hihat · soft notes
// … 63 more lines

More by Celentano