Strudelify
My Friend of Misery cover art

1991 · Metallica

My Friend of Misery

Metallica

KeyG majorTempo120 bpm
0:00/0:00
// My Friend of Misery — Metallica
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 7 "Guitar 6" named as a guitar, played on electric guitar clean (its piano patch is not one)
// note: Full arrangement: all 197 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 2.
setcpm(120/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 · electric guitar jazz · "Guitar 1"
const electric_guitar_jazz = note(`<
  ~@7 A B@2 C@2 B@2 D@8 E@3 F@2 G@2 F@2 G@2 H I J K L I J K L I J K L I J M N O P O Q O R O S T U V F@2 G@2 F@2 G@2 H I
  J K L I J K L I J K L I J M N O P O Q O R O S T W B@2 C@2 B@2 X@2 ~@24 K F@2 G@2 F@2 Y@2 ~@7 M N O P O Q O P O Q O P O
  Q O R O S T Z O P O Q O P O Q O P O Q O P O Q AA AB AC AB AD AB AA AB O P O Q O P O AE@2
>`.pickRestart({
  A: "~@7 [a2,f3,a3]", B: "[a2,f3,a3]/2", C: "[[a2,e3,a3]@15 [a2,f3,a3]]/2",
  D: "[[a2,e3,a3]@17 f3 d3 f3 a2@13 e3 c3 e3 a2@13 f3 d3 f3 a2@12]/8", E: "[~ e3 c3 e3 a2@13 f3 d3 f3 a2@3 f3]/3",
  F: "[d3 f3 a2@7 e3 c3 e3 a2@3 e3]/2", G: "[c3 e3 a3@7 f3 d3 f3 a2@3 f3, ~@4 g3 ~@27]/2", H: "e3 f3 a2@4 c3 g3",
  I: "~ e3 c3 e3 a2@3 e3", J: "c3 e3 a3@4 a3!2, ~@4 g3 ~@11", K: "~ f3 d3 f3 a2@3 f3", L: "d3 f3 a2@4 c3 g3",
  M: "a2 c3 g3 e2 g2 d3 a2 e3", N: "a2 c3 g3 e2 [d3,g3] e3@3", O: "[f#2,c#3]!2 a2 b2 c3 c#3 [e2,b2,e3]@2",
  P: "e2 [a2,e3,a3] [a2,e3]@2 [a2,e3,a3] [f#3,b3] [f#3,b3]@2, ~@2 a3 ~@5", // A5 B5
  Q: "e2 [a2,e3,a3]!2 [a#2,f3,a#3] [b2,f#3,b3] [e2,b2,e3]@2 [e2,b2,e3]", // A5 A#5 B5 E5
  R: "e2 [a2,e3,a3]!2 ~ [a2,e3,a3] [f#3,b3] [f#3,b3]@2", // A5 B5
  S: "e2 [a2,e3,a3]!2 [a#2,f3,a#3] [b2,f#3,b3] [e2,b2,e3]@2 [e2,c3]", T: "[e2,c3] e2!3 [e2,b2,e3]@2 e2 [e2,c3]",
  U: "[e2,c3] e2!3 [e2,b2,e3]@2 e2 a2", V: "a2 f3 d3 f3 a2@3 f3", W: "[e2,c3] e2!3 [e2,b2,e3]@2 e2 [a2,f3,a3]",
  X: "[a2,e3,a3]/2", Y: "[c3 e3 a3@7 ~@7, ~@4 g3 ~@27]/2", Z: "[e2,c3] e2!3 [e2,b2,e3]@2 e2 [e2,b2,e3]",
  AA: "[f#2,c#3,f#3]!2 ~@2 [f#2,c#3,f#3]!2 [e2,b2,e3] [f2,c3,f3]", // F#5 E5 F5
  AB: "[f#2,c#3,f#3]!2 ~@2 [f#2,c#3,f#3] e2 [g2,d3,g3]@2", // F#5 G5
  AC: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 ~@4 [f#2,c#3,f#3]!2 [f#2,c#3,f#3]@2 [e2,b2,e3]@2 [f2,c3,f3]@2", // F#5 E5 F5
  AD: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 ~@4 [f#2,c#3,f#3]!2 ~ [f#2,c#3,f#3] [e2,b2,e3]@2 [f2,c3,f3]@2", // F#5 E5 F5
  AE: "[~ [a2,e3,a3]!2 [a#2,f3,a#3] [b2,f#3,b3] [e2,b2,e3]@11]/2", // A5 A#5 B5 E5
})).s("gm_electric_guitar_jazz").gain(0.49)

// other · electric guitar muted · "Guitar 1"
const electric_guitar_muted = note("<~@105 A B C D A B C D E F G ~@81>".pickRestart({
  A: "a3@3 c4@3 e4@2", B: "a3", C: "e4@3 d4@3 c4@2", D: "d4", E: "a4@3 a4@3 e4@2", F: "c4", G: "a4@3 a4@3 c4@2",
})).s("gm_electric_guitar_muted").gain(0.8)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel = note(`<
  ~@15 A B@2 C@2 B@2 C@2 B@2 C@2 B@2 D@3 ~@15 E F ~@9 G H@2 C@2 B@2 D@3 ~@15 E F ~@30 I@2 J K I@2 J K I@2 J K ~@2 L@2
  M@2 N@2 ~@8 E F ~@51
>`.pickRestart({
  A: "~@7 [a2,f3,a3]", B: "[a2,f3,a3]/2", C: "[[a2,e3,a3]@15 [a2,f3,a3]]/2", D: "[[a2,e3,a3]@17 ~@7]/3",
  E: "e3 ~@5 e3@2", F: "e3 ~@7", G: "~@7 f3", H: "f3/2", I: "[a2@2 e3 f3 a3 d4@2 [d4,e4]@2 d4@2 a3@5]/2",
  J: "a2@2 d3 e3!2 g3 a3!2", K: "[c4,e4]", L: "[a3@10 ~@5 [a2,f3,a3], a2 ~@3, e3 ~@15]/2", M: "[a3, a2 ~@3, f3 ~@15]/2",
  N: "[a3@5 ~@3, a2 ~@3, e3 ~@15]/2",
})).s("gm_acoustic_guitar_steel").gain(0.49)

// other · acoustic guitar steel · "Guitar 3"
const acoustic_guitar_steel_2 = note("<~@44 A B C D ~@20 E ~ F ~ E ~ F ~ E ~ F ~ A B C D ~@113>".pickRestart({
  A: "~ a3 f3 d3 a3 f3 d3 a3", B: "f3 d3 a3 f3 d3 a3 f3 a3", C: "~ a3 e3 c3 a3 e3 c3 a3", D: "e3 c3 a3 e3 c3 a3 e3 a3",
  E: "a3 f3@7", F: "a3 e3@7",
})).s("gm_acoustic_guitar_steel").gain(0.49)

// chords · electric guitar clean · "Guitar 4"
const electric_guitar_clean = note("<~@116 A@2 B@2 A@2 B@2 A@2 B@2 C D E F G@2 H I J K L M J N O P ~@53>".pickRestart({
  A: "[f4,a4]!8", B: "[e4,a4]!8", C: "a4@12 a#4 a4 a#4@2", D: "~@3 a#4@3 a#4 a4", E: "a4 a#4 a4@6 a4@8",
  F: "a4 a#4 a4 g4 a4 g4 f4 g4 f4@8", G: "[a4@12 a#4 a4 a#4@6 a#4 a4 a#4@4 a#4@3 a4@3]/2",
  H: "a4 a#4 a4@6 a4 a#4 a4 g4 a4@2 g4 a4", I: "g4 f4 g4@2 f4 g4 f4 e4 f4 e4 c4 e4 c4@4",
  J: "f5 d5 a4 d5 f5@2 f5 d5 a4 d5 f5@2 f5 d5 a4 d5", K: "f5 d5 a4 d5 f5 d5 f5 d5 a4 d5 f5 d5 f5 d5 a4 d5",
  L: "e5 c5 a4 c5 e5@2 e5 c5 a4 c5 e5@2 e5 c5 a4 c5", M: "e5 c5 a4 c5 e5 c5 a4!3 a#4 a4 g4 a4@4",
  N: "f5 d5 a4 d5 f5 d5 f5 d5 a4 d5 f5 d5 f5@2 f5@2", O: "c6 a5 e5 a5 c6@2 c6 a5 e5 a5 c6@2 c6 a5 e5 a5",
  P: "c6 d6 d6@2 d6@3 ~",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · electric guitar clean · "Guitar 5"
const electric_guitar_clean_2 = note(`<
  ~@116 A@2 B@2 A@2 B@2 A@2 B@2 C D E F G@2 H I J K L M J N O P ~@53
>`.pickRestart({
  A: "[f4,a4]!8", B: "[e4,a4]!8", C: "f4@12 g4 f4 g4@2", D: "~@3 g4@3 f4 e4", E: "e4 g4 e4@6 e4@8",
  F: "e4 f4 e4 d4 e4 d4 c4 d4 c4@8", G: "[f4@12 g4 f4 g4@6 g4 f4 g4@4 g4@3 f4@3]/2",
  H: "e4 f4 e4@6 e4 f4 e4 d4 e4@2 d4 e4", I: "d4 c4 d4@2 c4 d4 c4 b3 c4 b3 a3 b3 a3@4",
  J: "d5 a4 f4 a4 d5@2 d5 a4 f4 a4 d5@2 d5 a4 f4 a4", K: "d5 a4 f4 a4 d5 a4 d5 a4 f4 a4 d5 a4 d5 a4 f4 a4",
  L: "c5 a4 e4 a4 c5@2 c5 a4 e4 a4 c5@2 c5 a4 e4 a4", M: "c5 a4 e4 a4 c5 a4 e4!3 f4 e4 d4 e4@4",
  N: "d5 a4 f4 a4 d5 a4 d5 a4 f4 a4 d5 a4 d5@2 d5@2", O: "a5 e5 c5 e5 a5@2 a5 e5 c5 e5 a5@2 a5 e5 c5 e5",
  P: "a5 b5!2 c6 c6@4",
})).s("gm_electric_guitar_clean").gain(0.24)

// other · electric guitar clean · "Guitar 6"
const electric_guitar_clean_3 = note(`<
  ~@146 A B C D E F@2 G H ~@9 I@2 J@4 K L M@2 N O P Q R S T U V@2 W X Y@2 Z AA Z AB AC AD AE ~@2
>`.pickRestart({
  A: "b4 [b4,d5]!15", B: "[b4,d5]!8 b4 a4@5 f#4 a4", C: "b4@4 b4@2 b4@2 a4 f#4 e4@2 f#4@2 a4@2", D: "b4 a4 b4 a4 e5@4",
  E: "a5@3 a5@3 a5@2", F: "[a5@2 f#5 e5@2 b4!3]/2", G: "a4 f#4@4 e4 ~ f#4 a4@4 [a4,c#5]@4", H: "f#4 ~@3",
  I: "[a3 f#3 [a3,c#4] f#3@10 e4@3]/2", // A
  J: "[e4 f#4!2 e4 f#4@2 e4 f#4@2 e4 e4@2 e4@18 e4@5 c#4 b3@3 a3 b3!2 a3@2 f#3@20]/4",
  K: "b3@2 c#4@2 b3 a3 f#3 e3 b3 c#4 e4 d4 a3 f#3!2 a3", L: "c4 [a3,b3] f#3!2 a3 b3 a3 f#3 a3 b3 a3 f#3 a3@4",
  M: "[b4@4 a4@4 f#4@4 e4@2 e5@6 e5@4 e5@4 a4@2 e5 f#5]/2",
  N: "a5 [c#5,f#5] f#5 [f#5,a5] c#5 [f#5,a5] f#5 [c#5,f#5] a5 f#5!2 [f#5,a5] c#5 [c#5,f#5] [f#5,a5] f#5", // F#5 F#m F#5 F#m F#5 F#m
  O: "f#5@4 a5@4 a5 f#5 e5 f#5 e5@4", P: "a5 [e5,f#5] f#5 e5 c#5!3 [c#5,e5] b4 a4!2 b4 b4@4",
  Q: "b4 a4 f#4 [a4,c#5] [b4,d#5] [a4,c#5] f#4 a4 [a4,b4] f#4 [a4,c#5] [b4,d#5] a4@2 a4@2", // A B A Asus2 A B
  R: "f#4@2 a4 b4@2 a4 f#4 e4 b4 a4 f#4 [a4,c#5]@2 f#4 [b4,d#5] [a4,c#5]", // A B A
  S: "b4 a4 f#4 a4@2 [b4,d#5] b4 a4 b4 a4 f#4 a4 f#4@2 f#4@2", T: "b3@4 b3@2 b3 b3@2 b3!3 b3@2 b3!2", U: "b3!16",
  V: "[b3@2 f#4@2 a4@2 b4@2 b4@3 a4 e5@6 f#5 [c#5,e5] b4 c#5 e5 [b4,c#5] a4 f#4 a4 b4 b4@4]/2", // C#m Bsus2
  W: "a5 f#5 e5 a5 f#5 c#5 a5 f#5!2 [f#5,a5] f#5!2 [f#5,a5] e5 a5 f#5", // F#m
  X: "c6 [e5,f#5] b5 f#5 e5 [f#5,b5] f#5 [e5,f#5] b5 [e5,f#5] b5 [e5,f#5] b5 f#5 b5 f#5", // Esus2 B5 Esus2
  Y: "[b5 a5 ~ f#5!2 [f#5,a5] e5 f#5 e5 c#5!2 [c#5,e5]@2 c#5 b4 a4@2 ~ d#5@2 b4@4 b4@4 a4 f#4@3, ~@17 b4@3 ~@12]/2", // F#m C#m
  Z: "f#4!2 a4 b4 c5 c#5 e4@2", AA: "f#4 [a4,c#5]!2 f#4 [a4,c#5] [b4,d#5] [b4,d#5]@2", AB: "f#4 a4!2 a#4 b4 e4@2 f#4",
  AC: "[c#5,f#5] [c#5,f#5]@7", AD: "[c#5,f#5]@7 [c#4,f#4]", AE: "[c#5,f#5] [c#5,f#5]@6 ~",
})).s("gm_electric_guitar_clean").gain(0.49)

// other · overdriven guitar
const overdriven_guitar = note("<~@146 [d5 ~@15] ~@5 [~ d#5!3] ~@34 [~ d#5!2 ~] ~@9>")
  .s("gm_overdriven_guitar").gain(0.49)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C E F G F H F G F H F G F H F G F H I J K L M N K L M N O
  P A B C D A B C D F G F H F G F H F G F H F G F H I Q K L M N K L M N O P A B C D A B C D A B C D A B C D A B C D A B
  C D A B C D A B C D F G F H F G F H F G F H F G F H I J R S R N R S R N K L M N K L M N O@2 K L M N K L M N M T U N M
  T U N V W X Y Z AA AB AC U AD M N AE@2 AF AG@2
>`.pickRestart({
  A: "a1 f3 d3 a1 f3 d3 a1 f3", B: "a3 d3 a1 g3 d3 a1 f3 d3", C: "a1 e3 c3 a1 e3 c3 a1 e3",
  D: "g3 c3 a1 f3 c3 a1 e3 c3", E: "g3 c3 a1 f3 c3 a1 e3@2", F: "a1!8", G: "a1!6 c2 g1", H: "a1!6 g1 a1",
  I: "a1 ~@5 a1@2", J: "a1 ~@7", K: "f#1!2 a1 b1 c2 e2 e1!2", L: "e1@2 a1@2 a1@2 ~@2 a1@2 b1@3 b1 a1@2",
  M: "f#1!2 a1 b1 c2 c#2 e1!2", N: "e1 a1!2 a#1 b1 e1!3", O: "e1!8", P: "e1!7 a1", Q: "a1 ~@5 e2@2",
  R: "f#1!3 f1 e1 [c#1,c#2] e1!2", S: "e1 c#2!2 ~ c#2 d2!3", T: "e1 a1 b1 e1 a1 b1!3", U: "f#1!2 a1 b1 c2 d2 e1!2",
  V: "f#1!2 ~@4 e1 f1", W: "f#1!2 ~@3 e1 g1@2", X: "f#1!2 f#1@2 ~@8 e1@2 f1@2", Y: "f#1 f#1@4 e1 g1@2",
  Z: "f#1!2 ~@2 f#1!2 e1 f1", AA: "f#1!5 e1 g1!2", AB: "f#1!6 e1 f1", AC: "f#1!5 e1 f#2@2", AD: "e1 a1!2 ~ a1 b1!3",
  AE: "f#1!8", AF: "f#1!3 f1 e1 [c#1,c#2] e1 ~", AG: "[~ a1!2 a#1 b1 e1@11]/2",
})).s("gm_electric_bass_pick").gain(0.49)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B ~ B A B ~ B A B@3 C B@3 C B C B C B C B ~ D E D E D E D E D E D E D E D F G B C H C H C H C H C@2 B ~ B A B ~
  B A D E D E D E D E D E D E D E D F G B C H C H C H C H C@2 B ~ B A B ~@15 B@3 C B C B H B H ~@2 D E D E D E D E D E D
  E D E D F G B C H C I C H B ~ C H C H C H C H C@3 H C H C J K ~ D@3 L D@2 M N D@3 E O ~ P Q C H C J Q@2 B ~@2
>`.pickRestart({
  A: "~@7 x", B: "x", C: "x ~@6 x", D: "x!2", E: "x ~@3 x ~@2 x", F: "x ~@3 x!2 ~@2", G: "x ~@2 x", H: "x ~@4 x ~ x",
  I: "x ~@12 x!2 ~", J: "x ~@4 x ~@2", K: "~@3 x", L: "x ~@4 x!2 ~", M: "~@4 x!2 ~@2", N: "x!2 ~@3 x ~ x",
  O: "x ~ x!2 ~@4 x ~@7", P: "~@2 x ~@2 x ~ x", Q: "x!4",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  ~@16 A@15 B C@16 ~@2 A@8 ~@5 C ~@3 C@17 ~@2 A@8 ~@22 A@10 D E C@16 ~@2 A@3 F A@2 G H A@8 ~@2 A@6 I J C@3 K C@2 L M C@5
  N O ~ A@4 ~@2 P Q ~
>`.pickRestart({
  A: "~ x", B: "x ~@7 x ~ x!3 ~ x ~", C: "~ x ~ x", D: "x!2", E: "~@5 x!3", F: "~@4 x!3 ~", G: "~@8 x!2 ~ x!2 ~@2 x",
  H: "x!2 ~ x ~@3 x!3 ~@3 x ~ x", I: "x!2 ~@6 x!2 ~@6", J: "x!2 ~@6 x!2 ~@2 x ~@3", K: "~@4 x ~@3 x!2 ~@6",
  L: "x ~ x!6 ~@4 x!4", M: "~@4 x!5 ~@3 x!2 ~@2", N: "x!7 ~", O: "x!2 ~ x!2 ~ x ~", P: "~@3 x", Q: "~@5 x ~@2",
})).gain(0.49)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A B@3 A B@3 A B C D C D C D C D C D C D C D E F C@3 G C@3 G C@3 G C@2 H ~ I F C F C F C F C ~@2 B@3 ~ B@3 ~ F C@3
  G C@3 G C@3 G C@2 H ~ I F C F C F C F C ~@2 B@3 J K B@15 F C@3 F C@3 F C K ~ F C@3 G C@3 G C L C G C@2 H ~@2 F C F M F
  C E ~ F C F C F C F C ~@2 F C F C F C ~@2 N O@2 P O@2 ~@9 Q F C F C ~@5
>`.pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3", B: "~ x ~ x", C: "x!4", D: "x!2 ~ x", E: "~ x ~@2", F: "~ x!3",
  G: "x!2 ~@2 x ~ x ~", H: "x ~ x ~ x!2 ~@2", I: "~@5 x ~@2", J: "x ~@2 x", K: "~@3 x", L: "x!3 ~ x!3 ~", M: "x!2 ~@2",
  N: "~@2 x ~ x!4", O: "x!8", P: "x!4 ~@4", Q: "x!3 ~",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct("<~@58 A B ~@3 C ~@2 D E ~@26 A F ~@31 G ~@34 A H ~@21 I ~@6 I@2 J K ~>".pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~ x!5 ~", C: "~@5 x ~@2", D: "~@15 x", E: "x!2 ~@2 x!2 ~@2", F: "x!4", G: "~@5 x!3",
  H: "x ~ x!3 ~ x ~", I: "x!8", J: "x!7 ~", K: "~ x!4 ~@3",
})).gain(0.49)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@58 A@2 ~@2 B C ~@30 A@2 ~@53 D ~@2 D ~@9 A@2 ~@6 E@2 ~@13 F ~@6 G H I J ~
>`.pickRestart({
  A: "~ x", B: "~@15 x", C: "x!2 ~@6", D: "~@13 x ~@2", E: "~ x ~@6", F: "~@7 x", G: "x!4", H: "~ x!2 ~ x ~ x ~",
  I: "x!6 ~@2", J: "~ x!4 ~@3",
})).gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@63 A ~@3 B ~@59 C ~@25 D ~@16 E F ~@25>".pickRestart({
  A: "~@3 x!2 ~@3", B: "~@3 x ~@4", C: "x!2 ~ x ~@4", D: "~@4 x!2 ~@5 x!2 ~@3", E: "~@5 x ~@2",
  F: "~@4 x!3 ~@3 x!2 ~@2 x ~",
})).gain(0.49)

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

// drums · ride
const ride = s("rd").struct("<~@136 [~ x ~@2] ~@60>").gain(0.49)

stack(
  electric_guitar_jazz, electric_guitar_muted, acoustic_guitar_steel, acoustic_guitar_steel_2, electric_guitar_clean,
  electric_guitar_clean_2, electric_guitar_clean_3, overdriven_guitar, bass, kick, snare, hihat, low_tom, mid_tom,
  high_tom, crash, ride
)

More by Metallica