Strudelify

Domani smetto

Articolo 31

KeyF majorTempo97 bpm
0:00/0:00
// Domani smetto — Articolo 31
// 97 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 59 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): guitar program 29, guitar program 30.
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.

// other · piano
const piano = note("<~@2 A@3 ~@54>".pickRestart({
  A: "[[c4,c5]@2 [d4,d5] [c4,c5]@7 [d4,d5] [c4,c5]@7 [d4,d5] [c4,c5]@3 ~@2]/3", // C D C D C D C
})).s("gm_piano").gain(0.05)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B A B A B A B A B C D E F E G H G H I J I J I K I L M N M O G H G H M N M O M N M O I K I L I K I P M N M O M N M Q
>`.pickRestart({
  A: "[f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3]!8 [g2,d3] g2!3, ~@4 f3@4 f3@4 ~ c3@3", // F5 G5
  B: "[g2,c3] [a2,c3]!8 [f2,bb2]!4 f2 [f2,a2]!2, ~ a3@3 f3@4 f3@4 ~ c3@3", C: "[g2,c3,g3]",
  D: "[c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,f3] [c4,f4] [d3,g3] [d4,g4] [d3,g3] [d4,g4] [d3,g3] [d4,g4] [d3,g3] [d4,g4]", // F5 G5
  E: "[c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,f3] [c4,f4] [f3,bb3] [f4,bb4] [f3,bb3] [f4,bb4] [f3,bb3] [f4,bb4] [f3,bb3] [f4,bb4]", // F5 Bb5
  F: "[c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,f3] [c4,f4] [c3,g3] [c4,g4] [c3,g3] [c4,g4] [c3,g3] [c4,g4] [c3,g3] [c4,g4]", // F5 C5
  G: "[f2,c3,f3] [f2,c3]!3 [bb2,bb3] [bb2,f3,bb3]!3 [g2,d3,g3]!4 [c3,c4] [c3,g3,c4]!3", // F5 Bb Bb5 G5 C C5
  H: "[f2,c3,f3] [f2,c3]!3 [bb2,bb3] [bb2,f3,bb3]!3 [g2,d3,g3]!2 [a2,e3,a3] [bb2,f3,bb3]@3 [c3,g3,c4]@2", // F5 Bb Bb5 G5 A5 Bb5 C5
  I: "[f2,c3,f3] [f2,c3,c4,f4] [f2,c3] [f2,c3,c4,f4] [f2,c3,f3] [f2,c3,c4,f4] [f2,c3] [f2,c3,c4,f4] [g2,c3,g3] [g2,c3,c4,g4] [g2,c3] [g2,c3,c4,g4] [g2,c3,g3] [g2,c3,c4,g4] [g2,c3] [g2,c3,c4,g4]", // F5 C5
  J: "[f2,c3,f3] [f2,c3,c4,f4] [f2,c3] [f2,c3,c4,f4] [f2,c3,f3] [f2,c3,c4,f4] [f2,c3] [f2,c3,c4,f4] [bb2,f3,bb3] [bb2,f3,f4,bb4] [bb2,f3] [bb2,f3,f4,bb4] [bb2,f3,bb3] [bb2,f3,f4,bb4] [bb2,f3] [bb2,f3,f4,bb4]", // F5 Bb5
  K: "[a2,c3,f3] [a2,c3,c4,f4] [a2,c3] [a2,c3,c4,f4] [a2,c3,f3] [a2,c3,c4,f4] [a2,c3] [a2,c3,c4,f4] [bb2,f3,bb3] [bb2,f3,f4,bb4] [bb2,f3] [bb2,f3,f4,bb4] [bb2,f3,bb3] [bb2,f3,f4,bb4] [bb2,f3] [bb2,f3,f4,bb4]", // F Am F Am F Bb5
  L: "[a2,c3,f3] [a2,c3,c4,f4] [a2,c3] [a2,c3,c4,f4] [a2,c3,f3] [a2,c3,c4,f4] [a2,c3] [a2,c3,c4,f4] [c3,g3,c4] [c3,g3,c4,g4] [c3,g3] [c3,g3,c4,g4] [c3,g3,c4] [c3,g3,c4,g4] [c3,g3] [c3,g3,c4,g4]", // F Am F Am F C5
  M: "[f2,c3,f3] [f2,c3]!3 [f2,c3,f3] [f2,c3]!3 [bb2,f3,bb3] [bb2,f3]!3 [bb2,f3,bb3] [bb2,f3]!3", // F5 Bb5
  N: "[d3,a3,d4] [d3,a3]!3 [d3,a3,d4] [d3,a3]!3 [c3,g3,c4] [c3,g3]!3 [c3,g3,c4] [c3,g3]!3", // D5 C5
  O: "[f2,c3,f3] [f2,c3]!3 [f2,c3,f3] [f2,c3]!3 [c3,g3,c4] [c3,g3]!3 [c3,g3,c4] [c3,g3]!3", // F5 C5
  P: "[g2,c3,g3] [g2,c3,c4,g4] [g2,c3] [g2,c3,c4,g4] [g2,c3,g3] [g2,c3,c4,g4] [g2,c3] [g2,c3,c4,g4] [bb2,f3,bb3] [bb2,f3,bb3,f4] [bb2,f3] [bb2,f3,bb3,f4] [bb2,f3,bb3] [bb2,f3,bb3,f4] [bb2,f3] [bb2,f3,bb3,f4]", // C5 Bb5
  Q: "[f2,c3,f3] [f2,c3] [f2,c3,f3] [f2,c3,a3] [c3,g3,c4] [c3,g3] [c3,g3,c4] [c3,g3]", // F5 F C5
})).s("gm_overdriven_guitar").gain(0.26).pan(0.2)

// chords · overdriven guitar
const overdriven_guitar_2 = note("<A B A B A B A B A B ~@5 C D C D ~@12 E F E F ~@24>".pickRestart({
  A: "~@2 a3@2 ~@5 g3!3 c3@2 c3@2", B: "~@5 f3!3 ~ g3!4 a3 ~@2", C: "~@4 a3 ~ c4 c4@9", D: "~@4 a3 ~ c4 c4@4 ~@5",
  E: "~ f3 ~ g3", F: "~ f3 ~@2",
})).s("gm_overdriven_guitar").gain(0.35).pan(0.9)

// bass · synth bass 2
const bass = note(`<
  ~@10 A ~@4 B C B C D E F E G H G I J K L M B C B C J K L N J K L M G H G I O P Q R J K L N J K L S
>`.pickRestart({
  A: "g1", B: "f1!3 a1 bb1!3 a1 g1!3 bb1 c2@4", C: "f1!3 a1 bb1!3 a1 f1!2 a1 bb1@3 c2@2",
  D: "f1@7 f1 g1 ~ g1 g1@3 g1@2", E: "f1@7 f1 bb1 ~ bb1 bb1@3 bb1@2", F: "f1@7 f1 c2 ~ c2 c2@3 c2@2",
  G: "f1@7 c2 c2@7 a1", H: "a1@7 a1 bb1@7 bb1", I: "a1@7 a1 c2!8", J: "f1@2 f1@2 f1!3 a1 bb1@2 bb1@2 bb1!3 c2",
  K: "d2@2 d2@2 d2!4 c2@2 c2 f2 g2 f2 d2 c2", L: "f1@2 f1@2 f1!3 a1 bb1@2 bb1@2 bb1!4", M: "f1@2 f1@2 f1!4 c2@2 c2!6",
  N: "f1@2 f1@2 f1!4 c2@2 c2 f2 g2 f2 d2 c2", O: "f1!7 g1!8 a1", P: "a1!7 bb1!8 c2", Q: "f1!7 c2!8 g1",
  R: "g1!7 bb1!8 a1", S: "f1!3 a1 c2!4",
})).s("gm_synth_bass_2").gain(0.57)

// chords · distortion guitar
const distortion_guitar = note("<~@15 A B A B ~@4 C D C E ~@16 C D C E C D C F ~@8>".pickRestart({
  A: "~ f3 ~ g3", B: "~ f3 ~@2", C: "~ a3 ~@6", D: "~@2 g3 a3", E: "~@3 a3", F: "~@2 a3@2 f3@3 ~ g3@4 ~@4",
})).s("gm_distortion_guitar").gain(0.33).pan(0.8)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@11 [~@2 a3 ~ g3@2 f3@10] [~@2 c4 ~ d4 ~ c4@10] [~@2 a3 ~ g3@2 f3@10] ~@45>")
  .s("gm_electric_guitar_jazz").gain(0.23).pan(0.2)

// other · pad poly
const pad_poly = note(`<
  ~@2 A@3 ~@10 B C D E@2 ~@6 F G H I@2 J K J L G M N M O P I@2 J K J ~ I@3 Q G H N H O R I ~
>`.pickRestart({
  A: "[c4,c5]!4 [d4,d5]!2 [c4,c5]@2 ~@8", B: "~@6 c5!2 d5 c5 ~ c5!3 ~ c5", C: "~@6 c5 ~ c5!4 ~ c5@2 ~",
  D: "~@2 c5!3 ~ c5!2 ~ c5@2 ~@3 c5 ~", E: "[c5 ~@3 c5!2 ~ c5 ~@2 c5!3 ~ c5 c5@2 ~@15]/2", F: "~@14 c5!2",
  G: "c5 ~ c5!2 c5@2 c5!3 ~ c5!3 ~ c5!2", H: "c5 ~ a4@2 ~@6 c5 ~@3 c5 ~", I: "~@2 c5 ~@3 c5 ~@3 c5 ~@3 c5 ~",
  J: "c5!4 d5 c5 c5@2 ~@8", K: "a4!4 bb4 a4 a4@2 ~@8", L: "f5!4 g5 f5 f5@2 ~@7 c5", M: "c5 ~ a4 ~@7 c5 ~@3 c5 ~",
  N: "~@3 c5!10 ~ c5!2", O: "~@3 c5!5 f5!5 ~ d5!2", P: "d5 ~ c5 ~@7 c5 ~@3 c5 ~", Q: "~@2 c5 ~@3 c5 ~@3 c5 ~@3 c5!2",
  R: "d5 ~ c5@2 ~@6 c5 ~@3 c5 ~",
})).s("gm_pad_poly").gain(0.53).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<~@2 [~ x ~ x]!8 ~ [~ x ~ x]!7 [~ x ~@2] ~@40>").gain(0.5)

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

// drums · hihat
const hihat = s("hh").struct("<~@2 A@8 ~ A@7 B A@7 B A@19 B A@4 C A@2 D A E F ~>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!3 ~ x ~ x!3 ~ x ~ x ~ x ~", D: "x ~ x ~ x!3 ~ x ~ x ~ x ~ x ~",
  E: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", F: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
})).gain(0.43)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 A@8 ~ A@7 B A@7 B A@19 B A@4 C A@2 D A E F ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~@8", C: "~@3 x ~ x ~@3 x ~ x ~ x ~ x",
  D: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x", E: "~ x ~@3 x ~ x ~ x ~@3 x ~ x", F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
})).gain(0.21)

// drums · low tom
const low_tom = s("lt").struct("<~@50 [~@11 x ~@4] ~@8>").gain(0.43)

// drums · mid tom
const mid_tom = s("mt").struct("<~@50 [~@9 x!2 ~ x ~@2 x] ~@8>").gain(0.43)

// drums · open hat
const open_hat = s("oh").struct("<~@18 [~@7 x] ~@7 [~@7 x] ~@19 [~@7 x] ~@12>").gain(0.43)

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

// drums · ride
const ride = s("rd").struct("<~@2 [x!16]!8 x [x!16]!47 ~>").gain(0.29)

stack(
  piano, overdriven_guitar, overdriven_guitar_2, bass, distortion_guitar, electric_guitar_jazz, pad_poly, kick, rim,
  snare, hihat, hihat_soft, low_tom, mid_tom, open_hat, crash, ride
)

More by Articolo 31