Strudelify
Ho perso le parole cover art

1998 · Radiofreccia (Colonna Sonora Originale) [20° Anniversario]

Ho perso le parole

LIGABUE

KeyD minorTempo97 bpm
0:00/0:00
// Ho perso le parole — LIGABUE
// 97 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/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(`<
  ~@20 A B C D A B C D E@2 F G H I F G H I F G H I F G H J A B C D A B C D E@2 ~@4 F G H I F G H I K ~@7 F G H I F G H J
  A B C D A B C D A B C D A B C D E@2 L M L N@2 ~
>`.pickRestart({
  A: "bb1!8", B: "c2@2 c2@2 c2@2 c2!4 c2@2 c2@2 c2@2", C: "d2!4 a2 g2 f2 e2", D: "c2!2 g2 a1@3 f1 a1",
  E: "[bb2@3 f2 ab2 f2 bb2@26]/2", F: "d2@7 ~ d2 ~ d2@6", G: "bb1@7 ~ bb1 ~ bb1@6", H: "c2@7 ~ c2 ~ c2@6", I: "f1 e1",
  J: "f2!4 e2!4", K: "d2", L: "d2@8 ~@2 c2@3 a1@3", M: "d2@8 ~@2 a1@3 c2@3", N: "d2/2",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@5 B C@2 D B C@2 D B C@2 D B C@2 B E F G B E F G ~@2 D B C@2 D B C@2 D B C@2 D B C@2 B E F G B E F G ~@6 D B C@2 D B
  C@2 D B C@2 D B C@2 D B C@2 D B C@2 B E F G B E F G B E F G B E F G ~@8
>`.pickRestart({
  A: "[~@2 [d4,e4]@2 ~@6 [d4,e4]@2 ~@6 [d4,e4]@2 ~@6 [d4,e4]@2 ~@6 [d4,e4]@2 ~@3 a2, [d3,a3]@8 a3@3 d4@8 ~@8 d4@4 ~@12 d4@4 ~@12 d4@4 ~@12 d4@4 ~, ~@10 d3@3 a3@3 a3@7 ~ a3@4 ~ a3@3 a3@7 ~ a3@4 ~ a3@3 a3@7 ~ a3@4 ~ a3@3 a3@7 ~ a3@4 ~ a3@3, ~@14 d3@10 ~@2 d3@3 ~ d3@4 ~@8 d3@3 ~ d3@4 ~@8 d3@3 ~ d3@4 ~@8 d3@3 ~@3]/5", // Dsus2 D5
  B: "~@4 [c4,f4]@3 [f3,c4] ~@2 bb2@2 ~@2 a2@2, [bb2,f3]@7 ~@2 [f3,c4]@2 ~ [f3,c4]@4", // F5 Bb5 F5
  C: "[~@8 c3 ~@3 [g3,c4,e4]@2 ~@9 f3 ~@4 [c4,e4]@3 e3, c3@7 ~@3 c3@5 ~ f3@6 ~@4 e3@4 ~@2, ~@4 [g3,c4,e4]@7 ~@3 a2@10 e2@8, ~@18 g3@5 ~@9, ~@20 [c4,e4]@7 ~@5]/2", // C
  D: "~@4 [a3,d4,g4]@3 [a3,d4,g4] ~@2 d3@2 ~@2 a2@2, d3@7 ~ d3@2 ~@6, ~@9 [a3,d4,g4]@2 ~ [a3,d4,g4]@4", // Dsus4
  E: "~@8 c3 ~@3 [g3,c4,e4]@3 ~, c3@7 ~@3 c3@5 ~, ~@4 [g3,c4,e4]@7 ~@5", // C
  F: "~@4 [e4,a4]@3 [a3,e4] ~@4 [a3,e4]@4, [d3,a3]@7 ~@2 [a3,e4]@2 ~@5, ~@5 d3@3", // A5 D5 A5
  G: "c3 ~ c3@2 [g3,d4]@2 [a2,a3,c4,e4]@6 ~ [a3,c4,e4]@3, ~ [g3,d4]@2 ~@9 a2@3 ~", // G5 Am G5
})).s("gm_acoustic_guitar_steel").gain(0.35)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@8 A@2 B C A@2 B C A@2 B C D@2 E F D@2 E F G@2 A@2 B C A@2 B C A@2 B C A@2 B C D@2 E F D@2 E F G@2 ~@3 H I@3 J K@3 L
  M ~@3 A@2 B C A@2 B C A@2 B C D@2 E F D@2 E F D@2 E F D@2 E F G@2 N@3 O@2 ~
>`.pickRestart({
  A: "~@3 d4@5, ~@4 g4@11 ~", B: "~@6 d4@4 c4@2 c4@3 ~, ~@2 g4@3 ~@3", C: "f3@2 a3@2 c4@3 ~ c4@4 g4@4",
  D: "[~@4 [c4,f4]@2 a4 [c4,f4,bb4]@3 [c4,e4,a4]@2 [c4,f4,bb4]@8 [c4,f4]@6 [c4,e4]@2 [c4,f4]@4, bb3@11 ~@21]/2", // F5 Fsus4 Am Fsus4 F5 C F5
  E: "[d4,f4] ~@3 e4@2 f4@4 e4@2 f4@2 e4@2, a4@15 ~", F: "c4@4 [g3,c4,e4]@2 [a2,a3,c4,e4]@9 ~",
  G: "[~ e4, ~@14 f3@17 ~, ~@15 [a3,d4]@17]/2", H: "~@4 [a2,d3,a3,c4,e4] ~ [a2,d3,a3,c4,e4]@2",
  I: "[d4@4 d4@8 a4 ~ f4@14 a4 ~ c4@12 a4@2 d5@2 a4@2]/3", J: "d5@3 f5@2 ~ d5@10",
  K: "[d4@4 d4@8 a4 ~ f4@14 a4 ~ c4@12 d5@2 f5@2 d5@2]/3", L: "a5@4 f5@3 ~ a5@4 f5@3 ~", M: "d5",
  N: "[~@7 d3 g3 a3 ~@10 d4@3 d3 d4@2 ~@10 d4@3 d3 ~@2 d4@3 a3@2 ~, d3@6 ~@7 a3@11 ~@5 a3@10 ~ a3@4 ~@4, ~@2 e4@10 ~ e4@7 ~@4, ~@4 d4@5 ~ d4@9 ~@29, ~@8 d3@3 ~@5 d3@3 ~@5]/3",
  O: "[d3,a3,d4,e4]/2", // Dsus2
})).s("gm_overdriven_guitar").gain(0.35).pan(0.2)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@12 A B C@2 A B C@2 D@3 E D@3 F@2 G H I J K H I J K H I J K H I J K D@3 E D@3 F@2 G L M N@2 H I J O H I J O ~@8 H I J
  K H I J K D@3 E D@3 P@4 E D@3 F@2 G Q@3 R@2 ~
>`.pickRestart({
  A: "d3@3 d4@4 ~", B: "f3@3 d4@4 f4", C: "c4/2",
  D: "[[bb3,c4,f4]@15 ~ [d4,g4]@15 ~@7 d4@8 ~@2, ~@15 c4@16 d4@5 ~@12, ~@32 [e4,a4]@15 ~]/3", // Bbsus2 G5 A5
  E: "c3@2 d3@2 e3@2 a2@9 ~", F: "[c3@2 d3@2 e3@2 a2@9 ~@9 bb2@2 d3@4 f3@2, ~@15 bb2@7 ~@10, ~@8 [f3,bb3,d4]@5 ~@3]/2",
  G: "bb3@2 a3@4 g3@9 ~", H: "d3@4 d4@3 d3 ~@2 d4@4 a3@2, ~@2 a3 ~", I: "f3@4 d4@3 f3 ~@2 d4@4 a3@2, ~@2 a3 ~",
  J: "c3@4 c4@3 c3 ~@2 c4@4 e3@2, ~@2 e3 ~", K: "f3@2 g3@2 c4@3 ~ c4@4 g4@4", L: "~ d4@3, d3@7 ~",
  M: "~@3 d4@5, f3@3 ~", N: "[f4@4 c4@27 ~]/2", O: "~@4 c4@3 ~@5 c4@3 ~, f3@5 ~@3 e3@5 ~@3, ~@2 g3@5 ~@3 g3@5 ~",
  P: "[c3@2 d3@2 e3@2 a2@9 ~ [bb3,c4,f4]@15 ~ [d4,g4]@15 ~@7 d4@8 ~@2, ~@15 bb2@7 ~@26 [e4,a4]@15 ~, ~@16 f3@10 ~@5 c4@16 d4@5 ~@12]/4", // Bbsus2 G5 A5
  Q: "d3@4 d4@3 d3 ~@2 d4@3 a3@3, ~@2 a3 ~", R: "[d3,a3]/2",
})).s("gm_distortion_guitar").gain(0.56).pan(0.8)

// other · guitar harmonics
const guitar_harmonics = note("<~@58 A@2 ~@48>".pickRestart({
  A: "[~@3 b4@3 ~@2]/2",
})).s("gm_guitar_harmonics").gain(0.36)

// chords · rock organ
const rock_organ = note(`<
  ~@20 A B C D A B C D ~@2 E A F G E A F G E A F G E A F G A B C D A B C D ~@6 E A F G E A F G E ~@7 E A F G E A F G A B
  C D A B C D A B C D A B C D ~@2 H@3 I@2 ~
>`.pickRestart({
  A: "[bb4,d5,f5]", B: "[c5,f5,g5]", C: "[d5,f5,a5]", D: "[c5,f5,g5]@3 [c5,e5,a5]@5", E: "[a4,d5,f5]", F: "[c5,e5,g5]",
  G: "[c5,f5,a5] [c5,e5,g5]", H: "[a4,d5,e5]", I: "[a4,d5,e5]/2",
})).s("gm_rock_organ").gain(0.19).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A@3 B A@3 B C ~ A@19 B A@3 B C ~ D@4 A@8 C ~@7 A@11 E A@3 E A@3 B A@3 B C ~ F@3 C ~@2
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@2 x ~@4", C: "x", D: "x ~@4 x ~@2", E: "x ~@2 x ~ x ~@2", F: "x ~@9 x ~@2 x ~@2",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@20 A@3 B A@3 B ~@2 A@15 C A@3 B A@3 B ~@2 A@12 ~@8 A@7 C A@3 B A@3 B A@3 B A@3 B ~@2 A@3 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@7 x!2 ~@2",
})).gain(0.72)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@30 [~@7 x ~@8]!16 ~@14 [~@7 x ~@8]!8 ~@8 [~@7 x ~@8]!8 ~@24>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@53 [~ x ~@2] ~@45 [~ x ~@2] ~@8>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@45 [~@7 x] ~@37 [~@7 x] ~@24>").gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@53 [x!2 ~@6] ~@45 [x!2 ~@6] ~@8>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@30 A B@3 A B@3 A B@3 A B@3 ~@7 C ~@22 A B@3 A B@3 ~@15 C ~@2 A@3 ~@3>".pickRestart({
  A: "~ x!3", B: "x!4", C: "~@5 x!3",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@2 B A ~@2 B A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B A ~@2 B A ~@5 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@2 B A ~@2 B A
  ~@2 B A ~@2 B A ~ A@4 ~@2
>`.pickRestart({
  A: "x", B: "~@3 x ~@4",
})).gain(0.56)

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

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

// drums · tambourine
const tambourine = s("tb").struct("<~@20 A@3 B A@3 B ~@18 A@3 B A@3 B ~@30 A@3 B A@3 B A@3 B A@3 B ~@8>".pickRestart({
  A: "x!16", B: "x!7 ~@5 x!4",
})).gain(0.24)

stack(
  bass, acoustic_guitar_steel, overdriven_guitar, distortion_guitar, guitar_harmonics, rock_organ, kick, snare,
  snare_soft, hihat, low_tom, mid_tom, open_hat, crash, ride, ride_soft, tambourine
)

More by LIGABUE