Strudelify

Io ti cerchero

Jovanotti

KeyA majorTempo85 bpm
0:00/0:00
// Io ti cerchero — Jovanotti
// 85 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 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · fretless bass
const bass = note(`<
  ~@10 A@25 B C D E F G H A@16 I J D E K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG@2 AH@2 AI AJ AG@2 ~@5
>`.pickRestart({
  A: "a1!2 ~@4 b1 a1 ~@4 e1@2 ~@2", B: "~@2 g1 ~@2 g1 ~@2 g1@5 ~ g2 d2", C: "c2@5 ~@2 g1 c2 ~ c2@5 c2",
  D: "g2@7 g2 f2@7 g1", E: "c2@7 g1 c2 ~ c2@6", F: "f1@6 ~ f1 g1@2 g#1@2 g1@2 f1@2", G: "c2@6 ~ g1 c2 ~ c2@4 ~ c2",
  H: "f1@11 ~ e2 d2 c2@2", I: "~@2 g1 ~@2 g1 ~@2 g1@6 ~ g1", J: "c2@7 g1 c2 ~ c2@5 c2", K: "g2@8 f2@7 g1",
  L: "c2@6 ~ g1 c2 ~ c2@3 g1 c2 g1", M: "f1@6 ~ f1!2 ~ f1@6", N: "a1@5 e2 a2!2 b2@2 a2@3 e2 d#2 [c2,c#2,d2]", O: "a1!2",
  P: "d2@3 d2 ~@5 d2 ~ a1 d2 ~ d2 e2", Q: "f2@3 f2 ~@5 f2 ~@2 f2@2 ~ f2", R: "c2@3 c2!2 ~@4 c2 ~@2 c2 ~ c2@2",
  S: "a1@3 a1 a1@2 ~ a1 a2@2 a1 a2@3 f2 e2", T: "d2@3 d2 ~@6 d2 ~@2 e2 ~@2",
  U: "f2@3 f2 ~@2 c2 ~ g2@4 f2@4, ~@8 f2 ~@7", V: "c2@3 c2 ~@6 c2 ~@2 c2 ~@2", W: "f1@3 f1 ~@3 f1 f1@4 g1@4",
  X: "c2@3 c2 ~@6 e2@2 g2 e2@2 ~", Y: "g1@3 g1 ~@3 g1 f1@4 g1@4", Z: "a1@3 a1 ~@3 e2 a2@4 e2@4",
  AA: "f1@3 f1 ~@4 f1 ~ f1@4 g1@2", AB: "a1@3 a1 ~@2 e2 g#2 [a2,a#2,b2] a2@3 e2@4", AC: "f1@6 ~ f1!2 ~ f1@5 ~",
  AD: "a1@7 a1!2 ~ a1@5 ~", AE: "g1@7 ~ d2 ~ d2@6", AF: "d#2@6 a2 ~ [a2,b2] a2 ~ b2 c#3@3 ~, ~@12 b2 ~@3",
  AG: "[d2@31 ~]/2", AH: "d2/2", AI: "f#1@7 ~", AJ: "g1",
})).s("gm_fretless_bass").gain(0.48)

// chords · piano
const piano = note(`<
  ~ A@7 B@2 C@2 D E F G H G I C@2 D E C@2 D E C@2 D E F G H J@2 K L@2 M N O@5 C@2 D E C@2 D E F G H J@2 K L@2 M N P Q R
  S@3 T@7 U@4 V@2 W X Y ~@3 Z AA@3 ~@4
>`.pickRestart({
  A: "[~@16 [e3,g#3,c#4]@15 ~ [f3,b3,e4]@15 ~ [e3,g#3,c#4]@15 ~ [f3,b3,e4]@15 ~ [e3,g#3,c#4]@15 ~ [f3,b3,e4]@15 a2, ~@15 a2@16 a2@15 ~ a2@15 ~ a2@15 ~ a2@16 a2@15 ~@2]/7", // C#m E C#m E C#m E
  B: "[[e3,g#3,c#4]@15 ~ [f3,b3,e4]@16, ~@15 a2@17]/2", C: "[[a2,e3,g#3,c#4]@15 ~ [f#3,a3,d4]@15 ~, ~@15 b2@16 ~]/2",
  D: "[c#3,g#3,b3,e4]@15 ~", E: "[a2,g#3,c#4,e4]", F: "[a2,f3], [b3,e4]@7 ~", G: "[a2,e3,g#3,c#4]@15 ~",
  H: "[a2,f3,b3,e4]@15 ~", I: "[e3,a3,d4,f#4]", J: "[[a2,e3,g#3,c#4]@15 ~ [g2,f3,a3,c4,e4]@15 ~, ~@15 a2@2 ~@15]/2",
  K: "[c3,b3,e4,g4]@15 ~", L: "[[g#2,c4,f4]@15 ~ [b3,e4,g4]@16, ~@15 c3@16 ~]/2", M: "[g#2,c4,f4]@15 ~",
  N: "[g2,b3,e4,g4]", // Em
  O: "[[f2,a3,c4,e4]@15 ~ [e3,g#3,c#4]@15 ~ e4@7 ~ d4@7 ~ g#3@2 ~@4 c#4@9 ~ [b3,e4]@16, ~@15 a2@16 a2@15 ~ a2@15 ~ [a2,f3]@16 ~, ~@32 [f3,b3]@15 ~ e3@15 ~@17, ~@48 c#4@3 e4@7 ~@22, ~@50 g#3@13 ~@17]/5", // Fmaj7 C#m E5 Dm Fdim
  P: "[f2,a3,c4,e4]", Q: "~ g#4@6 ~, a2@15 ~, ~ [c#4,e4]@14 ~", R: "[a2,g3,b3,d4]@8 [a2,g3,a#3,c#4]@7 ~",
  S: "[[d3,a3,c4,f4]@15 ~ [g#3,f4,g4]@15 ~ [g3,b3,e4]@15 ~, ~@15 c3@15 ~ c3@15 ~@2]/3", // Dm7 C# Em
  T: "[[e3,c#4,g4,a#4]@8 [c#4,e4,g4,a#4]@7 ~ [a3,c4,g4]@15 ~ [g#3,f4,g4]@15 ~ [g3,b3,e4]@15 ~ [c4,e4,a4]@11 ~@5 [c3,g3,b3,e4]@15 ~ [c4,e4,a4]@15 ~, ~@15 e3@16 c3@15 ~ c3@15 ~ f3@11 ~ f3@3 e4@2 ~@32, ~@76 a3@3 g4@2 ~@31, ~@77 c4@3 ~@15 f3@15 ~@2]/7", // Edim C#dim Am7 C# Em Am Cmaj7 Am
  U: "[[g#3,c#4,e4]@12 ~@10 d4@8 ~@2 e4@12 ~@10 d4@9 ~, a2@14 c#4@2 [f3,c4]@15 ~@14 a3@2 e4@7 ~@10, ~@12 g#3@3 e4@7 ~@24 c#4@2 ~@16, ~@13 a3@17 ~ [g#3,a3,c#4]@13 g#3@4 [f3,a3,c4]@15 ~]/4", // C#m F5 Amaj7 F
  V: "[[a2,g#3,c#4,e4]@15 ~ [g3,b3,d4]@12 [g3,b3,e4]@2 ~@2, ~@15 g2@12 ~@5]/2", W: "a4@12 a4@3 ~, [c#4,d#4,f4]",
  X: "[d3,c#4,f#4,a4]@15 ~", Y: "[d3,a#3,g4,a4]", Z: "~@7 a3",
  AA: "[~@6 f#4@9 ~ [f#4,a4]@32, d2@4 c#4 e4@32 ~@11, ~ a2@14 [c#4,d4]@32 ~, ~ e3@16 ~@7, ~@3 a3@32 ~@13]/3", // F#m Dmaj7
})).s("gm_piano").gain(0.26).pan(0.4)

// chords · epiano1
const epiano1 = note(`<
  ~@2 A B A B A B A B A C D E F A G A H A C D E A C D E A C D E F A G A I J K L K L M A B A B A C D E A C D E F A G A I
  J K L K L M N O P Q R S T U R V W X Y Z Y Z AA AB AC AD AE AF AG@2 AH@4 ~@4
>`.pickRestart({
  A: "[b3,c#4,e4]@15 ~", B: "[f3,d4,e4]@15 ~", C: "[a3,b3,d4]@15 ~", D: "[g#3,c#4,e4]@15 ~", E: "[b3,c#4,e4]",
  F: "[a3,d4,e4]@15 ~", G: "[a3,d4,e4]", H: "[a3,d4,f#4]", I: "[f3,a3,e4]", J: "[b3,c4,e4]@7 ~", K: "[g#3,c4,f4]@15 ~",
  L: "[b3,c4,e4]@15 ~", M: "[f3,c4,e4]@7 ~", N: "[a3,b3,c#4,e4]@15 ~", O: "[e3,b3,d4] [e3,g3,c#4]",
  P: "[a4,d5,e5]@15 ~", Q: "[a4,c5,f5]@15 ~", R: "[b4,c5,e5]@15 ~", S: "[c#5,e5,g5] [e5,g5,a#5]", T: "[a3,c5,e5,g5]",
  U: "[g#3,c5,d#5,g5]@15 ~", V: "[e5,f5,a5]", W: "[d5,e5,g5]@15 ~", X: "[e5,f5,a5]@15 ~", Y: "[a4,c#5,e5]@15 ~",
  Z: "[f4,c5,e5]@15 ~", AA: "[a4,c#5,e5]@7 ~", AB: "[g4,b4,d5]@15 ~", AC: "[c#5,f5,a5]", AD: "[c#5,d5,f#5,a5]@15 ~",
  AE: "[a#4,d5,g5]", AF: "[c#5,d5,f#5,a5]", AG: "[[a#4,d5,g5]@15 ~ [e5,f#5,a5]@15 ~, ~@15 c#5@15 ~@2]/2",
  AH: "[[g4,b4,d5,f#5]@15 ~ [c#5,d5,f#5]@15 ~ [f#5,a5]@26 ~@6, ~@15 a4@15 ~ [c#5,d5]@27 ~@6]/4", // Gmaj7 Dmaj7 F#m Dmaj7
})).s("gm_epiano1").gain(0.26).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@11 A@7 B C@8 D@8 E@8 F G@2 H@8 I@4 E@8 J K@2 L@4 M@3 N@7 O ~@13>".pickRestart({
  A: "[[d5,a5] b4 g#4 [f4,d5] [g#4,c#5] [f4,d5] [g#4,c#5], e5, ~ c#5@2 ~@4]/7", B: "[a4,d5,f#5]",
  C: "[[c#5,g#5] [d5,a5] b4 ~@2 [d5,a5] b4 g#5, e5 e5, ~@2 c#5@3 ~ c#5@2, ~@3 g#5@2 ~@3]/8", // C#5 D5
  D: "[~ [d5,a5] b4 g#4 [f4,d5] [g#4,c#5] [f4,d5] [g#4,c#5], e5, ~ c#5 ~@2]/8", // D5 Dm C#5 Dm C#5
  E: "[a4@2 b4@2 ~ f5 b4@2 ~ f5 [b4,g5]@2 a4@2 [c#5,g#5]@2, c5@7 ~, ~@2 g5@3 ~ g5@3 ~@3 e5@4, ~@2 g#4 ~ g#4 ~@3]/8", // Em C#5
  F: "~ d5, [a4,b4]", G: "[[c#5,g#5]@2 ~ d5, e5@3 ~, ~ [a4,b4]]/2",
  H: "[[c#5,g#5] [d5,a5] b4 ~@2 [d5,a5] b4 g#4, e5 e5, ~@2 c#5@3 ~ c#5@2, ~@3 g#5@2 ~@3]/8", // C#5 D5
  I: "[[f4,d5] [g#4,c#5] [f4,d5] [g#4,c#5], e5]/4", J: "[b4,d5] [a4,c#5], g5", K: "[[e5,f5] [g#4,d#5], c5]/2",
  L: "[[b4,d5] [g4,c#5] d5 [c5,d#5], e5@3 ~, ~ g5]/4", M: "[[b4,d5] [f4,c5] [b4,d5], e5]/3",
  N: "[[c5,f5] g#4 [f4,c5] [g#4,a4] [f4,c5] g#4 [b4,d5], a4@2 ~@3 a4@2, ~ e5@5 ~]/7", O: "[c#5,f5,a5]",
})).s("gm_string_ensemble_1").gain(0.1)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A B A C D E D C ~@3 F ~@4 G ~@3 H I ~@16 J@2 A K A L ~ M ~@3 N ~@11 O@2 D P Q R S T U V W X Y Z AA AB AC AD AE ~
  AF ~@13
>`.pickRestart({
  A: "~@2 a3 ~ a3 ~@2 a3 ~@8", B: "~ a3!2 ~ a3 ~@2 a3 ~@2 b3@5 ~", C: "~ a3!2 ~ a3 ~@2 a3 ~@2 a4@5 ~",
  D: "~ a3!2 ~ a3 ~@2 a3 ~@8", E: "~ e3 a3 ~ a3 ~@2 a3 ~@2 b3@5 ~",
  F: "~@3 c#4, ~@6 e4@7 ~@3, ~@7 c#4@4 ~@5, ~@9 g#3@6 ~", G: "~@11 c4@5, ~@7 e4@9, ~@9 a3@7",
  H: "~@7 [c#4,e4] ~ [c#4,e4] ~@2 [c#4,e4]@3 [a3,a#3,b3,c4]", I: "g#3 ~@15",
  J: "[~@7 e4 ~ g4 ~ f4 ~ e4 ~@2 [a3,c4]@16, ~@15 f3@16 ~]/2", K: "~ a3!2 ~ a3 ~@2 a3 ~@3 b3 ~ b3@2 ~",
  L: "~ a3!2 ~ a3 ~@2 a3 ~@3 b3@4 ~", M: "~@7 [d4,a4] ~ [d4,g#4] ~ [d4,f#4]@2 d4 ~@2",
  N: "~@7 [f#4,d5] ~ [f#4,d5] ~ [f#4,c#5]@2 [f#4,a4] ~@2", // D F#5 F#m
  O: "[~@4 c4 d4 ~ e4 ~ d4 ~ c4@2 g3@2 ~ [a3,c4]@16, ~@15 f3@16 ~]/2", // Am
  P: "~ g4 g#4 [b3,c4,c#4,a4,a#4] a#4@2 [c#4,d4,d#4,e4,b4,c5,c#5] c#5@2 [f4,d5,d#5] e5@4 ~@2, a#3@3 ~@6 g4@5 ~@2", // Dm
  Q: "e4 f4 e4 d4 e4@2 f4 d4@5 ~ a3 d4 ~", R: "e4 f4 ~ e4 f4 ~ g4 ~ g4@5 f4 ~ g4",
  S: "e4 f4 e4@3 ~ d4 c4 b3 c4 b3@3 ~ a3 g3", T: "e3 f3 e3@3 e3 f3 g3 a#3 c4 b3 a#3 a3 g3 f3 e3",
  U: "f3@2 g3 d3 e3@2 d3 e3@2 f3 a3 c4 [d4,e4] ~ d4 ~", V: "d#4@5 ~ d4 c4 [d4,d#4] ~ d4 ~ c4 ~ d4 ~, d4 ~@15",
  W: "e4@3 f4 e4 ~ e4 d4 ~ d4 ~ c4 b3 c4 b3 g3, d4 ~@15", X: "e3@7 d4 e4 d4 ~ c4 d4@3 a3",
  Y: "d4 e4 d4 c4 d4 e4 d4@2 g3 [a3,c4] d4 [d4,e4] ~ d4@3", Z: "~@5 e4 d4 c4 b3 c4 b3 g3 e3 ~ c4@2, ~@13 f3@2 ~",
  AA: "~@5 d3 c#3 a3@5 ~ g#3 ~ f#3", AB: "g#3 a3 ~ b3 ~ c4 ~ d4 ~ e4 ~ f4 ~ e4 g4 f4",
  AC: "e4 f#4 ~ e4 ~ c#4 e4 c#4@3 ~@5 c4", AD: "d4 c4 d4 e4@2 ~ e4@8 d4 e4", AE: "c#4@13 ~@3",
  AF: "~@6 a3 ~ b3 c#4 e4 ~ f#4 ~ a4 ~",
})).s("gm_electric_guitar_jazz").gain(0.31).pan(0.4)

// other · trumpet
const trumpet = note("<~@35 A@5 B C ~@16 A@5 B C ~@32>".pickRestart({
  A: "[~@8 b3 c4 ~ d4 ~ g3 g4@26 f4 e4 ~ c4 ~ d4 g3@33 ~]/5", B: "g3", C: "a3",
})).s("gm_trumpet").gain(0.36).pan(0.3)

// drums · kick
const kick = s("bd").struct("x ~@2 x ~@3 x").gain(0.62)

// drums · rim
const rim = s("rim").struct("~ x ~ x").gain(0.44)

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

// drums · hihat
const hihat = s("hh").struct("<[x!6 ~ x!7 ~ x]!96 [x!6 ~ x!7 ~@2]>").gain(0.19)

// drums · open hat
const open_hat = s("oh").struct("~@3 x ~@3 x").gain(0.31)

// drums · crash
const crash = s("cr").struct("<~@67 x ~@16 x ~@12>").gain(0.31)

// drums · congas
const congas = s("conga:33").struct("<~@2 [x!3 ~@3 x!2 ~@8]!95>").gain(0.8)

// drums · triangle
const triangle = s("triangles:30").struct("x!4").gain(2.17)

// drums · shaker
const shaker = s("sh").struct("x!3 ~ x!3 ~").gain(0.25)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@36 [~@3 x ~@7 x ~@4]!6 ~@17 [~@3 x ~@7 x ~@4]!25 ~@13>").gain(0.12)

stack(
  bass, piano, epiano1, string_ensemble_1, electric_guitar_jazz, trumpet, kick, rim, snare, hihat, open_hat, crash,
  congas, triangle, shaker, shaker_soft
)

More by Jovanotti