Strudelify

La coppia piu bella del mondo

Celentano

KeyF majorTempo156 bpm
0:00/0:00
// La coppia piu bella del mondo — Celentano
// 156 bpm, 3/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: Full arrangement: all 159 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(156/3)

// 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 · contrabass
const bass = note("<A@3 B C@3 D@7 E@6 ~ F@4 G@3 H@7 ~@124>".pickRestart({
  A: "[~@13 f2@8 ~ f2@17 bb2@8 ~]/3", B: "bb2@11 ~@5", C: "[~ c3@18 ~ c3@10 c3@18]/3",
  D: "[~@13 f2@23 ~@2 db3@19 ~@6 bb2@24 ~ g2@19 ~@5]/7", E: "[~ c3@24 ~ f2@24 ~ bb2@23 ~ c2@17 ~@4]/6",
  F: "[~@10 f2@23 db2@26 ~@5]/4", G: "[bb1@21 ~@2 g1@24 ~]/3", H: "[~@6 c2@25 f1@24 ~ bb1@25 ~ c2@27 ~@3]/7",
})).s("gm_contrabass").gain(0.39).pan(0.6)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@21 A@2 B@2 C@3 D@7 ~@4 E@5 ~ F@4 ~@2 G@2 H@3 ~ I@4 J@3 ~ K@2 L@2 M@2 ~@2 N O@4 P@4 Q@4 R@2 ~@32 S@5 ~ T@4 ~@2 U@5
  V@8 W@4 X@8 ~@2
>`.pickRestart({
  A: "[~@5 f4@11]/2", B: "[~ db4@21 ~@10]/2", C: "[ab3@21 ~@2 b3@20 ~@5]/3",
  D: "[~@6 c4@24 ~ ab3@25 ~@26 e4@28 ~@2, ~@56 db4@29 ~@27]/7", E: "[c4@9 ~]/5", F: "[c4@25 ~@7]/4", G: "c4/2",
  H: "[a3@11 ~@5]/3", I: "[g3@31 ~]/4", J: "[a3@11 ~]/3", K: "b3/2", L: "[e4@31 ~]/2", M: "f4/2", N: "[f4,a4]",
  O: "[e4@8 bb4@7 ~, g4@63 ~]/4", P: "[a4@59 ~@5, f4@57 ~@7]/4", Q: "[b4@32 e4@31 ~]/4", R: "[a3@25 ~@7]/2",
  S: "[~@5 c4@72 ~@3]/5", T: "[~@5 c4@50 ~@9]/4", U: "[~@5 c4@32 a3@33 ~@10]/5",
  V: "[~@5 g4@63 ~ a4@59, ~@5 bb4@60 ~@4 f4@57 ~@2]/8", W: "[~@5 b4@32 c5@27]/4", X: "[~@5 f5@117 ~@6]/8",
})).s("gm_string_ensemble_2").gain(0.11).pan(0.6)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@48 A B@2 ~@78 C@4 ~@26>".pickRestart({
  A: "a3@13 ~@3", B: "b3/2", C: "[~@5 a3@13 ~@3 b3@32 ~@11]/4",
})).s("gm_string_ensemble_2").gain(0.05).pan(0.6)

// other · string ensemble 2
const string_ensemble_2_2 = note("<A@4 B@3 C@7 D E ~ F@3 ~@83 G@4 H@3 I@6 ~@43>".pickRestart({
  A: "[~@13 eb4@24 ~@2 f4@19 ~@6, ~@13 ab3@17 ~@34]/4", B: "[~@5 e4@19, ~ bb3@27 ~@20]/3",
  C: "[~@13 ab3@21 ~@4 f3@17 ~@8 ab3@22 ~@3 f3@17 ~@7]/7", D: "~ g3@15", E: "~@9 ab3@7",
  F: "[~@4 db4@21 ~@3 c4@17 ~@3]/3", G: "[~@15 f3@23 ~@2 db3@17 ~@7]/4", H: "[~@5 bb2@25 g2@18]/3",
  I: "[~@11 c3@22 ~@3 ab3@16 ~@11 db3@22 ~@2 c3@8 ~]/6",
})).s("gm_string_ensemble_2").gain(0.21).pan(0.4)

// chords · violin
const violin = note("<A@4 B@3 C@7 D E F G@3 ~ H@4 I@3 ~@131>".pickRestart({
  A: "[~@13 [g4,c5]@26 ~@8 g4@11 ~@6, ~@39 bb3@19 ~@6, ~@41 db5@16 ~@7]/4", B: "[~ g4@47]/3",
  C: "[~@13 [eb3,c4]@24 ~ ab3@19 ~@6 f3@24 ~ [ab3,b3]@18 ~@6, ~@19 c4@2 ~@35]/7", D: "~ bb3@15, c4", E: "~@9 g3@7",
  F: "~ c4@7", G: "[~@3 ab3@24 ~ e4@17 ~@3, ~@27 bb2@16 ~@5]/3", H: "[~@10 c5@25 db5@18 ~@11]/4",
  I: "[db5@25 b4@20 ~@3]/3",
})).s("gm_violin").gain(0.38).pan(0.7)

// chords · piano
const piano = note(`<
  ~@39 A@2 B@3 C D E F G H I J@2 K L M@2 N O P Q R S F G T I J@2 K U V W X Y@2 Z Q D E F G T I J@2 K L AA ~@31 AB@8 AC
  AD AE AF@4 AG@5 AH@3 AC AD AE AI@5 AJ@2 AK@2 AL@4
>`.pickRestart({
  A: "[~@11 f3@2 ~ c3@2 ~@5 [a3,c4,f4]@9 g2@2, f2@15 ~ f2@11 ~@5, ~@5 f4@14 ~@13, ~@6 [a3,c4]@14 ~ f3@2 ~@9]/2", // F Am
  B: "[~@5 [d6,e6,g6]@4 c6 ~ [g5,a5,c6]@3 e5 ~ [d5,e5,g5]@3 c5 ~ [g4,c5]@2 a4@2 g4 ~ e4@3 d4@2 c3@3 ~@2 c4@4 ~ g3@6, c2@47 ~, ~@3 g2@31 ~@2 g2@4 ~ c3@3 ~@4]/3", // Em7 Am7 Em7 C5
  C: "~@11 [bb3,d4]@5, c2@10 e3@5 ~, ~@5 c3@9 ~@2", // Bb
  D: "~@5 a3@4 [ab4,b4]@2 [a4,c5]@3 [bb4,d5]@2, f2@7 ~, [c4,f4]@5 ~@11, ~@3 f3@4 ~@9", // Abm Am Bb F5
  E: "[a4,c5]@2 f4@2 ~ [g3,bb3]@3 ~ ab3@2 a3@3 f3@2, ab4 ~@3 c4@2 ~@10", F: "f2@3 ~@2 [a3,c4]@5 ~@4 c3@2, ~@2 f3 ~@5",
  G: "[c4,f4]@4 ~ [f3,c4]@3 ~@3 [gb3,gb4]@5, f2@8 ~@3 gb2@3 ~@2, ~@5 f4@5 c4@4 ~@2", // F5 Gb
  H: "d4@6 f3@4 ~ [g3,f4,g4]@3 d2@2, g2@3 ~, g4@9 ~ d4@4 ~@2", // G7
  I: "~@5 g2 ~@5 g2@5, g1@11 ~@5, ~@5 [d4,f4]@10 ~, ~@5 b3@3 ~@8, ~@6 g4@9 ~", // Dm
  J: "[~@3 c3@2 ~@6 c3@2 g2@2 ~@4 c3@2 ~ [e4,g4]@8 c3@2, c2@14 ~@2 c2@11 ~@5, ~@5 [bb3,d4,e4,g4]@16 [bb3,d4]@7 ~@4]/2", // Em Em7b5 Bb
  K: "~@4 g4 g4@3 ~ [f3,f4]@2 ~ d4@3 c4, f2@13 ~@3, ~@3 d5@4 ~@9, ~@4 ab4@3 ~@9", // F
  L: "~@5 c4@5 ~ f3@4 ~, f2@15 ~, d4@9 ~@7", M: "c3 ~ c3!2 ~ c3 ~ c3 ~ c3 ~ c3!2 ~ c3 ~",
  N: "~@3 [bb3,d4,e4,g4] ~@5 c3@2 ~@3 g2@2, c2@13 ~@3, ~@11 [bb3,d4,e4,g4]@5", O: "~@5 [bb3,d4,e4,g4]@11, c2@15 ~",
  P: "c2@3 ~@2 c4@4 ~ g3@6, ~@4 g2@4 ~ c3@3 ~@4", Q: "~@5 e3@6 c3@5, c2@11 ~@5, ~@5 [bb3,d4]@9 ~@2",
  R: "~@5 [a4,c5]@3 ~@2 ab4 ~ f4@2 d4@2, f2@7 ~, [c4,f4]@4 b4@2 ~@3 [bb4,d5]@2 [a4,c5]@2 ~@3, ~@3 ab4@2 ~@11", // Am F5 Bb Am
  S: "[a3,c4]@3 ~@2 a3@5 ~ c3@5, ~@2 ab3 ~@5", T: "d4@3 f3@2 ~@2 d2, g2@11 [g3,f4,g4]@5, g4@9 ~ d4@5 ~",
  U: "~@5 c4@5 ~ f3@3 c3@2, f2@15 ~, d4@9 ~@7", V: "~@11 c3 ~@2 c3 ~, f2@13 ~@3, ~@5 [g3,a3,c4,f4]@11",
  W: "~@5 c3@5 ~@4 c3 ~, f2@13 ~@3, ~@11 [c4,d4,f4]@5", X: "~@11 c3@3 ~@2, f2@11 ~@5, ~@5 [c4,f4,a4]@11",
  Y: "[~@5 [d6,e6,g6]@3 ~ g6 ~ [d6,e6,g6]@3 c6 ~ [d6,e6,g6]@3 c6 ~ [d6,g6]@2 g6 ~ f6 ~ e6@3 g5@2, g2@31 ~, ~@2 c6 ~@13]/2", // Em7 G5
  Z: "[c3,g6]@3 ~@2 c4@4 ~ g3@6, ~@4 g2@4 ~ c3@3 ~@4", AA: "c3@3 ~",
  AB: "[~@16 f3@2 ~ c3@2 ~@5 [a3,c4,f4]@9 g2@2 ~@6 e6@3 c6 ~ [g5,a5,c6]@3 e5 ~ [d5,e5,g5]@4 c5 ~@2 a4@2 g4 ~ e4@3 d4@2 c3@3 ~@3 c4@3 c3@2 g3@5 ~@11 c3@5 ~@3 f3@3 ~@3 [ab4,b4]@2 [a4,c5]@3 ~@2 [a4,c5]@2 f4@2 c4@2 [g3,bb3]@3 ab3@2, ~@5 f2@15 ~ f2@11 ~@5 c2@47 ~ c2@11 ~@5 f2@14 ~@13, ~@11 [a3,c4,f4]@14 ~ f3@2 ~@12 g2@31 ~@2 g2@4 ~@13 e3@7 ~@31, ~@42 [d6,g6]@4 ~@13 [g4,c5]@3 ~@28 bb3@9 ~@2 [c4,f4]@5 ~ a3@5 ~@5 ab4 ~@10, ~@91 d4@9 ~@16 [bb4,d5]@2 ~@10]/8", // F Am7 Em7 Abm Am Gm F G5 …
  AC: "a3@4 ~ f2@3 ~ f3@2 [a3,c4]@5, ~@2 f3 ~@5", // Am
  AD: "~@3 c3@2 [c4,f4]@4 ~@2 f4@5, ~@5 f2@8 ~@3, ~@10 f3@3 ~@3, ~@11 c4@3 ~@2", // F5
  AE: "[gb3,c4,gb4]@5 d4@6 f3@4 ~, gb2@3 ~@2 g2@11, ~@5 g4@9 ~@2", // Gbdim
  AF: "[~@3 d2@2 ~@5 g2 b3@3 ~@2 g2@5 ~@11 c3@2 ~ g2@2 ~@4 c3@2 [e4,g4]@8 c3@2 ~@4 g4 ~ g4@3 [f3,f4]@2, [g3,d4,f4,g4]@5 g1@11 ~@5 c2@14 ~@2 c2@11 ~@5 f2@11, ~@11 [d4,f4,g4]@10 ~@4 c3@2 e4@16 ~@14 [ab4,d5]@4 ~@3, ~@26 [bb3,d4,g4]@16 ~ [bb3,d4]@7 ~@14]/4", // Em F G7 Abdim Gm Bb
  AG: "[~ d4@3 c4 ~@6 c4@5 f3@4 ~@12 c3@3 ~@6 c6@2 [d6,e6,g6]@3 g6 ~ [d6,e6,g6]@3 c6 ~ [d6,e6,g6]@4 c6 ~ g6!2 ~ f6 ~ e6@3 g5@2 [c3,g6]@3 ~@3 c4@3 c3@2, ~@5 f2@15 ~ f2@11 ~@5 g2@31 ~@5 g2@4 ~@3, ~@5 d4@9 ~@13 [c4,f4,a4]@11 ~@21 d6@2 ~@19]/5", // Em7 C5 F
  AH: "[g3@5 ~@11 c3@5 ~@3 f3@3 ~@3 [ab4,b4]@2 [a4,c5]@3 ~@2 [a4,c5]@2 f4@2 c4@2 [g3,bb3]@3 ab3@2, ~@5 c2@11 ~@5 f2@14 ~@13, ~@10 bb3@9 ~@2 [c4,f4]@5 ~ a3@5 ~@5 ab4 ~@10, ~@10 e3@7 ~@31, ~@11 d4@9 ~@16 [bb4,d5]@2 ~@10]/3", // Abm Am Gm F5 Bb
  AI: "[~@3 d2@2 ~@5 g2 b3@3 ~@2 g2@5 ~@11 c3@2 ~ g2@2 ~@4 c3@2 [e4,g4]@8 c3@2 ~@11 [a3,c4,f4]@5 ~@4 c3@2 [c4,d4,f4]@3 c3@2, [g3,d4,f4,g4]@5 g1@11 ~@5 c2@14 ~@2 c2@11 ~@5 f2@15 ~ f2@11, ~@11 [d4,f4,g4]@10 ~@4 c3@2 e4@16 ~@37, ~@26 [bb3,d4,g4]@16 ~ [bb3,d4]@7 ~@9 f3@11 ~@10]/5", // Em F Dm7 G7 Gm Bb
  AJ: "[d3@4 ~@12 f3@2 ~ c3@2 ~@4 c3@2 [c4,d4,f4]@3 c3@2, ~@4 c3@2 ~@5 [a3,c4,f4]@10 ~@11, ~@5 f2@9 ~@7 f2@11]/2", // Dm7 F
  AK: "[d3@4 ~@7 [a3,c4,d4,f4]@3 f3@2 [a3,c4,d4,f4]@5 ~@4 c3@2 [c4,d4,f4]@3 c3@2, ~@2 c3 ~@13, ~@5 f2@15 ~ f2@6 ~@5]/2", // Dm7
  AL: "[d3@4 ~@4 f3@3 ~@3 [ab4,b4]@2 [a4,c5]@3 ~@2 [a4,c5]@2 f4@2 c4@2 [g3,bb3]@3 ~ ab3@2 a3@4 c3@2 ~ [f2,a3,c4,d4,f4]@20 ~@4, ~@4 c3@2 ~@15 ab4 ~@42, ~@5 f2@14 ~@45, ~@5 f4@5 ~ a3@5 ~@4 [bb4,d5]@2 ~@42]/4", // Abm Am Gm Dm7 Bb
})).s("gm_piano").gain(0.47)

// other · violin
const violin_2 = note("<A@3 B C D@2 E@7 F G H@4 ~ I@4 J@3 K@3 L M@3 ~@124>".pickRestart({
  A: "[~@13 c4@9 f4@8 ab4@9 c5@8 ~]/3", B: "bb4@11 ~@3 ab4@2", C: "~ g4@9 f4@6", D: "[~@4 e4@11 c4@17]/2",
  E: "[~@13 f4@25 db4@17 ~@8 db4@24 ~ d4@18 ~@6]/7", F: "~ e4@15", G: "~@9 c4@7",
  H: "[~@2 f4@16 ~ g4@8 f4@17 g4@17 ~@3]/4", I: "[~@10 f4@45 ~@9]/4", J: "[db4@23 d4@22 ~@3]/3",
  K: "[~@6 g4@24 ~ ab4@8 c5@8 ~]/3", L: "f5@2 db5 f5", M: "[g5@8 ~ ab5@9 g5@28 ~@2, ~@3 c5@4 ~]/3",
})).s("gm_violin").gain(0.29).pan(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~@39 A B A@3 B A@3 B A@3 B A@3 ~ A@3 B A@3 B A@3 B A@6 B A@3 B A@3 B A B A@3 ~@31 C@2 D C@3 D C@3 D C@3 D C@4 D C@3 D
  C@3 D C D C D C@3 D C E ~
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "~@5 x ~@10", D: "~@3 x ~ x ~@10", E: "~@7 x ~@8",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@39 A@3 B A@12 ~@2 A B A@14 B A@14 ~@32 C@4 D C@12 D C@19 ~@2>".pickRestart({
  A: "~@5 x ~@10", B: "~@5 x ~@8 x ~", C: "~@11 x ~@4", D: "~@3 x ~@7 x ~@4",
})).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@123 A ~@3 A ~@3 A ~@3 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@39 A B C D E B C D E B C D E B C D F ~ G D E B C D E B C D E B C D@2 C D E B C D E B C D E B C D B D ~@32 H I J K
  E@2 J K E@2 J K E@2 J K@2 L E J K E@2 J K E@2 J K M I J K E@2 J N O ~
>`.pickRestart({
  A: "~@5 x ~@3 x ~ x ~@2 x ~", B: "x ~@2 x ~ x ~@3 x ~ x ~@4", C: "x ~@3 x!2 ~@3 x ~ x ~@2 x ~",
  D: "x ~@4 x ~ x ~ x ~ x ~@2 x ~", E: "x ~@2 x ~ x ~@3 x ~ x ~@2 x ~", F: "x", G: "~@4 x!2 ~@3 x ~ x ~@2 x ~",
  H: "~@11 x ~@2 x ~", I: "x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~", J: "x ~@4 x ~@3 x ~ x ~@2 x ~",
  K: "x ~@2 x ~ x ~@5 x!2 ~ x ~", L: "x ~@2 x ~@5 x ~ x ~@2 x ~", M: "x ~@2 x ~@7 x ~@2 x ~",
  N: "x ~@2 x ~ x ~@5 x ~ x ~ x", O: "~ x ~@3 x ~@10",
})).gain(0.56)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@40 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@3 B ~ A ~ B ~ A ~ B ~ A ~ B@2 ~ B ~ A ~ B ~ A ~ B ~ A ~ B A B ~@34 B C ~@2 B C
  ~@2 B C ~@2 B C@2 ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2 B C ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@12", C: "~@9 x ~@6",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@55 x ~@31 [~@7 x] x ~@70>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@54 A ~@32 B ~@48 C ~@15 C D ~ C ~ E ~>".pickRestart({
  A: "~@7 x", B: "~@11 x!2 ~@3", C: "~ x ~@2", D: "~@2 x!2 ~@12", E: "~@5 x ~ x ~@8",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@54 A ~@80 B C ~@11 B C D E F G H I J K ~>".pickRestart({
  A: "~@9 x ~ x!2 ~@3", B: "~@7 x", C: "x!2 ~@6", D: "x!2 ~@2", E: "x!3 ~@4 x", F: "x!2 ~@5 x", G: "x ~@8 x ~@6",
  H: "x ~ x!2 ~@5 x ~@4 x ~", I: "x", J: "x ~ x!2 ~@11 x", K: "~ x ~ x ~@12",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@39 A ~@17 A ~@62 B ~@16 B ~@11 B ~@7 C ~>".pickRestart({
  A: "x", B: "~@5 x ~@10", C: "~@7 x ~@8",
})).gain(0.56)

stack(
  bass, string_ensemble_2, string_ensemble_2_soft, string_ensemble_2_2, violin, piano, violin_2, kick, snare,
  snare_soft, hihat, hihat_soft, low_tom, mid_tom, high_tom, crash
)

More by Celentano