0:00/0:00
// The Struggle Within — Metallica
// 200 bpm, 2/4, 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 (4/4 at bar 1, 2/4 at bar 54, 4/4 at bar 217, 2/4 at bar 306) are rendered on a constant 2/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 377 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 1.
setcpm(200/2)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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(`<
~@12 A@2 B@3 ~ C D@4 E@2 F@3 ~ G H@4 I@3 J@2 ~ K L@3 M ~@63 N@4 ~@16 N@4 O@4 ~@51 P Q P Q ~@20 R S R S ~@9 T U V W V W
X@4 Y Z AA AB@3 AC AD AE AF AG@3 AH AI AJ@3 AK AL AM AN ~ AO@2 AP AQ AR AS AT AU@6 AV@8 AW AX@2 ~ AY AZ ~ BA@2 ~@49 P
Q P Q ~@37
>`.pickRestart({
A: "[a4@5 ~ b4@5 ~ d5@9 ~@2 b4@9]/2", B: "[~@2 f#5@5 g5@5 ~ e5@31 ~@4]/3", C: "~@4 f#5@9 ~@3",
D: "[~@11 a5@31 ~@2 b4@9 ~@11]/4", E: "[~@2 a4@5 ~ b4@5 d5@9 ~@2 b4@8]/2", F: "[~@4 f#5@5 g5@5 ~ e5@31 ~@2]/3",
G: "~@6 f#5@9 ~", H: "[~@12 a5@31 ~@3 b4@9 ~@9]/4", I: "[~@4 a4@5 ~ b4@5 d5@9 ~@2 b4@9 ~@2 f#5@5 ~ g5@5]/3",
J: "[e5@31 ~]/2", K: "~ f#5", L: "[~@14 a5@31 ~@3]/3", M: "b4@9 ~@7", N: "[~@4 b4@4 c5@11 ~@13]/2",
O: "[~@4 d5@4 e5@11 ~@13]/2", P: "~@3 b4", Q: "c5@11 ~@5", R: "~@3 d5", S: "e5@11 ~@5", T: "~@3 d6", U: "~ d6 ~ d6",
V: "~@2 e6 d6", W: "~ e6 d6 ~", X: "[~@8 e6@4 a6@12 a6@11 ~@9 a5@7 ~ g5@2 f#5@2 a5@8]/4",
Y: "f#5@2 b4@2 a5@4 a5 g5 ~ f#5 a5@4", Z: "g5 f#5 ~ b4 e5@4 d5@2 g4@2 a5@4", AA: "g5 f#5 e5@2 d5 g4 a5@2",
AB: "[g5@2 f#5@2 e5@3 d5@2 g4@3 ~@3 d5@2 g4@3 b4@3 a4@2 d4@3 ~@3 a4@2 d4@3 g4@4 ~@8]/3", AC: "~@2 b4 a6",
AD: "b6 g6 b6 f#6", AE: "b6 e6 b6 ~", AF: "b6 e6 b6 f#6",
AG: "[b6@4 g6@4 b6@4 b6@3 a6@2 g6@3 a6@2 g6@2 f#6@2 g6@2 f#6@3 e6@2 f#6@3 e6@4 d6@2 c#6@2 ~@2 c#6@2]/3",
AH: "b5 c#6 ~ e6", AI: "f#6@2 d6@2 g5@2 ~ f6",
AJ: "[~@2 c6@2 c#6@2 e6@2 c#6@2 b5@2 f6@3 d6@2 b5@3 d6@2 b5@2 a5@4 f6@3 d6@2 b5@3 e6@2 c#6@2 b5@2 f6@2 f6@4]/3",
AK: "f6@7 ~@9", AL: "~ g4 ~ [a#4,g#7]", AM: "~@2 d4 f4", AN: "~ [a#4,g#7] ~@2", AO: "[a5,c#6] ~ [a5,c#6]@2",
AP: "[a5,c#6]@7 ~ [a5,c#6]@8", AQ: "[a5,c#6]@7 ~ f#5@2 e5@2 ~@4", AR: "~@4 [a5,c#6]@7 ~ [b5,d#6]@4",
AS: "a5 f#5 a5 ~", AT: "c#6@2 e6 c#6 b5@2 a5@2",
AU: "[f#5@4 a5@4 [c#6,e6]@11 ~ a5@7 ~ f#5@7 ~ a5@4 [c#6,e6]@11 ~ a5@7 ~ f#5@11 ~ f#5@11 ~ e5@3 f#5@5 a5@4]/6", // C#m
AV: "[f#5@4 a5@4 b5@34 ~@2 a#6@3 g6@2 f6@3 g6@3 f6@2 d6@3 f6@3 d6@2 c#6@3 d6@3 c6@2 a#5@3 c6@3 a#5@2 a#5@3 a#5@3 g5@2 f5@3 ~@3 f5@2 d5@3 ~@3 d5@2 c5@3 ~@3 c5@2 a#4@3 c5@3 a#4@2 g4@3 a#4@4]/8",
AW: "c5@2 d5@2 ~ g5 c6@2", AX: "[a#5@2 ~@2 a#5@9 ~@3]/2", AY: "~ f6 ~ f6", AZ: "~@4 f6@7 ~@5",
BA: "[~@4 f7@4 f7@4 f7@7 ~@13]/2",
})).s("gm_distortion_guitar").gain(0.11).pan(0)
// chords · distortion guitar · "Guitar 2"
const distortion_guitar_2 = note(`<
~@12 A@2 B@4 C D@4 E@2 F@3 G@2 H@4 I@3 J@2 K@2 L@3 M N O P@3 ~@3 Q R Q R Q R Q R Q R Q R S T U T V T V T U T W T V T V
T U T U T W X@2 Y Z Y Z AA@2 U T U T U T U AB@2 AC@8 AD@16 AC@8 AE AF AG AH@4 R AI R AI AJ@2 Y Z Y Z AJ@2 AK@2 Y Z Y Z
AJ@4 AL@2 W T V T V T U AM@2 Y Z Y Z AA@2 AN AO AP AQ AR AS AP AQ AR AT@8 AU@8 AO AV AW AX AY AV AW AX AZ@3 BA@8 T U T
U T U T U T U T U T U T BB BC BD BC BD BC BD BC BD BC BD BC BD BC BD BC BE@8 AU@8 AO BC BD BC BD BC BF BC BG BH@2 BG
BI@3 BJ@2 BK@4 BL@4 BK@4 BM@3 ~ BN Z Y Z AJ@4 AL@2 W T V T V T U AM@2 Y Z Y Z AA@2 AN AO AP AQ AR AS AP AQ AR AT@8
AU@8 AO AV AW AX AY AV AW AX BO@7 T R T R T R T
>`.pickRestart({
A: "[d4@5 ~ e4@5 ~ g4@9 ~@2 e4@9]/2", B: "[~@2 d5@5 e5@5 ~ b4@31 ~@2 f#5@5 ~ g5@5 e5@7]/4", C: "~@4 b4@9 ~@3",
D: "[f#5@5 g5@5 ~ f#5@31 ~@2 f#4@9 ~@11]/4", E: "[~@2 d4@5 ~ e4@5 g4@9 ~@2 e4@8]/2",
F: "[~@4 d5@5 e5@5 ~ b4@31 ~@2]/3", G: "[f#5@5 ~ g5@5 e5@9 ~@2 b4@9 ~]/2",
H: "[~ f#5@5 ~ g5@5 f#5@31 ~@3 f#4@9 ~@9]/4", I: "[~@4 d4@5 ~ e4@5 g4@9 ~@2 e4@9 ~@2 d5@5 ~ e5@5]/3",
J: "[b4@31 ~]/2", K: "[~@2 f#5@5 g5@5 ~ e5@9 ~@2 b4@8]/2", L: "[~@3 f#5@5 ~ g5@5 f#5@31 ~@3]/3",
M: "f#4@9 ~@2 [e3,b3,e4]@5", N: "[e3,b3,e4]@5 ~@6 [e3,b3,e4]@5", O: "~ [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@4",
P: "[~@2 [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~@6 [e3,b3,e4]@5 [e3,b3,e4]@9 ~@10]/3", // E5
Q: "[e3,b3,e4]!2 ~ [e3,b3,e4]", R: "[e3,b3,e4]!4", S: "~@3 [e3,b3,e4]", T: "[e3,b3,e4] ~ [e3,b3,e4]!2",
U: "[e3,b3,e4]@4 [g3,d4,g4]@7 ~ [e3,b3,e4]@4", V: "[e3,b3,e4] [f#3,c#4,f#4] [g3,d4,g4] [e3,b3,e4]",
W: "[e3,b3,e4]@4 [f3,c4,f4]@7 ~ [e3,b3,e4]@4", // E5 F5 E5
X: "[[f3,c4,f4]@7 ~ [e3,b3,e4]@4 [f3,c4,f4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 ~@4]/2", Y: "[e3,b3,e4]!3 [f#3,c#4,f#4]",
Z: "[g3,d4,g4] [e3,b3,e4]!2 ~", // G5 E5
AA: "[[e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4 [g3,d4,g4]@7 ~ [e3,b3,e4]@4 [g3,d4,g4]@7 ~]/2", // E5 G5 E5 G5
AB: "[[g3,d4,g4]@7 ~ [e3,b3,e4]@4 [g3,d4,g4]@7 ~@13]/2", // G5 E5 G5
AC: "[~@4 [g3,d4,g4]@4 [g3,d4,g4]@11 ~ g4@4 a4@11 ~ [f3,c4,f4]@4 [f3,c4,f4]@11 ~ g4@4 a4@11 ~ [g3,d4,g4]@4 [g3,d4,g4]@11 ~ g4@4 a4@11 ~ [f3,c4,f4]@4 [f3,c4,f4]@11 ~ g4@4 a4@8]/8", // G5 F5 G5 F5
AD: "[~@2 [f#3,c#4,f#4]@15 ~ [e3,b3,e4]@15 ~ [f#3,c#4,f#4]@15 ~ [e3,b3,e4]@14]/8", AE: "~@4 [e3,b3,e4]@7 ~@5",
AF: "[e3,b3,e4]", AG: "~@4 d5@11 ~", AH: "[e5@25 ~ [e3,b3,e4]@2 [e3,b3,e4]@2 ~@2]/4", AI: "[e3,b3,e4]!3 ~",
AJ: "[[e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4 [g3,d4,g4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 ~@4]/2", // E5 G5 E5
AK: "[[e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4 [f3,c4,f4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 ~@4]/2", // E5 F5 E5
AL: "[[e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4 [f3,c4,f4]@7 ~ [e3,b3,e4]@4 [f3,c4,f4]@7 ~]/2", // E5 F5 E5 F5
AM: "[[g3,d4,g4]@7 ~ [e3,b3,e4]@4 [g3,d4,g4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 ~@4]/2", // G5 E5 G5 E5
AN: "[e3,b3,e4]@4 [g3,d4,g4]@7 ~@5", AO: "~@3 [g3,d4,g4]", AP: "[g3,d4,g4]@11 ~ g4@4", AQ: "a4@11 ~ [f3,c4,f4]@4",
AR: "[f3,c4,f4]@11 ~ g4@4", AS: "a4@11 ~ [g3,d4,g4]@4",
AT: "[a4@11 ~ [f#3,c#4,f#4]@30 ~@2 [e3,b3,e4]@30 ~@2 [f#3,c#4,f#4]@30 ~@2 [e3,b3,e4]@20]/8", // F#5 E5 F#5 E5
AU: "[~@6 [f#3,c#4,f#4]@15 ~ [e3,b3,e4]@15 ~ [f#3,c#4,f#4]@15 ~ [e3,b3,e4]@10]/8", AV: "[g3,d4,g4]@11 ~ b4@4",
AW: "c5@11 ~ [f3,c4,f4]@4", AX: "[f3,c4,f4]@11 ~ b4@4", AY: "c5@11 ~ [g3,d4,g4]@4",
AZ: "[c5@11 ~ [e3,b3,e4]@7 ~@5 [e3,b3,e4]@18 ~@2 d5@4]/3", BA: "[~@4 e5@57 ~ [e3,b3,e4]@2]/8",
BB: "[e3,b3,e4]@4 [g3,d4,g4]@7 ~ [g3,d4,g4]@4", BC: "[g3,d4,g4] ~ [g3,d4,g4]!2",
BD: "[g3,d4,g4]@4 [a#3,f4,a#4]@7 ~ [g3,d4,g4]@4", // G5 A#5 G5
BE: "[[g3,d4,g4]@4 [a#3,f4,a#4]@7 ~ [f#3,c#4,f#4]@30 ~@2 [e3,b3,e4]@30 ~@2 [f#3,c#4,f#4]@30 ~@2 [e3,b3,e4]@20]/8", // G5 A#5 F#5 E5 F#5 E5
BF: "[g3,d4,g4] [g#3,d#4,g#4] [a#3,f4,a#4] [g3,d4,g4]", BG: "[g3,d4,g4]@4 [g#3,d#4,g#4]@7 ~ d#3@4",
BH: "[[g#3,d#4,g#4]@7 ~ d#3@4 [g#3,d#4,g#4]@7 ~ [g3,d4,g4]@4 [g3,d4,g4]@4 [g3,d4,g4]@4]/2", // G#5 G5
BI: "[[g#3,d#4,g#4]@7 ~ d#3@4 [g#3,d#4,g#4]@7 ~ [g3,d4,g4]@4 [g3,d4,g4]@4 [g#3,d#4,g#4]@7 ~@13]/3", // G#5 G5 G#5
BJ: "[~@4 [e3,b3]@4 [g3,d4]@4 [e3,b3,e4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4]/2", // E5 G5 E5
BK: "[[e3,b3,e4]@4 [e3,b3]@4 [g3,d4]@4 [e3,b3,e4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4]/2", // E5 G5 E5
BL: "[[e3,b3,e4]@4 [a3,e4,a4]@4 [g#3,d#4,g#4]@4 [g3,d4,g4]@7 ~ [g3,d4,g4]@4 [f#3,c#4,f#4]@4 [f3,c4,f4]@7 ~ [e3,b3]@4 [g3,d4]@4 [e3,b3,e4]@7 ~ [e3,b3,e4]@4 [e3,b3,e4]@4 [e3,b3,e4]@4]/4", // E5 A5 G#5 G5 F#5 F5 E5 G5 …
BM: "[[e3,b3,e4]@4 [a3,e4,a4]@4 [g#3,d#4,g#4]@4 [g3,d4,g4]@7 ~ [g3,d4,g4]@4 [f#3,c#4,f#4]@4 [f3,c4,f4]@7 ~ [f3,c4,f4]@4 [f3,c4,f4]@4 [f3,c4,f4]@4]/3", // E5 A5 G#5 G5 F#5 F5
BN: "~ [e3,b3,e4]!2 [f#3,c#4,f#4]", // E5 F#5
BO: "[c5@11 ~ [e3,b3,e4]@7 ~@5 [e3,b3,e4]@18 ~@2 d5@11 ~ e5@50 ~@2 [e3,b3,e4]@4]/7", // E5
})).s("gm_distortion_guitar").gain(0.11).pan(1)
// chords · distortion guitar · "Guitar 3"
const distortion_guitar_3 = note("<~@11 A B C D E F@3 G H I@5 J K L M N O@5 P B Q D R@4 S ~@332>".pickRestart({
A: "~@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5", B: "~@6 [e3,b3,e4]@5 ~ [e3,b3,e4]@4",
C: "~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [e3,b3,e4]@4", D: "~@2 [e3,b3,e4]@5 [e3,b3,e4]@5 ~@4",
E: "~@2 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~@3", // E5
F: "[~@9 [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~@6 [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~]/3", // E5
G: "[e3,b3,e4]@5 [e3,b3,e4]@5 ~ [d4,a4,d5]@5", H: "[d4,a4,d5]@5 ~@6 [d4,a4,d5]@5",
I: "[~ [d4,a4,d5]@5 ~@6 [b3,f#4,b4]@9 ~@2 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~@6 [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [e3,b3,e4]@5 ~@2]/5", // D5 B5 E5
J: "~@4 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~", K: "~@10 [e3,b3,e4]@5 ~", L: "[e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~@5",
M: "~ [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@4", N: "~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [d4,a4,d5]@4",
O: "[~@2 [d4,a4,d5]@5 ~@6 [d4,a4,d5]@5 ~ [d4,a4,d5]@5 ~@6 [b3,f#4,b4]@9 ~@2 [e3,b3,e4]@5 [e3,b3,e4]@5 ~@7 [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [e3,b3,e4]@5 ~]/5", // D5 B5 E5
P: "[e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5", Q: "~@3 [e3,b3,e4]",
R: "[~@2 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [e3,b3,e4]@5 ~ [e3,b3,e4]@5 [d4,a4,d5]@5 ~ [d4,a4,d5]@5 ~@6 [d4,a4,d5]@5 [d4,a4,d5]@5 ~@7]/4", // E5 D5
S: "[b3,f#4,b4]@9 ~@7", // B5
})).s("gm_distortion_guitar").gain(0.19)
// bass · electric bass finger · "Bass"
const bass = note(`<
~@11 A B C D E F@3 G H I@5 J K L M N O@5 P B Q D R@4 S ~@20 Q T U T V T V T U T W T V T V T U T U T W X@2 Y Z Y Z AA@2
U T U T U T U AB@2 AC@8 AD@16 AC@8 AE AF@8 ~@2 AG@2 Y Z Y Z AH@2 AI@2 Y Z Y Z AH@4 AJ@2 W T V T V T U AK@2 Y Z Y Z
AA@2 AL AM AN AO AP AQ AN AO AP AR@8 AS@8 AM AN AO AP AQ AN AO AP AT AU@8 ~ Q T U T U T U T U T U T U T U T AV AW AX
AW AX AW AX AW AX AW AX AW AX AW AX AW AY@8 AS@8 AM AW AX AW AX AW AZ AW BA BB@2 BA BC@3 BD@2 BE@4 BF@4 BE@4 BG@3 ~ BH
Z Y Z AH@4 AJ@2 W T V T V T U AK@2 Y Z Y Z AA@2 AL AM AN AO AP AQ AN AO AP AR@8 AS@8 AM AN AO AP AQ AN AO AP AT AU@8 ~
Q T BI T
>`.pickRestart({
A: "~@5 e1@5 ~ e1@5", B: "~@6 e1@5 ~ e1@4", C: "~ e1@5 ~ e1@5 e1@4", D: "~@2 e1@5 e1@5 ~@4", E: "~@2 e1@5 ~ e1@5 ~@3",
F: "[~@9 e1@5 e1@5 ~ e1@5 ~@6 e1@5 e1@5 ~ e1@5 ~]/3", G: "e1@5 e1@5 ~ d2@5", H: "d2@5 ~@6 d2@5",
I: "[~ d2@5 ~@6 b1@9 ~@2 e1@5 ~ e1@5 ~@6 e1@5 e1@5 ~ e1@5 e1@5 ~ e1@5 ~ e1@5 e1@5 ~@2]/5", J: "~@4 e1@5 ~ e1@5 ~",
K: "~@10 e1@5 ~", L: "e1@5 ~ e1@5 ~@5", M: "~ e1@5 e1@5 ~ e1@4", N: "~ e1@5 ~ e1@5 d2@4",
O: "[~@2 d2@5 ~@6 d2@5 ~ d2@5 ~@6 b1@9 ~@2 e1@5 e1@5 ~@7 e1@5 e1@5 ~ e1@5 e1@5 ~]/5", P: "e1@5 e1@5 ~ e1@5",
Q: "~@3 e1", R: "[~@2 e1@5 ~ e1@5 ~ e1@5 e1@5 ~ e1@5 d2@5 ~ d2@5 ~@6 d2@5 d2@5 ~@7]/4", S: "b1@9 ~@7", T: "e1 ~ e1!2",
U: "e1@4 g1@7 ~ e1@4", V: "e1 f#1 g1 e1", W: "e1@4 f1@7 ~ e1@4", X: "[f1@7 ~ e1@4 f1@7 ~ e1@4 e1@4 ~@4]/2",
Y: "e1!3 f#1", Z: "g1 e1!2 ~", AA: "[e1@4 e1@4 e1@4 g1@7 ~ e1@4 g1@7 ~]/2", AB: "[g1@7 ~ e1@4 g1@7 ~@13]/2",
AC: "[~@4 g1@4 g1@11 ~ g1@4 a1@11 ~ f1@4 f1@11 ~ g1@4 a1@11 ~ g1@4 g1@11 ~ g1@4 a1@11 ~ f1@4 f1@11 ~ g1@4 a1@8]/8",
AD: "[~@2 f#1@15 ~ e1@15 ~ f#1@15 ~ e1@14]/8", AE: "~@4 e1@7 ~@5", AF: "e1/8",
AG: "[~@4 e1@4 e1@4 g1@7 ~ e1@4 e1@4 ~@4]/2", AH: "[e1@4 e1@4 e1@4 g1@7 ~ e1@4 e1@4 ~@4]/2",
AI: "[e1@4 e1@4 e1@4 f1@7 ~ e1@4 e1@4 ~@4]/2", AJ: "[e1@4 e1@4 e1@4 f1@7 ~ e1@4 f1@7 ~]/2",
AK: "[g1@7 ~ e1@4 g1@7 ~ e1@4 e1@4 ~@4]/2", AL: "e1@4 g1@7 ~@5", AM: "~@3 g1", AN: "g1@11 ~ g1@4", AO: "a1@11 ~ f1@4",
AP: "f1@11 ~ g1@4", AQ: "a1@11 ~ g1@4", AR: "[a1@11 ~ f#1@30 ~@2 e1@30 ~@2 f#1@30 ~@2 e1@20]/8",
AS: "[~@6 f#1@15 ~ e1@15 ~ f#1@15 ~ e1@10]/8", AT: "a1@11 ~ e1@4", AU: "[~ e1@15]/8", AV: "e1@4 g1@7 ~ g1@4",
AW: "g1 ~ g1!2", AX: "g1@4 a#1@7 ~ g1@4", AY: "[g1@4 a#1@7 ~ f#1@30 ~@2 e1@30 ~@2 f#1@30 ~@2 e1@20]/8",
AZ: "g1 g#1 a#1 g1", BA: "g1@4 g#1@7 ~ d#1@4", BB: "[g#1@7 ~ d#1@4 g#1@7 ~ g1@4 g1@4 g1@4]/2",
BC: "[g#1@7 ~ d#1@4 g#1@7 ~ g1@4 g1@4 g#1@7 ~@13]/3", BD: "[~@4 e1@4 g1@4 e1@7 ~ e1@4 e1@4 e1@4]/2",
BE: "[e1@4 e1@4 g1@4 e1@7 ~ e1@4 e1@4 e1@4]/2",
BF: "[e1@4 a1@4 g#1@4 g1@7 ~ g1@4 f#1@4 f1@7 ~ e1@4 g1@4 e1@7 ~ e1@4 e1@4 e1@4]/4",
BG: "[e1@4 a1@4 g#1@4 g1@7 ~ g1@4 f#1@4 f1@7 ~ f1@4 f1@4 f1@4]/3", BH: "~ e1!2 f#1", BI: "e1!4",
})).s("gm_electric_bass_finger").gain(0.72)
// drums · kick
const kick = s("bd").struct(`<
A B ~ C D E F G H A ~ I E ~ J F K ~ L M ~ N O P ~ L B ~ Q D E ~ G H R ~ I E ~ J F K ~ L M ~ N O P ~@15 F E@10 S E@10 T
L@6 U V E@6 T ~ U Q U Q U Q U Q L ~ U S L ~ U S L ~ U S L ~ U S U Q U Q U Q U Q L Q ~@9 L@19 U V E@6 T L@6 U W E X E X
E X E X E ~ E X Y ~ E X Y ~ E X Y ~ E X Y X E X E X E X E F ~@8 E@33 ~ E X Y ~ E X Y ~ E X Y ~ E X Y E@8 T ~ Y T E ~
L@16 Z ~ L@9 U V E@6 T L@6 U W E X E X E X E X E ~ E X Y ~ E X Y ~ E X Y ~ E X Y X E X E X E X E F ~@8 E T AA T
>`.pickRestart({
A: "~@4 x ~@10 x", B: "~@5 x ~@2", C: "x ~@10 x ~@4", D: "~@3 x ~@4", E: "~@3 x", F: "~ x", G: "~@3 x ~@12",
H: "~@9 x ~@6", I: "~@5 x ~@10", J: "~ x ~@6", K: "~@7 x", L: "~ x ~@2", M: "~@11 x ~@4", N: "~ x ~@14",
O: "~@7 x ~@8", P: "~@13 x ~@2", Q: "x", R: "~@15 x", S: "x ~@2 x", T: "x ~ x!2", U: "~ x!2 ~", V: "x!2 ~ x",
W: "x!2 ~@2", X: "x!2", Y: "~ x ~ x", Z: "~ x!3", AA: "x!4",
})).gain(0.72)
// drums · snare
const snare = s("sd").struct(`<
A B C D E F G H I J K L E M N O P J Q R S T U V H W Q X Y Z M AA AB AC B C R E F AD AE I J AF AG S Z AH V ~@15 AI ~
AF@20 AJ AK@6 AI AF@7 AJ AL AM AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF ~ AF@2 AM ~@9
AK@19 AI AF@7 AJ AK@6 AI AN AO AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK@2 AI ~@6
AP AQ AO AF@32 AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AF@8 AJ AL AR AJ AL ~ AK@16 AL ~ AK@9 AI AF@7 AJ AK@6 AI AN AO
AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK ~ AK@2 AI ~@10 AK AS
>`.pickRestart({
A: "~@4 x!3 ~ x!2 ~ x!3 ~ x", B: "~@10 x ~@4 x", C: "~@5 x ~@4 x ~@5", D: "x ~@5 x ~@4 x ~@4", E: "~@3 x ~@2 x ~",
F: "~@12 x ~ x!2", G: "~ x!3 ~ x!2 ~ x ~@7", H: "~@3 x ~@4 x ~@5 x ~", I: "~@3 x ~@5 x ~@4 x ~", J: "~@4 x ~@10 x",
K: "~@5 x ~@10", L: "x!2 ~ x!3 ~@5 x ~@4", M: "~ x ~@5 x ~@4 x ~@3", N: "~@2 x ~@4 x ~@8", O: "~ x ~@2 x ~@3",
P: "~@9 x!3 ~ x!2 ~", Q: "~@2 x ~@2 x ~@2", R: "x ~@4 x ~@5 x ~@4", S: "x ~@10 x ~@4", T: "~ x ~@14",
U: "~@2 x!3 ~ x!2 ~@5 x ~@2", V: "~@8 x ~@4 x ~@2", W: "~@4 x ~@4 x ~@6", X: "~@10 x ~ x!2 ~ x", Y: "x ~@2 x ~@4",
Z: "~ x ~@4 x ~@5 x ~@3", AA: "~@2 x ~@10 x ~@2", AB: "~@3 x ~@12", AC: "~@3 x ~ x!2 ~ x!2 ~@4 x ~",
AD: "x ~ x ~@4 x ~@8", AE: "~ x ~@2 x ~@2 x", AF: "~ x ~@2", AG: "~@5 x ~ x!3 ~ x ~@4", AH: "~@2 x ~@4 x ~@5 x ~@2",
AI: "~ x", AJ: "x ~@2 x", AK: "~@3 x", AL: "~ x!3", AM: "x", AN: "~ x ~ x", AO: "x!3 ~", AP: "~@4 x!3 ~", AQ: "x!4",
AR: "x!2 ~@2", AS: "x ~ x!2",
})).gain(0.72)
// drums · hihat
const hihat = s("hh").struct(`<
~@64 A ~@21 B ~@6 A C ~@6 B ~@33 C D ~@28 A C ~@6 B ~@6 A C ~@32 E A ~@65 B ~ C B E ~@28 A C ~@6 B ~@6 A C ~@32 E A
~@12
>`.pickRestart({
A: "~ x", B: "x ~@2 x", C: "~ x ~@2", D: "x", E: "~@3 x",
})).gain(0.72)
// drums · open hat
const open_hat = s("oh").struct(`<
~@58 A@6 ~ B C@19 D ~ E C@5 F B C@5 D ~@2 G@32 ~@11 E C@18 F B C@5 D ~ E C@5 F ~ B@32 ~@10 B C@32 B@16 C@7 D ~@6 E
C@15 F ~ E C@8 F B C@5 D ~ E C@5 F ~ B@32 ~@14
>`.pickRestart({
A: "~ x", B: "~@3 x", C: "x!4", D: "x!3 ~", E: "~ x!3", F: "x", G: "~ x ~@2",
})).gain(0.72)
// drums · crash
const crash = s("cr").struct(`<
~@48 A ~@15 B ~@21 C ~@6 B D ~@6 C ~@33 D E ~@9 D ~@7 F ~@10 B D ~@6 C ~@6 B D ~@32 F B ~@8 F ~@7 F ~@7 F ~@7 F ~@32 C
~ D C F ~ D ~@7 D ~@18 B D ~@6 C ~@6 B D ~@32 F B ~@12
>`.pickRestart({
A: "~@13 x ~@2", B: "~ x", C: "x ~@2 x", D: "~ x ~@2", E: "x", F: "~@3 x",
})).gain(0.72)
stack(distortion_guitar, distortion_guitar_2, distortion_guitar_3, bass, kick, snare, hihat, open_hat, crash)
More by Metallica
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.