Strudelify

Una festa sui prati

Adriano Celentano

KeyE majorTempo127 bpm
0:00/0:00
// Una festa sui prati — Adriano Celentano
// 127 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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(`<
  ~@14 A B@5 C@5 B A B@5 C@5 B A B@5 D C@2 B A@2 E@2 A@2 E@2 F ~@12 A B@4 C@5 B A B@5 D C@2 B A@2 E@2 A@2 E@2 A@2 E@2
  A@2 E G
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "e2 ~ e2 ~ e2 ~ e2 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  C: "a2 ~ a2 ~ a2 ~ a2 ~ e2 ~ e2 ~ e2 ~ e2 ~", D: "e2 ~ e2 ~ e2 ~ e2 ~ f#2 ~ f#2 ~ g#2 ~ g#2 ~",
  E: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", F: "e2 ~@7", G: "a2 ~ a2 ~ a2 ~@11",
})).s("gm_fretless_bass").gain(0.4)

// other · baritone sax · "BARITONSAX"
const baritone_sax = note("<~@69 A B A B C D C D C E B ~@26>".pickRestart({
  A: "~@7 d2", B: "e2 ~@15", C: "~@7 g#2", D: "a2 ~@15", E: "a2 ~@13 d2@2",
})).s("gm_baritone_sax").gain(0.5).pan(0.3)

// other · trumpet
const trumpet = note(`<
  ~@48 A B C D E F G H ~@14 I J I J K L K L K I ~@10 A B C D M N O P A B C D M N O Q
>`.pickRestart({
  A: "[d5,d6]@4 [c#5,c#6]@3 ~ [b4,b5]@5 ~ [c#5,c#6]@2", B: "[d5,d6] ~ [d5,d6]@2 [c#5,c#6]@2 [b4,b5]@6 ~@4",
  C: "[c#5,c#6]@3 ~ [b4,b5]@3 ~ [a4,a5]@5 ~ [b4,b5] ~", D: "[c#5,c#6] ~ [c#5,c#6] ~ [b4,b5] ~ [a4,a5]@6 ~@4",
  E: "[d5,d6]@3 ~ [c#5,c#6]@2 ~@2 [b4,b5]@5 ~ [c#5,c#6] ~", F: "[d5,d6] ~ [d5,d6]@2 [c#5,c#6] ~ [b4,b5]@7 ~@3",
  G: "[c#5,c#6]@3 ~ [b4,b5]@3 ~ [a4,a5]@6 [b4,b5]@2", H: "[c#5,c#6] ~ [c#5,c#6] ~ [b4,b5]@2 [a4,a5]@4 ~@6",
  I: "~@4 [g#4,b4,d5]@2 ~@2 [g4,a#4,c#5]@3 [g#4,b4,d5] ~@4", // G#dim Gdim G#dim
  J: "[g#4,b4,d5] ~@3 [g#4,b4,d5]@2 [g4,a#4,c#5]@4 [g#4,b4,d5] ~@5", // G#dim Gdim G#dim
  K: "~@4 [e4,a4,c#5]@2 ~@2 [d#4,g#4,c5]@3 [e4,a4,c#5] ~@4", // A G# A
  L: "[e4,a4,c#5] ~@3 [e4,a4,c#5]@2 [d#4,g#4,c5]@4 [e4,a4,c#5] ~@5", // A G# A
  M: "[d5,d6]@4 [c#5,c#6]@3 ~ [b4,b5]@5 ~ c#5@2, ~@14 c#6 ~", // D C# B
  N: "[d5,d6] ~ [d5,d6]@2 c#5@2 [b4,b5]@7 ~@3, ~@4 c#6 ~@11", O: "[c#5,c#6]@3 ~ [b4,b5]@3 ~ [a4,a5]@6 b5@2, ~@14 b4 ~",
  P: "[c#5,c#6] ~ [c#5,c#6] ~ b5@2 a4@6 ~@4, ~@4 b4 ~ a5@4 ~@6", Q: "[c#5,c#6] ~ [c#5,c#6] ~ b5@2 ~@10, ~@4 b4 ~@11",
})).s("gm_trumpet").gain(0.46).pan(0.7)

// bass · tuba
const bass_2 = note("<~@48 A B C D E B F G H ~@33 A B C D E B F G A B C D E B F I>".pickRestart({
  A: "e2 ~@3 e2 ~@3", B: "e2 ~@7 e2 ~@7", C: "a2 ~@3 a2 ~@3 a2 ~@7", D: "a2 ~@7 a2 ~@7", E: "e2 ~@7 e2 ~@3 e2 ~@3",
  F: "a2@2 ~@2 a2 ~@3 a2 ~@7", G: "a2 ~@7 a2 ~@3 a2 ~@3", H: "e2 ~@7", I: "a2 ~@15",
})).s("gm_tuba").gain(0.51).pan(0.3)

// other · accordion
const accordion = note("<~@55 [~@10 a5!2 g#5!2 f#5!2] [e5 ~@7] ~@49>").s("gm_accordion").gain(0.4).pan(0.6)

// chords · trombone
const trombone = note(`<
  ~@28 A B C D@2 ~ E F ~ A G ~ H@2 I H J K L M N O P Q R O S T ~@3 A B C D@2 ~ U F ~ A V ~@10 W J H@2 I H J K L M N O P
  Q R O S T N O P Q R O S X
>`.pickRestart({
  A: "~@4 [f#3,b3,d4]@2 ~@4 [e3,a3,c#4] ~@3 [c#3,f#3,a3]@2", B: "[d3,g#3,b3]", C: "~@6 [f#3,b3,d4] ~",
  D: "[~@2 [a3,c#4]@2 ~@2 [e3,a3]@2 [d3,g#3,b3]@4 [g3,d4,f#4]@2 [a3,c#4,e4]@17 ~, ~@2 e3 ~@29]/2", // A A5 G#dim Gmaj7 A
  E: "~@4 [g3,c#4,e4] ~@3 [e3,a3,c#4]@2 [f#3,b3,d4]@2 ~@2 [d3,g#3,b3]@2", F: "[e3,a3,c#4]@7 ~",
  G: "[d3,g#3,b3] ~ [d3,g#3,b3] ~ [d3,g#3,b3] ~ [d3,g#3,b3] ~ [d3,g#3,b3] ~ [d3,g#3,b3] ~ [d3,g#3,b3] ~ [d3,g#3,b3] ~", // G#dim
  H: "~@4 [g#3,b3,e4] ~ [g#3,b3,e4] ~@9", I: "~@4 [g#3,b3,e4] ~ [g#3,b3,e4]@2 ~@8", J: "[g#3,b3,e4]@15 ~",
  K: "~@4 [a3,e4]@2 ~@2 [a3,d4,f#4]@2 [a3,c#4,g4] ~@3 [g#3,b3,f#4]@2, ~@4 g4 ~@11", // A5 D A7 G#m7
  L: "[c#4,g4] ~@3 [a3,c#4,g4]@2 ~@2 [g#3,b3,f#4]@2 [a3,c#4,g4]@2 ~@2 [e3,g#3,b3]@2, a3 ~@7", M: "[g#3,b3,d4]@15 ~",
  N: "d4@4 [c#4,c#5]@4 [b3,b4]@6 [c#4,c#5] ~, d5 ~@7", O: "[d4,d5] ~ d5@2 c#4@2 [b3,b4]@7 ~@3, ~@2 d4 ~ c#5 ~@11",
  P: "[c#4,c#5]@2 [b3,b4]@2 [a3,a4]@3 [b3,b4]", Q: "[c#4,c#5] ~ [c#4,c#5]@2 b4@2 [a3,a4]@8 ~@2, ~@4 b3 ~@11",
  R: "[d4,d5]@4 [c#4,c#5]@4 [b3,b4]@5 ~ [c#4,c#5] ~", S: "[c#4,c#5]@2 [b3,b4]@2 [a3,a4]@3 b3, ~@14 b4 ~",
  T: "[c#4,c#5] ~ c#4@2 [b3,b4] ~ a3@7 ~@3, ~@2 c#5 ~@3 a4@4 ~@6", // C# B
  U: "~@4 [a3,c#4,e4] ~@3 [a3,c#4,e4]@2 [f#3,b3,d4]@2 ~@2 [d3,g#3,b3]@2", V: "[d3,g#3,b3] ~@7",
  W: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", // E
  X: "[c#4,c#5] ~ c#4@2 [b3,b4] ~@11, ~@2 c#5 ~@13", // C# B
})).s("gm_trombone").gain(0.54).pan(0.6)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
  ~@15 A@2 B C D E F G H I D J K@5 L@5 K ~@2 M N O M P Q R@2 S@2 T@2 S@2 T@2 ~@14 A@2 B C E F G H I D ~@2 M N O M P Q
  R@2 S@2 T@2 S@2 T@2 S@2 T@2 S@2 T U
>`.pickRestart({
  A: "~@2 [b4,e5] ~@3 [b4,e5,g#5] ~, ~@4 g#5 ~@11", B: "~@4 [b4,e5,g#5] ~@7 [b4,g#5] ~@3, ~@6 e5 ~",
  C: "~@4 [b4,g#5] ~@7 [b4,e5,g#5] ~@3, ~@2 e5 ~@5", D: "~@4 [b4,e5,g#5] ~@7 [b4,e5,g#5] ~@3",
  E: "~@4 [e5,a5] ~@7 [e5,a5,c#6] ~@3, ~@2 c#5 ~@5", F: "~@4 [e5,a5,c#6] ~@7 [e5,a5] ~@3, ~@6 c#6 ~",
  G: "~@4 [e5,c#6]@2 ~@6 [e5,a5] ~@3, ~@4 a5 ~@7 c#6@2 ~@2", H: "~@4 [a5,c#6]@2 ~@6 [e5,c#6] ~@3, ~@4 e5 ~@7 a5@2 ~@2",
  I: "~@2 [e5,c#6] ~@3 [e5,a5,c#6] ~, ~@4 a5 ~@11", J: "~@4 [b4,e5,g#5] ~@11",
  K: "~@4 [e4,b4,d5]@2 ~@6 [e4,a4,c#5]@2 [e4,g#4,b4] ~", L: "~@4 [a4,e5,g5]@2 ~@6 [a4,d5,f#5]@2 [a4,c#5,e5] ~",
  M: "~@4 [e4,g#4,b4] ~ [e4,g#4,b4]@2 ~@8", N: "~@4 [e4,g#4] ~ [e4,g#4,b4]@2 ~@8, ~@2 b4 ~@5",
  O: "~@4 [e4,b4] ~ [e4,g#4,b4]@2 ~@8, ~@2 g#4 ~@5", P: "~ [e4,g#4,b4]",
  Q: "~@4 [e4,a4,c#5]@2 ~@2 [e4,a4,b4]@2 [e4,a4,c#5] ~@3 [e4,a4,b4]@2", // A Esus4 A Esus4
  R: "[[e4,a4,c#5]@2 ~@2 [e4,a4,c#5]@2 ~@2 [e4,a4,b4]@2 [e4,c#5] ~@3 [a4,b4]@2 ~@4 [b5,d6]@2 ~@4 e5 ~ [b5,d6]@2 ~@2, ~@10 a4@2 ~@2 e4@13 ~@5, ~@16 [g#4,d5]@11 ~@5, ~@20 a#5 ~@7 a#5 ~@3]/2", // A Esus4 C#m Asus2 Bm G#dim
  S: "~@2 [g#4,b4,d5] ~@3 [g#4,b4,d5] ~@3 [g#4,b4,d5] ~@3 [g#4,b4,d5] ~", // G#dim
  T: "~@2 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~", U: "~@2 [a4,c#5,e5] ~@13",
})).s("gm_drawbar_organ").gain(0.3).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@14 A B@5 C@5 B D B@5 C@5 B D B@6 C@2 B@3 C@2 B@2 C@2 ~@13 A B@4 C@5 B D B@6 C@2 B@3 C@2 B@2 C@2 B@2 C@2 B@2 C E
>`.pickRestart({
  A: "[b2,e3,g#3,b3] [e3,g#3,b3] [e3,g#3,b3,e4]!4 [e3,g#3]!2, e4 ~@3, ~ b2@5 [b2,b3,e4]@2", // E E5
  B: "[g#3,b3]!2 [e3,g#3,b3,e4] [e3,g#3,b3]!2 [e3,g#3,b3,e4]!3, [e3,e4]@2 ~ e4@2 ~@3", // G#m E
  C: "[a3,c#4]!2 [e3,a3,c#4,e4] [e3,a3,c#4]!2 [e3,a3,c#4,e4]!3, [e3,e4]@2 ~ e4@2 ~@3", // A E
  D: "[e3,g#3,b3]!2 [e3,g#3,b3,e4]!4 [e3,g#3]!2, e4 ~@3, ~ b2@5 [b2,b3,e4]@2", // E E5
  E: "[a3,c#4]!2 [e3,a3,c#4,e4] ~@5, [e3,e4] ~@3", // A E
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note("<A@8 B@7 ~@41 C@8 D@6 ~@36>".pickRestart({
  A: "[~@63 [b3,e4], b2!2 b2!2 b2!2 b2!2 b2!2 b2!2 b2!2 b2!2, ~ [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 ~, ~ e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3]/8", // E5
  B: "[~@47 [b3,e4]@2 ~@7, a2!2 a2!2 a2!2 a2!2 a2!2 b2!2 ~@2, ~ [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 ~@9, ~ e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 ~@3]/7", // E5 C#m E5
  C: "[~@63 [c#4,e4], b2!2 b2!2 b2!2 b2!2 b2!2 b2!2 b2!2 a2!2, ~ [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 ~, ~ e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3]/8", // C#m E5 C#m
  D: "[~@39 [b3,e4]@2 ~@7, a2!2 a2!2 a2!2 a2!2 b2!2 ~@2, ~ [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [c#4,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 ~@9, ~ e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 e3@2 ~@3]/6", // E5 C#m E5
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_3 = note("<A@8 B@7 ~@41 C@8 D@6 ~@36>".pickRestart({
  A: "[~ g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3]/8",
  B: "[~ a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 g#3@2 g#3@2 g#3@2 g#3@2 ~@7]/7",
  C: "[~ g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 g#3@2 a3@2 a3@2 a3@2 a3]/8",
  D: "[~ a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 a3@2 g#3@2 g#3@2 g#3@2 g#3@2 ~@7]/6",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A B C B C B C B C B C B A B C B C B C B C B C B A B D@4 B@4 E@8 F ~@12 A B C B C@2 B C B C B A B D@4 B@4 E@15 G
>`.pickRestart({
  A: "x!8", B: "x ~@2 x!2 ~@3", C: "x!2 ~@2 x ~@3", D: "x ~@3 x ~@2 x", E: "x!4", F: "x", G: "x!2 ~@2",
})).gain(0.5)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@15 A B A B A B A B A B A ~ A B A B A B A B A B A ~ A@8 C ~@22 A B A B@2 A B A B A ~ A@8 C ~@16
>`.pickRestart({
  A: "~ x ~@5 x", B: "~ x ~ x ~ x ~ x", C: "~ x ~@6",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@14 A ~@11 A ~@11 A ~@8 B ~ B ~ B ~ B ~ B ~@13 A ~@10 A ~@8 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2",
})).gain(0.37)

// drums · crash
const crash = s("cr").struct(`<
  ~@15 A ~@11 A ~@12 B@4 ~@4 C A C A C A C A ~@14 A ~@11 B@4 ~@4 C A C A C A C A C A C A C A C A
>`.pickRestart({
  A: "x", B: "~@2 x!2 ~@4", C: "x!2",
})).gain(0.25)

stack(
  bass, baritone_sax, trumpet, bass_2, accordion, trombone, drawbar_organ, acoustic_guitar_steel,
  acoustic_guitar_steel_2, acoustic_guitar_steel_3, kick, snare, hihat, hihat_soft, open_hat, crash
)

More by Adriano Celentano