Strudelify

Straordinariamente

Celentano

KeyG majorTempo78 bpm
0:00/0:00
// Straordinariamente — Celentano
// 78 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 77 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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 · electric bass finger
const bass = note(`<
  ~ A@2 B@2 C D E F G H I J K L M N O P Q R S T U V W X E F G H I Y Z L M AA O AB Q R S T U AC C AD AE AF W X AG F G H
  AH AI K L M N O P Q R S T U AD C AD AE AF AJ AK@2 ~
>`.pickRestart({
  A: "g2@8 ~@2 d3@5 ~ d3 ~ d3@4 ~@2", B: "g2@9 ~ d3@5 ~ d3 ~ d3@4 ~@2", C: "g2@9 ~ d2@2 g1@12",
  D: "g2@6 d2@6 g2@6 d2@5 ~", E: "f#2@9 ~ c#2 ~ f#2@6 c#2@6", F: "f#2@10 c#2@2 f#2@5 ~ f#2@5 ~",
  G: "a2@9 ~ e2 ~ a1@10 e2@2", H: "a2@10 e2 ~ a1@10 c2@2", I: "b1@9 ~ b1@2 e2@9 ~ e2@2",
  J: "b1@9 ~ b1@2 e2@8 b2@2 a#2 ~", K: "a2@4 d2@2 e2@5 ~ a1@8 c2 ~ c#2 ~", L: "d2@9 ~ a1@2 d2@5 ~ d2@4 ~@2",
  M: "g2@10 d2 ~ g1@8 d2 ~ c2@2", N: "b1@9 ~ b1 ~ e2@5 ~ e2@4 ~@2", O: "a2@4 d2 ~ e2@6 a2@5 ~ a2@5 ~",
  P: "a1@8 ~@2 a1 ~ e2@9 ~ e2 ~", Q: "d#2@9 ~ a#1 ~ d#2@5 ~ a#1@5 ~", R: "d#2@9 ~ a#1 ~ d#2@7 ~ f2@2 f#2@2",
  S: "g2@9 ~ d2@2 g2@5 ~ g2@4 ~@2", T: "d2@9 ~ d2 ~ e2@7 ~ b1@2 a#1@2", U: "a2@8 d2@2 e2 ~ a1@10 ~@2",
  V: "d2@9 ~ a1@2 d2@5 ~ d2@5 ~", W: "g2@9 ~ d2@2 g1@6 d2@5 ~", X: "g2@10 d2@2 g2@5 ~ g2@5 ~",
  Y: "b1@9 ~ b1 ~ e2@8 b2@2 a#2 ~", Z: "a2@4 d2@2 e2@5 ~ a1@8 c2 ~ c#2@2", AA: "b1@9 ~ b1@2 e2@5 ~ e2@4 ~@2",
  AB: "a1@8 ~@2 a1@2 e2@9 ~ e2 ~", AC: "d#2@9 ~ a#1 ~ d#2@5 ~ d#2@5 ~", AD: "d#2@9 ~ a#1@2 d#2@5 ~ d#2@5 ~",
  AE: "g2@9 ~ d2 ~ g2@6 d2@6", AF: "a2@10 d2@2 a2@5 ~ d2@5 ~", AG: "c#2@4 ~@6 g#1@2 c#2@5 ~ g#1@5 ~",
  AH: "b1@9 ~ b1@2 f#2@9 ~ f#2@2", AI: "e2@9 ~ e2 ~ e2@8 b2@2 a#2 ~", AJ: "g2@3 ~ g2 ~ g2@3 ~ c2@4 ~@2 f2@4 ~@4",
  AK: "[g2@3 ~@3 g#2@3 ~ g2@5 ~@3 g#1@3 ~ g1@24 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@5 A B C D E F G@2 H I J K L M N O B P Q R A B C S T F G@2 H I J K L M N O B P U V W X Y U Z AA AB AC H U AD AE H I J
  K L M N O B P U V W X Y U ~@4
>`.pickRestart({
  A: "[g3,b3,d4,f#4]@6 [b3,d4,f#4] ~@5 [g3,b3,d4,f#4]@5 ~ [b3,d4,f#4] ~@5", // Gmaj7 Bm Gmaj7 Bm
  B: "[g3,b3,d4,f#4]@5 ~ [b3,d4,f#4] ~@5 [g3,b3,d4,f#4]@5 ~ [b3,d4,f#4] ~@5", // Gmaj7 Bm Gmaj7 Bm
  C: "[f#3,a#3,e4]@5 ~ [f#3,a#3,e4] ~@5 [f#3,b3,e4]@5 ~ [f#3,b3,e4] ~@5", // F#7 Esus2
  D: "[f#3,c4,e4]@5 ~ [f#3,c4,e4] ~@5 [f#3,c#4,e4]@5 ~ [f#3,c#4,e4] ~@5", // F#m7b5 F#7
  E: "[a3,c4,e4]@5 ~ [a3,c4,e4] ~@5 [g#3,c4,e4]@4 ~@2 [g#3,c4,e4] ~@5", // Am G#aug
  F: "[g3,c4,e4]@4 ~@2 [g3,c4,e4] ~@5 [f#3,c4,e4]@5 ~ [f#3,c4,e4] ~@5", // C F#m7b5
  G: "[b3,d4,f#4]@5 ~ [b3,d4,f#4] ~@5 [g#3,b3,e4]@5 ~ [g#3,b3,e4] ~@5", // Bm E
  H: "[a3,c4,e4]@5 ~ [a3,c4,e4] ~@5 [a3,c4,e4]@5 ~ [a3,c4,e4] ~@5", // Am
  I: "[f#3,c4,e4]@5 ~ [f#3,c4,e4] ~@5 [f#3,c4,e4]@5 ~ [f#3,c4,e4] ~@5", // F#m7b5
  J: "[g3,d4,f#4]@5 ~ [g3,d4,f#4] ~@5 [g3,d4,f#4]@5 ~ [g3,d4,f#4] ~@5", // Gmaj7
  K: "[a3,d4,f#4]@5 ~ [a3,d4,f#4] ~@5 [g#3,d4,f#4]@4 ~@2 [g#3,d4,f#4] ~@5", // D G#m7b5
  L: "[a3,c#4,g4]@5 ~ [a3,c#4,g4] ~@5 [a3,c#4,g4]@5 ~ [a3,c#4,g4] ~@5", // A7
  M: "[a3,d4,g4]@5 ~ [a3,d4,g4] ~@5 [a3,c#4,g4]@5 ~ [a3,c#4,g4] ~@5", // Dsus4 A7
  N: "[a#3,d#4,g4]@5 ~ [a#3,d#4,g4] ~@5 [a#3,d#4,g4]@5 ~ [a#3,d#4,g4] ~@5", // D#
  O: "[a#3,d4,g4]@5 ~ [a#3,d4,g4] ~@5 [a#3,c4,g4]@5 ~ [a#3,g4] ~@5", // Gm C7 D#
  P: "[a3,c4,f4]@5 ~ [a3,c4,f4] ~@5 [g#3,b3,e4]@5 ~ [g#3,b3,e4] ~@5", // F E
  Q: "[a3,c4,e4,g4]@5 ~ [c4,e4,g4] ~@5 [a3,c4,e4,g4]@6 [c4,e4,g4] ~@5", // Am7 C Am7 C
  R: "[a3,d4,g4]@5 ~ [a3,d4,g4] ~@5 [a3,d4,f#4]@5 ~ [d4,f#4] ~@5", // Dsus4 D
  S: "[f#3,c4,e4]@4 ~@2 [f#3,c4,e4] ~@5 [f#3,c#4,e4]@5 ~ [f#3,c#4,e4] ~@5", // F#m7b5 F#7
  T: "[a3,c4,e4]@5 ~ [a3,c4,e4] ~@5 [g#3,c4]@5 ~ [g#3,c4,e4] ~@5, ~@4 e4 ~@3", // Am G# G#aug
  U: "[a3,c4,g4]@5 ~ [a3,c4,g4] ~@5 [a3,c4,g4]@5 ~ [a3,c4,g4] ~@5", // Am7
  V: "[a#3,d4,g4]@5 ~ [d4,g4] ~@5 [a#3,d4,g4]@5 ~ [a#3,d4,g4] ~@5", // Gm G5 Gm
  W: "[g3,d4,f#4]@5 ~ f#4 ~@5 [g3,d4,f#4]@5 ~ [g3,d4,f#4] ~@5", // Gmaj7
  X: "[a#3,d4,g4]@5 ~ [a#3,d4,g4] ~@5 [a#3,d4,g4]@5 ~ [a#3,d4,g4] ~@5", // Gm
  Y: "[g3,d4,f#4]@5 ~ [d4,f#4] ~@5 [g3,d4,f#4]@4 ~@2 [g3,d4,f#4] ~@5", // Gmaj7 D Gmaj7
  Z: "[g3,b3,e4]@5 ~ [g3,b3,e4] ~@5 [g3,b3,e4]@5 ~ [b3,e4] ~@5", // Em E5
  AA: "[g3,b3,e4]@5 ~ [g3,b3,e4] ~@5 [g3,b3,e4]@5 ~ [g3,b3,e4] ~@5", // Em
  AB: "[g#3,c#4,f#4]@5 ~ [g#3,c#4,f#4] ~@5 [g#3,c#4,f#4]@5 ~ [g#3,c#4,f#4] ~@5", // C#sus4
  AC: "[a#3,c#4,f#4]@5 ~ [a#3,c#4,f#4] ~@5 [a#3,c#4,f#4]@5 ~ [a#3,c#4,f#4] ~@5", // F#
  AD: "[b3,d4,f#4]@5 ~ [b3,d4,f#4] ~@5 [b3,d4,f#4]@5 ~ [b3,d4,f#4] ~@5", // Bm
  AE: "[b3,e4,g#4]@5 ~ [b3,e4,g#4] ~@5 [b3,e4,g#4]@5 ~ [b3,e4,g#4]@2 ~@4", // E
})).s("gm_electric_guitar_jazz").gain(0.32)

// other · trombone
const trombone = note(`<
  A B C D E F G H I J@2 K ~@15 L ~@3 M N ~@2 O P ~ Q ~@5 R S T ~@2 U V W@2 X Y Z@2 ~@2 Q@2 ~ AA ~@5 R S AB ~@2 AC AD@2 ~
>`.pickRestart({
  A: "~@16 d3@2 d3@3 ~@3", B: "g2@3 ~@13 d3@2 d3@2 ~@4", C: "g2@3 ~@13 d3 ~ d3 ~@5", D: "g2@2 ~@13 d3@2 ~ d3@2 ~@4",
  E: "g2@2 ~@14 d3 ~ d3@2 ~@4", F: "g2 ~@8 d3 ~@2", G: "g2@2 ~@20 c#3 ~", H: "f#2@2 ~@20 c#3 ~", I: "f#2@2 ~@20 e3 ~",
  J: "a2@2 ~@20 e3 ~", K: "b2@2 ~@4 b2@2 ~@2 e2@3 ~@11", L: "f#3@3 ~ f#3 ~ f#3 ~@5 f3@5 ~ f#3 ~@5",
  M: "~@6 e4 ~@2 e4 ~@2", N: "e4@3 e4 ~@2 e4 ~@3 e4 ~ e4@3 ~ e4 ~@5 e4@2", O: "~@5 [f#3,b3] ~@6", P: "~@5 [e3,b3] ~@6",
  Q: "~@10 [e3,b3] ~@13", R: "~@6 d4 c#4 ~ c4 ~ d4 ~@2 c#4 ~@2 c4@5 ~@2", S: "~@6 f#3 ~ f3 ~ e3@9 ~@5",
  T: "~@5 d4 ~ c#4 ~@2 c4 ~ d4 ~@2 c#4 ~@2 c4@4 ~@2", U: "~@9 b3 d4 g4", V: "a4@2 c5 b4 a4 g4 f#4 e4",
  W: "[f#4@2 ~ f#4 ~@14 b3@3 a#3@15 ~@6 g#3@6]/2", X: "g3@6 a3 c4", Y: "g4@5 ~ g4@5 ~ e4@6 c4@6",
  Z: "[f#4@6 ~@3 d4@2 e4@10 ~@3]/2", AA: "~@5 e3 ~@6, ~@10 b3 ~@13", AB: "~@6 d4 c#4 ~ c4 ~@2 d4 ~@2 c#4 ~@2 c4@4 ~@2",
  AC: "g3@3 ~ g3 ~ g3@3 ~ c3@3 ~@3 f3@2 ~@6", AD: "[[d3,g3]@2 ~@16 d#4@3 ~ d4@23 ~@3]/2",
})).s("gm_trombone").gain(0.48)

// other · bagpipe
const bagpipe = note("<~ A@3 B ~@20 C ~ D ~@3 E F ~@11 G H I ~@21 G H J ~@2 K L@2 ~>".pickRestart({
  A: "~@3 a5@2 b5@7", B: "~@6 a5@3 ~ b5@14", C: "~@10 e5 ~@13", D: "f#5@2 ~@2 f#5 ~ f#5 ~@5 f5@5 ~ f#5@2 ~@4",
  E: "~@6 e6 ~@2 e6 ~@2", F: "e6@3 ~ e6 ~ e6@2 ~@2 e6@2 e6@3 ~ e6 ~@5 c6@2", G: "a#5@7 ~", H: "b5@5 ~@3", I: "a#5@11 ~",
  J: "a#5@23 ~", K: "g5@3 ~ a#5 ~ b5@2 ~@2 d6@3 ~@3 c6@3 ~@5", L: "[g6@2 ~@4 a#5@3 ~ a5@3 ~@5 a#6@3 ~ g6@22 ~@4]/2",
})).s("gm_bagpipe").gain(0.61)

// other · baritone sax
const baritone_sax = note("<~ A B A@2 ~@39 C D E ~ F G H I@2 J K L@2 ~@11 C D E ~@3 M@2 ~>".pickRestart({
  A: "~@3 b2@2 c3@7", B: "~@2 b2 c3@5", C: "d#2", D: "g2@13 ~@11", E: "d#2@23 ~", F: "~@23 [e2,b2]",
  G: "e3@18 g3@2 ~ d4@2 ~, ~@10 b3 ~", H: "g4 ~@3", I: "[c#3@2 ~ c#3 ~@14 e3@3 c#3@14 ~@7 f3@6]/2", J: "e3@6 c3 e3",
  K: "b3@6 a3@6 c3@6 d3@5 ~", L: "[b2@6 ~@3 b2@2 e2@10 ~@3]/2", M: "[~@6 a#3@4 a3@5 ~@3 g#3@3 ~ g3@23 ~@3]/2",
})).s("gm_baritone_sax").gain(0.4).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I J K@2 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I J L M N O N P ~@2 Q@2 ~@2 R@2 E@2 F@2
  G@2 H@2 I J L M S O T U ~@4
>`.pickRestart({
  A: "[g3,d4,f#4,b4]/2", B: "[a#3@11 ~ b3@12 c4@12 c#4@12, [f#3,f#4]]/2",
  C: "[[a3,a4] [g#3,g#4] g4 e4, c4, e4 [a3,c5]]/2", D: "[[b3,f#4]@2 [e3,g#4]@2 [b3,a4]@2 a#4 b4, d4, ~@3 e3]/2",
  E: "[c4@2 d3 [f#3,f#4], a3, g4@3 ~]/2", F: "[[g3,b3]@2 a3 [g#3,b3], d4@3 ~, ~ f#4]/2",
  G: "[[a3,c#4]@23 ~ d4@12 c#4@12, [g4,b4], ~@23 a3@25]/2", H: "[d#3,a#3,d4,g4,a#4]/2", I: "[g3,d4,g4,b4]",
  J: "[d3,d4,f4,a4] [e3,d4,g#4,b4]", K: "[e4@2 ~ f#4, c5, g4@3 ~, ~@24 d4@23 ~]/2", L: "[e4,g4,c5]", M: "[d#4,f4,a#4]",
  N: "[d4,g4,b4]@23 ~", O: "[d#4,f4,a#4]@23 ~", P: "g4 f#4, [d3,d4]", Q: "[f#5@15 ~]/2",
  R: "[[e5,b5]@24 [d#5,a#5]@12 [e5,b5]@11 ~, b4]/2", S: "[d4,f#4,b4]@23 ~", T: "[d4,f#4,b4]", U: "e3 d3, [a3,d4]",
})).s("gm_string_ensemble_1").gain(0.19)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A@3 B A@3 B A B A B A B A B A@3 B A@6 ~@2 A B ~@2 A ~ A B A@2 B ~ A B A C A B A B A B A B A B ~@2 A ~ A B A@2 B ~
  A@3 C ~ D ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x ~@4 x ~@3", D: "~@2 x",
})).gain(0.56)

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

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~@3 A@2 ~@3 B ~@3 B ~ B ~ B ~@3 B ~@3 B ~@5 C D B ~ B ~ B ~@3 B ~@17 B ~ B ~@3 B ~@10 E ~
>`.pickRestart({
  A: "~ x ~@4", B: "~@2 x", C: "~@11 x", D: "~@5 x ~@18", E: "~@2 x ~@8 x ~@12",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@18 A ~@27 A ~@20 B ~@6 C A ~>".pickRestart({
  A: "~@3 x", B: "~@11 x", C: "~ x ~@2",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@68 [~@5 x] ~@5 [~@3 x!3 ~@18] [~@17 x ~@6] ~>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~ A ~ A ~@21 B ~@5 C D ~@10 B ~ A@2 ~@21 A@3 ~@2 E F G ~>".pickRestart({
  A: "x", B: "~@5 x ~@6", C: "~@2 x!2", D: "x ~@2 x ~@5 x ~ x", E: "x ~@4 x ~@2 x ~@3", F: "x ~@2 x ~ x ~@3 x ~ x",
  G: "~@5 x",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct(`<
  ~ A B A B@4 C B@3 C B C B C B C B C B C B C B C B C B@2 D E B C F G B G B C B C B C A H B C B@2 F C B@2 F C B C F G B
  G B C B C B H A H B C I E ~@2
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x!2 ~@2", E: "~ x", F: "x ~@2 x ~ x ~@3 x ~@2",
  G: "x ~@2 x ~ x ~@3 x ~ x", H: "~@3 x ~@2 x ~@2 x ~ x", I: "~ x!2 ~",
})).gain(0.48)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@2 A B@3 C@2 ~ B C@2 ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ B C@2 ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ B C@2 ~ B C@2 ~ C ~ C
  ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@3
>`.pickRestart({
  A: "~@2 x ~@8 x", B: "~@2 x", C: "~@11 x",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~ [~ x ~ x]!73 [~ x ~@2] ~@2>").gain(0.56)

stack(
  bass, electric_guitar_jazz, trombone, bagpipe, baritone_sax, string_ensemble_1, kick, snare, clap, clap_soft, low_tom,
  mid_tom, crash, ride, ride_soft, tambourine
)

More by Celentano