Strudelify

La Solitudine

Laura Pausini

KeyD♭ majorTempo70 bpm
0:00/0:00
// La Solitudine — Laura Pausini
// 70 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "Guitar" named as a guitar, played on electric guitar clean (its lead 8 bass lead patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 · piano
const piano = note(`<
  A B C D A B C D E B C F G H I J G H I K G H L M N@2 O@2 P@4 Q R S T Q U V W X Y Z AA Q R AB T Q R S T Q R AB T Q R AB
  T AC AD AE AF ~
>`.pickRestart({
  A: "bb4@3 bb4@3 ~@2 c5@8, [d3,f3,bb3], ~@3 bb4@5", B: "~@7 d4, [d3,g3,bb3], a4!2, ~@3 bb4@8 bb4@5, ~@3 d4@4 ~",
  C: "f4@3 f4@3 ~@8 f4@2, [eb3,g3,bb3], ~@3 f4@4 ~, ~ [eb4,g4]", // Eb
  D: "~@7 f4, [c3,f3,a3], c5!2, ~@3 d5@8 d5@5, ~@3 f4@4 ~", E: "bb4@3 bb4@3 ~@8 bb4@2, [d3,f3,bb3], ~@3 bb4@4 ~, ~ c5",
  F: "~@13 f5@3, [c3,f3,a3]@11 eb5@5, c5!2, ~@3 d5@7 d5@6, ~@3 f4@5", // F
  G: "f5@2 ~@3 bb4@2 ~@6 f5@3, [d3,f3,bb3] [c3,f3,a3], ~@2 bb4@3 ~@2 c5@9, ~@3 f5@5 ~@2 d5@6, ~@11 eb5@5", // Bb F
  H: "f5@2 ~@3 bb4@2 ~@6 f5@3, [d3,g3,bb3] [d3,f3,a3], ~@2 bb4@3 ~@2 c5@9, ~@3 f5@5 ~@2 d5@6, ~@11 eb5@5", // Gm Dm
  I: "f5@2 ~@3 g5@2 ~@7 d5@2, [eb3,g3,bb3] [d3,f3,bb3], ~@2 bb4@6 ~@3 bb4@5, ~@3 f5@4 f5@9, ~@13 c5@3", // Eb Bb
  J: "eb5@2 ~@3 d5@2 ~@6 f5@3, [eb3,g3,bb3] [c3,f3,a3], ~@2 d5@3 ~@5 d5@6, ~@3 eb5@4 eb5@4 eb5@5", // Eb F
  K: "eb5@2 ~@11 f5@3, [eb3,g3,bb3], ~@2 d5@3 d5@5 d5@6, ~@3 eb5@4 eb5@4 eb5@5, ~ [c3,f3,a3]", // Eb F
  L: "f5@2 ~@3 bb4@2 ~@6 f5@3, [eb3,g3,bb3] [d3,f3,a3], ~@2 bb4@3 ~@2 c5@9, ~@3 f5@5 ~@2 d5@6, ~@11 eb5@5", // Eb Dm
  M: "f5@2 ~@3 bb4@3 [db3,gb3,bb3,gb5]@8, [eb3,gb3,bb3] ~, ~@2 bb4@3 ~@11, ~@3 f5@5 ~@8", // Gb Ebm
  N: "[db5 ~@5 c5 db5 c5 ab4 f4@2 ~ db5 ~@12 f5@3 f5@3, [db3,f3,ab3]@13 ~@3 [db3,f3,bb3]@16, ~ db5@2 db5@2 db5@2 ~@10 db5@2 db5@2 db5@2 db5@2 db5@7, ~@2 c5@2 c5@2 ~@9 c5@3 c5@2 c5@2 c5@2 c5@8]/2", // Db Bbm
  O: "[~@13 f5@2 ~@11 f5@5 db5, [db3,gb3,bb3]@15 eb5@3 eb5@2 eb5@2 eb5@2 eb5@8, f5!3 f5@2 bb4@3 [eb3,ab3,c4]@8, ~ gb5@2 gb5@2 gb5@2 gb5@9 ~ f5@2 f5@2 f5@2 f5@3 ~@6, ~@9 db5@7 ~@9 db5@6 ~]/2", // Gb Ab
  P: "[~@13 [ab4,db5]@2 ~@11 f5@3 f5@2 ~@14 f5@2 ~@14 ab5@3, [db3,f3,ab3]@16 f3@24 f5 db5 bb4@5 eb5@3 eb5@2 eb5@2 eb5@2 eb5@8, c5@2 c5@2 c5@2 c5@2 c5@7 c5@3 c5@2 c5@2 c5@2 c5@24 ~@11 gb5@5, ~ db5@2 db5@2 db5@2 db5@3 f4@6 [db3,bb3]@15 f5 [db3,gb3,bb3]@16 [eb3,ab3,c4]@16, ~@9 ab4@4 ~@4 db5@2 db5@2 db5@2 db5@2 db5@8 gb5 f5 gb5 f5 gb5 f5 gb5@9 ~ f5@2 f5@2 f5@2 f5@3 f5@6]/4", // Db5 Db Gb Ab
  Q: "~@2 db5 db5@2 db5@2 ~@6 ab5@3, [db3,f3,ab3,ab5]@7 eb5@9, ~ [c3,eb3,ab3], ~@5 f5@3, ~@11 gb5@5", // Db Ab
  R: "~@2 db5 db5@2 db5@2 ~@6 ab5@3, [db3,f3,bb3,ab5]@7 eb5@9, ~ [c3,f3,ab3], ~@5 f5@3, ~@11 gb5@5", // Bbm7 Fm
  S: "~@2 db5 ~@2 bb5@2 ~@7 f5 ~, [db3,gb3,bb3,ab5]@7 ab5@9, ~@3 db5@5 [db3,f3,ab3]@8, ~@3 db5, ~@13 eb5@2 ~", // Gb Db
  T: "gb5@2 ~@3 f5@2 ~@7 ab5@2, [eb3,gb3,bb3] [c3,eb3,ab3], ~@2 f5@3 ~@5 f5@6, ~@3 gb5@4 gb5@4 gb5@5", // Ebm Ab
  U: "db5@2 db5 db5@2 db5@2 ~@6 ab5@3, [db3,f3,bb3,f5,ab5]@7 eb5@9, ~ [eb3,ab3,c4], ~@5 f5@3, ~@11 gb5@5", // Bbm7 Ab
  V: "~@2 db5 ~@2 bb5@2 ab5 ~@6 f5 ~, [db3,gb3,bb3,ab5] [db3,f3,ab3], ~@3 db5@5 ~@8", // Gb Db
  W: "gb5 ~@6 c6, [gb3,bb3]@5 ab5 db6@2, eb3 [c3,eb3,ab3], ~@2 f5@3 f5@11, ~@3 gb5@4 gb5@9", // Gb Ab
  X: "~@2 db6 db6@2 db6@2 ~@4 ab5@4 f5, [db3,gb3,bb3,c6]@7 c6@9, ~ [db3,f3,ab3], ~@9 db6@7", // Gb Db
  Y: "gb5@2 ~@3 f5@2 ~@7 c6@2, [eb3,gb3,bb3] [eb3,ab3,c4], ~@2 f5@3 ~@2 ab5@3 ab5@6, ~@3 gb5@5 ~@4 db6@4", // Ebm Ab
  Z: "~@2 db6 ~@2 c6@2 ~@4 ab5@4 f5, [db3,gb3,bb3] [db3,f3,ab3], c6@5 ~@2 eb6@9, ~@3 db6@5 ~ db6@7", // Gb Db
  AA: "gb5 ~@4 f5@2 gb5 ~@5 ab5@3, [eb3,gb3,bb3] [c3,eb3,ab3], ~@2 f5@3 ~@5 f5@6, ~@3 gb5@4 ~@4 gb5@5", // Ebm Ab
  AB: "~@2 db5 ~@2 bb5@2 ~@7 f5 ~, [db3,gb3,bb3,ab5]@7 ab5@9, ~@3 db5@5 [db3,f3,ab3]@8", // Gb Db
  AC: "~@2 db5 db5@5 [c3,eb3,ab3]@8, [db3,f3,ab3,ab5] ~", AD: "[db3,f3,bb3] [c3,f3,ab3]",
  AE: "[db3,gb3,bb3] [db3,f3,ab3]", AF: "[eb3,gb3,bb3] [c3,eb3,ab3]",
})).s("gm_piano").gain(0.36)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A B C D A B C E A B C D F G H I F G H I F G J K L M N O P Q@4 F R S T F R S R S R S T F R S T F R S T F R S T F R S T
  F R S U
>`.pickRestart({
  A: "bb1@11 ~@3 bb1 a1", B: "g1@13 ~ g1 f1", C: "eb1", D: "f1@3 ~", E: "gb1 ~", F: "bb1 f1", G: "g1 d1", H: "eb1 bb1",
  I: "eb1 f1", J: "eb1@6 ~ eb1 d1@8", K: "eb1 gb1", L: "db2@14 ~ c2, ~@7 db2", M: "bb1@7 bb1", N: "gb1@7 gb1",
  O: "~@4 ab1@3 ab1, gb1", P: "~@7 c2, db2", Q: "[bb1@7 ~@17 db2@4 ab1@4, ~@7 bb1@16 ~@9, ~ gb1@2 ~, ~@8 ab1@5 ~@3]/4",
  R: "gb1 db2", S: "eb1 ab1", T: "db2 ab1", U: "db2 ~",
})).s("gm_acoustic_bass").gain(0.31)

// chords · string ensemble 1 · "Keyboard"
const string_ensemble_1 = note(`<
  ~@24 A B C D A B C E F G H@2 I J K L M N K N F G H@2 F G H@2 F G H@2 F G H@2 F G H@2 O
>`.pickRestart({
  A: "[db2,db3,db4,f4,ab4]", B: "[bb2,bb3,db4,f4,bb4]", C: "[gb2,gb3,db4,gb4,bb4]",
  D: "~ [ab3,c4,eb4,ab4], [gb3,db4,gb4,a4]", E: "[ab3,c4,eb4,ab4]", F: "[db3,db4,f4,ab4] [ab3,c4,eb4,ab4]",
  G: "[bb3,db4,f4,bb4]@8 [f3,c4,f4,ab4]@7 ~", // Bbm Fm
  H: "[[gb3,db4,gb4,bb4]@8 [db4,f4,ab4]@7 ~ [eb3,eb4,gb4,bb4]@8 [ab3,c4,eb4,ab4]@8, ~ db3@2 ~]/2", // Gb Db Ebm Ab
  I: "[db3,db4,f4,ab4] [ab3,eb4,ab4]", J: "[f4,bb4] [f3,c4,f4,ab4]", K: "[gb3,db4,gb4,bb4] [db3,db4,f4,ab4]",
  L: "[eb3,eb4,gb4,bb4] [ab3,c4,eb4,ab4]", M: "[gb3,gb4,bb4] [db3,f4,ab4], db4",
  N: "[eb3,eb4,gb4,bb4] [ab3,eb4,ab4,c5]", O: "[db3,db4,f4,ab4] ~",
})).s("gm_string_ensemble_1").gain(0.26)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@24 A B C@2 A B C@2 D E F G H E I G J K@2 L M N I G O P I G D E F G D E F G D E F G Q
>`.pickRestart({
  A: "[db3,f3,ab3,db4]!2", B: "[bb2,f3,bb3,db4]!2",
  C: "[[gb2,gb3,bb3,db4]@8 [gb2,gb3,bb3,db4]@7 ~ [ab2,ab3,c4]@8 [ab2,eb3,ab3,c4]@8, ~@15 eb3@9 ~@8]/2", // Gb Ab
  D: "[db2,f3,ab3,db4] [ab2,eb3,ab3,c4]", E: "[bb2,f3,bb3,db4] [f2,f3,ab3,c4]", F: "[gb2,gb3,bb3,db4] [db2,f3,ab3,db4]",
  G: "[eb2,eb3,gb3,bb3] [ab2,eb3,ab3,c4]", H: "[db3,f3,ab3,db4] [ab2,eb3,ab3,c4]",
  I: "[gb2,gb3,bb3,db4] [db3,f3,ab3,db4]", J: "[gb3,bb3,db4]@3 [gb3,bb3,db4] [f3,ab3,db4]@2 [f3,ab3,db4]@2, gb2 db3",
  K: "[[eb3,gb3,bb3]@6 [eb3,gb3,bb3]@2 [ab2,eb3,ab3,c4]@7 ~ [bb3,db4]@6 [gb3,bb3,db4]@2 [db3,f3,ab3,db4]@8, gb2@8 ~@7 gb3@7 ~@10, ~@2 gb2 ~]/2", // Ebm Ab Bbm Gb Db
  L: "[eb3,gb3,bb3]@3 [eb3,gb3,bb3] [ab2,eb3,ab3,c4]@4, eb2 ~", M: "[db3,f3,ab3,db4] ab2",
  N: "[bb2,db3,f3,bb3] [f2,f3,ab3,c4]", O: "[db3,f3,ab3,db4]@7 ~ [ab2,ab3,c4]@8, ~@7 eb3@9",
  P: "[f3,bb3,db4]@3 [f3,bb3,db4] [f2,f3,ab3,c4]@4, bb2 ~", Q: "[db3,f3,ab3,db4] ~",
})).s("gm_electric_guitar_clean").gain(0.36)

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

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!23 [~ x ~@2] ~@41>").gain(0.41)

// drums · snare
const snare = s("sd").struct("<~@24 [~ x ~ x]!7 [~ x ~@2] [~ x ~ x]!32 ~>").gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 A ~@7 A ~@5 A ~@4 A ~@22>".pickRestart({
  A: "~@13 x ~@2",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A
>`.pickRestart({
  A: "x",
})).gain(0.31)

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

// drums · ride
const ride = s("rd").struct("<~@40 A B A B C A D A D A C ~@14>".pickRestart({
  A: "x ~@3 x ~@2 x", B: "x ~@2 x!2 ~@2 x", C: "~@4 x ~@2 x", D: "~@3 x!2 ~@2 x",
})).gain(0.2)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x!16]!64 x>").gain(0.78)

// drums · shaker
const shaker = s("sh").struct("<[x!8]!64 x>").gain(0.41)

// drums · bell tree
const bell_tree = s("marktrees:0").struct(`<
  ~@4 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@3 A
>`.pickRestart({
  A: "x",
})).gain(2.14)

stack(
  piano, bass, string_ensemble_1, electric_guitar_clean, kick, rim, snare, low_tom, mid_tom, open_hat, crash, ride,
  cabasa, shaker, bell_tree
)

More by Laura Pausini