Strudelify
The Thing That Should Not Be cover art

1986 · Master Of Puppets

The Thing That Should Not Be

Metallica

KeyE majorTempo116 bpm
0:00/0:00
// The Thing That Should Not Be — Metallica
// 116 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 54, 4/4 at bar 55, 2/4 at bar 58, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 179 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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 · acoustic bass · "A.BASS 2"
const bass = note(`<
  ~@7 A B@8 C@2 ~@2 D E F G H@8 B@4 H@4 B@2 D E F G D E F G I J K L M N O I P B@4 C@4 H@8 B@4 H@4 B@2 D E F G D E F G I
  J K L M N O I Q@2 N O N O N O N O R@2 I R I P C@8 H@8 B@4 H@4 B@2 D E F G D E F G I J K L M N O I S R J K J K ~@14
>`.pickRestart({
  A: "~@7 d2", B: "[d2 d#2 e2 a#2@3 e2 b2@3 e2 c3@4 d2]/2", C: "[d2 d#2 e2 a#2@2 d#2 e2 b2@2 d#2 e2 c3@2 d#2 e2 d2]/2",
  D: "a2!4 c3 a2 c3@2", E: "g#2 f2!3 g#2 f2 g#2@2", F: "a2 f#2!3 a2 f#2 a2@2", G: "f#2 d#2!7", H: "[e3@15 d3]/2",
  I: "a2 a#2", J: "g2 g#2@2 g2 g#2 d2!3", K: "d2!8", L: "g2 g#2@2 g2 a2@4", M: "a#2@4 g2 g#2@2 g2", N: "g#2 d2!7",
  O: "d2!4 g2 g#2@2 g2", P: "d#2@4 a2@3 d2", Q: "[d#2@4 a2@8 g2 g#2@2 g2]/2",
  R: "a2@2 f2@2 g2@2 a2@2 a#2 a2 f2@2 a#2@2 a2@2", S: "d#2 a2",
})).s("gm_acoustic_bass").gain(0.62)

// chords · overdriven guitar · "E.GUITAR 2"
const overdriven_guitar = note(`<
  ~@7 A B@12 C D E F G@6 H@6 G@2 I@5 D E F C D E F J K@2 L M N@2 J O B@8 G@6 H@6 G@2 I@5 D E F C D E F J K@2 L M N@2 J
  P@2 Q@8 R@2 J R J S B@8 G@6 H@6 G@2 I@5 D E F C D E F J K@2 L M N@2 J O ~ K@4 ~@14
>`.pickRestart({
  A: "~@7 [f#3,a3,d4]", // D
  B: "[[f#3,a3,d4] [g3,a#3,d#4] [g#3,b3,e4] [a#3,d4,f4]@4 [f#3,b3,d#4]@4 [g3,c4,e4]@4 [f#3,a3,d4]]/2", // D D# E A# B C D
  C: "~ [c4,e4]@15, [g3,a3]", D: "~ [d#4,f4]@15, [g#3,c4]", E: "~ [c#4,e4]@15, [f#3,a3]", F: "~ [c4,d4]@15, [f3,a3]",
  G: "[~ e4@29 [f#3,a3,d4]@2, [g#3,b3]@15 ~]/2", // D G#m
  H: "[~ e4@29 [f#3,a3,d4]@4 [g3,a#3,d#4]@2 [g#3,b3,e4]@2 [a#3,d4,f4]@8 [f#3,b3,d#4]@8 [g3,c4,e4]@8 [f#3,a3,d4]@4 [g3,a#3,d#4]@2 [g#3,b3,e4]@2 [a#3,d4,f4]@8 [f#3,b3,d#4]@8 [g3,c4,e4]@8 [f#3,a3,d4]@2, [g#3,b3]@5 ~@11]/6", // D D# E A# B C D D# …
  I: "[~ e4@29 [f#3,a3,d4]@4 [g3,a#3,d#4]@2 [g#3,b3,e4]@2 [a#3,d4,f4]@8 [f#3,b3,d#4]@8 [g3,c4,e4]@8 a3@2 ~ [c4,e4]@15, [g#3,b3]@15 ~@16 [f#3,d4]@2 ~@7, ~@4 [g3,a3]]/5", // D D# E A# B C G#m D …
  J: "~ e4@7 [a#3,d4,f4]@8, [a3,c#4] ~", // A# A
  K: "[[g3,b3,d4]@2 ~ d#4@3 [g3,b3,d4]@2 ~ d#4@3 ~ d4@19, ~ [g#3,c#4]@2 ~ [g#3,c#4]@2 [f#3,a3]@10]/2", // G C#5 F#m
  L: "[g3,b3,d4]@2 ~ d#4@3 [g3,b3,d4]@2 ~ e4@7, ~ [g#3,c#4]@2 ~ [a3,c#4]@4", // G C#5 A
  M: "[a#3,d4,f4]@8 [g3,b3,d4]@2 ~ d#4@3 [g3,b3,d4]@2, ~@5 [g#3,c#4]@2 ~", // A# G C#5
  N: "[~ d#4@3 ~ d4@19 [g3,b3,d4]@2 ~ d#4@3 [g3,b3,d4]@2, [g#3,c#4]@2 [f#3,a3]@10 ~ [g#3,c#4]@2 ~]/2", // G C#5 F#m C#5
  O: "~ d#4@7 [a3,c#4,e4]@8, [g3,a#3] ~", // A Gm
  P: "[~ d#4@7 [a3,c#4,e4]@16 [g3,b3,d4]@2 ~ d#4@3 [g3,b3,d4]@2, [g3,a#3]@4 ~@9 [g#3,c#4]@2 ~]/2", // A G Gm C#5
  Q: "[[g#3,c#4,d#4]@2 ~ d4@21 [g3,b3,d4]@2 ~ d#4@3 [g3,b3,d4]@2, ~ [f#3,a3]@11 ~ [g#3,c#4]@2 ~]/2", // G#sus4 G F#m C#5
  R: "[a3,c#4,e4] ~@7", S: "~ e4@7 [a#3,d4,f4]@6 [f#3,a3,d4]@2, [a3,c#4] ~",
})).s("gm_overdriven_guitar").gain(0.36)

// other · drawbar organ · "ELEC ORG 2"
const drawbar_organ = note(`<
  ~@30 A@2 ~@4 B ~ C ~@9 D ~@24 A@2 ~@4 B ~ C ~@9 D ~@39 A@2 ~@4 B ~ C ~@9 D ~@29
>`.pickRestart({
  A: "[~@7 b5@2 e5@2 e5@4 ~]/2", B: "e5@2 e5 e5@2 ~@3", C: "e5 e5@2 a#5@2 ~@3", D: "~@6 f#5!2 ~@8",
})).s("gm_drawbar_organ").gain(0.45)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B C D@2 E C D@2 F G H I J@3 ~ K@3 C K@2 ~ L D@2 E C K@2 ~ L D M J@3 ~ J@3 ~ D@6 N D C D@2 E D F G H O K@3 L K@2
  ~ L D@2 E P K@2 ~ L D M J@3 ~ J@3 ~ D@6 Q D@2 R D C E S D C T D U@2 D U D C V W V X V Y V A K@2 Z AA K@2 ~ L D@2 E P
  K@2 ~ L D M J@3 ~ J@3 ~ D@6 N D@2 U B C AB AC AD D O D P C AE D M D ~ D AF D
>`.pickRestart({
  A: "~@7 x", B: "x!5 ~@3", C: "x ~@3 x ~@2 x", D: "x!2", E: "~ x ~@2 x ~@3", F: "~ x ~ x ~ x ~ x",
  G: "~ x ~ x ~ x ~@2", H: "~ x ~ x!3 ~ x", I: "x!2 ~ x!2 ~@2 x", J: "x ~@2 x ~@4", K: "x ~@2 x ~ x!2 ~",
  L: "~@3 x ~ x ~ x", M: "x ~@2 x ~ x ~ x", N: "x ~@2 x ~ x ~@2", O: "x!2 ~@2 x ~@2 x", P: "x ~@6 x", Q: "x ~@4 x ~@2",
  R: "~@4 x!4", S: "x ~@4 x!3", T: "~ x", U: "~ x!2 ~@2 x!2 ~", V: "x ~@2 x ~@3 x", W: "~@2 x ~@2 x ~ x",
  X: "~@3 x ~@3 x", Y: "~@2 x ~@4 x", Z: "~@3 x ~ x!2 ~", AA: "~@3 x!2 ~@2 x", AB: "~ x!2 ~", AC: "x",
  AD: "~@3 x!2 ~@3", AE: "~ x ~ x ~ x!3", AF: "x ~@2 x ~ x!3",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B@2 C D B@2 C D C D E F@3 G ~ G ~ H ~@2 I J B C D K ~@2 I J B@2 F@3 G F@3 ~@2 B@3 L K B ~@2 B C D C D C D M ~
  G@2 N ~@2 I J B C D O ~@2 I J B@2 F@3 G F@3 ~@2 B@3 L P B ~@3 B@3 Q B@2 R B S@2 ~ S ~@2 F T F T F T F T G@2 U V ~@2 I
  J B C D W ~@2 I J B@2 F@3 G F@3 ~@2 B@3 L B C ~@2 S A X Y Z A B M B O M AA B AB B AC C Q B
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "x!2 ~ x", E: "~@4 x ~@5 x ~ x!2 ~@2", F: "~ x", G: "~@7 x",
  H: "~ x!2 ~@2 x!2 ~", I: "x!8", J: "x!3 ~ x ~ x ~", K: "~@2 x ~@2 x!2 ~", L: "~@2 x ~ x!3 ~@5 x ~@3",
  M: "~@2 x!2 ~ x!2 ~", N: "x ~@2 x", O: "~@2 x ~ x!3 ~@9", P: "~ x!2 ~@3 x ~", Q: "~ x!2 ~ x ~@3", R: "~ x!3 ~@2 x ~",
  S: "x ~@5 x ~ x!2 ~@4 x ~", T: "x!2 ~@6", U: "x ~@6 x", V: "x ~@4 x!2 ~", W: "~@2 x ~ x ~@3 x ~ x ~ x!2 ~@2",
  X: "~@5 x!2 ~", Y: "x!2 ~ x ~@2 x ~", Z: "~@4 x ~ x ~ x!3 ~@5", AA: "x!3 ~", AB: "~ x ~@2", AC: "x!3 ~@13",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@23 A ~@21 A ~@3 A ~@38 A ~@3 A ~@24 A B A B A B A B ~@21 A ~@3 A ~@24 C ~@3
>`.pickRestart({
  A: "~@2 x!6", B: "x!7 ~", C: "~@12 x!3 ~",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  A@4 B@3 C D E@3 F G H E I E J K ~@4 L G E G L E ~@2 M E J N L E ~@2 M O ~@9 L E P Q R F ~@2 L E@6 S L G E G L E ~@2 M
  E I T L E ~@2 U O ~@9 L E P Q V W ~ A X L G I Y L G Q E ~@14 L G L G L E ~@2 M E I Z L E ~@2 U O ~@9 L E P Q J AA ~@3
  Q AB Q AC AD E N U T AE AF L AC U ~ U AG M
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x ~ x ~ x ~ x!2", D: "x!3 ~@2 x!3", E: "x!8", F: "x!3 ~ x!4", G: "x!7 ~",
  H: "~ x!5 ~ x", I: "x!2 ~ x!5", J: "x!2 ~ x!3 ~ x", K: "x!2 ~ x!2 ~@3", L: "~ x!7", M: "~ x ~ x!3 ~ x", N: "x!5 ~@3",
  O: "x!3 ~ x ~@3", P: "x!4 ~ x!3", Q: "~@5 x!3", R: "x!2 ~ x!2 ~@2 x", S: "x!2 ~@2 x ~@3", T: "x", U: "~ x ~ x!5",
  V: "x ~@2 x!3 ~ x", W: "x!3 ~ x!2 ~ x", X: "x!2 ~@2", Y: "x!4 ~@4", Z: "x!6 ~@2", AA: "x!3 ~ x!2 ~@2",
  AB: "x!5 ~@2 x", AC: "x!3 ~@5", AD: "~@5 x ~ x", AE: "~ x ~@2 x ~@2 x", AF: "~ x ~ x ~@4", AG: "x ~@2 x ~@4",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@20 A@3 ~@7 B C ~@6 B C ~@2 A@3 D A@3 D ~@23 B C ~@3 E ~@2 B C ~@2 A@3 D A@3 D ~@25 F ~ F ~ F ~ F ~@6 B C ~@6 B C ~@2
  A@3 D A@3 D ~@14 G ~@3 E ~@5 F ~@3
>`.pickRestart({
  A: "~@2 x!6", B: "~@4 x!4", C: "~ x!3", D: "~ x ~@2", E: "~@12 x!2 ~@2", F: "~@4 x!2 ~@2", G: "x!3 ~ x ~@11",
})).gain(0.56)

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@20 A@3 B ~@18 A@2 C B A@2 C D ~@28 E ~@6 A@2 C B A@2 C D ~@25 F ~ F ~ F ~ F ~@18 A@2 C B A@2 C D ~@13 G ~@4 E ~@5 H
  ~@3
>`.pickRestart({
  A: "~@5 x ~ x", B: "x!3 ~ x ~ x ~ x ~ x ~ x ~@3", C: "~@5 x!3", D: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", E: "~@4 x!2 ~@2",
  F: "~@2 x!2 ~@4", G: "~@6 x!2", H: "~@4 x!3 ~@9",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@3 B C D ~ E ~ F G H@3 ~ H C ~ C H ~@2 C I ~ F C H ~@2 C I C H@3 ~ H@3 ~ J H ~ K J L ~ J M H ~ E ~ E ~ F N H C
  ~ C H ~@2 C I ~ E C H ~@2 C O C H@3 ~ H@3 ~ J H ~ K J P Q J@2 R H ~ E S H ~ K ~ T U J T J M H C H C H C H C H C H C H
  ~@2 C I ~ E C H ~@2 C O C H@3 ~ H@3 ~ J H ~ K J F V J@2 T W X Y ~ Z ~ S O C AA AB H C O ~ O AC I
>`.pickRestart({
  A: "~@3 x!2 ~@3", B: "~@3 x ~@4", C: "~@7 x", D: "x ~@2 x", E: "~ x ~@2", F: "~ x ~ x", G: "~@4 x ~@10 x", H: "x",
  I: "x!2 ~ x", J: "x!2", K: "~ x", L: "~@2 x ~@2 x!2 ~", M: "x ~@3 x ~@2 x", N: "~@2 x!2 ~ x!3", O: "x!2 ~@2",
  P: "~ x!2 ~@3 x ~", Q: "~@3 x", R: "~@4 x!4", S: "~@5 x!3", T: "~ x!2 ~@2 x!2 ~", U: "x!3 ~@2 x!2 ~", V: "~@6 x!2",
  W: "x!5 ~@3", X: "~@5 x!2 ~", Y: "~ x ~ x!2 ~@3", Z: "~@3 x!2 ~ x ~", AA: "x ~ x!2 ~ x!2 ~", AB: "x ~ x ~ x!4",
  AC: "~ x!2 ~@2 x!3",
})).gain(0.48)

stack(bass, overdriven_guitar, drawbar_organ, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash)

More by Metallica