Strudelify

Cure

Metallica

KeyC minorTempo132 bpm
0:00/0:00
// Cure — Metallica
// 132 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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(`<
  A B A B A B A B A B A B A B A B A B A B A B A B C D E C D F G@2 A B A B A B A B A B A B A B A B A B A B A B A B C D E
  C D F G@2 H I H I J K A B L@2 A B L@2 A B L@2 A B L@2 M N M O C D F G A B A B A B A B A B A B A B A B P
>`.pickRestart({
  A: "c2 ~ c2 ~ c3 ~ c2!2 eb2 ~ eb2 ~ eb3 ~ eb2!2", B: "f2 ~ f2 ~ f3 ~@5 bb1 ~ bb2 g2 eb2 ~",
  C: "f2 ~ f2 ~ f3 ~ f2!3 ~ f2 ~ f3 ~ f2!2", D: "g2 ~ g2 ~ g3 ~ g2!3 ~ g2 ~ g3 ~ g2!2",
  E: "eb2 ~ eb2 ~ eb3 ~ eb2!3 ~ eb2 ~ eb3 ~ eb2!2", F: "ab2 ~ ab2 ~ ab3 ~ ab2!3 ~ ab2 ~ ab3 ~ ab2!2",
  G: "bb2 ~ bb2 ~ bb3 ~ bb2!3 ~ bb2 ~ bb3 ~ bb2!2", H: "c2 ~ c2 ~ c3 ~ c2!2 bb1 ~ bb1 ~ bb2 ~ bb1!2",
  I: "ab1 ~ ab1 ~ ab2 ~@5 bb1 ~ f2 ~ eb2!2", J: "g1 ~ g1 ~ g2 ~ g1!2 ab1 ~ ab1 ~ ab2 ~ ab1!2",
  K: "bb1 ~ bb1 ~ bb2 ~ bb1!2 b1 ~ b1 ~ b2 ~ b1!2", L: "c2 ~ c2 ~ c3 ~@5 bb1 ~ bb2 g2 eb2 ~",
  M: "ab1 ~ ab1 ~ ab2 ~ ab1!3 ~ ab1 ~ ab2 ~ ab1!2", N: "bb1 ~ bb1 ~ bb2 ~ bb1!3 ~ bb1 ~ bb2 ~ bb1!2",
  O: "g1 ~ g1 ~ g2 ~ g1!3 ~ g1 ~ g2 ~ g1!2", P: "c2@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.26)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@24 A B@2 C B D E F ~@24 A B@2 C B D E F ~@22 G H G I A B A I J K L@2 J K L@2 M ~ M ~ N ~ O@2 P
>`.pickRestart({
  A: "~@4 [c4,c5] ~@7 [c4,c5]@3 ~", B: "~@4 [bb3,bb4] ~@7 [bb3,bb4]@3 ~", C: "~@4 [ab3,ab4] ~@7 [ab3,ab4]@3 ~",
  D: "~@4 [ab4,c5] ~@7 [ab4,c5]@3 ~", E: "~@4 [bb4,d5] ~@7 [bb4,d5]@3 ~", F: "~@2 [c5,eb5]!6",
  G: "~@4 [eb4,eb5] ~@7 [eb4,eb5]@3 ~", H: "~@4 [f4,f5] ~@7 [f4,f5]@3 ~", I: "~@4 [d4,d5] ~@7 [d4,d5]@3 ~",
  J: "[ab4,ab5]@3 ~ [g4,g5]@3 ~ [f4,f5] ~ [g4,g5]@3 ~ [eb4,eb5] ~", // Ab G F G Eb
  K: "~@4 [eb4,eb5]@3 ~ [d4,d5] ~ [eb4,eb5]@3 ~ [c4,c5] ~", // Eb D Eb C
  L: "[~@4 [c4,c5]@3 ~ [eb4,eb5] ~ [f4,f5] ~ [eb4,eb5] ~ [g4,g5]@5 ~ [c4,c5]@3 ~ [eb4,eb5] ~ [d4,d5]@4 ~@2]/2", // C Eb F Eb G C Eb D
  M: "[c5,eb5,g5]@3 ~ [c5,eb5,g5]@3 ~@9", N: "[c5,eb5,g5] ~ [c5,eb5,g5]!2 [c5,eb5,g5]@3 ~@9",
  O: "[c5,eb5,g5]!4 [c5,eb5,g5]@3 ~@9", P: "[c5,eb5,g5]@3 ~@13",
})).s("gm_electric_guitar_clean").gain(0.15)

// chords · clarinet
const clarinet = note(`<
  ~@20 A@4 B C D B C E F@2 ~@15 G ~@8 B C D B C E F@2 ~@8 H@2 ~ I@3 ~@2 J ~@2 J K L M N E C B C E N ~@17
>`.pickRestart({
  A: "[c6@59 ~@5]/4", B: "f4@11 ~@5", C: "g4@11 ~@5", D: "eb4@11 ~@5", E: "ab4@11 ~@5", F: "[bb4@27 ~@5]/2",
  G: "~@8 [c5,eb5] ~@3 [c5,eb5] ~@3", H: "[~@10 [eb5,g5] ~@3 [eb5,g5]@5 ~@13]/2",
  I: "[~@10 [eb5,g5] ~@3 [eb5,g5]@5 ~@11 [eb5,g5]@5 ~@13]/3", J: "~@10 [c5,eb5] ~@3 [c5,eb5] ~",
  K: "~@10 [eb5,g5] ~@3 [c5,eb5] ~", // Eb Cm
  L: "~@2 [c5,eb5,bb5] ~ [c5,eb5,bb5] ~ [c5,eb5,bb5] ~ [c5,eb5,bb5] ~ [c5,eb5,bb5] ~ [c5,eb5,bb5] ~ [c5,eb5,bb5] ~", // Cm7
  M: "[eb5,ab5,eb6]@11 ~@5", N: "bb4@11 ~@5",
})).s("gm_clarinet").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B C@8 A B A B A B A B A B A B A B A B A B A B A B A B C@8 A B A B A B A
  B A B A B A B A B A B A B A B C@24 D
>`.pickRestart({
  A: "x!2 ~ x!3 ~ x", B: "x!2 ~@2 x!2 ~ x", C: "x!4", D: "x",
})).gain(0.26)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!110 x>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@110 x>").gain(0.26)

// drums · tambourine
const tambourine = s("tb").struct("<[x!8]!110 ~>").gain(0.26)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~@24 B
>`.pickRestart({
  A: "~ x!3 ~@4", B: "x",
})).gain(0.26)

stack(bass, electric_guitar_clean, clarinet, kick, snare, high_tom, tambourine, crash)

More by Metallica