Strudelify

Perche Non Torna Piu

Laura Pausini

KeyA minorTempo137 bpm
0:00/0:00
// Perche Non Torna Piu — Pausini laura
// 137 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · "FRETLESS"
const bass = note(`<
  A@2 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB U AC AD AE AF AG AH AI AJ AK@2 AE AL AM AN AO I AP@2 AQ AR
  AS AT AU AV H I J AW M@2 N AX AY Y AZ AA AB BA AC BB AE AF AG AH BC AJ BD BE AE AF AG BF BG U BH BI@2 BJ BK@2 BL BM BN
  BO K BP BD BQ AY BR BS BT BU BV BW@2 U AY BU BX AS BY BW@2 U AY BU BX AS BY BW@2 U AY BU BX AS BY BW@2 U AY BU BX AS
  BY BZ@2 CA CB CC CD D CE@2 ~
>`.pickRestart({
  A: "d2/2", B: "c#2", C: "f#1@7 ~", D: "b1", E: "a1", F: "g#1", G: "c#2@4 ~ c#2@3", H: "f#1@4 ~@2 f#1 ~ f#1@4 ~@4",
  I: "e1@4 ~@2 e1 ~ e1@7 ~", J: "d2@4 ~@2 d2 ~ d2@4 ~@4", K: "d2@4 ~@2 d2 ~ d2@7 ~", L: "c#2@4 ~@2 c#2 ~ c#2@4 ~@4",
  M: "c#2@4 ~@2 c#2 ~ c#2@7 ~", N: "b1@4 ~@2 b1 ~ b1@4 ~@4", O: "c#2@4 ~@2 c#2 ~ c#2@2 b1@6",
  P: "a1@4 ~@2 a1 ~ a1@4 ~@4", Q: "a1@4 ~@2 a1 ~ a1@3 ~ a1@4", R: "g#1@4 ~@2 g#1 ~ g#1@6 ~@2",
  S: "g#1@5 ~ g#1 ~ g#1@3 ~ e1@4", T: "f#1@4 ~@2 f#1 ~ f#1@6 ~@2", U: "e1@4 ~@2 e1 ~ e1@6 ~@2", V: "d2@4 ~@2 d2 ~ d2@8",
  W: "e2@5 ~ e2 ~ e2@4 b1@4", X: "a1@4 ~@2 a1 ~ a1@3 ~ a1@3 ~", Y: "g1@4 ~@2 g1 ~ g1@4 ~@4", Z: "f1@4 ~@2 f1 ~ f1@7 ~",
  AA: "f2@4 ~@2 f2 ~ c2@3 ~ f1@3 ~", AB: "e1@4 ~@2 e1 ~ e1@5 ~@3", AC: "d#2@5 ~ d#2 ~ d#2@6 ~@2",
  AD: "e2@5 ~ e2 ~ e2@4 e1@3 ~", AE: "a1@5 ~ a1 ~ a1@7 ~", AF: "g1@5 ~ g1 ~ g1@7 ~", AG: "f1@5 ~ f1 ~ f1@7 ~",
  AH: "e1@4 ~@2 e1 ~ e1@8", AI: "d2@5 ~ d2 ~ d2@7 ~", AJ: "c2@5 ~ c2 ~ c2@7 ~",
  AK: "[b1@5 ~ b1 ~ b1@5 ~@3 e1@5 ~ e1 ~ e1@3 ~ e1@3 ~, ~@14 e2@7 ~@11]/2", AL: "g1@5 ~ g1 ~ g1@8",
  AM: "f1@6 f1 ~ f1@7 ~", AN: "b1@5 ~ b1 ~ e1@4 c#2@3 ~", AO: "f#1@5 ~ f#1 ~ f#1@7 ~",
  AP: "[d2@4 ~@2 d2 ~ d2@5 ~ d2@7 ~ d2 ~ d2@7 ~]/2", AQ: "c#2@5 ~ c#2 ~ c#2@7 ~", AR: "f#1@4 ~@2 f#1 ~ f#2@4 f#1@4",
  AS: "b1@4 ~@2 b1 ~ b1@6 ~@2", AT: "a1@5 ~ a1 ~ a1@6 ~@2", AU: "g#1@4 ~@2 g#1 ~ g#1 ~ g#1@2 b1@2 g#1@2",
  AV: "c#2@4 ~@2 c#2 ~ c#2@4 g#1@4", AW: "d2@4 ~@2 d2 ~ a1@4 d1@4", AX: "c#2@4 ~@2 c#2 ~ c#2 ~ b1@6",
  AY: "a1@4 ~@2 a1 ~ a1@6 ~@2", AZ: "f1@4 ~@2 f1 ~ f1@4 c2@4", BA: "e1@4 ~@2 e1 ~ e2@3 ~ c2@3 ~",
  BB: "e2@5 ~ e2 ~ e2 ~ e2@6", BC: "d1@5 ~ d1 ~ d1@7 ~", BD: "b1@5 ~ b1 ~ b1@5 ~@3", BE: "e2@5 ~ e2 ~ e2@3 ~ e1@3 ~",
  BF: "b1@4 ~@2 b1 ~ c#2@4 c#1@4", BG: "f#1@2 f#1@2 ~@2 f#1 ~ f#1@7 ~", BH: "d2@4 ~@2 d2 ~ d2@5 ~@3",
  BI: "[d2@4 ~@2 d2 ~ d2@4 ~@2 c2@5 ~@3 c2 ~ c2@7 ~]/2", BJ: "f1@4 ~@2 f1 ~ f1@4 f2@3 ~",
  BK: "[b1@4 ~@2 b1 ~ b1@6 e1@5 ~@3 e1@3 ~ e2@2 b1@2 d2 ~]/2", BL: "a1@4 ~@2 a1 ~ a1@7 ~", BM: "g1@5 ~ g1 ~ g1@4 g2@4",
  BN: "f2@4 ~@2 f2 ~ f2@7 ~", BO: "e2@4 ~@2 e2 ~ e2@8", BP: "c2@4 ~@2 c2 ~ c2@4 ~@4", BQ: "e2@4 ~@2 e2 ~ e2@4 e1@4",
  BR: "g1@4 ~@2 g1 ~ g1@6 ~@2", BS: "f1@4 ~@2 f1 ~ f2@8", BT: "e2@5 ~ e2 ~ e2@7 ~", BU: "d2@4 ~@2 d2 ~ d2@6 ~@2",
  BV: "e2@4 ~@2 e2 ~ e2@6 ~@2", BW: "[f1@4 ~@2 f1 ~ f1@5 ~ f1@6 ~@2 f1 ~ f1@6 ~@2]/2", BX: "c2@4 ~@2 c2 ~ c2@6 ~@2",
  BY: "e2@4 ~@2 e2 ~ b1@4 f1@4", BZ: "f1/2", CA: "e1", CB: "a1@15 ~", CC: "d2", CD: "c2", CE: "[e1@31 ~]/2",
})).s("gm_fretless_bass").gain(0.52)

// other · vibraphone
const vibraphone = note(`<
  ~@8 A@2 B@2 C@2 D E F@2 G@2 H@3 ~ I@2 J@2 K@2 L@2 M N@2 O@2 P@2 Q M R@2 S@2 T@2 ~@7 A@2 B@2 C@2 D E U@2 J@2 K@2 L@2 M
  N@2 O@2 P@2 Q M R@2 S@2 ~@2 V W@4 M N@2 O@2 P@2 Q M X@2 O@2 Y@2 ~@15 Z ~@25
>`.pickRestart({
  A: "[d4@2 c#4 d4@2 c#4@2 d4@3 c#4 d4@2 c#4@2 ~]/2", B: "[c#4@2 b3 c#4@2 b3@2 c#4@3 ~ b3 c#4@2 b3@2]/2",
  C: "[b3@2 a3 b3@2 a3 b3@4 a3 b3@2 a3@2 ~]/2", D: "a3@2 g#3 g#3@3 ~@2", E: "g#3@2 b3 g#3@3 ~@2",
  F: "[f#4@2 e4 f#4@2 e4@2 f#4@2 e4@2 a4@2 e4@2 ~]/2", G: "[e4@2 d4 e4@2 d4@2 e4@3 ~@3 a3 b3@2]/2",
  H: "[d4@2 c#4 d4@2 c#4@2 d4@2 c#4@2 ~ f#4@2 c#4 b3@3 ~@6]/3", I: "[f4@2 e4 f4@2 e4@2 f4@3 e4 f4@2 e4@2 ~]/2",
  J: "[e4@2 d4 e4@2 d4@2 e4@2 d4@3 ~ c4 d4@2]/2", K: "[e4@2 e4 e4@2 g4@2 f4@2 e4@3 ~@2 a4 b4]/2",
  L: "[c5@2 c5 c5@2 d5@2 c5@3 b4 b4@2 a4@2 ~]/2", M: "c5", N: "[b4@2 a4 g4@2 e4@2 a4@7 ~@2]/2",
  O: "[g4@2 f#4 g4@2 c5@2 f4@5 ~@4]/2", P: "[e4@2 d4 c4@2 d4@2 e4@2 e4@2 ~ e4@2 d4@2]/2", Q: "f4@2 e4 a4@2 b4@3",
  R: "[b4@2 a4 b4@2 c5@2 a4@8 ~]/2", S: "[b4@2 a4 b4@2 c#5@2 a4@7 ~@2]/2", T: "[g#4@2 f#4 g#4@2 a4@2 f#4@5 ~@4]/2",
  U: "[f4@2 e4 f4@2 e4@2 f4@3 e4 a4@2 e4@2 ~]/2", V: "~@5 d4@2 e4",
  W: "[f4@2 e4 f4@2 e4@2 f4@2 e4@3 a4@2 e4 e4@2 d4@2 e4@2 d4@2 f4@2 e4@2 a4@2 b4@3]/4",
  X: "[b4@2 a4 b4@2 c5@2 a4@7 ~@2]/2", Y: "[a4@2 g#4 c5@2 b4@4 a4@4 ~@3]/2", Z: "~ a4@4 ~@3",
})).s("gm_vibraphone").gain(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@2 B@2 C D E F@2 ~@23 G H I J K@2 L M G H I H N@4 O@4 P@2 ~@16 G H I J K@2 L M G H I ~ Q@2 R@6 G H I J K@2 L S G H I
  J T U V@2 W@2 X Y C Z V@2 W@2 X Y C Z V@2 W@2 X Y C Z V@2 W@2 X Y C Z V@2 W@2 X Y C AA@2 ~
>`.pickRestart({
  A: "[f#5@13 g#5@3]/2", B: "[e5@31 ~]/2", C: "e5@3 d5@5", D: "d5@3 c#5@5", E: "c#5@3 b4@5", F: "[d5@5 c#5@9 ~@2]/2",
  G: "c6", H: "b5", I: "a5", J: "g5", K: "[f5@15 e5@17]/2", L: "d5", M: "e5", N: "[c#6 f#6]/4",
  O: "[f#6@6 e6@25 e6@6 ~ d6@9 d6@6 c#6@10 ~]/4", P: "[c#6@6 b5@9 d6@7 c#6@10]/2",
  Q: "[d6@3 c#6@3 d6@4 c#6@4 d6@4 c#6@5 d6@3 ~ c#6@2 d6@3]/2",
  R: "[c#6@4 b5@2 c#6@4 b5@4 c#6@4 b5@5 d5@4 e5@2 ~ c5@15 a4@16 ~ e4@32 ~@2]/6", S: "e5@3 a5@2 b5@3", T: "f5",
  U: "a5@3 ~ g#5@2 c6@4 b5@6", V: "[a5@13 b5@3]/2", W: "g5/2", X: "g5@3 f5@5", Y: "f5@6 e5@9 ~", Z: "f5@5 e5@3",
  AA: "[e5@15 ~]/2",
})).s("gm_string_ensemble_1").gain(0.08)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  A@2 B@2 C D E F G@4 H@3 I@8 J@6 K@3 L@2 M@2 N@4 O P@2 Q@3 R@2 S@2 C D E F G@4 H@3 T ~@3 U@5 L@2 M@2 N@4 O P@2 V G@4
  W@4 X@2 M@2 Y@6 Z@4 AA@2 AB@2 AC@4 AD@2 AB@2 AC@4 AD@2 AB@2 AC@4 AD@2 AB@2 AC@4 AD@2 AB@2 AE@5 ~
>`.pickRestart({
  A: "[[a4,c#5]@7 [f#4,g#4,b4]@9, f#4@13 ~@19]/2", B: "[b4@6 a4@25 ~, [e4,f#4]]/2", C: "[d4,f#4,a4]",
  D: "d5@3 [g#4,c#5]@5, [e4,a4]", E: "c#5@3 b4@4 ~, [d4,f#4]", F: "d5@5 c#5@3, [f4,g#4,b4]", G: "[[a3,c#4,f#4]@63 ~]/4",
  H: "[[a3,c#4,e4]@31 [f#3,b3]@15 ~@2, ~@31 d4@17]/3", // A B5
  I: "[a3@7 g#3@8 ~ a3@31 ~ [g#3,b3]@31 f#4@16 e4@16 ~@7 b3@8 ~@2, c#4@49 ~@30 [a3,c#4]@32 ~ d4@14 ~@2, f4@15 ~ e4@63 ~@32 f4@17]/8", // G#m A
  J: "[[g#3,b3]@15 ~ a3@63 [g3,e4]@17, e4@79 ~@17, ~ c4@5]/6", K: "[~@15 [c4,d#4,f#4,a4]@16 [b3,e4,g#4]@16 ~]/3",
  L: "[[c4,e4,a4]@15 [b3,d4,g4]@16 ~]/2", M: "[[a3,e4]@15 [g3,e4]@16 ~, c4]/2",
  N: "[~@15 [g3,c4,e4]@16 [a3,b3,d4]@16 [g#3,b3,e4]@16 ~, [f3,a3,d4]@17 ~@47]/4", O: "[a3,c4,e4]",
  P: "[g3@15 ~ f3@15 ~, [b3,d4]@17 ~@15, ~@15 [a3,c4]@15 ~@2]/2", // Bm Am
  Q: "[f#4@4 f4@10 ~ f#4@17 e4@16, [b3,d4]@14 ~ [a3,c#4]@33]/3", R: "[a3,c#4,f#4]/2", S: "[a3,c#4,e4]/2",
  T: "a3@7 g#3@8 ~, [c#4,f4]@15 ~", U: "[~@15 [g3,e4]@31 ~ [c4,d#4,f#4,a4]@16 [b3,e4,g#4]@16 ~]/5",
  V: "[b3,d4,f4]@7 c#4@9", W: "[[f3,a3,c4]@31 a3@15 g#3@17 ~, ~@31 [b3,d4]@32 ~]/4", X: "[~@15 [b3,d4,g4]@16 ~]/2",
  Y: "[~@15 [g3,c4,e4]@16 [a3,b3,d4]@16 [g#3,b3,e4]@16 ~ a3@15 [b3,d4,g4]@16 ~, [f3,a3,d4]@17 ~@46 e4@16 ~@17, ~@64 c4@17 ~@15]/6", // C Bm7 E G Dm
  Z: "[[a3,e4]@15 [g3,e4]@16 ~ [f3,d4]@15 [g#3,b3,e4]@16 ~, c4@31 a3@17 ~@16]/4", // A5 C Dm E
  AA: "[[a3,c4,e4]@13 [a3,b3,d4]@17 ~@2]/2", AB: "[[g3,b3,d4]@13 [g3,c4]@16 ~@3]/2",
  AC: "[~@15 [g3,c4,e4]@16 [a3,b3,d4]@16 [g#3,b3,e4]@16 e4, [f3,a3,d4]@17 ~@47]/4", // C Bm7 E Dm
  AD: "[[a3,c4,e4]@13 [b3,d4]@17 ~@2, ~@13 a3 ~@18]/2", // Am Bm
  AE: "[~@15 [g3,c4,e4]@16 [a3,b3,d4]@16 [g#3,b3,e4]@33, [f3,a3,d4]@17 ~@63]/5", // C Bm7 E Dm
})).s("gm_pad_warm").gain(0.17)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A@2 B@2 C D E F G H I@3 J K L M@2 N@2 O@2 P Q R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH R AI G AJ AK@2 AL@2 AM AN E
  F G H I@3 J K L R S T@2 U V W X Y Z AA AB AC AD AE AF AG AH R AO G H AP@4 AQ@2 Y Z AA AB AC AD AE AF Y Z AA AB AC AR
  AS@2 AT@2 AC AD AE AF AS@2 AT@2 AC AD AE AF AS@2 AT@2 AC AD AE AF AS@2 AT@2 AC AD AE AF AS@2 AT@2 AC AD AE AU@2 ~
>`.pickRestart({
  A: "[[f#3,a3,c#4]@13 ~ [f#3,g#3,b3]@16 ~@2]/2", B: "[b3@3 a3@12 ~, [e3,f#3]@15 ~]/2", C: "[d3,f#3,a3]@3 ~",
  D: "[a3,d4]@5 ~ [g#3,c#4]@8 ~@2, e3@7 ~", E: "c#4@6 b3@7 ~@3, [d3,f#3]@13 ~@3", F: "d4@9 ~ c#4@5 ~, [f3,g#3,b3]@15 ~",
  G: "[a3,c#4,f#4]@7 ~", H: "[a3,c#4,f#4]@15 ~", I: "[[c#4,f#4]@12 ~ f#3 c#4 e4@9, a3@11 ~@13]/3", J: "a4@15 ~",
  K: "[b3,d4,f#4]@7 ~", L: "[c#4,f4,a4]@10 [c#4,f4,g#4]@5 ~", M: "[e4@26 ~@2 e4@3 ~, c#4@31 ~, a3@25 ~ a3@4 ~@2]/2",
  N: "[[b3,e4]@13 a3 b3@2, g#3@3 ~]/2", O: "[[a3,c#4,f#4]@29 ~@3]/2", P: "[b3,d4,f4]@7 ~",
  Q: "[g#3,b3,e4]@9 ~ [g#3,b3,d4]@5 ~", R: "[a3,c4,e4]@13 ~@3", S: "[e4,a4,c5]@13 ~@3",
  T: "[e4@18 ~@4 a4@9 ~, f4@31 ~, a4@20 e4@11 ~, c4@16 ~@2 c4@13 ~]/2", U: "[c4,e4,g4]@15 ~", V: "[e4,g4,c5]@3 ~",
  W: "[c4,d#4,f#4,a4]@13 ~@3", X: "[g#3,b3,e4]", Y: "[c4,e4,a4]@15 ~", Z: "[b3,d4,g4]@15 ~", AA: "[a3,c4,e4]@7 ~",
  AB: "[g3,c4,e4]@15 ~", AC: "[a3,d4,f4]@15 ~", AD: "[g3,c4,e4]@7 ~", AE: "[a3,b3,d4]@7 ~",
  AF: "[g#3,b3,d4]@3 [g#3,b3,d4]@4 ~", AG: "[e4,a4,c5]@15 ~", AH: "[d4,g4,b4]@13 ~@3", AI: "[d4,f4,g#4,b4]@3 ~",
  AJ: "[b3,c#4,e4,g#4]@5 [c#4,e4]@3, ~@5 b3@2 ~", AK: "[[a3,c#4]@15 ~@11 g#4@5 ~, f#4@25 ~@7, ~ d4, ~@8 a3@7 ~]/2",
  AL: "[b3@5 ~ a3@9 ~@3 g#3@2 ~@2 e4@8 ~@2, c#4@9 ~ a3@5 ~, e4 ~]/2", AM: "e4@6 d4@9 ~, a3@15 ~, f#3@13 ~@3",
  AN: "d4@3 [g#3,c#4]@4 ~, e3@7 ~, a3@5 ~@11", AO: "d4@7 ~ c#4@8, f4@15 ~, b3@11 ~@5",
  AP: "[[c#4,f#4]@24 ~@2 f#3@2 c#4@2 [f3,a3,c4]@15 ~ [f3,a3,c4]@16 ~@2, a3@11 ~@21]/4", // F#5 F
  AQ: "[[a3,b3,d4]@6 ~ [g#3,b3,d4]@7 ~@2]/2", AR: "[g#3,b3,e4]@7 ~", AS: "[[a3,c4,e4]@13 ~ [a3,b3,d4]@17 ~]/2",
  AT: "[[g3,b3,d4]@13 ~ [g3,c4]@16 ~@2]/2", AU: "[g#3,b3,d4]/2",
})).s("gm_epiano2").gain(0.42)

// drums · kick
const kick = s("bd").struct(`<
  ~@8
  [x ~@2 x!2 ~@3]!53
  [x ~@2 x!2 ~@2 x]
  [x ~@2 x!2 ~@3]!27
  [x ~ x!3 ~@3]
  [x ~@2 x!2 ~@3]!46
  x
  ~@9
>`).gain(0.57)

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

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

// drums · open hat
const open_hat = s("oh").struct("<~@23 A ~@7 A ~@7 A ~@13 A ~@15 A ~@7 A ~@11 B ~@56>".pickRestart({
  A: "~ x", B: "x",
})).gain(0.29)

// drums · crash
const crash = s("cr").struct(`<
  ~@15 A ~@8 B ~@7 B ~@7 B ~@3 B ~ B ~@15 B ~@7 B ~@7 B ~@2 C B ~@2 A B ~@3 D ~@6 C D ~@5 B ~@7 B ~@7 B ~@7 B ~@7 B ~@9
>`.pickRestart({
  A: "~@5 x!2 ~", B: "x", C: "~@3 x", D: "x!2 ~@2",
})).gain(0.36)

// drums · shaker
const shaker = s("sh").struct("<[x!16]!144 [x!15 ~] ~>").gain(0.29)

stack(bass, vibraphone, string_ensemble_1, pad_warm, epiano2, kick, snare, hihat, open_hat, crash, shaker)

More by Laura Pausini