Strudelify

Senza amore

Celentano

KeyD minorTempo100 bpm
0:00/0:00
// Senza amore — Celentano
// 100 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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(`<
  ~@24 A@2 B@2 A@2 B@2 C D E F C G H I C G J K C G L M N ~@2 O P Q R S T G J K C G U V W X Y Z AA X Y Z AB AC AD AE AF X
  AG Z AH C G J K C G AI AJ ~@12 C G J K C G L M T G J K C G L M T G J K C G U V W AK ~
>`.pickRestart({
  A: "g2@2 ~ f2 g2 ~@3", B: "d2@2 ~ c2 d2 ~@3", C: "g1@2 ~ f1@3 g1@2 g1@2 ~@4 d1 f1",
  D: "g1@2 ~ f1@3 g1@2 g1@2 ~@4 c1@2", E: "d1@2 ~ c1@3 d1@2 d1 ~@5 c1 ~", F: "d1@2 ~ c1@3 d1@2 d1 ~ d1@2 ~@2 f1@2",
  G: "g1@2 ~ f1@3 g1@2 g1@2 ~@2 g1@2 c2@2", H: "d2@2 ~ c2@3 c2@2 d2 ~@5 c2@2",
  I: "d2@2 ~ c2@3 c2@2 d2 c2 a1@2 g1@2 f1@2", J: "d2@2 ~ c2@3 d2@2 d2 ~@5 a1 c2",
  K: "d2@2 ~ c2@3 d2@2 d2 ~ a1@2 db1@2 f1@2", L: "d2@2 ~ c2@3 c2@2 d2 ~@5 a1 c2",
  M: "d2@2 ~ c2@3 c2@2 d2 c2 d1 f1 a1 g1 f1@2", N: "g1 ~@15", O: "~@15 d1", P: "g1@3 f1@2 ~ g1@2 ~@6 d1 f1",
  Q: "g1@3 f1@2 ~ g1@2 ~@4 g1@2 bb1 c2", R: "d2@3 c2@3 d2 ~@7 a1 c2", S: "d2@3 c2@2 c2 d2@2 c2@2 a1 c2 eb2@2 c2 g1",
  T: "g1 ~@2 f1@3 g1@2 g1@2 ~@4 d1 f1", U: "d2@2 ~ c2@3 c2@2 d2 ~@5 a1!2", V: "a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1!3 e2",
  W: "a2@2 a2@2 a2@2 a2@2 a2 g2 f2 e2 g2 f2 d2@2", X: "g1@2 ~ f1@3 g1@2 g1 ~ g1@2 ~@2 d1 f1",
  Y: "g1@2 ~ f1@3 g1@2 g1 ~ g1@2 g1@2 c2@2", Z: "d2@2 ~ c2@3 d2@2 d2 ~ d2@2 ~@2 a1 c2",
  AA: "d2@2 ~ c2@3 d2@2 f2 ~ a1@2 d2 c2 a1@2", AB: "d2@2 ~ c2 f1@2 g1@2 d2 c2 a1@2 d2 f2 d2 c2",
  AC: "g1@2 ~ f1@3 g1@2 g1 ~ g1@2 ~ g1 d1 f1", AD: "g1@2 ~ f1@3 g1@2 g1 ~ g1@2 ~ g1 a1 c2",
  AE: "d2@2 ~ c2@3 d2@2 d2 ~ d2@2 ~ g1 a1 c2", AF: "d2@2 ~ c2@3 d2@2 a1 gb1 f1@2 f1@2 d1@2",
  AG: "g1@2 ~ f1 f1@2 g1@2 g1 ~ g1@2 g1@2 c2@2", AH: "d2@2 ~ d2@3 d2@2 d2 c2 a1@2 d2 b1 a1 b1",
  AI: "d1@2 ~ c1@3 c1@2 d1 ~ d2@2 ~ d2 c2 a1", AJ: "d1!2 ~@14", AK: "d2!2 ~@14",
})).s("gm_fretless_bass").gain(0.62)

// chords · synth strings 1
const synth_strings_1 = note("<~@24 A@8 B@8 A@8 C@8 D@7 E@2 A@8 B@8 F@8 ~@12 A@16 D@7 E@2 ~@2>".pickRestart({
  A: "[[g3,bb3]@32 [a3,c4]@31 ~ g3@32 [a3,c4]@30 ~@2, [d4,f4]@127 ~, ~@63 bb3@33 ~@32]/8", // Gm Am Dm
  B: "[[g3,bb3]@16 [a3,c4]@16 [g3,bb3]@16 [a3,c4]@15 ~, [f3,d4]@127 ~]/8", // Gm Am Gm Am Dm
  C: "[[g3,bb3] [f3,a3] [g3,bb3] [f3,a3], d4]/8", // Gm F Gm F
  D: "[[g3,bb3]@32 [a3,c4]@31 ~ g3@32 [a3,c4]@16, [d4,f4], ~@63 bb3@33 ~@16]/7", E: "[a3,db4,e4,g4,a4,c5]/2",
  F: "[[g3,bb3]@32 [a3,c4]@31 ~ g3@32 a3@18 ~@14, [d4,f4]@57 ~@7, ~@63 bb3@33 c4@16 ~@16]/8", // Gm Am Dm
})).s("gm_synth_strings_1").gain(0.17).pan(0.4)

// chords · alto sax
const alto_sax = note(`<
  ~@10 A B ~@6 C D ~@14 E F ~@3 G H I J@2 K I L@2 ~@7 M H I N@2 O I P ~@17 M H I Q@2 K I P ~@7 A B ~@5 R S@2 O R T U O R
  T U O R T V W X Y Z AA AB AC ~@4
>`.pickRestart({
  A: "~@12 a4@2 a4 ~", B: "a4@2 g4!3 f4 ~ f4@2 d4@2 ~@5", C: "~@12 bb4 ~ bb4 ~", D: "bb4@2 ~ a4!2 bb4 d4@2 ~ d4 ~@6",
  E: "~@12 bb4@2 a4 ~", F: "bb4@2 a4 bb4@2 a4 e4@3 e4 ~@6", G: "~@6 f4 e4", H: "c4", I: "~@8 f4@4 e4@3 ~",
  J: "[d4@6 b3@14 ~@4 f4@3 ~ e4@3 ~]/2", K: "d4", L: "[d4@3 b3@7 ~@6]/2", M: "~@13 e4@2 ~",
  N: "[d4@3 b3@7 ~@2 [f4,a4] [e4,g4]!2 [d4,f4]]/2", O: "[d4,f4]", P: "d4@3 b3@5", Q: "[d4@3 b3@7 ~@2 f4 e4!2 d4]/2",
  R: "~@8 [f4,a4]@4 [e4,g4]@3 ~", S: "[f4 gb4@2 [b3,e4]@7 ~@2 [f4,a4] [e4,g4]!2 [d4,f4], d4@3 ~@13]/2",
  T: "f4 gb4@2 [b3,e4]@5, d4@3 ~@5", U: "~@4 [f4,a4] [e4,g4]!2 [d4,f4]",
  V: "~@4 [f4,a4] [e4,g4]!2 [d4,f4], ~@12 a4 ~ a4 ~", W: "a4@2 g4 g4@2 f4@2 g4@2 d4 ~@2 a4@2 a4 ~, d4@9 ~@7, f4@5 ~@11",
  X: "a4@2 g4 g4@2 f4 g4@2 d4 ~ bb4 ~ [e4,g4]@2 bb4 ~, ~@8 [f4,a4]@4 bb4 ~@3", // Em F
  Y: "[d4,f4,bb4]@2 a4@2 a4@2 g4 a4@2 f4 ~@4 bb4!2, ~ [c4,e4]@2 [a3,d4]@5", // Bb C D5
  Z: "bb4 a4!3 a4@2 g4 a4 [f4,a4]@2 [e4,g4]@2 [e4,g4]@2 [d4,f4]@2, ~@10 c5 ~ c5 ~ c5 ~", // F Em Dm
  AA: "c5@2 bb4 bb4@3 a4 bb4@3 g4 ~@2 c5!3, [d4,f4]", // Dm
  AB: "c5 bb4!3 bb4@2 a4 ~@2 g4 e5@2 [e4,g4,e5]@2 e5@2, ~@7 bb4@2 ~@7, ~@2 [f4,a4] ~", // Em F
  AC: "e5 d5!3 d5@2 c5 d5@2 a4@2 ~@5, [d4,f4] [c4,e4]@2 [a3,d4]@5", // Dm C D5
})).s("gm_alto_sax").gain(0.44)

// chords · pad choir
const pad_choir = note(`<
  ~@24 A@4 B@2 C@2 ~@8 A@4 B@2 C@2 ~@8 A@4 B@2 D E@2 A@8 ~@8 A@4 B@2 F@2 ~@12 A@4 B@2 C@2 A@4 B@2 C@2 A@4 B@2 D E@2 ~@2
>`.pickRestart({
  A: "[[g3,bb3] [f3,a3], d4]/4", B: "[g3,bb3,d4]/2", C: "[f3,a3,d4]/2", D: "[f3,a3,d4]", E: "[g3,c4,e4]/2",
  F: "[[f3,a3,d4]@9 ~@7]/2", // Dm
})).s("gm_pad_choir").gain(0.1)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@24 A@8 ~@8 B@2 C@2 B@2 C@2 ~ D ~ D ~ D ~ E F G C H B G C I@2 ~@16 B G C H B G C J ~@12 B@2 C@2 B@2 C@2 B@2 C@2 B@2
  C@2 B@2 C@2 B@2 C I@2 ~@2
>`.pickRestart({
  A: "[~ d6@2 ~]/2", B: "d5@5 ~ e5 ~@9", C: "d5@6 c5 ~@9", D: "d5", E: "a4@5 ~ d5@3 ~ a5@4 ~@2",
  F: "bb4@6 e5 ~@9, d5@5 ~@11", G: "d5@5 ~ e5 ~@5 g5@4", H: "d5@6 c5 ~@9, a5", I: "[g3,a3,db4,e4]/2", J: "[d4,d5] ~@7",
})).s("gm_string_ensemble_2").gain(0.14)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@24 A@8 ~@25 B ~@3 B ~@20 B ~@3 B ~@41>".pickRestart({
  A: "[~ d5@2 ~]/2", B: "~@2 f5 ~",
})).s("gm_string_ensemble_2").gain(0.09)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@32 A B ~ C D E F C G@2 H I J K L M ~@8 G@2 H I J K L N O P ~@7 A B A C D E F Q G@2 H I J K L R ~@20 G@2 H I J K L M
  G@2 H I J K L N O R ~
>`.pickRestart({
  A: "~@6 [d4,a4] ~ [d4,a4] ~ [d4,g4]!6", B: "~@6 [d4,a4] ~ [d4,a4] ~ [d4,g4]!2 [g4,c5,g5]@4",
  C: "~@8 [f4,c5]!2 [f4,d5]!2 [g4,c5,g5]@4", D: "~@10 [g4,c5] ~ [g4,c5]!2 [g4,d5]!2", E: "~@10 [d4,g4]!2 [g4,c5,g5]@4",
  F: "~@6 [d4,a4] ~ [d4,a4] ~ [d4,f4]!3 ~ [d4,f4]!2", G: "[g3,bb3,d4]@5 ~ [g3,bb3,d4] ~@9",
  H: "[f3,a3,d4]@5 ~ [f3,a3,d4] ~ [a3,d4] ~@3 [a3,d4]!4", // Dm D5
  I: "[f3,a3,d4]@5 ~ [f3,a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]!4", // Dm D5
  J: "[g3,bb3,d4]@5 ~ [g3,bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4]!4", // Gm Bb
  K: "[g3,bb3,d4]@5 ~ [g3,bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~", // Gm Bb
  L: "[f3,a3,d4]@5 ~ [f3,a3,d4] ~ [a3,d4] ~@3 [a3,d4]!3 ~", M: "[f3,a3,d4]@5 ~ [f3,a3,d4] ~@7 [d4,f4,c5]@2",
  N: "[a3,db4,e4,g4,c5]!2 ~@2 [e4,a4]!2 [a3,db4,e4,g4,c5]!2 ~@4 [a3,db4,e4,g4,c5]!2 ~@2", // A7 A5 A7
  O: "~@2 [a3,db4,e4,g4,c5]!2 ~@4 [a3,db4,e4,g4,c5]!2 ~@2 [a3,e4,g4,c5]@2 ~@2, ~@3 [db4,a5]", P: "~ a5 ~@2",
  Q: "~@8 [f4,c5]!2 [f4,d5]!2 ~@4", R: "[d4,a4]!2 ~@14",
})).s("gm_distortion_guitar").gain(0.17).pan(0.1)

// chords · epiano2
const epiano2 = note("<~@24 A@2 B@2 A@2 B@2 ~@96>".pickRestart({
  A: "[[f3,g3,bb3,d4]@29 ~@3]/2", B: "[[f3,a3,c4,d4]@29 ~@3]/2",
})).s("gm_epiano2").gain(0.26)

// chords · piano
const piano = note(`<
  ~@10 A@3 ~@5 B@3 ~@13 C D@2 ~@2 E F G H@2 I G J@2 ~@7 K F G L@2 M G J@2 ~@16 K F G N@2 I G J@2 ~@6 A@3 ~@4 O P@2 M O
  P@2 M O P@2 M O Q@2 M O R@2 M O S ~@4
>`.pickRestart({
  A: "[~@12 a4@6 g4@3 f4@4 d4@16 ~@7]/3", B: "[~@12 bb4@7 a4@2 bb4 d4@16 ~@10]/3", C: "~@6 bb4 a4",
  D: "[bb4@2 a4 bb4@2 a4 e4@16 ~@10]/2", E: "~@6 f4 e4", F: "c4", G: "~@2 f4 e4", H: "[d4@3 b3@8 ~ f4@2 e4@2]/2",
  I: "d4", J: "[d4@3 b3@8 ~@5]/2", K: "~@13 e4@3", L: "[d4@3 b3@8 ~ [f4,a4] [e4,g4]@2 [d4,f4]]/2", M: "[d4,f4]",
  N: "[d4@3 b3@8 ~ f4 e4@2 d4]/2", O: "~@2 [f4,a4] [e4,g4]",
  P: "[f4 gb4@2 [b3,e4]@8 ~ [f4,a4] [e4,g4]@2 [d4,f4], d4@3 ~@13]/2", // E5 F Em Dm
  Q: "[f4 gb4@2 [b3,e4]@8 ~ [f4,a4] [e4,g4]!2 [d4,f4], d4@3 ~@13]/2", // E5 F Em Dm
  R: "[[d4,f4] [c4,e4]@2 d4@8 ~ [f4,a4] [e4,g4]!2 [d4,f4]]/2", S: "[d4,f4] [c4,e4]@2 [a3,d4]@5",
})).s("gm_piano").gain(0.05)

// other · synth drum · C
const synth_drum = note("<~@31 [~@12 [c4,c5] ~@3] ~@96>").s("gm_synth_drum").gain(0.33)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~ A B C D@2 B C D@2 B E D@2 B C D@2 C@2 D@2 C@2 F ~@65 A B C D@2 B C D@2 B G ~@27
>`.pickRestart({
  A: "~@6 [f2,c3]@2 [g2,d3] ~@7", B: "[d2,a2] ~@5 [d2,a2] ~ [d2,a2] ~@7", C: "[d2,a2] ~@5 [c2,g2]@2 [d2,a2] ~@7",
  D: "[g2,d3] ~@5 [f2,c3]@2 [g2,d3] ~@7", E: "[d2,a2] ~@5 [d2,a2]@2 [d2,a2] ~@5 [d2,a2]@2", F: "[g2,d3] ~@15",
  G: "[d2,a2] ~@5 [d2,a2]@2 ~@8", // D5
})).s("gm_electric_guitar_muted").gain(0.2)

// other · electric guitar muted
const electric_guitar_muted_2 = note(`<
  A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 A ~ B@2 ~@2 C ~@3 C ~ D@2 B@2 D@2 B@2 ~@7 E D@2 B@2 D@2 F G H
  ~@15 E D@2 B@2 D@2 F I A ~ B@2 A ~ B@2 A ~ B@2 D@2 B@2 D@2 B@2 D@2 B@2 D@2 B@2 D@2 B@2 D@2 F G H I ~
>`.pickRestart({
  A: "~@5 d3 f3 ~ a3@3 g3@2 f3 d3 ~, ~@8 ab3 ~@7", B: "[~@5 c3 d3 ~ f3@3 d3@12 ~@9]/2", C: "~@3 c3 d3 ~@3",
  D: "[~@5 d3 f3 ~ g3@3 g3@2 f3 d3@14 ~@4]/2", E: "~@10 [a3,d4] ~@5", F: "~@5 c3 d3 ~ f3@3 d3@4 ~",
  G: "e3@2 f3@2 f3@2 g3 ~ g3 f3 e3 ~ f3 e3 d3 db3", H: "e3@2 f3@2 f3@2 g3 ~ g3 f3 e3 [d3,f4] f3 e3 d3 db3, ~@12 f4@3 ~",
  I: "d3!2 ~@14",
})).s("gm_electric_guitar_muted").gain(0.6)

// other · electric guitar muted · soft notes
const electric_guitar_muted_3 = note(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@34 B ~@25 A ~@3 A ~@3 A ~@26 B ~@3
>`.pickRestart({
  A: "~@8 g3 ~@2 ab3@2 ~@3", B: "~@11 d3 ~@4",
})).s("gm_electric_guitar_muted").gain(0.38)

// other · electric guitar muted
const electric_guitar_muted_4 = note(`<
  A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 ~@8 D E C@2 D E C@2 ~@8 D E C@2 D E C@2 ~@17 D E C@2 D
  E F ~ A B C@2 A B C@2 A B C@2 D E C@2 D E C@2 D E C@2 D E C@2 D E C@2 D E C@2 ~@3
>`.pickRestart({
  A: "~@8 d3 f3 ~ a3@3 g3@2, ~@11 ab3 ~@4", B: "f3 d3 ~@14", C: "[~@8 c3 d3 ~ f3@3 d3@12 ~@6]/2",
  D: "~@8 d3 f3 ~ g3@3 g3@2", E: "f3 d3@14 ~", F: "~@8 c3 d3 ~ f3@3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.14).pan(0)

// other · electric guitar muted · soft notes
const electric_guitar_muted_5 = note(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@60 A ~@3 A ~@3 A ~@30
>`.pickRestart({
  A: "~@11 g3 ~@2 ab3@2",
})).s("gm_electric_guitar_muted").gain(0.09).pan(0)

// other · electric guitar muted
const electric_guitar_muted_6 = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@8 E F@2 D E F@2 D ~@8 E F@2 D E F@2 D ~@17 E F@2 D E
  G@2 ~ A B C D A B C D A B C D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D E F@2 D ~@3
>`.pickRestart({
  A: "~@11 d3 f3 ~ a3@2, ~@14 ab3 ~", B: "~ [g3,ab3]@2 f3 [d3,g3] ~ f3 d3 ~@8", C: "~@11 c3 d3 ~ c3 d3, ~@7 f3",
  D: "~ d3@3 d3@9 ~@3, ~ f3 ~@14", E: "~@11 d3 f3 ~ g3@2",
  F: "[~ g3@2 f3 [d3,g3]@2 f3 d3@11 ~@9 c3 d3 ~ c3 d3, ~@15 f3]/2", // G5
  G: "[~ g3@2 f3 [d3,g3]@2 f3 d3@11 ~@9 c3 d3 ~@2 d3, ~@15 [c3,f3]]/2", // G5 F5
})).s("gm_electric_guitar_muted").gain(0.05).pan(1)

// other · electric guitar muted · soft notes
const electric_guitar_muted_7 = note(`<
  A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@59 A B ~@2 A B ~@2 A B ~@29
>`.pickRestart({
  A: "~@14 g3 ~", B: "~@4 ab3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.04).pan(1)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@40 A@2 B@2 A@2 B@2 ~@4 C D C D A@2 B@2 A@2 B E F G H G I G J G K L M C D C D C D A@2 B@2 A@2 B N ~@12 O A B@2 A@2
  B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B E F P ~
>`.pickRestart({
  A: "[bb3,d4]@5 ~ [bb3,e4] ~@9", B: "[a3,d4]@5 ~ [a3,e4] ~@9",
  C: "[a3,d4]!3 ~ [a3,d4] ~ [g3,c4] [a3,d4]@2 [a3,d4]!2 ~@4 d3", // D5 C5 D5
  D: "[a3,d4]!2 ~ d3 [a3,d4] ~ [g3,c4] [a3,d4]@3 [a3,d4] ~@5", // D5 C5 D5
  E: "[db4,a4,c5]!2 ~@4 [db4,a4,c5]!2 ~@4 [db4,a4,c5]!2 ~@2", // F
  F: "~@2 [db4,a4,c5]!2 ~@4 [db4,a4,c5]!2 ~@2 [db4,g4,c5,e5]@4", G: "c4@6 d4 ~@7 a3@2",
  H: "c4 ~ d4@2 c4@2 d4 ~@3 a3@2 c4 ~ a3@2", I: "c4 ~ d4@2 c4@2 d4 ~@3 d4@2 c4@2 a3@2",
  J: "c4 ~ d4@2 c4@2 a3 ~@3 a3@2 c4 ~ a3@2", K: "c4 ~ d4@2 c4@2 a3 ~@3 d4@2 c4@2 a3@2",
  L: "[a3,d4]!2 ~@4 [g3,c4] [a3,d4]@2 [a3,d4]!2 ~@4 d3", M: "[a3,d4]!2 ~@4 [g3,c4] [a3,d4]@3 [a3,d4] ~@5",
  N: "[d4,a4]!2 ~@14", O: "[bb3,d4]@5 ~ [bb3,e4] ~@9, [g2,d3] ~@15", P: "[a4,d5]!2 ~@14",
})).s("gm_synth_brass_1").gain(0.29).pan(0.6)

// … 121 more lines

More by Celentano