Strudelify
Nothing Else Matters cover art

1991 · Metallica

Nothing Else Matters

Metallica

KeyG majorTempo71 bpm
0:00/0:00
// Nothing Else Matters — Metallica
// 71 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (6/8 at bar 1, 3/8 at bar 6, 6/8 at bar 6, 3/8 at bar 54, ...) are rendered on a constant 6/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 7 "Guitar fuzz/buzz" Cello 1 -> cello; ch 11 "Bass" Elec Bass 2 -> electric bass pick
// note: "Guitar fuzz/buzz" named as a guitar, played on distortion guitar (neither patch table reads its program as one); ch 6 "Lead Bass" named as a bass, played on electric bass finger (its accordion patch is not one); ch 13 "Bass (left)" named as a bass, played on electric bass finger (its lead 1 square patch is not one); ch 14 "Bass (right)" named as a bass, played on electric bass finger (its electric guitar muted patch is not one)
// note: duplicate parts dropped: ch 13 "Bass (left)" electric bass finger (copy of ch 14 "Bass (right)" electric bass finger)
// note: Full arrangement: all 151 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/3)

// 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 · acoustic guitar steel · "Gtr harmony"
const acoustic_guitar_steel = note(`<
  ~@19 A B C D E ~@18 F G F H F I J K L ~@22 M N O ~ P Q R ~ M N O ~ P S T U V ~@8 F G F H F I J ~@46
>`.pickRestart({
  A: "~@4 e4 g4 b4@6", B: "~@4 a4@2 f#4@2 d4@5 ~@3 g4@2 e4@2 c4@4", C: "~@4 g4@2 d4@2 b3@5 ~@3 f#4@2 d#4@2 a3@4",
  D: "~ g3@2 ~ g3@9 ~@11, a3 f#3 ~@6", E: "[g4,b4,e5]", F: "~@4 [e3,g3]@2 [e3,g3] [f#3,a3]@2 [f#3,a3] [e3,g3]@2",
  G: "[d3,f#3] e3 e3@2", H: "[d3,f#3] d3 d3@2", I: "[d3,f#3] g3 [c3,e3]@2", J: "[b2,d3]@2 b2 c3 b2@2 ~@2 b2 c3 b2@2",
  K: "~ e4 f#4 g4 f#4 e4", L: "g4 f#4 e4 a4@3", M: "g5 e5@2 a5 e5@2", N: "b5 e5@2 c6 e5@2", O: "e5 c5@5",
  P: "e5 c5 g4@4", Q: "[e5,f#5] d5 a4@4", R: "b4 e5@5 e5 b4@5", S: "~@2 g4@2 g4 a4@3 g4 a4 a4@2", T: "g4 b4@5 b4 e4@5",
  U: "~@4 d5@4 [a4,d5]@4 [a4,d5] a4 ~ g4 e4@4 d4 e4 g4@2, ~@2 a4 ~@9", V: "e4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.42).pan(0.6)

// other · marimba · "Chords"
const marimba = note(`<
  ~@4 A B C ~@2 D E F ~@3 G ~ G ~ G ~@4 H I H ~ H J K ~@2 H I H ~ H J K ~@2 H I H ~ H J K ~@9 L ~ M ~ L N ~@9 O P Q R
  ~@2 S ~ O P Q R ~@2 S ~ H I H ~ H J K ~@2 H I H ~ H J K ~@24 L ~ M ~ L N ~@2 A B T ~ U@2 V W ~ X Y Z ~@2
>`.pickRestart({
  A: "~@2 b4!2 ~@2", B: "b4 ~@9 b4@2", C: "c5@4 b4@3 c5 a4@4 b4@4 a4 g4 ~@6", D: "~@6 g4 ~@5", E: "~@14 a4 ~@9",
  F: "~ [g4,b4] b4 e5 ~@2", G: "~ [g4,b4]", H: "~@3 g4 ~@2", I: "~@3 g4 ~@8", J: "~@3 g4 ~@2 g4@2 ~@4", K: "~@2 g4 ~@3",
  L: "g4@2 ~@7 g4 ~@2", M: "g4 ~@5", N: "g4 ~@4 g4", O: "e5 b4@2 f#5 b4@2", P: "g5 b4@2 a5 b4@2", Q: "c5 ~@2 c5 ~@2",
  R: "~@3 c5 ~@2", S: "~ b4 ~@4 b4 ~@5", T: "c5@4 b4@3 [b4,c5] a4@2 b4@4 a4@2 g4@2 ~@6",
  U: "[~@9 b4@2 b4@2 ~@4 b4 ~@6]/2", V: "~@6 b4@4 c5@4 b4@3 [b4,c5] a4@2 b4@4", W: "a4 g4 ~@10",
  X: "~@2 b4@2 b4@2 ~@4 b4 ~", Y: "~@4 b4 c5", Z: "b4@3 [b4,c5] a4@2 b4@4 a4@2 g4@2 ~@10",
})).s("gm_marimba").gain(0.58).pan(0.4)

// bass · electric bass finger · "Lead Bass"
const bass = note(`<
  A@6 ~ B C ~@2 D@4 E ~ E ~ E ~ F D@3 G D G D ~ H D I D G D G D ~ H D I D G D G D ~ H D J ~@4 A@3 ~ K ~ K ~ L M ~ N ~@4
  D@2 ~@7 D ~@7 I D G D G D ~ H D I D G D G D ~ H D J ~@8 A@2 ~@7 A@5 ~ K ~ K ~ L O A@3 P@5 Q@4 R S@2
>`.pickRestart({
  A: "~@3 e2 ~@2", B: "a2 ~@5", C: "a2 ~@3 a2!2", D: "e2 ~@5", E: "e2 ~@3", F: "g2 ~@2 b2 ~@2", G: "~@10 g2 f#2",
  H: "g2@2 ~@4 b2@2 b2 ~@3", I: "e2@2 ~@8 g2 f#2", J: "~ a2", K: "~@4 g2 f#2 e2@2 ~@4", L: "~@3 g2 ~@2",
  M: "b2@2 b2 ~@3 e2@2 ~@4", N: "a2 ~", O: "b2@3 b2@3 e2@2 ~@4", P: "[~@11 e2@2 ~@10 e2@2 ~@10 e2@2 ~@10 e2@2 ~@11]/5",
  Q: "~@2 e2 ~@3", R: "~@9 e2@2 ~", S: "[~@9 e2@8 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.45)

// other · distortion guitar · "Guitar fuzz/buzz"
const distortion_guitar = note(`<
  ~@33 A B@2 C A D E F@2 ~@12 G@3 ~@12 H@2 I ~@17 A B@2 C A D E F@2 ~@16 J@3 K L M L M L N O@5 ~@22
>`.pickRestart({
  A: "g4", B: "[a4 b4 g4@6]/2", C: "a4 b4 c5@2", D: "a4 b4 g4@2", E: "g4 f#4", F: "e4/2",
  G: "[~@2 c3 e3 g3@4 a2 e3 a3@4 d3 a3 d4@2 e4@12 ~@6]/3", H: "[~@8 c3 e3 g3@4 a2 e3 a3@4 d3 a3 d4@2]/2", I: "e4",
  J: "[~@2 c3 e3 g3@4 a2 e3 a3@4 d3 a3 d4@2 e4@12 e3!2 e2!4]/3", K: "[e2,b2]@2 [e2,b2]@2 [e2,b2]@2 [e2,b2]@4 b2 e3",
  L: "[e3,b3]@2 [e3,b3] [d3,a3]@2 [d3,a3]", M: "[c3,g3]@4 g2 f#2 [e2,b2]@4 b2 e3", N: "[c3,g3]@4 g2 f#2 [g2,d3]@6",
  O: "[[b2,f#3] [e2,b2]@8 ~]/5", // B5 E5
})).s("gm_distortion_guitar").gain(0.7).pan(0.6)

// other · distortion guitar · "Guitar solo"
const distortion_guitar_2 = note("<~@117 A B C D E F G H@6 I@2 J@2 K@4 ~@13>".pickRestart({
  A: "~@3 [a4,d5]@2 a4", B: "g4@4 a4 g4 f#4 g4 f#4 e4 f#4 d4", C: "e4@3 g4 a4 g4 a4 b4 e5 a4 b4 e5",
  D: "d5@2 b4@2 a#4@2 b4@2 a#4@2 a4@2 g4@5 e4 [a4,c#5]@2 ~@2 [a4,c#5]@2", E: "[g#4,c5] g4@5 g5@2 f#5@2 b4@2",
  F: "g5@4 f#5@3 g5 a5@3 a5 g5@2 f#5 [f#5,g5] e5@2 b4@2 g5@2 f#5@2", // Gmaj7
  G: "b4@6 g4@2 a4@2 g4@2 [a4,d5]@3 g4 e4@2 g4@2 a4@2 b4@2", // D5
  H: "[e5@4 d5@2 d5@5 b4 d5@48 b4@2 d5@2 b4@16 f#4@4 e4@2 f#4@2 e4@44 f#4@6 g4@6]/6", I: "[e4@6 f#4 g4]/2",
  J: "[d4@6 f#4 g4]/2", K: "[b4@7 ~]/4",
})).s("gm_distortion_guitar").gain(0.8).pan(0.6)

// other · overdriven guitar · "Guitar fill"
const overdriven_guitar = note("<~@33 A B@2 C A D E@3 ~@53 E@3 ~@53>".pickRestart({
  A: "e4", B: "[f#4 g4 e4@6]/2", C: "f#4 g4 g4@2", D: "f#4 g4 e4@2", E: "b3/3",
})).s("gm_overdriven_guitar").gain(0.62).pan(0.6)

// other · overdriven guitar · "Guitar fill" · soft notes
const overdriven_guitar_soft = note("<~@89 A B@2 C A D ~@56>".pickRestart({
  A: "e4", B: "[f#4 g4 e4@6]/2", C: "f#4 g4 g4@2", D: "f#4 g4 e4@2",
})).s("gm_overdriven_guitar").gain(0.37).pan(0.6)

// other · electric bass pick · "Bass"
const electric_bass_pick = note("<~@55 A@2 B@2 ~@12 C D E F ~@40 G H I ~@33>".pickRestart({
  A: "[~@3 b4@7 a4 g4]/2", B: "[f#4 g4 a4 e4@6 ~@3]/2", C: "e4@2 g4", D: "a4 b4 d5", E: "e5 f#5", F: "g5 a5", G: "~ e4",
  H: "f#4 g4", I: "a4 ~",
})).s("gm_lead_8_bass_lead").gain(0.59).pan(0.8)

// chords · lead 1 square · "Synth"
const lead_1_square = note("<~@50 A B C B C D@2 ~@9 E F G F H I ~@34 J B C B C B C B C D@2 ~@34>".pickRestart({
  A: "[c3,e3,g3,c4,e4] [a2,d#3,g#3,c4]", // C G#
  B: "[d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]!3 [d3,a3,d4,g4] [d3,a3,d4,f#4]@2 [d3,a3,d4,g#4]@2 [d3,a3,d4,f#4]", // D Dsus4 D
  C: "[c3,e3,g3,c4,e4] [a2,e3,a3,c#4]", // C A
  D: "[[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2 [e2,b2,e3,g3,b3,e4]@12 ~@6]/2", // D Em
  E: "~@6 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]!3", // D
  F: "[d3,a3,d4,g4] [d3,a3,d4,f#4]@2 [d3,a3,d4,g#4]@2 [d3,a3,d4,f#4] [c3,e3,g3,c4,e4]@6", // Dsus4 D C
  G: "[a2,e3,a3,c#4]@6 [d3,a3,d4,f#4]@3 [d3,a3,d4,f#4]!3", // A D
  H: "[a2,e3,a3,c#4]@6 [d3,a3,d4,f#4]@2 [d3,a3,d4,f#4]!2 [d3,a3,d4,f#4]@2", I: "[e2,b2,e3,g3,b3,e4]",
  J: "e3 [a2,e3,a3,c#4], [c3,g3,c4,e4]", // A C
})).s("gm_lead_1_square").gain(0.53).pan(0.4)

// bass · electric bass finger · "Bass (right)"
const bass_2 = note(`<
  ~@24 A B A B A B C A D A B A B A B C A D A B A B A B C A E F E F E G@2 H I J I K I L M N O P O P O Q R S T U V W X Y Z
  S T AA AB W AC AD R A B A B A B C A D A B A B A B C A E F E F E F E F E AE@2 AF AG AH AG AH AG L AI@7 ~@20
>`.pickRestart({
  A: "e1 e2", B: "d2@6 c2@4 g1 f#1", C: "g1 b1", D: "e1 e1@2 e1 e1@2 e2@4 g1 f#1", E: "c2 a1", F: "d2!6",
  G: "[d2!3 e1@6 e2@3]/2", H: "e1@4 g1 f#1 e1@6", I: "e2 d2", J: "c2@4 g1 f#1 e1@6", K: "g2@4 g1 f#1 e1@6",
  L: "c2@4 g1 f#1 g1@6", M: "b1 e1", N: "e2 c2", O: "a1@3 d2!3", P: "d2!3 c2@3", Q: "e1", R: "e2@6 e1@4 g1 f#1",
  S: "e1@2 e2@2 e2!2 e1@2 e2@2 e2!2", T: "e1@2 e2@2 e2!2 e1@2 e2@2 b1@2", U: "a1@11 a1", V: "a1@5 a1",
  W: "c2@6 c2@2 c2@2 b1 c2", X: "d2@6 d2@2 d2@2 d2 e2", Y: "e1@6 e2 e1@2 e1 e2@2", Z: "e1@9 e1 g1 f#1",
  AA: "a1@3 a2@2 e2", AB: "a1@10 a1 b1", AC: "d2@3 a2 d2 g2", AD: "e2@3 e1@2 e2", AE: "[d2@2 d2@2 d2@2 e1@12 e1!6]/2",
  AF: "e1!6 e1@4 e1@2", AG: "e2@2 e2 d2@2 d2", AH: "c2@4 g1 f#1 e1@4 e1@2", AI: "[b1@2 e1 e1@36 ~@3]/7",
})).s("gm_electric_bass_finger").gain(0.6).pan(0.8)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@24 A@8 B A@7 C D A@9 ~ A ~ A ~ E F G@9 ~ G ~ G H I ~@6 A J A@6 K L A@7 M N A@9 ~ A ~ A ~ A ~ A ~ O P G L J Q I R G
  ~@26
>`.pickRestart({
  A: "~ x", B: "~@2 x!2 ~@2", C: "~@3 x!2 ~", D: "~@4 x ~ x ~@2 x!3", E: "x ~@2 x!3 ~@3 x!3", F: "~@3 x!3 ~@6", G: "x",
  H: "~@2 x!2", I: "x!4", J: "x ~ x!2 ~ x", K: "~@3 x ~ x", L: "x ~@2 x!3 ~@6", M: "~@3 x!3", N: "~ x ~ x ~ x ~@6",
  O: "x ~ x ~ x ~ x!6", P: "x!6 ~@6", Q: "x!2 ~@2", R: "x!3 ~",
})).gain(0.7).pan(0.6)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@24 A B@6 C D C B@6 C D C D C D C D C@2 E C F C E@2 G H B@6 I@2 E I E I E J ~ C B C B C B C B C K C K C@3 L C B@6 C M
  C D C D C D C@4 E C E C E C E@2 K H B N C N O H O ~@26
>`.pickRestart({
  A: "~@3 x ~ x", B: "x!6", C: "~ x!5", D: "x!5 ~", E: "~ x!2 ~ x!2", F: "~@2 x ~ x!2", G: "x!2 ~ x!2 ~", H: "~@4 x!2",
  I: "x!3 ~ x!2", J: "~ x!4 ~", K: "x!3 ~@3", L: "x!2 ~ x ~@2", M: "x", N: "x!2 ~@2 x!2", O: "~ x ~@4",
})).gain(0.7).pan(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@88 [~@8 x!4] ~@8 [~@10 x!2] ~@19 [x!6 ~@6] ~@33>").gain(0.7).pan(0.6)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@51 A ~ A ~@3 B ~@8 C D C D ~@2 E ~@9 F ~@14 G ~@9 A ~ A ~ A ~ A ~@7 H I ~@28
>`.pickRestart({
  A: "~ x ~@2 x ~", B: "x!2 ~@4", C: "~@2 x", D: "~ x ~@4", E: "x!3 ~@3", F: "~ x", G: "~ x!2 ~@3", H: "~@4 x!2 ~@6",
  I: "~@2 x!4",
})).gain(0.7).pan(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@84 [~@12 x ~@2 x!2 ~@2 x!2 ~@3] ~@66>").gain(0.7).pan(0.6)

// drums · high tom
const high_tom = s("ht").struct("<~@32 A ~@24 B ~@13 C D ~@9 E ~@14 F ~@18 G ~@6 H ~@27>".pickRestart({
  A: "~@10 x!2", B: "x!2 ~@4", C: "~@5 x", D: "~@3 x!3", E: "~@4 x!2", F: "~@6 x!4 ~@2", G: "~@6 x!6", H: "x!3 ~@3",
})).gain(0.7).pan(0.6)

// drums · crash
const crash = s("cr").struct(`<
  ~@24 A ~@6 A ~ A ~@6 A ~ A B A B A B A@2 C A C A C@2 ~ D ~@6 D@2 C D C D C A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A ~@6 A ~
  A B A B A B A@4 C A C A C A C@2 ~ D ~ D A D A D E ~@26
>`.pickRestart({
  A: "x", B: "~@5 x", C: "x!2", D: "~ x", E: "x ~ x!2 ~@2",
})).gain(0.7).pan(0.6)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@73 [~ x]!6 ~@72>").gain(1.02).pan(0.6)

stack(
  acoustic_guitar_steel, marimba, bass, distortion_guitar, distortion_guitar_2, overdriven_guitar,
  overdriven_guitar_soft, electric_bass_pick, lead_1_square, bass_2, kick, snare, hihat, low_tom, mid_tom, open_hat,
  high_tom, crash, woodblocks
)

More by Metallica