Strudelify

Io sono come te

Biagio Antonacci

KeyB majorTempo124 bpm
0:00/0:00
// Io sono come te — Biagio Antonacci
// 124 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(124/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 · electric guitar clean
const electric_guitar_clean = note(`<
  ~@9 A@2 ~ B C@2 D ~@9 E@2 ~@2 F@2 G@2 ~@14 H ~@3 I ~@3 H ~@15 J@2 ~@18 J@2 ~@2 K ~@3 H ~@37
>`.pickRestart({
  A: "[~@12 b4@15 ~@5, ~@10 f#4@17 ~@5]/2", B: "~@8 a#4@3 f#4@3 d#4@2",
  C: "[~ [f#4,a#4]@3 b4@2 f#4@16 ~@4 c#5@3 ~ b4@2]/2", D: "~ b4@3 ~@12", E: "[~@3 f#4@25 ~@4, a#4@29 ~@3]/2",
  F: "[~@6 f#4@21 ~@5, ~@3 d#4@23 ~@6]/2", G: "[~@7 f#4@23 ~@2, ~ b3@29 ~@2]/2", H: "[f#3,g#3,b3,c#4,e4,f#4]",
  I: "[f#3,g#3,b3,c#4,e4,f#4]@13 ~@3", J: "[[b3,c#4,e4,f#4]@29 ~@3]/2", K: "[b3,c#4,e4,f#4]@7 ~, [f#3,g#3]@3 ~",
})).s("gm_electric_guitar_clean").gain(0.49)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@13 A@2 B@2 ~@8 C@2 ~ D E@2 F@2 ~@104>".pickRestart({
  A: "[~@2 [f#4,g#4] [g#4,b4]@8 ~@5]/2", B: "[~ a#4@5 ~@2, ~ f#4@22 ~@9]/2", C: "[~@7 d#4@22 ~@3]/2",
  D: "~@6 c#4@7 ~@3, ~ b3@6 ~, ~@2 e4@5 ~", E: "[b3@7 ~]/2", F: "[~@6 e4@23 ~@3, ~@3 g#4@26 ~@3]/2",
})).s("gm_electric_guitar_clean").gain(0.31)

// chords · epiano2
const epiano2 = note(`<
  ~@59 A@2 B@2 C@2 D@2 E@2 F@2 ~@12 A@2 B@2 C@2 D@2 ~@12 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2
  ~@2
>`.pickRestart({
  A: "[[f#4,a#4,b4,d#5]@21 ~@11]/2", B: "[[b4,d#5,e5,g#5]@29 ~@3]/2", C: "[[f#4,a#4,b4,d#5]@7 ~]/2",
  D: "[[b4,d#5,e5,g#5]@25 ~@7]/2", E: "[[f#4,a#4,b4,d#5]@13 ~@3]/2", F: "[[b4,d#5,e5,g#5]@13 ~@3]/2",
})).s("gm_epiano2").gain(0.36)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A@6 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K L@7 M@2 H@2 I@2 J@2 ~ N O@2 P@2 Q@2 R@6 Q@2 S@2 T@2 U V W@2 U X Y@2 Z AA
  AB@2 AC@2 G@2 H@2 I@2 J@2 T@2 U V W@2 U X AB@2 AD@2 AE@4 Q@2 S@2 T@2 U V W@2 U X T@2 U V W@2 U X T@2 U V W@2 U X T@2 U
  V W@2 U X AF@2
>`.pickRestart({
  A: "[~@16 [a#3,b3,d#4]@16 f#4@5 ~@5 a#3@6, f#4@17 ~@20 e4@11, [b3,c#4]@16 ~@16 b3@9 ~@7, ~@8 a#2@9 ~@15 [f#2,d#3,g#3]@16]/6", // Bmaj7 Bsus2 G#7
  B: "[c#4@8 b3@7 ~ [g#3,b3]@15 ~, f#4@31 ~, g#3@15 ~@17]/2", C: "[f#2,f#3,g#3,b3,c#4,e4,f#4]/2",
  D: "[[g#2,a#3,b3,f#4]@31 ~]/2", E: "[[f#2,f#3,g#3,b3,c#4,e4,f#4]@31 ~]/2", F: "[[g#2,f#3,c#4]@31 ~]/2",
  G: "[[f#2,f#4]@15 ~, g#3, e4@7 ~]/2", H: "[[g#2,g#3,d#4]@7 ~, a#3@25 ~@7]/2", I: "[[f#2,f#3]@31 ~, [b3,e4]@29 ~@3]/2",
  J: "[[g#2,a#3]@29 ~@3]/2", K: "[b2,d#4], [a#3,f#4]@7 ~",
  L: "[~@4 g#4@11 ~ [c#3,c#4]@32 b2@32 [f#2,e4,f#4]@28 ~@4, b3@27 ~, [f#2,e4]@15 ~ e4@28 ~@4 f#4@29 ~@35]/7", // C# F#7
  M: "[[f#2,g#3,f#4]@31 ~, e4@7 ~]/2", N: "f#2@15 ~", O: "[c#4@31 ~]/2", P: "[a#3@31 ~]/2",
  Q: "[[c#4,e4,f#4]@7 ~, [f#2,b3]]/2", // F#7 B5
  R: "[[c#4,f#4]@29 ~@3 [c#4,e4,f#4]@29 ~@3 [g#2,a#3,c#4,d#4,f#4]@30 ~@2, b3@47 ~, g#2 f#2 ~, a#3@9 ~@23]/6", // F#5 F#7 D#m7
  S: "[[g#2,b3], [c#4,f#4]@29 ~@3, a#3@27 ~@5]/2", // G#m F#5
  T: "[[f#3,a#3]@6 [g#3,b3]@6 c#4@4 f#3@6 ~ [g#3,b3]@5 [a#3,c#4]@3 ~, ~@6 a#3@5 ~@5]/2", // F# G#m A#m
  U: "[b3,d#4]@3 [c#4,e4]@3 [d#4,f#4]@2", V: "~ [b3,d#4]@5 [a#3,c#4]@6 [g#3,b3]@3 ~",
  W: "[[f#3,a#3]@6 [g#3,b3]@6 c#4@4 f#3@6 [g#3,b3]@6 [a#3,c#4]@3 ~, ~@6 a#3@5 ~@5]/2", // F# G#m A#m
  X: "~ b3@5 [a#3,c#4]@6 [g#3,b3]@3 ~, d#4@3 ~@5", Y: "[f#4,a#4]@3 [g#4,b4]@3 [a#4,c#5]@2",
  Z: "[b4,d#5]@3 [c#5,e5]@3 [d#5,f#5]@2", AA: "~ b4@5 [a#4,c#5]@5 ~ [g#4,b4]@4, d#5@3 ~@5",
  AB: "[[f#2,f#3,g#3,b3]@31 ~, [e4,f#4]@29 ~@3]/2", AC: "[[a#3,b3,d#4,f#4]@31 ~]/2",
  AD: "[[b3,d#4,f#4]@31 ~, a#3@29 ~@3]/2", AE: "[[c#4,e4,f#4]@29 ~@3 [g#2,a#3,c#4,d#4,f#4]@30 ~@2, b3@31 ~, f#2 ~]/4",
  AF: "[[g#2,a#3,b3,d#4]@7 ~]/2", // G#m
})).s("gm_string_ensemble_1").gain(0.26).pan(0.2)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@3 A@4 ~@4 B@2 ~@2 C@2 D@2 E@6 ~@4 F@2 G@2 D@2 H@6 I J@3 K@2 ~@2 F@2 ~@6 F@2 ~@16 D@2 H@6 ~@18 F@2 ~@32 L@2
>`.pickRestart({
  A: "[~ f#4@15 ~@10 d#4@6, c#4 f#3]/4", B: "[[c#4,d#4]@31 ~]/2", C: "[[g#3,a#3,b3,d#4,f#4]@31 ~]/2",
  D: "[[f#3,b3,c#4]@31 ~]/2", // F#sus4
  E: "[f#4@15 ~@19 d#4@12 ~@2, c#4@63 ~ c#4@29 ~@3, ~@32 f#4@30 ~@4 f#4@27 ~@3, ~@38 g#3@55 ~@3]/6",
  F: "[d#4@29 ~@3]/2", G: "[~@4 f#3@3 ~, ~ g#4@6 ~]/2",
  H: "[f#4@15 ~@19 d#4@12 ~@2, c#4@63 ~ c#4@28 ~@4, ~@32 f#4@30 ~@4 f#4@27 ~@3, ~@38 g#3@55 ~@3]/6",
  I: "[b2,d#4], [a#3,f#4]@7 ~", J: "[~@4 g#4@11 ~@3 e4@26 ~@4, b3, e4@7 ~ c#3@16]/3",
  K: "[~@2 f#4@29 ~, [b3,c#4,d#4]@31 ~]/2", L: "[[c#4,f#4]@7 ~]/2",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.2)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A@2 ~ B C@4 D@4 E@2 ~@2 F@2 ~@2 G@2 ~@3 H@3 ~@2 I@2 F@2 ~@2 G@2 ~@3 H@3 J@2 ~@12 K@2 L M K@2 N O P@2 Q R ~@4 F@2 ~@2
  G@2 ~@2 K@2 L S K@2 N O ~@12 K@2 L S K T N O K@2 L S K T N O K@2 L S K T N O K@2 L S K T N O U@2
>`.pickRestart({
  A: "[~@17 a#2@15, b3]/2", B: "e4 f#4",
  C: "[[c#4,f#4]@8 ~@4 [a#3,d#4,g#4]@4 a#3@5 b3@2 a#3 g#3@7 ~, [f#2,d#3,f#3,g#3]@33 ~@31, b3@23 ~@9 [c#4,d#4]@30 ~@2, ~@16 e4@17 ~@31]/4", // F#5 D#sus4 G#7 C#sus2
  D: "[f#4@15 ~ e4@8 ~@8 [a#3,c#4]@29 ~@3, b3@61 ~@3, ~@24 d#4@37 ~@3]/4", E: "[[b3,e4,f#4]@31 ~]/2", F: "[f#3@31 ~]/2",
  G: "[[f#3,e4]@31 ~]/2", H: "[~@16 c#4@31 ~, e4@15 ~]/3", I: "[f#4@29 ~@3]/2", J: "[f#4@7 ~]/2", K: "a#3@3 b3@3 c#4@2",
  L: "d#4@3 e4@3 f#4@2", M: "d#4@6 c#4@5 ~ b3@4", N: "d#4@6 e4@5 ~ f#4@4", O: "d#4@6 c#4@5 ~ b3@3 ~",
  P: "a#4@3 b4@3 c#5@2", Q: "d#5@6 e5@5 ~ f#5@4", R: "d#5@6 c#5@6 b4@3 ~", S: "d#4@5 ~ c#4@5 ~ b3@4",
  T: "a#3@6 b3@5 ~ c#4@4", U: "[[b3,d#4,f#4]@29 ~@3]/2",
})).s("gm_string_ensemble_2").gain(0.34).pan(0.8)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note(`<
  ~ A@4 ~@2 B@2 ~@6 C@2 D@2 E@6 F G H@2 I@4 D@2 J@6 F G H@2 K@2 ~@28 D@2 J@6 ~@54
>`.pickRestart({
  A: "[c#4 [g#3,a#3,b3], f#4@3 ~, ~@2 d#4 ~]/4", B: "[[d#3,f#3]@15 ~, g#3@11 ~@21]/2", C: "[[a#3,c#4,d#4,f#4]@31 ~]/2",
  D: "[[b3,f#4]@31 ~, e4@29 ~@3]/2", E: "[[g#3,d#4]@32 ~@32 [g#3,b3,d#4]@31 ~, f#4@47 ~, b3@21 ~@11]/6",
  F: "[b2,d#4], a#3@7 ~", G: "[f#2,b3]", H: "[c#3@7 ~]/2", I: "[b2@8 ~@5 f#3@2 ~, b3@15 ~, d#4@15 ~ [f#2,e4]@14 ~@2]/4",
  J: "[[g#3,d#4]@16 ~@16 [g#3,b3,d#4]@15 ~, f#4@47 ~, b3@21 ~@11]/6", K: "[[b3,d#4]@7 ~]/2",
})).s("gm_string_ensemble_2").gain(0.19).pan(0.8)

// bass · electric bass finger
const bass = note(`<
  ~@32 A B C D E F G H I J K L M K@2 N O D E P G H Q B C D E R K@2 S T U K V K W X Y Z AA AB ~ N C D E P G H I R K@2 S
  AC U K V Z AA AB ~ P G H Q B AD D E R K@2 S AC U K V R K@2 S AC U K V R K@2 S AC U K V R K@2 S T U K V AE@2
>`.pickRestart({
  A: "~@3 g#2", B: "f#2@2 ~@5 d#2 f#2 ~ g#2 ~@5", C: "~@7 d#2 f#2 ~ g#2 ~ f#2 ~@3", D: "~@7 c#2 e2 ~ f#2@2 ~@4",
  E: "~@7 c#2 d#2@2 f#2@2 g#2@2 f#2 ~", F: "f#2 ~@6 d#2 f#2@2 g#2@2 ~@4", G: "~@7 d#2 f#2@2 g#2@2 f#2 ~ c#2 ~",
  H: "~@7 c#2 e2@2 f#2@2 ~@4", I: "~@7 c#2 e2@2 f#2@2 g#2@2 d#2 ~", J: "g#2@2 ~@5 d#2 f#2@2 g#2 ~@5",
  K: "~@7 d#2 f#2@2 g#2@2 ~@4", L: "~@7 c#2 d#2@2 [f2,f#2] ~@5", M: "~@7 c#2 d#2@2 f#2@2 ~@4",
  N: "f#2@2 ~@5 d#2 f#2@2 g#2 ~@5", O: "~@7 d#2 f#2@2 g#2 ~ f#2 ~@3", P: "f#2@2 ~@5 d#2 f#2@2 g#2@2 ~@4",
  Q: "~@4 [c#3,c#4]@4 [c#3,c#4]@3 ~ a#2@2 [g#2,a#2] ~", R: "g#2@2 ~@5 d#2 f#2@2 g#2@2 ~@4",
  S: "~@8 f#2@2 g#2@2 f#2 ~ d#2 ~, ~@8 d#2 ~@7", T: "g#2 ~@7 f#2@2 g#2 ~@5, ~@8 d#2 ~@7",
  U: "~@7 d#2 f#2 ~ g#2 ~ g#2 f#2 d#2 ~", V: "~@7 d#2 f#2@2 g#2 ~ g#2 f#2 d#2 ~", W: "~@7 d#2 f#2@2 g#2@2 f#2@2 d#2 ~",
  X: "~@4 f#2 g#2 ~@2, ~@8 d#2 ~@7", Y: "~@7 d#2 f#2@2 g#2@2 f#2 ~ d#2 ~",
  Z: "~@4 [f#3,f#4]@7 ~ [c#3,c#4]@3 ~, ~@12 d#3 ~@3", AA: "[d3,d4]@4 [d#3,d#4]@2 [b2,b3]@5 ~ [g#2,g#3]@4, ~@12 a#2 ~@3",
  AB: "[g#2,g#3]@7 ~", AC: "g#2 ~@7 [d#2,f#2] ~ g#2 ~@5", AD: "~@7 d#2 f#2 ~ g#2 ~ f#2@2 ~@2", AE: "[g#2@27 ~@5]/2",
})).s("gm_electric_bass_finger").gain(0.75)

// drums · kick
const kick = s("bd").struct(`<
  A ~ B C D E B C F G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H
  G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G H G
  H G H G H G H G H G H G H G H G H E ~
>`.pickRestart({
  A: "~@10 x!4 ~@2", B: "~@9 x ~ x!2 ~@3", C: "~@7 x ~@7 x", D: "~@5 x ~@7 x ~ x", E: "x", F: "x ~@4 x ~ x ~@5 x ~ x",
  G: "x ~@2 x ~@3 x!2 ~@7", H: "x ~@2 x ~@4 x ~ x ~@5",
})).gain(0.65)

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

// drums · low tom
const low_tom = s("lt").struct("<[~@8 x!2 ~@6] ~@7 [~@7 x] ~@128>").gain(0.65)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 [~@11 x!2 ~@3] ~@128>").gain(0.65)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [~@4 x ~@2 x ~@8] ~@126 [~@7 x ~@2 x!2 ~ x ~ x] [x!2 ~ x!2 ~@3 x ~ x ~ x ~@3]>")
  .gain(0.36)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@38 B ~@7 B ~@3 B ~@11 B ~@11 B ~@7 B ~@3 B ~@3 B ~@3 B ~@7 B ~@7 B ~@7 B ~@7 B ~
>`.pickRestart({
  A: "~ x", B: "x",
})).gain(0.65)

// drums · ride
const ride = s("rd").struct("<~ A B C D A B C E ~@126 F G>".pickRestart({
  A: "~ x!3 ~@2 x!2 ~ x!2 ~@2 x ~ x", B: "~ x!2 ~@2 x!3 ~ x!2 ~ x!2 ~ x", C: "x ~ x!6 ~@2 x ~@2 x!3",
  D: "~ x!2 ~ x!2 ~ x ~ x!7", E: "~ x!2 ~@2 x ~@3 x!7", F: "~@9 x!2 ~ x!4", G: "~ x!5 ~ x!2 ~ x!2 ~ x ~@2",
})).gain(0.44)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@2 A B ~@2 A B ~@127 C D>".pickRestart({
  A: "~@7 x", B: "~ x", C: "~@11 x ~@2 x!2", D: "~@2 x ~@4 x ~ x ~@6",
})).gain(0.29)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C B A B A B A B A B A B C B A B A B A B A
  B A B C B A B A B A B A B A B A B A B A B A B C B A B A B A B A B A B C B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B C B ~@2
>`.pickRestart({
  A: "~@4 x ~@5 x ~@4 x", B: "~@7 x ~ x ~ x ~@4", C: "x ~@3 x ~@5 x ~@4 x",
})).gain(0.65)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@9 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C B A B A B A B C B A B C B A B A B A
  B A B A B C B A B A B A B A B A B C B A B A B A B C B A B C B A B C B A B C B A B A B A B C B A B A B A B C B A B A B
  A B C B A B A B A B ~@2
>`.pickRestart({
  A: "x ~@3 x ~@5 x ~@4 x", B: "~@7 x ~ x ~ x ~@4", C: "~@4 x ~@5 x ~@4 x",
})).gain(0.65)

stack(
  electric_guitar_clean, electric_guitar_clean_2, epiano2, string_ensemble_1, string_ensemble_1_soft, string_ensemble_2,
  string_ensemble_2_soft, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride, ride_soft, tambourine,
  shaker
)

More by Biagio Antonacci