Strudelify
L'ora dell'amore cover art

5O anni di applausi

L'ora dell'amore

Camaleonti

KeyF majorTempo75 bpm
0:00/0:00
// L'ora dell'amore — Camaleonti
// 75 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(75/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E@2 F@2 E@2 F G H I J K E@2 F@2 L M N O A B C D E@2 F@2 E F@2 G H I J K E@2 F@2 L M P Q A R C D S M N O T U V
  O W B C X@3
>`.pickRestart({
  A: "f3@6 f3@2 f3@4 f3 ~ e3 ~", B: "eb3@6 eb3@2 eb3@3 ~ eb3@4", C: "d3@3 d3 b2@4", D: "c3@2 b2@2 bb2@2 d3 e3",
  E: "f3@5 ~ f3@2 f3@4 c3@2 e3@2", F: "f3@3 f3 f3@2 c3 e3", G: "f3@3 f3 f3@2 f3 e3", H: "d3@5 ~ d3 ~ d3@4 d3@2 f3@2",
  I: "g3@5 ~ g3 ~ g3@4 f3@2 d3@2", J: "c3@5 ~ c3 ~ c3@8", K: "c3@6 c3 ~ c3@4 d3@2 e3@2", L: "f3@5 ~ f3@2 bb2@6 a2@2",
  M: "g2@2 g2 b2 c3@2 e3 g3", N: "a2@5 ~ a2@2 d3@8", O: "bb2@5 ~ bb2 ~ bb2@5 ~ bb2@2", P: "a2@3 a2 d3@4",
  Q: "bb2@5 ~ bb2 ~ bb2@6 bb2@2", R: "eb3@3 eb3 eb3@2 eb3@2", S: "f3@5 ~ f3@2 bb2@6 bb2@2",
  T: "f3@5 ~ f3 ~ f3@4 f3@2 c3@2", U: "bb2@4 ~@2 bb2 ~ bb2@5 ~ bb2@2", V: "f3@5 ~ f3 ~ f3@6 f3@2",
  W: "f3@6 f3@2 f3@4 f3@2 e3 ~", X: "[~ c3@4 b2@4 bb2@10 ~ f3@19 ~@9]/3",
})).s("gm_acoustic_bass").gain(0.26)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C@3 D E F G H I J K L@3 M N O P Q R S T U B C@3 V E F G H I J K L@3 M N O P Q R W T U B X@3 R W T Y Z AA AB U B
  AC@4
>`.pickRestart({
  A: "bb4@2 a4 g4 a4@12, f3", B: "bb4@2 a4 g4 a4@6 c5@4 f4 g4, eb3",
  C: "[f4@4 g4@2 a4@2 a4@4 g4@2 ~@2 [c3,c4,e4]@4 [b2,d4,f4]@4 [bb2,e4,g4]@4 ~ d2@2 ~ a4@12 ~@2 a4@2, d3@8 b2@7 c2@9 ~@4 c2@2 ~ e2@2 ~@15, ~@7 f4 ~@6 [g4,bb4]@2 [f2,c4]@8, ~@32 f4@11 ~ f4@4]/3", // C Bdim Edim Gm F5
  D: "[g4,b4]@4 g4 f4 e4 d4, f2, d5@3 ~, ~@8 b4@7 ~", E: "[d4,f4,bb4] [d4,f4,bb4,d5], f2",
  F: "[f2,c4,f4,a4,c5]@12 bb4@2 a4 g4, ~@3 c2", G: "[c4,f4,a4,c5]!2, f2@15 ~",
  H: "d4@10 d4@2 f4@2 e4 d4, f2@15 ~, [g4,b4,d5]@3 ~", I: "[d4,f4,bb4]@3 [d4,f4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4]@2, f2",
  J: "[f2,f4,a4,c5]@7 ~ [c4,f4,a4]@4 [c5,f5,a5,c6]@4", K: "~@2 a4 ~ a4 ~@2 a4, d2, ~ f4@2 d5@2 d4@3, ~@3 f4",
  L: "[~@3 bb4 ~@6 a4 ~ g4 a4 g4 ~@4 c5 bb4 c5 [a4,c5] [g4,c5], d2@7 d5@2 ~@2 c5@5 ~@2 g4@4 ~@2, ~ d4@7 c2@8 c2@8, ~ g4 d5 bb4 ~@4 bb4@2 ~@2, ~@5 g4@3 ~ f4@5 ~ f4@2 e4@5 ~@2]/3", // Am C5
  M: "[c4,f4,a4]@3 [f4,a4,c5]@3 [c4,f4,a4]@2, f2@15 ~", N: "[d4,g4,b4]@7 [g4,b4,d5] ~@3 d4 f4@2 e4@2, f2, ~ [g4,b4,d5]",
  O: "[bb4,d5]@3 ~ bb4 d4 ~ d4, f2, d4 d5, f4@5 ~ f4@4 ~@2 [f4,bb4]@4", // Bb Bb5
  P: "[f2,c4,f4,a4]@8 ~ f2 c2@2 d2@2 e2@2, ~ [c4,f4,a4,c5]", // F
  Q: "f2@2 ~ [c4,a4] [d4,bb4]@2 ~ a2, [c4,f4,a4]@5 f3@3 ~@8, ~@2 f2@2 bb2@3 ~, ~@3 f4@3 [d4,f4,bb4]@2", // F Gm F Bb
  R: "[d4,g4,b4]@2 ~ [d4,g4,b4] [c3,e4,g4,c5]@2 c3 [bb2,bb4], g2@3 ~ g2@4 ~@8, ~@5 g3@3 ~@4 [e4,g4,c5]@4", // G C Bb C
  S: "~@3 e4 [d2,d4,f4,a4]@2 ~ [f4,a4,d5], a4 ~, a2@4 db4@4 ~@5 d3@3, ~ a3@3 ~@2 d2@2", // Dm
  T: "[d4,f4,bb4]@4 [d4,f4,bb4]@2 [d4,g4,bb4]@2 [d4,f4,bb4]@3 [f4,bb4,d5] [f4,bb4,d5]@4, bb2 bb3", // Bb Gm Bb
  U: "~@2 f4 e4 ~@6 f4 e4 f4@4, f2@6 c4@5 ~@5, ~ f3@6 ~ f2@8, ~@2 f4@3 ~@3",
  V: "[g4,b4]@4 g4 f4 e4 d4, f2@15 ~, d5@3 ~, ~@8 b4@7 ~", // G
  W: "~@3 e4 [d4,f4,a4]@2 ~ [f4,a4,d5], a4 ~, a2@4 db4@4 ~@5 d3@3, ~@2 a3@6 d2@3 ~ d2@4", // Dm
  X: "[f4@4 g4@2 a4@2 a4@4 g4@2 ~@2 [c3,c4,e4]@4 [b2,d4,f4]@4 [bb2,e4,g4]@4 ~ d2@2 ~ [f2,c4,f4,a4]@4 ~@2 [c4,a4]@2 [d4,bb4]@4 ~@2 a2@2, d3@8 b2@7 c2@9 ~@4 c2@2 ~ e2@2 ~@3 f2@12, ~@14 f4@2 ~@12 [g4,bb4]@4 ~@5 f3@3 bb2@6 ~@2, ~@19 f4@3 [d4,f4,bb4]@2]/3", // C Bdim Edim F Gm Bb
  Y: "a4@8 ~@2 c4@2 c4 ~ c4@2, [f2,f4,c5]@3 [f2,f4,a4,c5], ~@2 a4 ~", // F5 F
  Z: "[d4,f4]@2 [d4,f4,bb4] [d4,g4,bb4] [d4,f4,bb4]@2 [d4,f4,bb4,d5]@2, bb2, ~ bb3", // Dm Bb Gm Bb
  AA: "[f2,f4,a4]@2 ~@4 c4!2, c5@3 ~ c5@12, ~ [f4,a4]@2 ~, ~@3 f2@3 [f2,f4,a4]@2, ~@8 f3@7 ~", // F
  AB: "[d4,f4]@4 [d4,f4,bb4]@2 [d4,g4,bb4]@2 [d4,f4,bb4]@3 [f4,bb4,d5] [f4,bb4,d5]@4, bb2, ~ bb3", // Dm Bb Gm Bb
  AC: "[f4@4 g4@2 a4@2 a4@4 g4@2 ~@3 [c4,e4]@4 [b2,d4,f4]@4 [bb2,e4,g4]@5 c2@2 d2@2 e2@2 ~@13 f6@7 ~@8, d3@8 b2@7 c2@9 ~@12 [f2,f4]@11 [c5,g5] [a5,c6]@7 ~@9, ~@14 f4@2 c3@5 ~@9 [g4,bb4]@6 c4@8 f3@11 ~@9, ~@37 a4@19 ~@8, ~@37 c5@9 c4@10 ~@8]/4", // C Bdim Edim F C5 Am Gm
})).s("gm_piano").gain(0.56)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<A@4 B@5 C D E F@2 G@2 H C D I J ~@3 K@4 B@5 C D L M@7 N@7 O@8 P Q R@6>".pickRestart({
  A: "[f4@4 eb4@4 f4@2 b3@2 c4 [b3,d4] [bb3,e4] [c4,e4], a4@5 g4@3, c4@2 d4 ~]/4", // Bm Bbdim C
  B: "[[a4,c5] b4 bb4 [a4,c5]@2, f4, ~ d5@2 ~@2]/5", C: "[g4,b4]", D: "[f4,bb4]",
  E: "~@12 d5 [d4,e4,f4,g4,a4,b4] [d2,f2,f3,g3,a3,b3,c4] [g2,a2,b2,c3,d3]", F: "[[f4,a4] [g4,bb4], d4, [e3,f3] ~@31]/2",
  G: "[[f4,a4] [e4,g4], c4]/2", H: "[f4,a4,c5]",
  I: "~@12 [f4,a4,b4,c5] [f3,g3,a3,b3,c4,d4,e4] [d3,e3,g3] [c4,d4,e4,f4,g4]", J: "[a4,b4,c5,d5] ~@15",
  K: "[[f4,f5]@4 eb4@4 f4@2 b3@2 c4 [b3,d4] [bb3,e4] [c4,e4], a4@5 g4@3, ~@2 d4 ~]/4", // F Bm Bbdim C
  L: "~@12 d5 [d4,e4,f4,g4,a4,b4] [d2,f2,g3,a3,b3,c4] [g2,a2,b2,c3,d3], ~@7 f3", // Em7 Dm7 G
  M: "[e3 ~@63 [f4,a4,c5]@16 [g4,b4]@16 [f4,bb4]@16, f3]/7", // F G Bb5
  N: "[~@12 [f4,a4,b4,c5] [g3,b3,c4,e4] [e3,g3] [c4,e4,f4,g4] [a4,b4,c5,d5] ~@63 [f4,f5]@16 eb4@16, ~@13 f3@99, ~@13 [a3,d4]@2 d4@97, ~@5 a4@2]/7", // F Cmaj7 Em C D7 F D5
  O: "[f4@4 b3@4 c4@2 b3@2 [bb3,e4]@2 [c4,e4]@2 ~@32 [f4,a4,f5]@8 ~ c5 ~ f4@5, d4@5 d4@27, ~ g4@15, ~@7 d5, ~@29 bb4@3]/8", // Bbdim C F
  P: "c5", Q: "~ c5 ~ f4@5, d5, ~ bb4@3",
  R: "[f4@16 eb4@16 f4@8 b3@8 c4@5 b3@4 [bb3,e4]@5 [c4,e4]@6 [c4,f4,a4,c5]@19 ~@9, a4@5 ~@7, c4@32 d4@25 ~@39]/6", // Bbdim C F
})).s("gm_drawbar_organ").gain(0.29)

// chords · drawbar organ · "ORGAN 1" · soft notes
const drawbar_organ_soft = note("<~@8 A@4 B@2 ~@2 C@4 ~@5 D ~@6 E@4 ~@4 F@4 ~@5 D ~@8 G ~@7>".pickRestart({
  A: "[~@16 d5@32 [a4,c5]@12 c5@2 [e2,e3] ~, ~@4 f5@27 ~]/4", B: "d5/2",
  C: "[~@16 d5@32 [a4,c5]@12 ~ g4 [f3,a3] b3, f5@15 ~]/4", D: "c4",
  E: "[~@16 d5@32 [a4,c5]@12 c5@2 [e2,e3] ~, ~@8 f5@53 ~@3]/4", F: "[~@16 d5@32 [a4,c5]@12 ~ g4 ~ b3, f5@15 ~]/4",
  G: "a4",
})).s("gm_drawbar_organ").gain(0.18)

// chords · rock organ · "ORGAN 1"
const rock_organ = note("<~@20 A@3 B@8 ~@5 C@8 D@3 E@7 F G ~@10>".pickRestart({
  A: "[~@3 eb4 ~ c4 bb3 a3 ~@3 f4 ~ d4 c4 bb3 ~@3 g4 ~ e4 d4 c4, f3, ~ a3@3 ~@4 g3@4 ~@4 a3@4 ~@4, ~@2 c4@2 d4@4 ~ b3@3 ~@5 db4@3 ~@4, ~@5 d4 e4@2 ~ e4 f4@2]/3",
  B: "[~ c4 ~@2 d4@3 e4 ~@56, d4 ~@15, ~ bb3@31, ~@3 f3@3 ~@58]/8",
  C: "[~ g3 [f3,a3] [e3,g3] ~@4, [d3,d4]@63 ~, [f3,a3] c3 ~@2, ~ bb3@7]/8", // F Em D F
  D: "[~@3 eb4 ~ c4 ~ a3 ~@3 f4 ~ d4 c4 ~@4 g4 ~ e4 d4 c4, ~ a3@3 ~@2 bb3@9 bb3@9, ~ c4 d4@2 g3@2 ~@2 a3@2 ~@2, ~@9 b3@3 ~@5 db4@3 ~@4, ~@5 d4 e4@2 ~ e4 f4@2]/3",
  E: "[~ c4 ~@2 d4@3 e4 ~@35 eb4 ~ c4 ~ a3 ~@3 f4 ~ d4 c4 ~, d4@4 ~@37 a3@3 ~@4 g3@4 ~@4, ~ bb3@27, ~@3 f3@3 ~@34 f3@4 ~@6 d4@2 e4@4, ~@42 c4@2 d4@4 ~ b3@3 ~@4]/7",
  F: "~@3 g4 ~ e4 d4 c4, a3 ~, ~ db4@3 ~@4, ~ e4 f4@2", G: "~ c4 ~@2 d4@3 e4, d4 ~, ~@3 f3@3 ~@2",
})).s("gm_rock_organ").gain(0.38)

// chords · pad new age · "SYNT/CHOIR"
const pad_new_age = note("<~@28 A B@2 C D E F G H I G J K@2 L@2 ~@13 M@3 ~@6>".pickRestart({
  A: "[a3,c4]", B: "[b3 [f4,bb4], d4]/2", C: "[a3,c4,f4]", D: "[a3,c4,f4]@15 ~", E: "[b3,d4,f4,g4]", F: "[d4,f4,bb4]",
  G: "[c4,f4,a4]", H: "[a4,d5,f5]", I: "[d4,g4,bb4]", J: "[c4,e4,g4,bb4]", K: "[[a3,c4] [b3,d4,g4], f4]/2",
  L: "[[d4,bb4]@16 [c4,a4]@15 ~, f4@31 ~]/2", M: "[f4 ~@31 f4@15 ~, d4@47 ~]/3",
})).s("gm_pad_new_age").gain(0.45)

// chords · pad new age · "SYNT/CHOIR" · soft notes
const pad_new_age_soft = note("<~@12 A B C D E@2 F@2 ~@37 G ~ G ~@6>".pickRestart({
  A: "[a4,f5]", B: "[d4,g4,bb4]", C: "[c4,f4,a4]", D: "[c4,e4,g4,bb4]", E: "[[a3,c4] [b3,d4,g4], f4]/2",
  F: "[[d4,bb4]@16 [c4,a4]@15 ~, f4]/2", G: "bb4",
})).s("gm_pad_new_age").gain(0.13)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@2 A B C D C@3 D C ~@3 A B ~@2 A B ~ A@2 C ~@2 A B C D C@3 D C ~@3 A B ~@2 A B ~ A@2 C ~@2 A B ~ A@2 C@2 ~@2 C ~ C E
  F ~ C
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~ x ~@2", C: "~@3 x ~@4", D: "~@7 x", E: "~@6 x ~@8 x", F: "~@7 x ~@8",
})).gain(0.28)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@11 A ~@3 A ~@7 A ~@11 A ~@3 A ~@7 A ~@14>".pickRestart({
  A: "~@6 x!2",
})).gain(0.28)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@3 A ~@11 A ~@3 A ~@7 A ~@11 A ~@3 A ~@7 A ~@14>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.21)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@11 [~@5 x ~@2] ~@23 [~@5 x ~@2] ~@30>").gain(0.21)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@7 B ~@3 A ~@3 A ~@7 A ~@7 B ~@3 A ~@3 A ~@7 A ~@13 C>".pickRestart({
  A: "~@6 x!2", B: "~@13 x!3", C: "~@7 x ~@8",
})).gain(0.28)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@3 A ~@7 B ~@3 A ~@3 A ~@7 A ~@7 B ~@3 A ~@3 A ~@7 A ~@14>".pickRestart({
  A: "~@5 x ~@2", B: "~@3 x",
})).gain(0.21)

// drums · high tom
const high_tom = s("ht").struct("<~@11 [~@12 x!2 ~@2] ~@23 [~@12 x!2 ~@2] ~@29 [~@3 x ~@4]>").gain(0.48)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@3 A ~@11 B ~@3 B ~@7 A ~@11 B ~@3 B ~@7 B ~@14>".pickRestart({
  A: "~@4 x!2 ~@2", B: "~@4 x!3 ~",
})).gain(0.07)

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

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@4 A@2 ~@2 A@2 ~@11 B ~ C ~@4 A@2 ~@2 A@2 ~@11 B ~ C ~@5 B ~ C ~ D@2 E F D ~@2 G ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x ~@3 x ~@2", C: "~@3 x ~ x ~ x", D: "~ x ~@6", E: "~ x ~@5 x", F: "~ x ~ x ~@4",
  G: "~@3 x ~@4 x ~ x ~@4 x",
})).gain(0.14)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 A B C B D E B F ~@16 A B D B@2 D B G C B@2 H I J@3 ~@6>".pickRestart({
  A: "x ~@2 x!3 ~ x", B: "x!2 ~ x!3 ~ x", C: "~ x ~ x!3 ~ x", D: "x!2 ~ x ~ x ~ x", E: "~ x ~ x!3 ~@2",
  F: "x!2 ~ x!3 ~@2", G: "x!2 ~ x!2 ~@3", H: "x ~@3 x!2 ~ x", I: "x ~@3 x!2 ~@2", J: "x!2 ~@2 x!2 ~@2",
})).gain(0.21)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@20 A ~ B ~@2 B ~@23 C ~@5 D E F@2 G ~@6>".pickRestart({
  A: "~ x ~@6", B: "x", C: "~ x", D: "~ x ~ x ~@4", E: "~ x ~ x ~@3 x", F: "~@3 x ~@3 x", G: "~@3 x ~@4",
})).gain(0.07)

// drums · cowbell
const cowbell = s("cb").struct("<~@20 [~ x ~ x]!8 ~@16 [~ x ~ x]!7 [~ x ~@2] [~ x ~ x]!8 ~@6>").gain(0.48)

stack(
  bass, piano, drawbar_organ, drawbar_organ_soft, rock_organ, pad_new_age, pad_new_age_soft, kick, kick_soft, snare,
  snare_soft, low_tom, low_tom_soft, pedal_hat, mid_tom, mid_tom_soft, high_tom, crash, crash_soft, ride, ride_soft,
// … 2 more lines

More by Camaleonti