Strudelify

Nun me scuccia

Daniele

KeyF majorTempo72 bpm
0:00/0:00
// Nun me scuccia — Daniele
// 72 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 overdriven guitar (copy of ch 7 overdriven guitar, 0.5 beats late)
// note: Full arrangement: all 74 bars on a 24-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): guitar program 30.
setcpm(72/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
const bass = note(`<
  ~@3 A B C D E F G H I J K L M N O P Q R S T U I J K L M N O P Q R S T U I J K L M N O P Q I J K L M N O P Q I J V L M
  N O P Q I J K L M N O P W ~
>`.pickRestart({
  A: "c2 ~@3 c2@2 d2 ~@3 d2@2 c2 ~@3 c2@2 d2 ~@3 d2@2", B: "f1@2 ~@2 f1@2 g1 ~@3 g1@2 f1 ~@3 f1@2 g1@3 ~ f1@2",
  C: "d2 ~@3 d2 ~ d2 ~@3 d2 ~ d2 ~@3 d2 ~ d2 ~@3 d2@2", D: "db2 ~@3 db2@2 eb2 ~@3 eb2@2 db2 ~@3 db2@2 eb2@3 db2@2 ~",
  E: "f1 ~@3 f1@3 ~@3 g1@2 f1 ~@3 f1@2 g1@3 ~ f1@2", F: "g1 ~@3 g1@2 bb1 ~@3 bb1@2 g1 ~@3 g1@2 bb1@3 g1@3",
  G: "f1 ~@3 f1@2 g1 ~@3 g1@2 f1 ~@3 f1@2 g1@4 f1 ~", H: "f1@8 f1 ~@3 c1@11 ~",
  I: "f1@2 ~@2 f1 ~ f1 ~@3 f1 ~ f1 ~@3 f1 ~ f1@2 ~@2 f1@2",
  J: "bb1 ~@3 bb1 ~ bb1 ~@3 bb1 ~ bb1 ~@3 bb1 ~ bb1@2 ~@2 bb1@2",
  K: "f1 ~@3 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2",
  L: "ab1@2 ~@2 ab1 ~ ab1 ~@3 ab1@2 db2@2 ~@2 db2 ~ db2@2 ~@2 db2@2",
  M: "f1 ~@3 f1 ~ f1 ~@3 f1 ~ f1@2 ~@2 f1 ~ f1@2 ~@2 f1@2",
  N: "c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~",
  O: "bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1 ~ bb1@2 ~@2 bb1@2",
  P: "a1@2 ~@2 a1 ~ a1@2 ~@2 a1@2 ab1@2 ~@2 ab1 ~ ab1@2 ~@2 ab1 ~",
  Q: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ [g1,c2] ~ [g1,c2] ~ [g1,c2] ~ [g1,c2] ~ [g1,c2] ~ [g1,c2]@2", R: "[a1,d2] ~@11",
  S: "bb1@9 ~ bb1 ~ a1@9 ~ a1@2", T: "g1@9 ~ g1 ~ g1@7 ~ g1 ~ ab1@2", U: "a1@9 ~ a1 ~ c2@5 ~ c2@6, ~@12 d2 ~@11",
  V: "d2 ~@3 d2 ~ d2@2 ~@2 d2 ~ d2@2 ~@2 d2 ~ d2@2 ~@2 d2@2", W: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~@13",
})).s("gm_fretless_bass").gain(0.54)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@3 A B C D E F G H A B C D E F G I J ~@4 A B C D E F G I J ~@4 A B C D E F G I J A B C D E F G I J A B C D E F G I J
  A B C D E F G I K ~
>`.pickRestart({
  A: "[f2,c3] ~@3 c3@2 [f2,d3] ~@3 [f2,d3]@2 [f2,c3]@2 ~@2 [f2,c3]@2 d3@4 [f2,c3] ~, ~@4 f2 ~@13 f2 ~@5", // F5 Dm F5
  B: "[bb1,f2] ~@3 [bb1,f2]@2 [bb1,g2] ~@3 [bb1,g2]@2 [bb1,f2]@2 ~@2 [bb1,f2]@2 g2@4 [bb1,f2]@2, ~@18 bb1 ~@5", // Bb5 Eb Bb5
  C: "[d2,a2] ~@3 [d2,a2] ~ [d2,bb2] ~@3 [d2,bb2]@2 [d2,a2] ~@3 [d2,a2]@2 bb2@4 [d2,a2]@2, ~@18 d2 ~@5", // D5 Gm D5
  D: "[db2,ab2] ~@3 [db2,ab2]@2 [db2,bb2] ~@3 [db2,bb2]@2 [db2,ab2] ~@3 [db2,ab2]@2 bb2@4 [db2,ab2]@2, ~@18 db2 ~@5", // Db5 Gb Db5
  E: "[f2,c3] ~@3 [f2,c3]@2 [f2,d3] ~@3 [f2,d3]@2 [f2,c3] ~@3 [f2,c3]@2 d3@4 [f2,c3] ~, ~@18 f2 ~@5", // F5 Dm F5
  F: "[c2,g2] ~@3 [c2,g2]@2 [c2,a2] ~@3 [c2,a2]@2 [c2,g2] ~@3 [c2,g2]@2 a2@4 [c2,g2]@2, ~@18 c2 ~@5", // C5 F C5
  G: "[bb1,f2] ~@3 [bb1,f2]@2 [bb1,g2] ~@3 [bb1,g2]@2 [bb1,f2] ~@3 [bb1,f2]@2 g2@4 [bb1,f2]@2, ~@18 bb1 ~@5", // Bb5 Eb Bb5
  H: "[f2,c3] ~@3 [f2,c3]@2 [f2,d3] ~@3 [f2,d3]@2 c2@12", // F5 Dm
  I: "[d2,a2] ~@3 [d2,a2]@2 [d2,bb2] ~@3 [d2,bb2]@2 [db2,ab2] ~@3 [db2,ab2]@2 [db2,bb2]@2 ~@2 [db2,bb2]@2", // D5 Gm Db5 Gb
  J: "[c2,g2] ~@3 g2@2 [c2,ab2,a2] ~@3 [c2,a2]@2 [c2,g2] ~@11, ~@4 c2 ~@19", // C5 F C5
  K: "[c2,g2] ~@3 g2@2 [c2,ab2,a2] ~@3 [c2,a2]@2 ~@12, ~@4 c2 ~@19", // C5 F
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.9)

// chords · distortion guitar
const distortion_guitar = note("<~@17 A ~@34 A ~@8 A ~@8 A ~@3>".pickRestart({
  A: "d4 ~ bb4@2 d4 ~ c4 ~ bb4@2 c4 ~ b3@2 ab4@2 b3 ~@3 g4@2 ~@2",
})).s("gm_distortion_guitar").gain(0.18).pan(0.4)

// chords · acoustic guitar steel · F5 D5 C5
const acoustic_guitar_steel = note("<~ [~@12 [c4,f4] ~@3 [c4,f4]@2 [a3,d4] ~@3 [a3,d4] ~] [[g3,c4]@3 ~] ~@71>")
  .s("gm_acoustic_guitar_steel").gain(0.42)

// chords · rock organ
const rock_organ = note(`<
  ~@11 A B C@3 D E F D G H I J A B C@3 D E F D G H I J A B C@3 D E F D A B C@3 D E F D A B C@3 D E F D A B C@3 D E F D ~
>`.pickRestart({
  A: "[f5,a5,c6]@23 ~", B: "[d5,f5,bb5]@23 ~", C: "[[d5,a5]@23 ~ [db5,ab5]@23 ~ [c5,a5]@24, f5@71 ~]/3",
  D: "[c5,e5,g5,bb5]", E: "[d5,f5,bb5]@11 ~ [d5,f5,ab5]@12", F: "[d5,f5,a5]@11 ~ [db5,f5,ab5]@11 ~",
  G: "[d5,f5,a5] ~@7", H: "[bb5,d6,f6]@11 ~ [a5,c6,e6]@11 ~", I: "[g5,bb5,d6]", J: "a5@11 ~ g5@11 ~, [c6,e6]",
})).s("gm_rock_organ").gain(0.18).pan(0.8)

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

// drums · rim
const rim = s("rim").struct("<[~@2 x!2] [x!2 ~@2] ~@72>").gain(0.54)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@10 A ~@6 B ~@12 B ~@12 B ~@8 B ~@8 B ~@8 B ~@3>".pickRestart({
  A: "~@7 x!2 ~@3", B: "~@14 x!3 ~@7",
})).gain(0.18)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@11 [x!4]!9 ~@4 [x!4]!9 ~@4 [x!4]!35 [x!2 ~@2] ~>").gain(0.54)

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

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

stack(
  bass, electric_guitar_muted, distortion_guitar, acoustic_guitar_steel, rock_organ, kick, rim, snare, snare_soft,
  pedal_hat, crash, ride
)

More by Daniele