Strudelify

Outlaw Torn

Metallica

KeyG majorTempo60 bpm
0:00/0:00
// Outlaw Torn — Metallica
// 60 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 144 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): Fill 1.
setcpm(60/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(`<
  A B@6 C D E D E D E D E F@3 ~@4 G H@2 ~@8 D E D E D E D E I@2 J ~@4 G H@2 ~@3 K L M N O D E D E D E D P Q R S T Q R S
  T U@3 ~@6 V W X ~@6 Y ~ Z AA@2 AB ~@2 AC AD AE R S T Q R S T AF@4 AG ~ AG AH AI AJ AI AK@2 AJ AI AL AM AN AO AP AI AQ
  AI AR AI AS AT AU AV AW AI AJ
>`.pickRestart({
  A: "~@4 [e3,c4,f4] ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4] ~ [e3,c4,f4] [b4,e5]", // Fmaj7 E5
  B: "[e3,c4,f4,b4,e5] [e3,a#3,e4] ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4] ~ [e3,c4,f4] [b4,e5]", // Cmaj7 Edim Fmaj7 E5
  C: "[e3,c4,f4,b4,e5] [e3,a#3,e4] ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [c4,f4] e3 g3 e3", // Cmaj7 Edim Fmaj7 F5
  D: "[e3,d4] [e3,e4] e3 [e3,e4] e3 [e3,d4] [e3,e4] e3 [e3,d4] [e3,e4] e3 [e3,d4] [e3,e4] e3 [e3,e4] e3", // E7 E E7 E E7 E E7 E
  E: "d4@2 d4 d4@2 d4 d4@2 d4@2 d4!2 d4@2 d4@2", F: "[[d4,a4,d5] [e3,e4,b4,e5]@46 ~]/3", G: "~ f#4",
  H: "[[d4,a4,d5] [e4,b4,e5]@18 ~@13]/2", I: "[[d4,a4,d5] [e4,b4,e5]@30 ~]/2",
  J: "[d5,g5]!2 ~@2 [d5,g5]!2 ~@2 [d5,g5]!2 ~@2 [d5,g5]!2 ~@2", K: "~ a4", L: "[d4,a4,d5] [b3,f#4,b4]@14 ~",
  M: "a3 [b3,f#4,b4]@14 ~", N: "[b3,f#4,b4] [a3,e4,a4]@14 ~", O: "g3 [a3,e4,a4]@14 ~",
  P: "d4@2 d4 d4@2 d4 d4@2 d4@2 d4 f#4 [f#4,f#5] [g4,g5]!3", // F# G
  Q: "[d4,a4,d5] [e4,b4,e5]@2 e3 e3@2 e3!2 [d4,a4,d5] [a3,e4,a4] ~ [g3,d4,g4] [a3,e4,a4]!3 e3", // D5 E5 D5 A5 G5 A5
  R: "[g3,d4,g4] [a3,e4,a4]@2 [a3,e4,a4] [a3,e4,a4]@2 [a3,e4,a4] g3 [a3,e4] [g3,d4] ~ [f#3,d4] [g3,d4]@2 [g3,d4]@2", // G5 A5 G5 D G5
  S: "[d4,a4,d5] [e4,b4,e5]@2 [d5,g5]!3 [d5,g5]@2 [d4,a4,d5] [a3,e4,a4] ~ [g3,d4,g4] [a3,e4,a4]!3 e3", // D5 E5 G5 D5 A5 G5 A5
  T: "[g3,d4,g4] [a3,e4,a4]@3 [a3,e4,a4]@2 [a3,e4,a4] e3 [a3,a4] [g3,g4]@3 [g3,g4] [f#3,f#4]@3", U: "[[e3,b3]@47 ~]/3",
  V: "~@6 a5 ~", W: "~ d5@9 ~@2 a5@2 ~@2", X: "a5@7 ~@9", Y: "~@6 c4@7 ~@3", Z: "[d5,g5] ~ [d5,g5]!14",
  AA: "[[g5,b5]@3 [g5,b5]@3 [g5,b5]@2 [g5,b5]!3 a5 [a5,c#6]@7 ~ a5@3 a5@3 a5@2 a5@2 [a5,c#6]@2, d5 ~@31]/2", // G A
  AB: "g5 e5@3 e5@3 ~ e5@2 e5@2 e5@3 ~",
  AC: "a4 [b4,d5] [e5,g5] a5 a4 [b4,d5] [e5,g5] a5 [e5,f#6] a6 [e5,f#6] a6 d6 e6 f#6 a6", // Bm Em Bm Em Esus2
  AD: "d6 e6 a6 a6@2 a6 a6@2 a6@2 a6@2 a6 ~ b6 ~",
  AE: "[d4,a4,d5,d7] [e4,b4,e5]@2 e3 e3@2 e3!2 [d4,a4,d5] [a3,e4,a4] ~ [g3,d4,g4] [a3,e4,a4]!3 e3", // D5 E5 D5 A5 G5 A5
  AF: "[e3,b3,e4]@15 ~", AG: "~@12 a4@3 ~", AH: "~@4 e6@11 ~, a4@15 ~",
  AI: "e3 d4 e4 e3 d4 e4 e3 d4 e4 e3 d4 e4 f#4 e4 d4@2", AJ: "e3 d4 e4 e3 d4 e4 e3 d4 e4 e3 d4 e4 b4 a4 g4@2",
  AK: "[e3 d4 e4 e3 d4 e4 e3 d4 e4 e3 d4 e4 b4!2 g4 [g4,a4]@2 d4 e4 e3 d4 e4 e3 d4 e4 e3 d4 e4 f#4 e4 d4@2]/2", // Gsus2
  AL: "e3 d4 e4 e3 d4 e4 e3 d4 e4 e3 d4 e4 g4 a4 g4@2", AM: "d4 e4!3 g4 e4@2 e4 [d4,e4] e4 g4 a4@2 a4 g4 a4",
  AN: "[d4,g4] e4!3 g4 e4@2 e4 [d4,e4] e4 g4 a4@2 a4 g4 a4", AO: "d5 e5!3 [g5,b5] e5@2 e5 [d5,e5] e5 g5 a5@2 a5 g5 a5",
  AP: "[d5,g5] e5!3 [g5,b5] e5@2 e5!2 [g5,b5]!2 e5 [g5,b5] [a5,c#6] [g5,b5]@2", // G5 G A G
  AQ: "e3 d4 e4 e3 d4 e4 e3 d4 g4 a4 g4 [g4,a4] a4 g4 [g4,a4] e4", // Gsus2
  AR: "e3 d4 e4 e3 d4 e4 e3 d4 e4 e3 d4 e4 b4!2 [a4,b4] g4", AS: "e3 d4 e4 e3 d4 e4 e3 g4!2 e4!2 d4!2 g4 e4@2",
  AT: "[d5,g5]!2 e5 [b4,d5] [g4,a4] e4@2 e4 d4 e4 g4 a4@2 a4 g4 a4", // G5 Bm Gsus2
  AU: "[g4,d5,g5] [d5,g5] e5 [b4,d5] [g4,a4] e4@2 e4 d4 e4 g4 a4@2 a4!2 g4", // G5 Bm Gsus2
  AV: "[a4,d5] e5!3 [g5,b5] e5@2 e5 [d5,e5] e5 [e5,g5,b5] [g5,b5] [a5,c#6]!3 [g5,b5]", // D5 G Dsus2 Em G A G
  AW: "d5 e5!3 [g5,b5] e5 ~ [e5,g5,b5] e6 [g5,b5]!2 [e4,g5,b5] [g5,b5]!3 b4", // G Em G Em G
})).s("gm_distortion_guitar").gain(0.11).pan(0)

// other · distortion guitar · "Fill 1"
const distortion_guitar_2 = note("<~@39 [~@6 f#4 ~] ~ [~@6 f#4 ~] ~@62 [d7@7 ~@9] ~@39>")
  .s("gm_distortion_guitar").gain(0.11).pan(0)

// chords · distortion guitar · "Guitar 2"
const distortion_guitar_3 = note(`<
  A B@6 C D E D E D E D E F@2 ~@16 D E D E D G D G H@2 ~@5 I J@2 ~@3 K L M N O D E D E D E D G P Q P R P Q P R S@2 T
  ~@17 D E D E D E D E P Q P R P Q P R U@4 V@8 W X W X W X W X Y Z Y X Y AA AB AA AB AA AB AA
>`.pickRestart({
  A: "~@4 [e3,c4,f4] ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4] ~ [e3,c4,f4] [b4,e5]", // Fmaj7 E5
  B: "[e3,c4,f4,b4,e5] [e3,a#3,e4] ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4] ~ [e3,c4,f4] [b4,e5]", // Cmaj7 Edim Fmaj7 E5
  C: "[e3,c4,f4,b4,e5] [e3,a#3,e4] ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [e3,c4,f4]!2 ~ [c4,f4] e3 g3 e3", // Cmaj7 Edim Fmaj7 F5
  D: "[e3,d4] [e3,e4] e3 [e3,e4] e3 [e3,d4] [e3,e4] e3 [e3,d4] [e3,e4] e3 [e3,d4] [e3,e4] e3 [e3,e4] e3", // E7 E E7 E E7 E E7 E
  E: "d4@2 d4 d4@2 d4 d4@2 d4@2 d4!2 d4@2 d4@2", F: "[[d4,a4,d5] [e3,e4,b4,e5]@30 ~]/2",
  G: "d4@2 d4 d4@2 d4 d4@2 d4@2 [d4,d5] [e4,e5]!2 [g4,g5]!2 [f#4,f#5]", H: "[[d4,a4,d5] [e4,b4,e5]@30 ~]/2", I: "~ f#4",
  J: "[[d4,a4,d5] [e4,b4,e5]@18 ~@13]/2", K: "~ a4", L: "[d4,a4,d5] [b3,f#4,b4]@14 ~", M: "a3 [b3,f#4,b4]@14 ~",
  N: "[b3,f#4,b4] [a3,e4,a4]@14 ~", O: "g3 [a3,e4,a4]@14 ~",
  P: "[d4,a4,d5] [e4,b4,e5]@2 e3 e3@2 e3!2 [d4,a4,d5] [a3,e4,a4] ~ [g3,d4,g4] [a3,e4,a4]!3 e3", // D5 E5 D5 A5 G5 A5
  Q: "[g3,d4,g4] [a3,e4,a4]@2 [a3,e4,a4] [a3,e4,a4]@2 [a3,e4,a4] g3 [a3,e4] [g3,d4] ~ [f#3,d4] [g3,d4]@2 [g3,d4]@2", // G5 A5 G5 D G5
  R: "[g3,d4,g4] [a3,e4,a4]!3 [a3,e4,a4]@2 [a3,e4,a4]@2 [e4,e5] [d4,d5]@3 [d4,d5] [d#4,d#5]@3", S: "[[e3,b3]@31 f#4]/2",
  T: "[g4,d5] ~ d5 ~ d5 ~ d5 ~", U: "[e3,b3,e4]@15 ~", V: "[e3,b3] ~@7", W: "[e3,b3,e4]@7 ~ [f3,c4,f4]@7 ~",
  X: "[f#3,c#4,f#4]@7 ~ [g3,d4,g4]@7 ~", Y: "[e3,b3]!3 ~ [e3,b3]!2 ~ [e3,b3] [f3,c4]!3 ~ [f3,c4]!2 ~ [f3,c4]",
  Z: "[f#3,c#4]!3 ~ [f#3,c#4]!2 ~ [f#3,c#4] [g3,d4]!3 ~ [g3,d4]!2 ~ [g3,d4]", // F#5 G5
  AA: "[f#3,c#4]@2 [f#3,c#4]@2 [f#3,c#4]!4 [g3,d4]!8", AB: "[e3,b3]@2 [e3,b3]@2 [e3,b3]!4 [f3,c4]!8",
})).s("gm_distortion_guitar").gain(0.11).pan(1)

// other · distortion guitar · "Fill 2"
const distortion_guitar_4 = note(`<
  ~@9 A ~ A ~ A ~ A ~@19 A ~ A ~ B ~ B ~@19 A ~ A ~ A ~ A ~@29 A ~ A ~ A ~ A ~@40
>`.pickRestart({
  A: "f#4 ~@2 f#4 ~@2 f#4 ~", B: "f#4 ~@2 f#4 ~@4",
})).s("gm_distortion_guitar").gain(0.11).pan(1)

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

// drums · kick
const kick = s("bd").struct(`<
  A B@6 C D@8 E@4 F G F G H I F G F G H I H I D@10 F G F G F G F G F G F G H I H I D@8 J@8 K@20 D@8 J@8 E@20 L@12
>`.pickRestart({
  A: "~@3 x ~ x ~ x ~ x ~ x ~ x ~@2", B: "x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~@2", C: "x!2 ~ x ~ x ~ x ~ x ~@3 x ~@2",
  D: "x ~@7 x ~@2 x ~@2 x ~", E: "x!2", F: "x ~@7 x ~@6 x", G: "x ~@6 x ~ x ~ x ~ x ~@2", H: "x ~@6 x!2 ~ x ~@5",
  I: "~ x!2 ~@2 x!2 ~@6 x!2 ~", J: "x!2 ~ x ~ x ~ x!3 ~ x ~ x ~ x", K: "x ~@6 x!2 ~@6 x", L: "x!4",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  A@7 B A@13 C A C A D A C A C A D A D A@11 C A C A C A C A C A C A D A D A@8 E@8 A@28 E@8 A@20 F@12
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~ x!4", C: "~ x!3", D: "x!4", E: "~@2 x!2 ~@2 x!2", F: "~ x ~ x ~ x ~ x",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<[~ x!7] [x!8]!7 ~@136>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@8 [x!8]!124 [x!16]!12>").gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@5 A ~ A ~@23 A ~ A ~@85>".pickRestart({
  A: "x",
})).gain(0.72)

stack(
  distortion_guitar, distortion_guitar_2, distortion_guitar_3, distortion_guitar_4, bass, kick, snare, hihat, open_hat,
  crash
)

More by Metallica