Strudelify

Un buco nel cuore

Cocciante

KeyE majorTempo85 bpm
0:00/0:00
// Un buco nel cuore — Cocciante
// 85 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): solo gt.
setcpm(85/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.

// chords · epiano1 · "trem elp"
const epiano1 = note(`<
  ~@10 A@2 B@2 C D E@2 F@2 B@2 G H I J K@2 L M N O I J K@2 L M N O ~@16 I J K@2 L M N O ~@8 I J K@2 L M N O I J K@2 L M
  N O I J K@2 L M N O I J K@2 L M N O ~
>`.pickRestart({
  A: "[~@11 [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,d#4,f#4] [c#4,e4,g#4]@16, [c#2,c#3]]/2", // C#m D#m7 C#m C#
  B: "[~@11 [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,d#4,f#4] [c#4,e4,g#4]@16, [a1,a2]]/2", // C#m D#m7 C#m A
  C: "~@11 [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,e4,g#4], [f#1,f#2]", D: "[b1,b2,b3,e4,g#4]",
  E: "[~@11 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@16, [e2,e3]]/2", // E B E
  F: "[~@11 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@16, [c#2,c#3]@31 ~]/2", // E B E C#
  G: "~@11 [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,g#4], [f#1,f#2]@15 ~", H: "g#4 [d#4,f#4], [b1,b2,b3]",
  I: "~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@8, [e2,e3]@15 ~", // E B E
  J: "~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@8, [e2,e3]@7 ~", // E B E
  K: "[~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] ~@11 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@8, [c#2,c#3]@15 ~ [c#2,c#3]@13 ~@3, ~@4 [b3,e4,g#4]@5 ~@7]/2", // E B E B E C# E
  L: "~@3 [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,d#4,f#4] [c#4,e4,g#4]@8, [a1,a2]@15 ~", // C#m D#m7 C#m A
  M: "~@3 [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,d#4,f#4] [c#4,e4,g#4]@8, [a1,a2]@7 ~", // C#m D#m7 C#m A
  N: "~@3 [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,e4,g#4] [c#4,f#4,a4]@8, [f#1,f#2]@3 ~", O: "e4@7 ~ d#4@8, [b1,b2,b3,f#4]",
})).s("gm_epiano1").gain(0.12).pan(0.9)

// bass · fretless bass · "basso"
const bass = note(`<
  A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E F G H I J K L M F G H I J K L M N O P Q R S T U N O P Q R S T U F G H
  I J K L M N O P Q R S T U F G H I J K L M F G H I J K L M N O P Q R S T U N O P Q R S T U ~
>`.pickRestart({
  A: "[e2@27 ~ e2@4]/2", B: "[c#2@27 ~ c#2@4]/2", C: "[a1@27 ~ a1@4]/2", D: "f#1@14 ~ f#1", E: "b1", F: "~@15 b2",
  G: "e3!2 ~@5 b2 e3!2 ~ d#3 ~ g#2 b2 ~", H: "c#3!2 ~@14", I: "f#2 g#2 b2 c#3 ~ e3 ~ b2 c#3!2 ~@2 b2@3 g#2",
  J: "a2 a2@2 ~@8 e3 ~ a3 ~@2", K: "a2!2 ~@6 a2@4 g#2@4", L: "f#2@7 ~", M: "~ e3 c#3 b2@2 ~@4 f#3 e3 b3@3 ~@2",
  N: "e2@4 ~ e2 ~@2 e2@7 ~", O: "e2@5 e2 ~@2 e2@8", P: "c#2@4 ~ c#2 ~@2 c#2@7 ~", Q: "c#2@5 c#2 ~@2 c#2@8",
  R: "a1@4 ~ a1 ~@2 a1@7 ~", S: "a1@5 a1 ~@2 a1@4 g#1@4", T: "f#1@4 ~ f#1 ~@2 f#1@8", U: "b1@4 ~ b1 ~@2 b1@8",
})).s("gm_fretless_bass").gain(0.44)

// other · string ensemble 2 · "archi"
const string_ensemble_2 = note(`<
  ~@24 A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E
  A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E ~
>`.pickRestart({
  A: "[[b3,b4]@5 [e4,e5] [d#4,d#5] [b3,b4]]/2", B: "[[g#3,g#4]@3 [b3,b4]]/2",
  C: "[[c#4,c#5]@5 [e4,e5] [a4,a5] [g#4,g#5]]/2", D: "[f#4,f#5]", E: "[e4,e5] [d#4,d#5]",
})).s("gm_string_ensemble_2").gain(0.13).pan(0.6)

// chords · epiano1 · "el piano2"
const epiano1_2 = note(`<
  A@2 B@2 C@2 D E A@2 B@2 C@2 D F A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E ~@8
  A@2 B@2 C@2 D E A@2 B@2 C@2 D E A@2 B@2 C@2 D E ~@17
>`.pickRestart({
  A: "[e2,e3,g#3,b3,e4]/2", B: "[c#2,c#3,g#3,b3,e4]/2", C: "[a1,a2,a3,c#4,e4]/2", D: "[f#1,f#2,f#3,a3,c#4,e4]",
  E: "e4 d#4, [b1,b2,f#3,b3]", F: "~ f#4 ~ d#4, [b1,b2,f#3,b3], g#4 e4",
})).s("gm_epiano1").gain(0.32).pan(0.1)

// other · acoustic guitar nylon · "nylon gt"
const acoustic_guitar_nylon = note("<A@2 B@4 C D A@2 ~@95>".pickRestart({
  A: "[~@3 e4@4 d#4@4 e4@8 e4@4 d#4@3 ~ e4@5]/2", B: "~@3 e4@4 d#4@4 e4@5", C: "~@3 e4@3 ~ f#4@6 ~@3",
  D: "~@3 g#4@3 ~ f#4@4 g#4@2 f#4 c#4 b3",
})).s("gm_acoustic_guitar_nylon").gain(0.23).pan(0.3)

// chords · electric guitar clean · "strat"
const electric_guitar_clean = note("<~@16 A B A B C D E ~@7 F G H@2 I@2 J@2 K G ~@65>".pickRestart({
  A: "~@11 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4]", B: "[b3,e4,g#4]",
  C: "~@11 [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,d#4,f#4]", D: "[c#4,e4,g#4]", E: "~@11 [c#4,f#4,a4] ~@4",
  F: "~@3 [f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,e4,g#4] [c#4,f#4,a4]@8", G: "e4@7 ~ d#4@8, [b3,f#4]",
  H: "~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@8", // E B E
  I: "[~@3 [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@10 ~ [b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] [b3,e4,g#4]@8]/2", // E B E B E
  J: "~@3 [c#4,e4,g#4] ~ [c#4,e4,g#4] ~ [c#4,d#4,f#4] [c#4,e4,g#4]@8", // C#m D#m7 C#m
  K: "~@3 [c#4,f#4,a4] ~ [c#4,f#4,a4] ~ [c#4,e4,g#4] [c#4,f#4,a4]@8", // F#m C#m F#m
})).s("gm_electric_guitar_clean").gain(0.08).pan(0)

// other · distortion guitar · "overdrive"
const distortion_guitar = note(`<
  ~@24 A B C D E F G H A B C D E F G H ~@16 A B C D E F G H ~@8 A B C D E F G H A B C D E F G H ~ I@2 J K@4 L M@2 N O@2
  P@2 ~
>`.pickRestart({
  A: "~@15 b2", B: "e3!2 ~@5 b2 e3!2 ~ d#3 ~ g#2 b2 ~", C: "c#3!2 ~@14",
  D: "f#2 g#2 b2 c#3 ~ e3 ~ b2 c#3!2 ~@2 b2@3 g#2", E: "a2 a2@2 ~@8 e3 ~ a3 ~@2", F: "a2!2 ~@6 a2@4 g#2@4",
  G: "f#2!2 ~@14", H: "~ e3 c#3 b2 ~@5 f#3 e3 b3 ~@4", I: "b3", J: "c#4@12 ~ e4@3",
  K: "[e4@10 g#4 a4 g#4 e4@2 b4@2 e4 b4@9 e5@2 ~@2 f#5@7 e5 c#5@7 ~ e5@3 c#5 e5 c#5 b4@4 g#4 b4 f#4@2 e4@3]/4",
  L: "f#4@2 e4 g#4@2 e4 a4@2 g#4 e4 ~ b4@5", M: "[~ e5 d#5 b4@2 e5 b4 e5@7 d#5 e5@4 d#5@2 e5@2 c#5@7 ~@2]/2",
  N: "~ b4 c#5 e5@4 c#5@4 e5@4 ~",
  O: "[e5@3 c#5@2 e5 b4@2 c#5 a4@2 b4 g#4@2 a4 f#4@2 g#4 e4@5 b3 c#4 e4 ~ e4@2 b3 c#4 e4]/2",
  P: "[e4@3 c#4@7 ~ e4@2 f#4 e4 g#4@4 f#4@2 e4@3 g#4@3 f#4@2 e4@2 ~]/2",
})).s("gm_distortion_guitar").gain(0.12).pan(0)

// other · string ensemble 1 · "strings" · C# G# C# E F# G# E
const string_ensemble_1 = note(`<
  ~@34
  [[c#3,c#4]!2 [g#2,g#3] [c#3,c#4] ~ [e3,e4]@2 ~ [f#3,f#4] ~ [g#3,g#4] [e3,e4]@2 ~@3]
  ~@2
  [~@2 e4 f#4]
  c#4
  ~@66
>`).s("gm_string_ensemble_1").gain(0.36).pan(0.3)

// other · overdriven guitar · "solo gt"
const overdriven_guitar = note("<~@103 [~@15 b4] ~>").s("gm_overdriven_guitar").gain(0.35).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A ~@4 B A B A B A B A B C@16 D@8 E D E D E D E D F@8 D@10 F@30 ~
>`.pickRestart({
  A: "x", B: "~@15 x", C: "x ~@2 x ~ x ~ x ~@7 x", D: "x ~@4 x ~@2 x ~@7", E: "x ~@4 x ~@2 x ~@4 x ~@2",
  F: "x ~@4 x ~ x!2 ~@7",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@24 A@16 ~@8 B ~ B ~ B ~ B C D@8 ~@10 D@30 ~>".pickRestart({
  A: "~ x", B: "~@3 x", C: "~@11 x!4 ~", D: "~ x ~ x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@10 [x!8]!30 ~@16 [x!8]!8 ~@10 [x!8]!30 ~>").gain(0.16)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@10
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!30
  ~@16
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!8
  ~@10
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!30
  ~
>`).gain(0.08)

// drums · mid tom
const mid_tom = s("mt").struct("<~@40 A@8 ~ A ~ A ~ A ~@10 A@10 ~@31>".pickRestart({
  A: "~@3 x",
})).gain(0.64)

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

// drums · ride
const ride = s("rd").struct("<[x!8]!7 [x ~ x ~ x ~ x ~ x!8] [x!8]!2 ~@30 [x!8]!16 ~@8 [x!8]!10 ~@31>").gain(0.32)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!10
  ~@30
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!16
  ~@8
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!10
  ~@31
>`).gain(0.16)

// drums · tambourine
const tambourine = s("tb").struct("<~@56 [x!8]!8 ~@10 [x!8]!30 ~>").gain(0.16)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@56
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!8
  ~@10
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!30
  ~
>`).gain(0.08)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@16
  [~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~]!40
  ~@8
  [~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~]!10
  ~@31
>`).gain(0.81)

stack(
  epiano1, bass, string_ensemble_2, epiano1_2, acoustic_guitar_nylon, electric_guitar_clean, distortion_guitar,
  string_ensemble_1, overdriven_guitar, kick, snare, hihat, hihat_soft, mid_tom, crash, ride, ride_soft, tambourine,
  tambourine_soft, cabasa
)

More by Cocciante