Strudelify
For Whom the Bell Tolls cover art

Ride The Lightning

For Whom the Bell Tolls

Metallica

KeyG majorTempo120 bpm
0:00/0:00
// For Whom the Bell Tolls — Metallica
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 125, 4/4 at bar 125, 2/4 at bar 127) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 147 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
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 · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  ~@3 A B@24 C D C E C D C E F@2 G@2 H I G@2 H J G@2 H I G@2 H J K L K M K L K M G@2 H I G@2 H J G@2 H I G@2 H J K L K M
  K L K M N@3 O N P N@3 O N P G@2 H I G@2 H J G@2 H I G@2 H J K L K M K L K M Q@2 R S T Q@2 R S T Q@2 R S T Q@2 R S T
  Q@2 R S T
>`.pickRestart({
  A: "~@6 [f#2,c#3,f#3]!2 ~ [f#2,c#3,f#3]!2 ~", B: "[[e2,b2,e3]@18 [f#2,c#3,f#3]!2 ~ [f#2,c#3,f#3]!2 ~]/2",
  C: "[e3,b3] [g3,d4] [f#3,c#4] [f3,c4] [e3,b3] [g3,d4] [f#3,c#4] [f3,c4]", // E5 G5 F#5 F5 E5 G5 F#5 F5
  D: "[e3,b3] [g3,d4] [f#3,c#4] [f3,c4] [e3,b3] [f#3,c#4] [g3,d4] [a2,e3]", // E5 G5 F#5 F5 E5 F#5 G5 A5
  E: "[e3,b3] [g3,d4] [f#3,c#4] [f3,c4] [e3,b3] [f#3,c#4] [g3,d4] [g2,d3]", F: "e3/2", G: "[e2,b2,e3]/2",
  H: "[g2,d3,g3]", I: "[g2,d3,g3] ~@3", J: "[c3,g3,c4] [a2,e3,a3]", K: "e2!3 [g2,d3,g3]@3 e2!3 [a2,e3,a3]@3",
  L: "e2!3 [g2,d3,g3]@3 [a#2,f3,a#3]@3 [f#2,c#3,f#3]@3", // G5 A#5 F#5
  M: "e2!3 [g2,d3,g3] e2!2 [a#2,f3,a#3]@2 [f#2,c#3,f#3]@2 [f2,c3,f3]@2", N: "[e2,b2,e3]",
  O: "[g2,d3,g3]@3 [g2,d3,g3]!3 [g2,d3,g3]@3 [g2,d3,g3]!3", P: "[b2,f#3,b3]", Q: "[e2,e3,b3]@3 [f#3,c#4] [f#3,c#4]@2",
  R: "[g3,d4] [g3,d4]@2 [e2,e3,b3]@3", S: "[f#3,c#4] [f#3,c#4]@2 [e2,e3,b3]@3",
  T: "[f#3,c#4] [f#3,c#4]@2 [g3,d4] [g3,d4]@2", // F#5 G5
})).s("gm_distortion_guitar").gain(0.4)

// other · electric guitar clean · "Guitar 2"
const electric_guitar_clean = note(`<
  ~@4 A B A B A B A B A B A B A B A B ~@8 C D C E C D C E F@2 G@16 H I H J H I H J G@16 H I H J H I H J K ~ K ~ K ~ K ~
  K ~ K ~ G@16 H I H J H I H J ~@25
>`.pickRestart({
  A: "~@2 d5 c#5 c5 b4@3", B: "g4 f#4 d5 d4 c4@4",
  C: "[e2,b2] [g2,d3] [f#2,c#3] [f2,c3] [e2,b2] [g2,d3] [f#2,c#3] [f2,c3]", // E5 G5 F#5 F5 E5 G5 F#5 F5
  D: "[e2,b2] [g2,d3] [f#2,c#3] [f2,c3] [e2,b2] [f#2,c#3] [g2,d3] [a2,e3]", // E5 G5 F#5 F5 E5 F#5 G5 A5
  E: "[e2,b2] [g2,d3] [f#2,c#3] [f2,c3] [e2,b2] [f#2,c#3] [g2,d3]!2", F: "[e2,b2]/2",
  G: "g4 e4 f#4 d4 e4 f#4 g4 e4 f#4 d4 e4 f#4", H: "e2!3 [g2,d3,g3]@3 e2!3 [a2,e3,a3]@3",
  I: "e2!3 [g2,d3,g3]@3 [a#2,f3,a#3]@3 [f#2,c#3,f#3]@3", // G5 A#5 F#5
  J: "e2!3 [g2,d3,g3] e2!2 [a#2,f3,a#3]@2 [f#2,c#3,f#3]@2 [f2,c3,f3]@2", K: "g4 e4 f#4 d4 e4 c#4 d4 b3 c#4 a3 b3 g3",
})).s("gm_electric_guitar_clean").gain(0.4)

// other · overdriven guitar · "Guitar 3"
const overdriven_guitar = note("<~@4 A B A B A B A B A B A B A B A B ~@72 C@2 D E C@2 ~@49>".pickRestart({
  A: "~@2 d4 c#4 c4 b3@3", B: "g3 f#3 d4 d3 c3@4", C: "[g4 e4 f#4 d4 e4 b4 g4 e4 a4 f#4 g4 b4@13]/2",
  D: "g4 e4 f#4 d4 e4 b4 g4 e4 a4 f#4 g4 b4", E: "g4",
})).s("gm_overdriven_guitar").gain(0.4)

// other · electric guitar clean · "Guitar 4"
const electric_guitar_clean_2 = note(`<
  ~@92
  [b3 a3 c#4 a3 b3 g3 d4 b3 c#4 a3 b3 g3]
  ~
  [b3 a3 c#4 a3 b3 g3 d4 b3 c#4 a3 b3 g3]
  ~
  [b3 a3 c#4 a3 b3 g3 d4 b3 c#4 a3 b3 g3]
  ~@50
>`).s("gm_electric_guitar_clean").gain(0.4)

// bass · electric bass finger · "Bass 1"
const bass = note(`<
  ~@3 A B@16 C D C E C D C E C D C E C D C E F@2 G@3 H G@3 I G@3 H G@3 J K L K M K L K M G@3 H G@3 I G@3 H G@3 J K L K M
  K L K M G@2 N O G P G@2 N O G Q G@3 H G@3 I G@3 H G@3 J K L K M K L K M R@2 S T U R@2 S T U R@2 S T U R@2 S T U R@2 S
  T U
>`.pickRestart({
  A: "~@6 f#1!2 ~ f#1!2 ~", B: "[e1@18 f#1!2 ~ f#1!2 ~]/2", C: "e1 g1 f#1 f1 e1 g1 f#1 f1",
  D: "e1 g1 f#1 f1 e1 f#1 g1 a1", E: "e1 g1 f#1 f1 e1 f#1 g1 b1", F: "e1/2", G: "e1@3 e1!3 e1@3 e1!3", H: "e1 ~@2 e2",
  I: "c2!3 c2@3 a1!3 a1@3", J: "c2@2 c2!2 c2@2 a1!3 a2@3", K: "e1!3 g1@3 e1!3 a1@3", L: "e1!3 g1@2 e1 a#1@3 f#1@3",
  M: "e1!3 g1 e1!2 a#1@2 f#1@2 f1@2", N: "e1@3 e1!3 e1@3 e2@3", O: "g1@3 g1!3 g1@3 g1!3", P: "b1@3 b1!3 b1@3 b2@3",
  Q: "b1@3 b1!3 b1@3 b1@3", R: "e1@3 f#1 f#1@2", S: "g1 g1@2 e1@3", T: "f#1 f#1@2 e1@3", U: "f#1 f#1@2 g1 g1@2",
})).s("gm_electric_bass_finger").gain(0.4)

// bass · electric bass pick · "Bass 2"
const bass_2 = note("<~@4 A@16 ~@127>".pickRestart({
  A: "[~@6 d4@3 c#4@3 c4@3 b3@6 d4@2 ~ g3@3 f#3@3 d4@3 d3@3 c#3@12, ~@23 b3@2 ~@23]/2",
})).s("gm_electric_bass_pick").gain(0.4)

// chords · tubular bells · "Bells" · A#aug
const tubular_bells = note("<[~ [a#3,d4,f#4] ~@2] ~ [~ [a#3,d4,f#4] ~@2] ~@144>").s("gm_tubular_bells").gain(0.8)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@41 [~ x ~@5 x ~@4] ~@105>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@12 A B C B C B C ~ A B C B C B C ~ A B@9 A D A ~ A B A E A B A E A B A ~ A D A ~ A D A ~ A B A ~ A B A E A B A ~ A B
  A F A D A ~ A D A ~ A@3 ~ A@5 ~ A@3 B A ~ A B E@2 A B A ~ A B A F A D A ~ A D A ~@26
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~ x!2", D: "x!3 ~", E: "x!2", F: "x ~ x!2 ~@8",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~@7 B ~@7 C ~@13 D ~@11 E ~@3 F ~@3 F ~@15 E ~@3 F ~@3 F ~@3 G ~@5 G ~@5 H ~@7 I ~@3 E ~@3 F ~@3
  F J@2 K@2 L J@2 K@2 L J@2 K@2 L J@2 K@2 L J@2 K@2 L
>`.pickRestart({
  A: "~@6 x!2 ~ x!2 ~", B: "~ x!2 ~@2 x ~@2", C: "~@5 x!2 ~", D: "~ x ~@11 x ~@10", E: "~ x ~", F: "x!3 ~ x!2 ~@6",
  G: "x ~@2 x!4 ~@2 x!3", H: "~@5 x ~@5 x ~@12", I: "~@5 x ~@5 x ~@5 x ~@6", J: "~@3 x!2 ~", K: "x!2 ~@4",
  L: "x!2 ~ x!2 ~",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~@7 B ~@7 C ~@25 D ~@3 E ~@3 E ~@15 D ~@3 E ~@3 E ~@3 F ~@5 F ~@5 G ~@7 H ~@3 D ~@3 E ~@3 E I@2
  J@2 K I@2 J@2 K I@2 J@2 K I@2 J@2 K I@2 J@2 K
>`.pickRestart({
  A: "~@6 x!2 ~ x!2 ~", B: "~@3 x", C: "~@7 x", D: "~@6 x ~ x!3 ~", E: "x!6 ~@6", F: "x ~@2 x!4 ~@2 x!3",
  G: "~@2 x ~@2 x ~@6", H: "~@2 x ~@2 x ~@2 x ~@3", I: "~@3 x!2 ~", J: "x!2 ~@4", K: "x!2 ~ x!2 ~",
})).gain(0.4)

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

stack(
  distortion_guitar, electric_guitar_clean, overdriven_guitar, electric_guitar_clean_2, bass, bass_2, tubular_bells,
  kick, snare, low_tom, hihat, mid_tom, high_tom, crash
)

More by Metallica