Strudelify

E ritorno da te

Laura Pausini

KeyF majorTempo93 bpm
0:00/0:00
// E ritorno da te — Laura Pausini
// 93 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 94 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, guitar program 30.
setcpm(93/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 · guitar harmonics
const guitar_harmonics = note("<~@47 A B@2 C D ~@2 E F ~@38>".pickRestart({
  A: "d3@13 e3 ~ f3", B: "[a3@7 ~]/2", C: "~@2 f3@3 e3@3", D: "d3", E: "~@2 a3 d4@2 e4@3", F: "d4@13 ~@3",
})).s("gm_guitar_harmonics").gain(0.16).pan(0.9)

// bass · electric bass finger
const bass = note(`<
  ~@2 A B A B A B A C A C D@2 E@2 D F G H ~@4 I J K L I J M N I J O P Q R ~ S T S U S U S U S U S U V W X Y V Z AA AB AC
  AD AE AF AG AD AE AF AG AD AH AI AJ ~ AK AL AM AN AK AL AM AN AK AL AO AP AQ ~@8
>`.pickRestart({
  A: "c2@7 ~ bb1 ~ bb1@6", B: "~@8 bb1 ~ bb1@6", C: "~@8 bb1 ~ bb1@3 c2 f2@2", D: "f1@7 ~ f1 ~ f1@5 ~",
  E: "[c2@7 ~ c2 ~ c2@3 ~ c2@8 ~@2 bb1 ~ bb1@2 c2@3 ~]/2", F: "f1@5 ~ f1 ~ f1 ~ f1@2 c2@4", G: "g1@8 g1 ~ g1@6",
  H: "g1@3 ~", I: "g1", J: "c2", K: "d1", L: "d1@8 f1@7 ~", M: "d1@6 a1 c2", N: "d2@3 f1@3 d1@2", O: "f1 e1",
  P: "d1@7 f1", Q: "g1@7 f1", R: "bb1", S: "d1@8 c2 ~ c2@6", T: "bb1@8 c2 ~ c2@6", U: "bb1@8 c2 ~ c2@3 ~ c2@2",
  V: "g2@7 d2 f2@2 g2@4 f2@2", W: "g2@7 d2 f2@2 g2@4 c2 db2", X: "d2@7 a1 c2@2 d2@4 c2 db2",
  Y: "d2@7 a1 f2@2 e2@2 c2@2 d2@2", Z: "g2@7 d2 f2@2 g2@4 g2@2", AA: "a1@3 a1 a2@3 a1",
  AB: "a2@3 e2@3 a2@3 e2@2 g2 a2@2 e2 a2", AC: "g2@7 d2 f2@2 g2@4 d2@2", AD: "c2@7 g1 c2 ~ c2@3 ~ c2@2",
  AE: "d2@7 a1 c2@2 d2@4 c2@2", AF: "d2@7 a1 c2@2 d2@2 f2 d2 c2@2", AG: "~@7 d2 f2@2 g2@4 d2@2",
  AH: "f2@7 f2 e2@6 ~ e2", AI: "d2@13 ~ d2@2", AJ: "g2@13 ~ g2@2", AK: "bb1@4 ab1 bb1@2 f1",
  AL: "eb1@7 bb0 eb1 ~ eb1@3 ~ eb1@2", AM: "f1@7 c1 eb1@2 f1@4 eb1@2", AN: "f1@7 c1 eb1@2 f1@2 ab1 f1 eb1@2",
  AO: "ab1@7 ab1 g1@6 ~ g1", AP: "f1@13 ~ f1@2", AQ: "bb1@13 ~ bb1@2",
})).s("gm_electric_bass_finger").gain(0.26)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A B A B A B A B A B C D E@2 C F@3 A B G ~ H I J K@2 I J K@2 I L M N ~@2 O@12 P@2 Q R P@2 S ~ H I J K@2 I J K@2 I L
  M N ~ T U V W@2 U V W@2 U X Y Z AA ~@7
>`.pickRestart({
  A: "~ g3!3 ~ g3!3, c3 bb2, ~ d4 ~ d4", B: "~ g3!3 ~ g3!3, ab2 bb2, ~ d4 ~ d4",
  C: "~@7 f3, f2, ~ c3@7, ~@2 f3@3 ab3@3, ~@3 ab3 c4@4", D: "~@7 f3, f2, ~ c3@7, ~ f3!2 ab3, ~@3 ab3@2 c4@3",
  E: "[~@5 c4@2 ~@7 c3@2, c3@7 c3@7 ~@2, ~ g3@2 g3@3 ~@3 g3@2 g3@2 g3@3, ~@2 c4@3 ~@5 c4@2 c4@4]/2",
  F: "[~@4 g4 ~, f2@7 f3@2 d3 g3@10 ~@4, ~ c3@7 g2@12 ~@4, ~ f3!2 ab3@7 ~@2, ~@3 ab3@2 c4@15 ~@4]/3",
  G: "[ab3,c4,g4]@7 ~", H: "[g3,bb3,d4,g4]@3 [g3,bb3,d4,g4]@3 [g3,bb3,d4,f4]@9 ~",
  I: "[g3,c4,e4,g4]@3 [g3,c4,e4,g4]@3 [g3,c4,e4]@9 ~", J: "[a3,d4,f4]@3 [a3,d4,f4]@3 [a3,d4,e4]@10, f3@3 ~@5",
  K: "[[d4,f4]@6 d4 ~@9 [g3,bb3,d4,g4]@3 [g3,bb3,d4,g4]@3 [g3,bb3,d4,f4]@9 ~, a3@11 ~@5]/2", // Dm Gm Gm7
  L: "[f3,a3,c4,f4] [e3,g3,c4,e4]", M: "[f3,a3,d4]@15 ~", N: "[g3,bb3,d4,g4]@3 [g3,bb3,d4,f4]@5",
  O: "~@4 [a3,d4,f4]@3 [a3,d4,f4] [g3,d4,f4] e4 [g3,c4,e4]@2 [g3,c4,e4]@4", // Dm G7 C
  P: "~@4 [g3,bb3,d4,g4]@3 [g3,bb3,d4,g4]!2 g4 [g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@4", // Gm
  Q: "~@4 [a3,c4,e4]@3 [a3,c4,e4]!2 e4 [a3,c4,e4]@2 [a3,c4,e4]@4", // Am
  R: "~@4 [g3,c4,e4]@3 [a3,c4,e4]!2 e4 [a3,c4,e4]@2 [a3,c4,e4]@4", // C Am
  S: "~@4 [a3,db4,e4,a4]@3 [a3,db4,e4,a4]!2 a4 [a3,db4,e4,a4]@2 [a3,db4,e4,a4]@4", // A
  T: "[bb3,db4,f4,bb4]@3 [bb3,db4,f4,bb4]@3 [bb3,db4,f4,ab4]@9 ~", // Bbm Bbm7
  U: "[bb3,eb4,g4,bb4]@3 [bb3,eb4,g4,bb4]@3 [bb3,eb4,g4]@9 ~", // Eb
  V: "[c4,f4,ab4]@3 [c4,f4,ab4]@3 [c4,f4,g4]@10, ab3@3 ~@5", // Fm Csus4
  W: "[[f4,ab4]@6 f4 ~@9 [bb3,db4,f4,bb4]@3 [bb3,db4,f4,bb4]@3 [bb3,db4,f4,ab4]@9 ~, c4@11 ~@5]/2", // Fm Bbm Bbm7
  X: "[ab3,c4,eb4,ab4] [g3,bb3,eb4,g4]", Y: "[ab3,c4,f4]@15 ~", Z: "[bb3,db4,f4,bb4]@3 [bb3,db4,f4,ab4]@5",
  AA: "[ab3,db4,e4,ab4]@5 ~@3", // Dbm
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.3)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note("<~@14 A ~@3 B@2 ~@19 C@12 D@2 E@2 D@2 F ~@36>".pickRestart({
  A: "~@12 g3@3 ~", B: "[~@5 d4@3 d4@4 ~@4, ~@3 b3@9 ~@4]/2", C: "~@9 [g3,c4] ~@6", D: "~@9 [g3,bb3,d4] ~@6",
  E: "~@9 [a3,c4] ~@6", F: "~@9 [a3,db4,e4] ~@6",
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0.3)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@3 ~@3 B@3 ~@3 C@2 D@2 C@2 ~@6 E F G H E F G H E I@2 J K L ~@3 M@2 N ~@5 O P Q ~@6 R S F G H S F G H S I@2 T K U@8 V
  W X@2 Y Z AA@2 AB@4 AC ~
>`.pickRestart({
  A: "[~@6 c4@2 c4 d4 d4@2 d4 eb4 eb4@6 ~@2 eb4 ~ [d4,eb4]@2 c4 ~ c4@2 c4@12 ~@6]/3", // Ebmaj7
  B: "[~@4 c4@2 c4@2 c4 d4 d4@2 d4 eb4 eb4@6 ~@2 d4@4 c4@2 bb3@2 g3@12 ~@6]/3",
  C: "[~ c4 f4 g4@2 ab4@2 f4@2 c4 f4 g4@2 ab4 f4@2]/2",
  D: "[~@2 g3@2 c4@2 d4@4 eb4@4 c4@4 g3@2 c4@2 d4@4 eb4@2 c4@3 ~]/2",
  E: "[g3,bb3,d4]@2 [bb3,d4] [g3,bb3,d4] [g3,bb3,d4]@2 [g3,bb3,d4] [bb3,d4] [g3,bb3,d4]@2 [g3,bb3,d4]!2 [g3,bb3,d4]@2 [g3,bb3,d4]!2", // Gm Bb Gm Bb Gm
  F: "[g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2", // C
  G: "[a3,d4,f4] ~@2 d4 [a3,d4,f4]@2 [a3,d4,f4]!2 [a3,d4,f4]@2 [a3,d4,f4]!2 [a3,d4,f4]@2 [a3,d4,f4]!2, ~ [a3,d4,f4] ~@6", // Dm
  H: "[a3,d4,f4]@2 [a3,d4,f4]!2 [a3,d4,f4]@2 [a3,d4,f4]!2 [a3,d4,f4]@2 [a3,d4,f4]!3 [a3,d4] [a3,d4,f4]@2", // Dm D5 Dm
  I: "[[g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4] c4 [f3,a3,c4]@2 [f3,a3,c4] [f3,a3] [f3,a3,c4]@2 [f3,a3,c4]!2 [g3,c4]@2 [g3,c4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2, ~@15 [g3,e4]@9 e4@4 ~@4]/2", // C F C5 C
  J: "[f3,a3,d4] ~ [f3,a3]!2 [f3,a3]@2 [f3,a3]!2 [f3,a3,d4]@3 [f3,a3,d4] [f3,a3,d4]@2 [f3,a3,d4]!2, ~ d4 ~@2", // Dm F Dm
  K: "[g3,bb3,d4]@2 [g3,bb3,d4] [g3,bb3] [g3,bb3,d4]@2 [g3,bb3,d4]!3 ~ [g3,bb3,d4] [g3,bb3] [g3,bb3,d4]@2 [g3,bb3,d4]!2", // Gm
  L: "[f3,bb3,db4]@7 ~", M: "[~@4 d4@2 d4@2 e4@2 e4@2 f4@2 f4@8 g4 f4 e4@6 d4 c4]/2", N: "d4 ~",
  O: "~@9 a4 d5 e5 f5@3 e5, ~@12 e5 ~@3", P: "e5@3 d5@4 ~@4 [d5,e5] bb4@3 a4, eb5 ~@11 c5 ~@3", Q: "g4@3 ~@5",
  R: "~@6 e4 f4 e4@3 d4 db4@3 bb3",
  S: "[bb3,d4]@2 [bb3,d4] [g3,bb3,d4] [g3,bb3,d4]@2 [g3,bb3,d4] [bb3,d4] [g3,bb3,d4]@2 [g3,bb3,d4]!2 [g3,bb3,d4]@2 [g3,bb3,d4]!2, [g3,a3] ~@3", // Bb Gm Bb Gm Gsus2
  T: "[f3,a3]@2 [f3,a3]!2 [f3,a3]@2 [f3,a3]!2 [f3,a3,d4]@3 [f3,a3,d4] [f3,a3,d4]@2 [f3,a3,d4]!2, d4!2 ~@2", // F Dm
  U: "[[g3,bb3,c4] ~ [g3,bb3,c4] [g3,bb3] [g3,bb3,c4] ~ f4 ~ [bb4,c5]@2 bb4@2 ab4@2 bb4@8 f4 ~ [bb4,c5]@2 bb4@2 ab4@2 bb4@8 f4 ~ [bb4,c5]@2 bb4@2 ab4@2 bb4@4 ab4@3 ~ bb4@4 ab4@4 g4@4 ab4@4 f4 ~ [bb4,c5]@2 bb4@2 ab4@2 bb4@8 f4 ~ [bb4,c5]@2 bb4@2 ab4@2 bb4@8 f4 ~ [bb4,c5]@2 bb4@2 ab4@2 bb4@4 ab4@3 ~ bb4@4 ab4@4 g4@2, ~@54 ab4 ~@63 ab4 ~@9]/8", // C7 Gm C7 Bbsus2
  V: "~@2 f4@13 ~",
  W: "[db4,f4]@2 [db4,f4] [bb3,db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4] [db4,f4] [bb3,db4,f4]@2 [bb3,db4,f4]!2 [bb3,db4,f4]@2 [bb3,db4,f4]!2, [bb3,c4] ~@3", // Db Bbm Db Bbm Bbsus2
  X: "[[bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4] eb4 [ab3,c4,eb4]@2 [ab3,c4,eb4] [ab3,c4] [ab3,c4,eb4]@2 [ab3,c4,eb4]!2 [bb3,eb4]@2 [bb3,eb4]!2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2, ~@15 [bb3,g4]@9 g4@4 ~@4]/2", // Eb Ab Eb5 Eb
  Y: "[ab3,c4]@2 [ab3,c4]!2 [ab3,c4]@2 [ab3,c4]!2 [ab3,c4,f4]@3 [ab3,c4,f4] [ab3,c4,f4]@2 [ab3,c4,f4]!2, f4!2 ~@2", // Ab Fm
  Z: "[bb3,db4,f4]@2 [bb3,db4,f4] [bb3,db4] [bb3,db4,f4]@2 [bb3,db4,f4]!3 ~ [bb3,db4,f4] [bb3,db4] [bb3,db4,f4]@2 [bb3,db4,f4]!2", // Bbm
  AA: "[ab4@3 e4@3 db4@6 ~@4]/2",
  AB: "[~@9 ab3@2 ~@7 ab3@3 ~@7 ab3@2 ~@6 g3@5 ~ f2@3 c3@2 f3@3 ab3@3 [c5,f5]!2 ~ [c5,f5]!3 ~ [c5,f5]!3 ~, ~ f3@10 eb3@10 db3@10 eb2@11 ~@22, ~@4 ab3@5 ~@5 ab3@4 ~@5 ab3@5 ~@6 bb2@8 ~@22, ~@6 c4@5 ~@5 c4@5 ~@5 [c4,f4]@5 ~@22 [c4,f4]@3 ~@8]/4", // F5
  AC: "[c5,f5]!3 ~@13", // F5
})).s("gm_acoustic_guitar_nylon").gain(0.19)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@12 A@4 B@2 C@2 D@4 E@2 F@2 E@2 F@2 E@2 G H@4 ~@12 I@2 J@2 I@2 K@2 E@2 F@2 E@2 F@2 E@2 L M@3 N@2 O@2 N@2 O@2 N@2 P
  Q@4 R@6
>`.pickRestart({
  A: "[[f3,ab3] [g3,d4], c4]/4", B: "[f3,ab3,c4]/2", C: "[[b3,d4]@27 ~@5]/2",
  D: "[[c3,c4,eb4] [bb2,d4,f4] [ab2,c4,eb4] [bb2,d4,f4] [ab2,c4]@3 ~, g3@7 ~]/4", // Cm Bb Ab Bb Ab
  E: "[[g1,g2,bb3,d4] [c2,c3,c4,e4], [g3,g4]]/2", F: "[d2,d3,a3,d4,f4]/2", G: "[f2,f3,a3,f4] [e2,e3,g3,e4], c4",
  H: "[[d2,d3,a3]@8 [g2,g3]@8 db4@15 ~, f4@31 ~, d4 ~, ~@8 bb3@23 ~]/4", I: "[g2,bb3,d4,f4]/2", J: "[d2,d3,a3,c4,e4]/2",
  K: "[a2,db4,e4,a4]/2", L: "[f2,f3,a3] [e2,e3,g3,e4], c4", M: "[[d2,d3,a3] [g2,g3] [c4,e4], [d4,f4]@2 ~, ~ bb3@2]/3",
  N: "[[bb1,bb2,db4,f4] [eb2,eb3,eb4,g4], [bb3,bb4]]/2", O: "[f2,f3,c4,f4,ab4]/2",
  P: "[ab2,ab3,c4] [g2,g3,bb3,g4], eb4", Q: "[[f2,f3,c4] [bb2,bb3] [eb4,e4,ab4]@2, [f4,ab4] ~, ~ db4@3]/4",
  R: "[~ [f2,f3]@10 [eb2,eb3]@10 [db2,db3,f3]@10 [eb2,eb3,g3,bb3]@11 [f1,f2,f3,ab3]@41 ~@13, ~ c4@82 ~@13, ~ ab3@30 ~@65]/6", // F Eb Db Eb Fm
})).s("gm_synth_strings_1").gain(0.17)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note(`<
  ~@14 A@2 ~@2 B@2 ~@2 C@2 ~@13 D@2 E F E F E F E F E F E F ~@21 G ~@13 H@3 ~@5
>`.pickRestart({
  A: "c3/2", B: "[g3@27 ~@5]/2", C: "[eb4@3 ~]/2", D: "[f3@15 ~]/2", E: "[a3,d4,f4] [g3,c4,e4]",
  F: "[f3,bb3,d4] [g3,c4,e4]", G: "[c3,g3]", H: "[[db2,db3]@11 ~@5]/3",
})).s("gm_synth_strings_1").gain(0.11)

// other · electric guitar clean
const electric_guitar_clean = note("<~@11 A ~@22 B ~@34 B ~@13 C ~@10>".pickRestart({
  A: "c4 g4", B: "~ g4 ~ f4", C: "~ bb4 ~ ab4",
})).s("gm_electric_guitar_clean").gain(0.16).pan(0.7)

// chords · distortion guitar · C5
const distortion_guitar = note("<~@72 [[c3,g3,c4]] ~@21>").s("gm_distortion_guitar").gain(0.13).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<~@2 A@17 ~@19 B A@19 C A@13 D A@13 ~@8>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@3 x!6", C: "x ~@2 x!2 ~ x ~@2 x!2 ~@5", D: "~ x!3",
})).gain(0.42)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@38 [x ~ x ~ x ~@3 x!2 ~@6] ~@55>").gain(0.18)

// drums · low tom
const low_tom = s("lt").struct("<~@38 [x!4 ~@3 x] ~@19 [~@5 x ~@9 x] ~@35>").gain(0.36)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@17 B ~@4 C@13 D ~ A@19 ~ A@27 ~@8>".pickRestart({
  A: "x!8", B: "x ~ x ~@3 x!3 ~@7", C: "x!4", D: "x!2 ~@2",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@58 [~@11 x!4 ~] ~@35>").gain(0.54)

// drums · crash
const crash = s("cr").struct("<~@39 A ~@19 A ~@3 A ~@3 A ~@5 A ~@3 A ~@3 A ~@4 A ~@7>".pickRestart({
  A: "x",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~@24 [~ x]!14 ~@56>").gain(0.36)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@37 [~@7 x ~@8] ~@56>").gain(0.12)

// drums · congas
const congas = s("conga:13").struct("<~@11 A ~ B ~ B ~ B C D ~@17 E ~@56>".pickRestart({
  A: "~@12 x!3 ~", B: "~@2 x!3 ~@3", C: "~@5 x!2 ~ x ~ x ~@5", D: "~@5 x!2 ~", E: "~ x!2 ~@5",
})).gain(1.73)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct("<~@11 A ~ B ~ B ~ B ~@76>".pickRestart({
  A: "~@11 x ~@4", B: "~@2 x!2 ~@12",
})).gain(0.96)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@2 A B A B A B A B A B A B A B A B A ~@5 C D C D C D C D C D C D C E ~ F@19 G F@27 ~@8
>`.pickRestart({
  A: "~@2 x!3 ~@3 x!3 ~@3 x!2", B: "x ~@7 x!3 ~@5", C: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", D: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
  E: "x!3 ~@5", F: "x ~ x ~ x ~ x!5 ~ x ~ x ~", G: "x!8",
})).gain(0.3)

stack(
  guitar_harmonics, bass, acoustic_guitar_steel, acoustic_guitar_steel_2, acoustic_guitar_nylon, synth_strings_1,
  synth_strings_1_soft, electric_guitar_clean, distortion_guitar, kick, snare, snare_soft, low_tom, hihat, mid_tom,
  crash, tambourine, tambourine_soft, congas, congas_soft, shaker
)

More by Laura Pausini