0:00/0:00
// War Pigs — Black Sabbath
// 205 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 4 "gUITARRA" distortion guitar (copy of ch 1 "gUITARRA" distortion guitar); ch 7 "vOZ ii" lead 6 voice (copy of ch 3 "vOZ" lead 6 voice); ch 6 "sOLO" overdriven guitar (copy of ch 5 "sOLO" overdriven guitar)
// note: Full arrangement: all 372 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(205/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 · "gUITARRA"
const distortion_guitar = note(`<
~@4 A B@5 C@5 D@6 E@5 F@5 G@8 H@2 I@3 J@3 ~@4 K ~@4 L ~@4 M ~@4 N ~@4 O@2 ~@3 P Q ~@3 R S ~@2 T U@2 ~@3 V@2 ~@4 W X@4
Y@3 Z X@4 AA@3 AB@8 AC@8 AD@8 AE@8 AC@8 AD@8 AF X@4 Y@3 Z X@4 AG@4 ~@31 AH@6 AI@3 ~@4 AJ ~@4 AK@2 ~@3 AL Q ~@3 AM@2
~@4 AN ~@4 AO ~@3 AP AQ ~@3 AR AS ~@3 AT@2 ~@4 AU@2 AV@4 AW@4 AV@4 AX@7 AY@4 AZ@4 BA BB@3 BC@7 BD@8 BE@4 BF@3 ~@47
BG@2
>`.pickRestart({
A: "~@2 [e2,b2,e3] ~ [e2,b2,e3] ~@11", B: "[~@9 [e2,e3]@68 [e2,e3]@3]/5", C: "[~@11 e3@3 d3@65 [e2,g#3]]/5",
D: "[~@7 a3@6 [e2,g#3]@68 [e2,e3]@14 e3, ~@6 e2@7 ~@83, ~@2 g#3 ~@29]/6", // E
E: "[~@2 d3@65 [e2,g#3]@7 ~ a3@5, ~@37 e2@3, ~@37 g#3 ~@2]/5", F: "[~ [e2,e3,b3]@68 [e2,e3]@11]/5",
G: "[~@3 e3@3 d3@65 [e2,g#3]@7 [e2,a3]@7 [e2,e3,b3]@34 [e2,e3,b3]@7 [e2,e3,b3]@2]/8", H: "[~ [d3,a3]@29 [d3,a3]@2]/2",
I: "[[d3,a3]@5 d3@2 [d3,a3]@3 [e3,b3]@29 e3@2 [e3,b3]@5 e3@2]/3", // D5 E5
J: "[[e3,b3]@3 [d3,a3]@31 [d3,a3]@2 [e3,b3]@5 ~@7]/3", K: "~@4 [d3,a3]@2 [e3,b3]@5 ~@5",
L: "~@6 [d3,a3]@2 [e3,b3]@5 ~@3", M: "~@8 [d3,a3]@2 [e3,b3]@5 ~", N: "~@5 [d3,a3] [e3,b3]@2",
O: "[~@6 [d3,a3] [e3,b3]@3 ~@6]/2", P: "~@7 [d3,a3]", Q: "[e3,b3]@5 ~@11", R: "~@7 a3@2 g3@2 e3@4 ~, ~@3 b3 ~@4",
S: "[d3,a3]@2 [e3,b3]@5 ~@9", T: "~@13 d3 ~ e3",
U: "[d3 e3 d3 ~ e3 d3 e3 ~ d3 e3 d3 e3 ~ d3@5 [d3,a3]@2 [e3,b3]@5 ~@7]/2", // D5 E5
V: "[~@10 [g4,b4,e5]@10 [d3,a3]@2 [e3,b3]@5 ~@5]/2", W: "~@6 [d3,a3]@2 [e3,b3]@6 ~ e3",
X: "[~ e3 ~@3 e3 ~@3 e3 ~ e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@8 g4@8 [d3,a3]@2 [e3,b3]@6 e3]/4", // G5 F#5 F5 E5 D5 E5
Y: "[~ e3 ~@3 e3 ~@3 e3 ~ e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@8 d4]/3", // G5 F#5 F5 E5
Z: "e4 d4 e4 d4 e4 d4@2 [d3,a3]@2 [e3,b3]@6 e3", // D5 E5
AA: "[~ e3 ~@3 e3 ~@3 e3 ~ e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@8 [g#3,a3,c4,c#4]]/3", // G5 F#5 F5 E5 C#maj7
AB: "[[f#3,g3,a#3,b3] [e3,f3,g#3,a3] [d3,d#3,f#3,g3] [c3,c#3,e3,f3] [b2,d#3] [a2,c#3]@2 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2@8 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2@8 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2@8 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2]/8", // Gmaj7 Fmaj7 D#maj7 C#maj7 B A Em
AC: "[~@7 e2@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3]/8",
AD: "[~@5 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3@6 e2@2 ~@2 e2@2 e2@2 e2@2 e3]/8",
AE: "[~@5 e2@2 ~@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2@8 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2@8 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2@8 e2@2 e2@2 e2@2 e2@2 [g4,b4,e5]@8 ~@2 e2@2 ~@2 e2@2 g2]/8", // Em
AF: "~@7 [d3,a3]@2 [e3,b3]@6 e3", // D5 E5
AG: "[~ e3 ~@3 e3 ~@3 e3 ~ e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@17 ~@8]/4", // G5 F#5 F5 E5
AH: "[~@3 [d3,a3]@4 [e3,b3]@26 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [d3,a3]@24 [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [d3,a3]@2 [e3,b3]@23]/6", // D5 E5 D5 E5
AI: "[~ [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [e3,b3]@2 [d3,a3]@30 [d3,a3]@2 [e3,b3]@5 ~@2]/3", // E5 D5 E5
AJ: "~@9 [d3,a3]@2 ~ [e3,b3]@4", AK: "[~@11 [d3,a3]@2 ~ [e3,b3]@5 ~@13]/2", AL: "~@13 [d3,a3]@2 ~",
AM: "[~@15 [d3,a3]@2 ~ [e3,b3]@5 ~@9]/2", AN: "~ [d3,a3]@2 ~ [e3,b3]@6 ~@6", AO: "~@3 [d3,a3]@2 ~ [e3,b3]@5 ~@5",
AP: "~@6 a3 g3, ~@11 b3@2 ~@3", AQ: "e3@4 ~ [d3,a3]@2 ~ [e3,b3]@5 ~@3",
AR: "~@2 d3 ~ e3 d3 e3 ~ d3 e3 d3 e3 ~ d3 e3 d3", AS: "e3 ~ d3@5 [d3,a3]@2 ~ [e3,b3]@5 ~",
AT: "[~@15 [g4,b4,e5]@10 [d3,a3]@2 ~ [e3,b3]@4]/2", AU: "[~@11 [d3,a3]@2 ~ [e3,b3]@6 e3 ~ e3 ~@3 e3 ~@3 e3 ~]/2",
AV: "[e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@8 g4@8 [d3,a3]@2 [e3,b3]@6 e3 ~ e3 ~@3 e3 ~@3 e3 ~]/4", // G5 F#5 F5 E5 D5 E5
AW: "[e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@8 d4 e4 d4 e4 d4 e4 d4@2 [d3,a3]@2 [e3,b3]@6 e3 ~ e3 ~@3 e3 ~@3 e3 ~]/4", // G5 F#5 F5 E5 D5 E5
AX: "[e3 ~ e3 ~ [g3,d4]@3 ~ [f#3,c#4]@3 ~ [f3,c4]@16 [e3,b3]@16 ~@2 b3@2 b3@2 b3@2 d4@6 b3@2 b3@2 b3@2 d4@4 b3@4 ~@6 b3@2 b3@2 b3@2 d4@6 b3@2 b3@2 b3@2 d4@4 b3@4 d4@4 [e3,b3,e4]@4, ~@11 e3@8 e3@8 ~, ~@36 d4@3 ~@17]/7", // G5 F#5 F5 E5
AY: "[~ [b2,f#3,b3]@2 ~ [d3,a3,d4]@10 ~ b3 b3!2 d4@3 b3!3 d4@2 b3@2 d4@2 [e3,b3,e4]@2, ~@7 e3@8 ~]/4", // B5 D5 E5
AZ: "[~ [g3,d4,g4]@2 ~ [e3,b3,e4]@10 ~ b3 b3!2 d4@3 b3!3 d4@2 b3@2 d4@2 [e3,b3,e4]@2, ~@7 e3@8 ~]/4", // G5 E5
BA: "~@2 [b2,f#3,b3]@4 ~@2 [d3,a3,d4]@6 [d3,a3] ~", // B5 D5
BB: "[[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~@3 b3@2 b3@2 b3@2 d4@6 b3@2 b3@2 b3@2 d4@4 b3@4 d4@4 [e3,b3,e4]@4, ~@3 e3@8 ~]/3", // D5 E5
BC: "[~ [g3,d4,g4]@2 ~ [e3,b3,e4]@10 ~ b3 b3!2 d4@3 b3!3 d4@2 b3@2 ~@3 b3 b3!2 d4@3 b3!3 d4@2 b3@2 ~@3 b3 b3!2 d4@3 b3!3, ~@7 e3@8 e3@8 e3@5, ~@28 d4@3 ~@13 d4@3 ~@9]/7", // G5 E5
BD: "[d4@2 b3@2 ~@3 b3 b3!2 d4@3 b3!3 d4@2 b3@2 ~@3 a3 a3!2 c4@3 a3!3 c4@2 a3@2 ~@3 a3 a3!2 c4@3 a3!3 c4@2 a3@2 ~@3 g3 g3!2 a#3@3 g3!3, ~@4 d4@3 ~@13 d4@3 ~@13 c4@3 ~@13 c4@3 ~@9, ~@3 e3@8 d3@8 d3@8 c3@5]/8",
BE: "[a#3@2 g3@2 ~@3 g3 g3!2 a#3@3 g3!3 a#3@2 g3@2 a#3@2 [b2,f#3,b3]@10, ~@4 a#3@3 ~@25, ~@3 c3@8 ~@5]/4", // B5
BF: "[[c3,g3,c4] ~ [c3,g3,c4] [b2,f#3,b3]@8 ~]/3", BG: "[~@3 [e2,b2,e3]@4 ~]/2",
})).s("gm_distortion_guitar").gain(0.39).pan(0)
// bass · electric bass finger · "bAIXO"
const bass = note(`<
~@5 A@3 B@5 C@7 D@6 E@2 F@7 G@4 H@2 I@3 J@3 ~@4 K ~@4 L ~@4 M ~@4 N ~@4 O@2 ~@3 P Q ~@4 R ~@4 S ~@4 K ~@4 T U@4 V@3 W
U@4 X Y Z@8 AA@8 AB@8 AC AD@8 AE@8 AB@8 AF U@4 V@3 W U@4 AG@7 AH@7 AI@3 AJ@7 AK@8 AL@2 AM@7 AN@3 ~@4 AO ~@4 AP@2 ~@3
AQ Q ~@3 AR@2 ~@4 AS ~@4 AT ~@4 AU ~@4 AV ~@4 AO ~@4 AW@2 AX@4 AY@4 AX@4 AZ@5 ~ BA BB@4 BC@4 BD BE@3 BF@2 BG BH BG BH
BG BH BG BI@5 BJ BK BJ BL@2 BM@2 BN BO BP BQ BR BO BP BQ BR BO BP BQ BR BO BP BQ BS@8 BT@8 BU BO BP BQ BR BO BP BQ BR
BO BP BQ BR BO BP BQ BV@2
>`.pickRestart({
A: "[~@9 e2@20 e2@7 d2@7 d2@5]/3", B: "[b1@2 d2@3 e2@17 e1@7 e2@14 e2@3 d2@17 d2@12 e1@2 d2@3]/5",
C: "[~@3 d2@21 e1@7 g#1@7 a1@7 e2@20 e2@7 d2@5 b1@2 g2@7 e2@20 e1@6, ~ e1 ~@54]/7",
D: "[~ e2@14 e2@3 d2@17 d2@12 e1@2 d2@5 ~ d2@21 e1@7 g#1@7 a1@6, ~@27 e1 ~@20]/6", E: "[~ e2@20 e2@7 d2@4]/2",
F: "[~ b1@2 g2@7 e2@20 e1@7 e2@14 e2@3 d2@17 d2@12 e1@2 d2@5 ~ d2@21, ~@45 e1 ~@10]/7",
G: "[e1@7 g#1@7 a1@7 e2@34 e1@7 e1@2]/4", H: "[~ d2@29 d2@2]/2", I: "[d2@5 d2@2 d2@3 e2@29 e2@2 e2@5 e2@2]/3",
J: "[e2@3 d2@31 d2@2 e2@3 ~@9]/3", K: "~@4 d2@2 e2@5 ~@5", L: "~@6 d2@2 e2@5 ~@3", M: "~@8 d2@2 e2@5 ~",
N: "~@5 d2 e2@2", O: "[~@12 d2@2 e2@5 ~@13]/2", P: "~@7 d2", Q: "e2@5 ~@11", R: "d2@2 e2@5 ~@9",
S: "~@2 d2@2 e2@5 ~@7", T: "~@3 d2 e2@2 ~@2",
U: "[~@15 g2@4 f#2@4 f2@6 f2@2 f2@6 f2@2 e2@8 e2@4 ~@4 d2@2 e2@4 ~@3]/4",
V: "[~@15 g2@4 f#2@4 f2@6 f2@2 f2@6 f2@2 e2@8 e2]/3", W: "e2!7 d2@2 e2@4 ~@3", X: "~@15 g2",
Y: "~@3 f#2@4 f2@6 f2@2 f2",
Z: "[~@5 f2@2 e2@16 e1@2 e1@2 e1@2 e1@2 e3@10 e1@2 ~@2 e1@2 g2@8 e1@2 e1@2 e1@2 e1@2 e3@8 ~@2 e1@2 ~@2 e1@2 g2@8 e1@2 e1@2 e1@2 e1@2 e3@8 ~@2 e1@2 ~@2 e1@2 g2@8 e1@2 e1@2 e1@2 e1@2 e3]/8",
AA: "[~@9 e1@2 ~@2 e1@2 g2@8 ~@4 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2]/8",
AB: "[~@5 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2]/8",
AC: "~@5 e1@2 ~@2 e1@2 e1@2 e1@2 e2",
AD: "[~@5 e1@2 ~@2 e1@2 e1@2 e1@2 e3@10 e1@2 ~@2 e1@2 g2@8 e1@2 e1@2 e1@2 e1@2 e3@8 ~@2 e1@2 ~@2 e1@2 g2@8 e1@2 e1@2 e1@2 e1@2 e3@8 ~@2 e1@2 ~@2 e1@2 g2@8 e1@2 e1@2 e1@2 e1@2 e3@8 ~@2 e1@2 ~@2 e1@2 g2]/8",
AE: "[~@11 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2@6 e1@2 ~@2 e1@2 e1@2 e1@2 e2]/8",
AF: "~@7 d2@2 e2@4 ~@3",
AG: "[~@15 g2@4 f#2@4 f2@6 f2@2 f2@6 f2@2 e2@16 g#2@2 a2@4 a2@2 g#2@4 g#2@2 e2@4 e2@2 d2@4 d2@2 e2@6 e2@2 d2@4 d2@2 e2@4 e2@2 g#2@4 g#2@2 a2@4 a2]/7",
AH: "[~ g#2@4 g#2@2 a2@4 a2@2 b2@6 a2@2 b2@2 d3@2 e3@2 e3@4 a2@2 b2@2 d3@2 e3@2 g3@4 a2@2 b2@2 d3@2 e3@2 g3@2 e3@6 e3@4 e3@4 e3@8 e3@2 d3@2 b2@2 b2@4 b2@2 d3@2 b2@6 d3@2 b2@2 a2@2 d3@2 b2@2 a2@2 d3@2 b2@2 a2]/7",
AI: "[~ b2@2 e3@2 e3@3 a2@3 a2@4 a2@4 a2@6 e3 d3 e3@4 e3@2 d3@2 d3@2 b2@2 a2@2 b2@2 d3 b2 a2@2 a2]/3",
AJ: "[g2 e2@2 g2@2 e2@2 e2@4 f#3@4 f#3@4 f#3@4 f3@2 e3@2 d3@2 b2@2 d3@2 e3@10 a2@2 b2@2 d3@2 e3@6 a2@2 b2@2 d3@2 e3@6 e3@2 d3@2 e3@2 d3@2 f#3@2 e3@2 d3@2 f#3@2 e3@2 d3@2 f#3@2 e3@2 d3@2 f#3@2 e3@2 d3@2 f#3@2 e3@2 d3@2 f#3@2 e3@2 d3@2 f#3]/7",
AK: "[~ e3@2 d3@2 f#3@2 e3@2 d3@13 d3@5 f#3@4 f#3@4 f#3@4 f#3@4 f#3@8 e3@2 d3@2 d3@2 e3@30 g#2@2 a2@4 a2@2 g#2@4 g#2@2 e2@4 e2@2 d2@4 d2@2 e2@10 d#2@5]/8",
AL: "[~ d#2@6 d#2@6 d#2@14 d#2@5]/2",
AM: "[~ d#2@6 d#2@6 d#2@6 d2@4 e2@26 e2@2 e2@2 e2@2 e2@2 d2@24 d2@2 d2@2 d2@2 d2@2 e2@23]/7",
AN: "[~ e2@2 e2@2 e2@2 e2@2 d2@30 d2@2 e2@5 ~@2]/3", AO: "~@9 d2@2 ~ e2@4", AP: "[~@11 d2@2 ~ e2@5 ~@13]/2",
AQ: "~@13 d2@2 ~", AR: "[~@15 d2@2 ~ e2@5 ~@9]/2", AS: "~ d2@2 ~ e2@5 ~@7", AT: "~@3 d2@2 ~ e2@5 ~@5",
AU: "~@5 d2@2 ~ e2@5 ~@3", AV: "~@7 d2@2 ~ e2@5 ~", AW: "[~@11 d2@2 ~ e2@4 ~@14]/2",
AX: "[~@2 g2@2 f#2@2 f2@3 f2 f2@3 f2 e2@4 e2@2 ~@2 d2 e2@2 ~@7]/4",
AY: "[~@4 g2@4 f#2@4 f2@6 f2@2 f2@6 f2@2 e2@8 e2!8 d2@2 e2@4 ~@14]/4",
AZ: "[~@2 g2@2 f#2@2 f2@3 f2 f2@3 f2 e2@8 e2@16 ~@2]/5", BA: "~@3 e2", BB: "[~ b1@2 ~ d2@10 e2@16 e2@2]/4",
BC: "[e2 g2@2 g2 e2@10 e2@16 e2@2]/4", BD: "~ b1@2 ~ d2@3 d2", BE: "[d2!6 e2@16 e2@2]/3",
BF: "[~ g2@2 ~ e2@10 e2@2]/2", BG: "e2@2 d3@3 e2 e2@2", BH: "d3 e2 d3 e2",
BI: "[d3@2 e2@2 d3@2 ~ a1 a1!2 c2@3 f2!3 g2@2 a2@2 ~@3 c3 c3!2 d3@3 f3!3 g3@2 a3@2 ~@2 c2@2, ~@3 d1@8 d1@8 ~, ~@20 c3@3 ~@13 c4@3 ~]/5",
BJ: "c2@2 a#2@3 c2 c2@2", BK: "a#2 c2 a#2 c2", BL: "[a#2 c2 a#2 b1@5]/2", BM: "[c2@4 c2@2 b1@9 b1]/2",
BN: "b1!6 e2@2", BO: "e1!2 e2@2 e1!2 e2@2", BP: "e1!2 e2@2 e1!2 d2@2", BQ: "e1!2 d2@2 e1!2 b1@2",
BR: "e1!2 a1@2 d2@2 e2@2",
BS: "[e1!2 a1@2 d2@2 e2 e2@2 e2 e3@4 e2 e2@2 e2 e3@4 d2 d2@2 d2 d3@4 d2 d2@2 d2 d3@4 e2 e2@2 e2 e3@4 e2 e2@2 e2 e3@4 d2 d2@2 d2 d3@4 d2!2]/8",
BT: "[~ d2 d3@4 e2 e2@2 e2 e3@4 e2 e2@2 e2 e3@4 d2 d2@2 d2 d3@4 d2 d2@2 d2 d3@4 e2 e2@2 e2 e3@4 e2 e2@2 e2 e3@4 d2 d2@2 d2 d3@4 d2!2]/8",
BU: "~ d2 d3@4 e2@2", BV: "[e1!2 a1@2 d2@2 e1@8 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.72)
// other · overdriven guitar · "sOLO"
const overdriven_guitar = note(`<
~@177 A@7 B@7 C@5 D E F G@7 H@2 I@2 ~@112 J@8 K@6 L@3 M N O P Q R S T U@2 V W X Y Z AA@8 K@6 AB@4
>`.pickRestart({
A: "[~@7 g#4@2 ~@4 a4@2 ~@4 g#4@2 ~@4 e4@2 ~@4 d4@2 e4@6 e4@2 ~@4 d4@2 ~@4 e4@2 ~@4 g#4@2 ~@4 a4@2 ~@4 g#4@2 ~@4 a4@2 b4@6 a4@2 b4@2 d5@2 e5@2 e5@4 a4@2 b4@2 d5@2 e5@2 g5@4 a4@2 b4@2 d5, ~@9 a4@4 ~@2 g#4@4 ~@2 e4@4 ~@2 d4@4 ~@10 d4@4 ~@2 e4@4 ~@2 g#4@4 ~@2 a4@4 ~@2 g#4@4 ~@2 a4@4 ~@37, ~@11 e3@6 e3@6 e3@6 e3@6 ~@8 e3@6 e3@6 e3@6 e3@6 e3@6 e3@6 ~@33]/7",
B: "[~ e5@2 g5@2 b5!2 e6@2 b5!2 e6@4 e6@4 e6@8 e6@2 d6@2 b5@2 b5@4 b5@2 d6@2 b5@6 d6@2 b5@2 a5@2 d6@2 b5@2 a5@2 d6@2 b5@2 a5@2 b5@2 e6@2 e6@3 a6@3 a6@4 a6@4 a6@6 e6 d6 e6@4 e6@2 d6@2 d6@2 b5@2 a5@2 b5@2 d6 b5 a5@2 a5]/7",
C: "[g5 e5@2 g5@2 e5@2 e5@4 f#5@4 f#5@4 f#5@4 f5@2 e5@2 d5@2 b4@2 d5@2 e5@10 a4@2 b4@2 d5@2 e5@6 a4@2 b4@2 d5@2 e5@6 e5@2 d5@2 e5@2 f#5 e5 d5 e5 d5 e5 f#5]/5",
D: "e5 d5 e5 d5 e5 f#5 e5 d5 e5 d5 e5 f#5 e5 d5 e5 d5", E: "e5 f#5 e5 d5 e5 d5 e5 f#5 e5 d5 e5 d5 e5 f#5 e5 d5",
F: "e5 d5 e5 f#5 e5 d5 e5 d5 e5 f#5 e5 d5 e5 d5 e5 f#5",
G: "[e5 d5 e5 d5 e5 f#5 e5 d5 e5 d5 e5 f#5@4 f#5@4 f#5@4 f#5@4 f#5@8 e5@2 d5@2 d5@2 e5@30 g#4@2 ~@4 a4@2 ~@4 g#4@2 ~@4 e4@2 ~@4 d4@2 e4@10 d#4@5, ~@73 a4@4 ~@2 g#4@4 ~@2 e4@4 ~@2 d4@4 ~@17, ~@75 e3@6 e3@6 e3@6 e3@14 ~@5]/7",
H: "[~ d#4@6 d#4@6 d#4@14 d#4@5]/2", I: "[~ d#4@6 d#4@6 d#4@6 ~@13]/2",
J: "[~@6 e4@8 f#4@4 g4@2 f#4 g4 f#4@6 g4 f#4 d4@4 b3@2 d4@2 e4@8 f#4@4 g4@2 f#4 g4 a4@6 a4 g4 d4@2]/8",
K: "[~@2 b3@2 d4@2 e4@8 f#4@4 g4@2 f#4 g4 f#4@6 g4 f#4 d4@4 b3@2 d4@2 e4@8 f#4@2]/6",
L: "[~@4 g4@4 f#4@2 g4@2 a4@16 b4@12 b4 [c5,c#5] d5 e5 e5@3 ~]/3", M: "e5@3 ~ e5@4 d5 e5 f#5@2 ~@2 f#5@2, d5 ~@15",
N: "~ f#5 d5 e5 d5 b4 d5 e5", O: "f#5@2 e5 d5 e5 d5 e5@2 e5 d5 e5@2 e5 d5 e5@2",
P: "e5 d5 e5@2 e5 d5 e5@2 e5 d5 e5@2 e5 d5 e5@2", Q: "e5 d5 e5@2 f#5@4 f#5@4 f#5@4", R: "f#5!2 d5@2 b4@2 d5 e5",
S: "e5 d5!2 e5@5", T: "a4 b4 d5 e5@3 a4 b4", U: "[d5 e5@3 a4 b4 d5 e5@3 a4 b4 d5 e5@3]/2",
V: "d5@2 e5@2 f#5 e5 d5 e5 d5@2 b4@2 a4@2 a4@2", W: "g4!2 f#4 e4 f#4 g4!2 f#4", X: "e4 g4 f#4 e4 g4 f#4 e4 g4",
Y: "f#4 e4 g4 f#4 e4@2 a4 g4", Z: "f#4 a4 g4 f#4 a4 g4 f#4 a4",
AA: "[g4 f#4 a4 g4 f#4@2 e4@8 f#4@4 g4@2 f#4 g4 f#4@6 g4 f#4 d4@4 b3@2 d4@2 e4@8 f#4@4 g4@2 f#4 g4 a4@6 a4 g4 d4@2]/8",
AB: "[~@2 g4@2 f#4 g4 a4@8 b3@8 [e2,b2,e3]@4 ~@6]/4", // E5
})).s("gm_overdriven_guitar").gain(0.46).pan(0)
// drums · kick
const kick = s("bd").struct(`<
A B C D E F ~@2 G ~ H ~@2 E I J ~@2 K ~ L ~@2 M ~@2 N ~ O P ~ Q ~ R ~ S T ~ U ~ H V W X ~ Y ~@44 M@2 ~@5 J ~ V Z V ~ A
AA V ~ A AA V ~ A AA A V AB V AB V AB AC A V AB V AB V AB V AB V AB V AB V Z AB A V AB V AB V AB AC A V AB V AB V AB V
AB V AB V AB V AB V AD ~ AE Z V ~ A AA V ~ A AA V ~ A AA A V AB V AB V AB V AB V AB V AB V AB V AB V AB V AB V AB V AB
V AB V AB V AB A V AB@2 V AB V AB V AF ~@43 J@2 ~@6 O AG AH AI G AG AJ AK G AG AL AK G AG AM AG ~@5 AG ~@3 AG ~@3 AG
~@3 AG@2 AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN ~ AO ~ AG@2 AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN
AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AN AG AP ~
>`.pickRestart({
A: "~@7 x ~@8", B: "~@9 x ~ x ~@4", C: "~@7 x", D: "x", E: "~ x!2 ~@5", F: "~@7 x ~ x ~@6", G: "~ x ~@6",
H: "~@11 x ~@4", I: "~@12 x!2 ~@2", J: "~@13 x ~@2", K: "~@3 x ~@4", L: "~@15 x", M: "~ x", N: "~ x ~@14",
O: "~@8 x ~@4 x ~@2", P: "x ~@6 x", Q: "~@3 x ~@12", R: "~@3 x ~@6 x ~ x ~@3", S: "~ x ~@2", T: "~@5 x ~@10",
U: "~@3 x ~@4 x ~@5 x ~", V: "~@7 x ~@5 x ~@2", W: "~ x ~@9 x ~@4", X: "~@2 x ~@2 x ~@3 x ~@6", Y: "~ x ~@6 x ~@7",
Z: "~@3 x ~@3 x ~@5 x ~@2", AA: "~ x ~ x ~@3 x ~@3 x ~@4", AB: "~@3 x ~@3 x ~@8", AC: "~@7 x ~@7 x",
AD: "~@3 x ~@9 x ~@2", AE: "~@7 x ~@3 x ~ x ~@2", AF: "~@3 x ~@3 x ~ x ~@6", AG: "~@3 x", AH: "x!3 ~@5 x ~ x ~@3 x ~",
AI: "~ x ~@4 x ~", AJ: "x!3 ~@3 x ~ x ~@3 x ~@3", AK: "x ~@2 x", AL: "x!2 ~ x!2 ~ x ~", AM: "~@3 x!2 ~ x ~",
AN: "~ x ~@2 x ~ x ~", AO: "x ~ x!2", AP: "~@3 x ~ x!2 ~",
})).gain(0.72)
// drums · snare
const snare = s("sd").struct(`<
~@6 A ~@2 B C D ~@2 E ~@2 F ~ G H ~ I J K L ~ M N ~ O ~ P M ~ Q ~ R S ~ T U V ~ A W X ~@3 D Y ~@4 Z ~@4 AA ~@4 AB ~@4
AC ~@4 AD U ~@3 AE AF ~@3 A X ~@2 AG AH Y ~@4 AI AJ D@3 AK D AL D AM AN AL D AO AN AP AQ AR D AR D AR D AS AT AR D AR
D AR D AR D AR D AR D AR D AU AV AW D AR D AX D AS AT AR D AR D AR D AR D AR D AR D AR D AR AY AZ D@3 AK D AL D AM AN
AL D AO AN AP AQ AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D AR D BA AN AR D AR D AR
~@5 BB ~@4 BC ~@4 BD U ~@3 BE BF ~@3 K BG ~@3 BH BI ~@4 BJ ~@4 BK ~@2 N BL BB ~@4 BC BM AF BN BO BP ~ BO BQ BR BS BO
BQ BT BS BO ~@4 K BU ~@2 K BV ~@2 K BW BX ~ K BW BY BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO ~@2 BH BX BZ BO BZ
BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO BZ BO
BZ BO BZ BO BZ CA ~
>`.pickRestart({
A: "~@13 x ~@2", B: "~@6 x ~@3 x ~@2 x ~@2", C: "x ~@3 x!2 ~ x ~@8", D: "~@15 x", E: "~@8 x ~@6 x", F: "~ x ~@14",
G: "~@5 x ~ x", H: "~ x ~@2 x ~@3 x!2 ~ x ~@4", I: "~@3 x ~@12", J: "~@3 x ~@4", K: "~@3 x", L: "x ~@2 x ~@2 x ~@9",
M: "~@5 x ~@10", N: "~@5 x ~@2", O: "~@2 x ~@2 x!3 ~@8", P: "~@7 x ~@8", Q: "x ~@6 x!3 ~@6", R: "~@9 x ~@6",
S: "x ~@6 x ~@8", T: "~@2 x ~@3 x ~@2 x ~@6", U: "x", V: "~@8 x!2 ~@5 x", W: "~@4 x ~@6 x ~@4", X: "~ x!2 ~@5",
Y: "~@2 x!2 ~@4", Z: "~ x ~@4 x ~ x ~@7", AA: "~@3 x ~@4 x ~ x ~@5", AB: "~@5 x ~@4 x ~ x ~@3",
AC: "~@7 x ~@4 x ~ x ~", AD: "~@9 x ~@4 x ~", AE: "~@11 x ~@4", AF: "x!2 ~@6", AG: "~@5 x ~@6 x!2 ~@2",
AH: "~@2 x ~@4 x ~@7 x", AI: "~ x ~@4 x ~ x ~@6 x", AJ: "~ x ~@3 x ~@3 x ~ x ~ x ~@2",
AK: "x!3 ~@2 x ~@3 x ~ x ~ x ~@2", AL: "~@13 x!3", AM: "~ x ~ x ~ x ~ x!3 ~ x!5", AN: "~ x ~@13 x",
AO: "x!4 ~ x ~ x ~ x ~ x!5", AP: "~@12 x!2 ~ x", AQ: "~ x ~ x ~ x ~@9 x", AR: "~@9 x ~@5 x", AS: "~@9 x!3 ~ x ~@2",
AT: "~ x!3 ~ x ~@9 x", AU: "~@11 x!5", AV: "x!6 ~@9 x", AW: "~@9 x!4 ~@2 x", AX: "~@9 x!3 ~@3 x",
AY: "~@7 x ~ x ~@5 x", AZ: "x!4 ~ x ~@3 x!3 ~ x ~@2", BA: "~@9 x ~ x ~ x ~ x", BB: "~@4 x ~@4 x ~@2 x ~@3",
BC: "~@6 x ~@4 x ~@2 x ~", BD: "~@8 x ~@4 x ~@2", BE: "~@10 x ~@4 x", BF: "~ x ~@6", BG: "~ x ~@2 x ~@11",
BH: "~@7 x", BI: "~@3 x ~@2 x ~@9", BJ: "x ~@4 x ~@2 x ~@7", BK: "~@2 x ~@4 x ~@2 x ~@5", BL: "~@2 x ~@4 x ~@4 x ~@3",
BM: "~@2 x!6 ~@2 x!3 ~ x ~", BN: "~ x ~ x", BO: "~ x ~@2", BP: "~@4 x!4 ~@8", BQ: "~@2 x!3 ~@11",
BR: "~@4 x ~ x ~ x ~ x ~ x!3 ~", BS: "x!5 ~@11", BT: "~@4 x!5 ~ x ~ x ~ x ~", BU: "~ x ~@2 x ~@3",
BV: "x!2 ~ x!2 ~@3", BW: "~ x ~@2 x ~@2 x", BX: "x!6 ~@2", BY: "x ~ x ~ x!2 ~@2", BZ: "~@2 x ~@4 x",
CA: "x!3 ~ x ~@3",
})).gain(0.72)
// drums · low tom
const low_tom = s("lt").struct(`<
~@15 A ~@9 B ~@10 C ~@66 D ~@3 E ~@3 E ~@55 D ~@3 E ~@3 E ~@98 F ~@3 G ~@3 H ~@6 I J ~@2 I J ~@77
>`.pickRestart({
A: "~@9 x ~@6", B: "~@13 x ~@2", C: "x!3 ~@13", D: "~@3 x ~@4", E: "~@5 x ~@10", F: "~@9 x!3 ~@4", G: "~@10 x!2 ~@4",
H: "~@5 x ~@2", I: "~@7 x", J: "x!6 ~@2",
})).gain(0.72)
// drums · pedal hat
const pedal_hat = s("hh").struct(`<
~@46 A B@2 C D E F@2 G H ~ C I J K ~ G L B M N J O F G P Q R C J S T U G B V W X J F Y A B@2 N ~ E F@2 G H ~@121 B@2 C
Z ~ F@2 G H AA I@2 J K AB AC L B M AD AE O F G AF AG R C J AH AI U G B AJ AK X J F AL ~ B@2 AD ~@2 F@2 G H AA ~@103
>`.pickRestart({
A: "~@3 x", B: "~ x ~@4 x ~@4 x ~@4", C: "x ~@4 x ~@4 x ~@4 x", D: "~@2 x ~@2 x ~@2", E: "~@7 x",
F: "~@3 x ~@4 x ~@4 x ~@2", G: "~@2 x ~@4 x ~@4 x ~@3", H: "~ x ~@4 x ~@5 x ~@3", I: "~@5 x ~@4 x ~@4 x",
J: "~@4 x ~@4 x ~@4 x ~", K: "~@3 x ~@4 x ~@5 x ~", L: "~ x ~@5 x ~@4 x ~@3", M: "x ~@4 x ~@4 x ~@5", N: "x",
O: "~@3 x ~@5 x ~@4 x ~", P: "~ x ~@6", Q: "~@6 x ~@4 x ~@4", R: "x ~@4 x ~@5 x ~@4", S: "~ x ~@2",
T: "~@8 x ~@4 x ~@2", U: "~@2 x ~@4 x ~@5 x ~@2", V: "x ~@2 x ~@4", W: "~@10 x ~@4 x", X: "~@4 x ~@4 x ~@5 x",
// … 69 more lines
More by Black Sabbath
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.