0:00/0:00
// Black Hole Sun — Soundgarden
// 52 bpm, 4/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 (1/4 at bar 1, 4/4 at bar 1, 2/4 at bar 4, 4/4 at bar 4, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 2 "Chris Cornell -Dist-" distortion guitar (copy of ch 1 "Chris Cornell -Guitar 1-" electric guitar clean); ch 6 "Kim Thayil -Guitar 2-" electric guitar clean (copy of ch 5 "Kim Thayil -Guitar 2-" piano)
// note: Full arrangement: all 70 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(52/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 · electric guitar clean · "Chris Cornell -Guitar 1-"
const electric_guitar_clean = note(`<
A@4 ~@8 B C D E F ~@8 B C D G H C D I J K L J K M@2 N O@2 P@2 Q ~@2 R S@3 T@3 U@5 V@3 W@3 X@4
>`.pickRestart({
A: "[~@51 a#3@13, ~@8 g#2@7 g#2@10 c#3 f#3 c#4@7 f3@5 d#2 e2 b2 e3 a3@2 e3 b2 e2 d#2 c#3 d#3@14, ~@9 d#3@5 d#3@2 b2@3 c#4@5 f#2@9 c3@31, ~@10 g#3@3 g#3@4 d#3@12 f#3@6 c4@29, ~@11 c#4@7 g#3@12 c#3 d#2 f2@32]/4",
B: "~@8 e2 b2 e3 a3@2 e3 b2 e2", C: "d#2 c#3 d#3 a#3@2 d#3 c#3 d#2 [g2,g#2] d#3 g#3 g#2 g2 d#3 g#3 g2",
D: "b2 f#3 b3 d#4@2 b3 f#3 b2 e2 b2 e3 a3@2 e3 b2 e2",
E: "d#2 c#3 d#3 a#3@2 d#3 c#3 d#2 f4@3 [f4,f#4] ~@2 c#4@2, ~ c#3, ~@8 [g#3,c#4]@5 g#3@3, ~@3 f4", // F#maj7 C#5
F: "[d#3,a#3,d#4,g4]@21 ~@11", // D#
G: "d#2 c#3 d#3 a#3@2 d#3 c#3 d#2 f4@3 [f4,f#4] f4 c#4 g#3 c#4, ~ c#3, ~@4 [g#3,c#4]@3 ~", // F#maj7 C#5
H: "b2 f#3 b3 d#4@2 b3 f#3 b3 e2 b2 e3 a3@2 e3 b2 e2",
I: "d#2 c#3 d#3 a#3@2 d#3 c#3 d#2 f4@3 [f4,f#4] ~@2 g#3@2, ~ c#3, ~@8 [g#3,c#4]@5 c#4@3, ~@3 f4", // F#maj7 C#5
J: "d#4@3 [d#4,e4] ~@3 b3 g4@3 [g4,g#4] ~@3 d#4, b2@8 ~@5 d#4@2 ~, [f#3,b3]@5 b3@2 ~ [a#3,d#4]@6 a#3@2, ~ d#4 ~ g4, ~@3 f#3 d#3@4", // Emaj7 G#maj7 B5 D#5
K: "f4@3 [f4,f#4] ~@2 g#3@2 d#4@3 [d#4,e4] ~@3 b3, c#3 b2, [g#3,c#4]@5 c#4@3 [f#3,b3]@5 b3@2 ~, ~ f4 ~ d#4, ~@7 f#3", // F#maj7 Emaj7 C#5 B5
L: "[d#3,a#3,d#4,g4]@3 [d#3,a#3,d#4,g4] [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 f4@3 [f4,f#4] ~@2 g#3@2, ~ c#3, ~@8 [g#3,c#4]@5 c#4@3, ~@3 f4", // D# F#maj7 C#5
M: "[[d#3,a#3,d#4,g4]@6 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@4 [d#3,a#3,d#4,g4]@4 c#3@2 c3@4 a#2@4 c3 ~ g#2@2 ~ g2@4 f#2@6 [f#2,c#3,f#3,c4,d#4,g#4]@6 [f#2,c#3,f#3,c4,d#4,g#4]@2 [f#2,c#3,f#3,c4,d#4,g#4]@4 c#3@2 c3@4 a#2@4 c3, ~@27 c#3@2 ~@35]/2", // D# G#7
N: "c#3 g#2 g2@2 f#2@3 [f#2,c#3,f#3,c4,d#4,g#4]@3 [f#2,c#3,f#3,c4,d#4,g#4] [f#2,c#3,f#3,c4,d#4,g#4]@2 c#3 c3@2", // G#7
O: "[a#2@4 [c3,c#3]@2 g#2@2 g2@4 f#2@6 [f#2,c#3,f#3,c4,d#4,g#4]@5 [f#2,c#3,f#3,c4,d#4,g#4]@2 [f#2,c#3,f#3,c4,d#4,g#4]@4 c#3@2 c3@4 a#2@4 [c3,c#3]@2 g#2@2 g2@4 f#2@6 [f#2,c#3,f#3,c4,d#4,g#4]@5 [f#2,c#3,f#3,c4,d#4,g#4]@2 [f#2,c#3,f#3,c4,d#4,g#4]@4]/2", // C#maj7 G#7 C#maj7 G#7
P: "[c#3@2 c3@4 a#2@4 ~ g#2@2 g2@4 f#2@6 [f#2,c#3,f#3,c4,d#4,g#4]@5 [f#2,c#3,f#3,c4,d#4,g#4]@2 [f#2,c#3,f#3,c4,d#4,g#4]@4 c#3@2 c3@4 a#2@3 [c3,c#3]@2 g#2@2 g2@4 f#2@5 [f#2,c#3,f#3,c4,d#4,g#4]@6 [f#2,c#3,f#3,c4,d#4,g#4]@2, ~@5 [c3,c#3] ~@26]/2", // G#7 C#maj7 G#7 C#maj7
Q: "[f#2,c#3,f#3,c4,d#4,g#4]@3 [f#2,c#3,f#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@24 ~", // G#7 F#5 G#5
R: "~@15 e3@3 ~ e2@2 ~ e3@2 a3@4 e3@2 b2@2, ~@21 b2@2 ~@9",
S: "[e2@2 ~ c#3@2 d#3@2 a#3@4 d#3@2 c#3@2 ~ g2 ~ d#3@2 g#3@2 g#2@2 g2@2 d#3@2 ~ g2@2 b2@2 f#3@2 b3@2 d#4@4 ~ f#3@2 b2@2 e2@2 b2@2 e3@2 a3@3 e3@2 b2@2 e2@2 d#2@2 c#3@2 d#3@2 a#3@3 d#3@2 c#3@2 d#2@2 f4@5 ~@2 f4@2 c#4@2 g#3@2 c#4@2 b2@2 ~ b3@2, ~@2 d#2@2 ~@11 d#2@2 g#2@2 ~@9 g#3@2 ~@11 b3@2 ~@33 c#3@15 ~@5, ~@76 [g#3,c#4]@11 ~@6 f#3@2 ~, ~@81 f4@2 ~@13, ~@41 f#4 ~@6]/3", // C#5
T: "[d#4@4 b3@2 f#3@2 b3@2 ~ b2@2 e3@2 a3@4 e3@2 b2@2 ~ d#2@2 c#3@2 d#3@2 a#3@4 d#3@2 ~ d#2@2 g2 ~ d#3@2 g#3@2 g#2@2 g2@2 ~ g#3@2 g2@2 b2@2 f#3@2 b3@2 d#4@3 b3@2 f#3@2 b2@2 e2@2 b2@2 e3@2 a3@3 e3@2 b2@2 e2@2 d#2@2 c#3@2 ~ a#3@4 d#3@2 c#3, ~@10 e2@2 ~@11 e2@2 ~@11 c#3@2 ~@2 g#2@2 ~@7 d#3@2 ~@37 d#3@2 ~@6]/3",
U: "[~ d#2@2 f4@5 ~ f#4 ~@4 g#3@3 d#4@5 ~ e4 ~@7 g4@6 [g4,g#4]@2 ~@5 d#4@2 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4] ~@7 [d#3,a#3,d#4,g4]@6 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@3 [d#3,a#3,d#4,g4]@4 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4] ~@6 b3@2 g4@5 [g4,g#4]@2 ~@5 d#4@2 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4] ~@4 f#3@2 b3, ~@3 c#3@14 b2@14 d#3@14 ~ c#3@14 b2@14 ~@15 c#3@14 b2@14 ~@9 d#4@4 ~@7 f4@2 f4@7 ~@7 d#4@7, ~@3 [g#3,c#4]@9 c#4@5 [f#3,b3]@9 b3@4 b3@2 ~@7 g4@7 ~@5 f4@2 f4@7 ~@7 d#4@7 ~@20 f4@2 f4@7 ~@7 d#4@7 ~@8 g4@7 ~@9 c#4@5 ~@9 b3@4 ~, ~@8 f4@2 f4@7 ~@5 d#4@2 d#4@7 [a#3,d#4]@11 a#3@4 [g#3,c#4]@11 ~@3 [f#3,b3]@11 f#3@4 ~@14 [g#3,c#4]@11 ~@3 [f#3,b3]@11 f#3@4 d#3@14 c#3@14 b2@14, ~@28 f#3@4 ~@8 d#4@4 ~@11 c#4@5 ~@9 b3@4 b3@2 ~@23 c#4@5 ~@9 b3@4 ~@2 [a#3,d#4]@10 a#3@4 [g#3,c#4]@11 ~@3 [f#3,b3]@11 ~@3]/5", // G#maj7 Emaj7 D# Emaj7 G#maj7 Emaj7 C#5 B5 …
V: "[~ [d#3,a#3,d#4,g4]@5 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@3 [d#3,a#3,d#4,g4]@4 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4] ~@6 b3@2 g4@5 [g4,g#4]@2 ~@5 d#4@2 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4] ~@6 b3@2 [d#3,a#3,d#4,g4]@5 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2, ~@15 c#3@14 b2@14 ~@10 d#4@3 ~@7 f4@2 f4@7 ~@7 d#4@7 ~@10, ~@15 [g#3,c#4]@9 c#4@5 [f#3,b3]@9 b3@4 ~@2 [a#3,d#4]@10 a#3@4 [g#3,c#4]@11 ~@3 [f#3,b3]@11 f#3@4 ~@9, ~@20 f4@2 f4@7 ~@7 d#4@7 ~@8 g4@7 ~@9 c#4@5 ~@9 b3@4 ~@11, ~@20 f#3@2 d#3@7 c#3@7 b2@7 ~@5]/3", // D# Emaj7 G#maj7 Emaj7 D# C#5 B5 D#5 …
W: "[~ [d#3,a#3,d#4,g4]@4 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4] ~@6 b3@2 g4@5 [g4,g#4]@2 ~@5 d#4@2 f4@5 ~ f#4 ~@4 g#3@3 d#4@6 [d#4,e4]@2 ~@5 b3@2 [d#3,a#3,d#4,g4]@5 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@3 [d#3,a#3,d#4,g4]@4 c#3@2 c3@3, ~@5 c#3@14 b2@14 ~@10 d#4@3 ~@7 f4@2 f4@7 ~@8 d#4@7 ~@19, ~@5 [g#3,c#4]@9 c#4@5 [f#3,b3]@9 b3@4 ~@2 [a#3,d#4]@10 a#3@4 [g#3,c#4]@11 ~@3 [f#3,b3]@11 f#3@4 ~@19, ~@10 f4@2 f4@7 ~@7 d#4@7 ~@8 g4@7 ~@9 c#4@5 ~@9 b3@4 ~@21, ~@15 f#3@2 d#3@7 c#3@7 b2@7 ~@10]/3", // D# Emaj7 G#maj7 Emaj7 D# C#5 B5 D#5 …
X: "[a#2@4 [c3,c#3]@2 g#2@2 g2@4 f#2@6 [f#2,c#3,f#3,c4,d#4,g#4]@6 [f#2,c#3,f#3,c4,d#4,g#4]@2 [f#2,c#3,f#3,c4,d#4,g#4]@4 ~ [f#2,c#3,f#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@66 ~@27]/4", // C#maj7 G#7 F#5 G#5
})).s("gm_electric_guitar_clean").gain(0.51)
// chords · piano · "Kim Thayil -Guitar 2-"
const piano = note("<~@4 A B C D A B C E@2 ~@4 A B C D A B C E@2 ~@20 F@3 ~@21>".pickRestart({
A: "~@11 d#6@5, ~ g#5@5 g#5@3 g#5@7, ~@2 c6@3 c6@2 c6@9, ~@3 f6@13, ~@5 b5@3",
B: "~@11 f6@5, ~ f#5@5 f#5@4 c6@6, ~@2 c#6@3 c#6@2 c#6@9, ~@3 f#6@13, ~@9 [g5,g#5]@7", // G#maj7
C: "~@15 a#5, ~ g#5@5 g#5@3 g#5@4 a#5 g#5@2, ~@2 b5@3 b5@2 b5@9, ~@3 e6@13, ~@10 a#5 d#6@5",
D: "~@5 e6@3, g#5@2 f6@5 f#5 a5 c#6@7, ~ c6@3 f#5@2 d#6@10, ~@3 g#5@13, ~@5 c6@11",
E: "[~@5 e6@4 ~@7, g#5@2 f6@5 f#5 a5 c#6@9 ~@14, ~ c6@3 f#5@2 d#6@12 ~@14, ~@3 g#5@15 ~@14, ~@5 c6@13 ~@14]/2",
F: "[~@25 d#6@10 ~@22 f6@10 ~@29, ~@5 g#5@10 g#5@6 g#5@14 ~@2 f#5@10 f#5@7 g#5@14 ~@28, ~@7 c6@6 c6@4 c6@18 ~@4 c#6@6 c#6@4 c#6@6 c6@12 ~@29, ~@9 f6@26 ~@6 f#6@26 ~@29, ~@23 b5@12 ~@18 g5@14 ~@29]/3",
})).s("gm_piano").gain(0.41).pan(0.7)
// other · synth strings 1 · "Kim Thayil -Guitar 2-"
const synth_strings_1 = note("<~@48 A B@3 C@4 ~@10 D@4>".pickRestart({
A: "~@19 e2@2 ~ e3@2 a3@4 e3@2 b2@2, ~@21 b2@2 ~@9",
B: "[e2@2 ~ c#3@2 d#3@2 a#3@4 d#3@2 c#3@2 ~ g2 ~ d#3@2 g#3@2 g#2@2 g2@2 d#3@2 ~ g2@2 b2@2 f#3@2 b3@2 d#4@4 ~ f#3@2 b2@2 e2@2 b2@2 e3@2 a3@3 e3@2 b2@2 e2@2 d#2@2 c#3@2 d#3@2 a#3@3 d#3@2 c#3@2 d#2@2 f4@5 ~@2 f4@2 c#4@2 g#3@2 c#4@2 b2@2 ~ b3@2, ~@2 d#2@2 ~@11 d#2@2 g#2@2 ~@9 g#3@2 ~@11 b3@2 ~@33 c#3@15 ~@5, ~@76 [g#3,c#4]@11 ~@6 f#3@2 ~, ~@81 f4@2 ~@13, ~@41 f#4 ~@6]/3", // C#5
C: "[d#4@4 b3@2 f#3@2 b3@2 ~ b2@2 e3@2 a3@4 e3@2 b2@2 ~ d#2@2 c#3@2 d#3@2 a#3@4 d#3@2 ~ d#2@2 g2 ~ d#3@2 g#3@2 g#2@2 g2@2 ~ g#3@2 g2@2 b2@2 f#3@2 b3@2 d#4@3 b3@2 f#3@2 b2@2 e2@2 b2@2 e3@2 a3@3 e3@2 b2@2 e2@2 d#2@2 c#3@2 ~ a#3@4 d#3@2 c#3@2 d#2@2 ~@29, ~@10 e2@2 ~@11 e2@2 ~@11 c#3@2 ~@2 g#2@2 ~@7 d#3@2 ~@37 d#3@2 ~@38]/4",
D: "[~@31 [f#2,c#3,f#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@66 ~@27]/4", // F#5 G#5
})).s("gm_synth_strings_1").gain(0.51).pan(0.7)
// other · overdriven guitar · "Kim Thayil -Guitar 2-"
const overdriven_guitar = note("<~@57 A B C@2 D E@3 F G@4>".pickRestart({
A: "~@25 f4@2 f4 f4@2 f4@2", B: "f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4 f4@2",
C: "[f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 g#4@7 ~@4 [d#4,f#4] d#4@5, ~@47 f#4 ~@16]/2", // D#m
D: "~@6 d#4@2 ~@2 a#4 ~ a#4@7 ~@3 a#4@2 ~@2 [c#5,d#5]@2 ~@2 [c#5,d#5]@2", // C#sus2
E: "[~ d#5@14 c#5 d#5@5 ~@2 d#5@5 ~@2 d#5@12 ~@2 [c#5,d#5]@2 ~@2 [c#5,d#5]@2 ~ c#5 d#5@5 ~ c#5 d#5@10 ~@4 [c#5,d#5]@2 ~ c#5 d#5@2 ~ d#5@5 ~@2 c#5 d#5@6 c#5 ~, ~ c#5 ~@21 c#5 ~@6 c#5 ~@49 c#5 ~@15]/3", // C#sus2
F: "c#5!5 ~ c#5@10 ~@11 c#3@2 c3@3",
G: "[a#2@4 [c3,c#3]@2 g#2@2 g2@4 f#2@6 [f#2,c#3,f#3,c4,d#4,g#4]@6 [f#2,c#3,f#3,c4,d#4,g#4]@2 [f#2,c#3,f#3,c4,d#4,g#4]@4 ~ [f#2,c#3,f#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@66 ~@27]/4", // C#maj7 G#7 F#5 G#5
})).s("gm_overdriven_guitar").gain(0.51).pan(0.3)
// other · tremolo strings · "Kim Thayil -Lead Solo"
const tremolo_strings = note("<A@3 B ~@66>".pickRestart({
A: "[~@7 c#5@3 d#5@2 b4@2 g#4@6 b4@4]/3", B: "d#5",
})).s("gm_tremolo_strings").gain(0.46).pan(0)
// other · overdriven guitar · "Kim Thayil -Lead Solo"
const overdriven_guitar_2 = note("<~@38 A B C D E F G H ~@11 I J K@2 L M@3 N ~@4>".pickRestart({
A: "~@16 d#4 ~ d#4@3 ~ d#4@3 ~ d#4 ~ d#4@4", B: "~ d#4@24 a#5 ~ a#5@4 ~",
C: "~@2 g#5 ~ g#5 ~ g#5 ~ g#5 ~ g#4 a#4 g#4 ~ [f#4,g#4] f#4 [f4,f#4] f4 d#4 f4 d#4@2 [d#4,f4]@2 ~@2 [f5,g#5] ~ [c#5,d#5] c#5!2 ~", // F#sus2 F#maj7 D#sus2 Fm C#sus2
D: "c#5@4 ~@2 c#5 ~ [g#4,a#4,c#5] [a#4,c#5] [f4,g#4] g#4!2 ~ g#4 ~ g#4 ~ c5 a#4@8 ~@2 a#4@3", // A#m7 A#m Fm
E: "~@3 g#4 ~ c5@3 ~ c5@3 ~ c5@3 ~ c#5@3 ~ c#5@3 c#5 ~ a#4 [a#4,c#5] g#4 a#4 g#4 ~, ~@5 a#4 ~@26", // A#m
F: "[a#4,c#5] a#4 [d#4,g#4] [d#4,g#4]@2 ~ [c#4,d#4] ~ [c#4,d#4] d#4 ~ d#4@3 ~ d#4 ~@3 g#4 ~ a#4 ~ [a#4,c#5] ~ d#5 ~ f5!2 ~ d#5 ~", // A#m G#5 C#sus2 A#m
G: "c#5!2 f5 ~ [d#5,f5] f5 ~@2 [d#5,f5] f5 ~ f5 ~ d#5 [d#5,f5] f#5 [d#5,f5]!2 [d#5,f5,f#5] [d#5,f5] [f5,f#5,g#5] f5 [d#5,f#5] f5 [c#5,f5] [c#5,d#5] ~@2 c5 ~ c#5 ~", // D#sus2 D#m D#sus2 Fm D#m C# C#sus2
H: "c5 a#4 ~ c5 ~ a#4 ~ g#4 g#4@24, ~@8 a#4 ~@23", I: "~@25 f4@2 f4 f4@2 f4@2",
J: "f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4 f4@2",
K: "[f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 f4@2 f4@2 f4 f4@2 f4@2 g#4@7 ~@4 [d#4,f#4] d#4@5, ~@47 f#4 ~@16]/2", // D#m
L: "~@6 d#4@2 ~@2 a#4 ~ a#4@7 ~@3 a#4@2 ~@2 [c#5,d#5]@2 ~@2 [c#5,d#5]@2", // C#sus2
M: "[~ d#5@14 c#5 d#5@5 ~@2 d#5@5 ~@2 d#5@12 ~@2 [c#5,d#5]@2 ~@2 [c#5,d#5]@2 ~ c#5 d#5@5 ~ c#5 d#5@10 ~@4 [c#5,d#5]@2 ~ c#5 d#5@2 ~ d#5@5 ~@2 c#5 d#5@6 c#5 ~, ~ c#5 ~@21 c#5 ~@6 c#5 ~@49 c#5 ~@15]/3", // C#sus2
N: "c#5!5 ~ c#5@10 ~@16",
})).s("gm_overdriven_guitar").gain(0.46).pan(0)
// bass · electric bass finger · "Ben Sheperd -Bass-"
const bass = note(`<
~@4 A B C D A E F G@2 H I J K A B C D A E F G@2 H I L M H I N O P Q R S T@2 U V@2 W X Y Z@3 AA@3 AB@2 AC@3 AD AE AF AG
AH AI AJ AK@2 AL AM@2 ~
>`.pickRestart({
A: "g#1 b1", B: "f#1 f1", C: "e1 d#1", D: "g#1@4 ~@2 g#1 ~ f#1@4 ~@2 f#1@2 a1@16",
E: "f#1@14 f#1@2 f1@3 ~ f1@8 ~@2 f1 ~", F: "e1@7 e1 d#1@8",
G: "[g#1@4 ~@2 g#1 ~ f#1@4 ~@2 f#1@2 a1@32 e1@11 ~@3 e1 ~]/2", H: "d#1@3 ~ d#1@8 ~@4 g#1@4 ~@2 g#1 ~ g1@4 ~@2 g1 ~",
I: "b1@3 ~ b1@8 ~@2 d#1 ~ e1@16", J: "d#1@16 c#2@4 ~@2 c#2 ~ c#2@3 ~ c#2@3 ~", K: "d#2@21 ~@11",
L: "d#1@16 c#2@4 ~@2 c#2!2 c#2@3 ~ c#2 ~ a#1 ~", M: "b1@3 ~ b1@3 ~ b1@3 ~ b1 ~ d#1 ~ e1@11 ~@3 e1 ~",
N: "d#1@16 c#2@4 ~@2 c#2 ~ c#2@3 ~ c#2 ~ a#1 ~",
O: "b1@4 ~@2 b1 ~ b1@3 ~ b1 ~ a#1 ~ d#2@4 ~@2 d#2 ~ d#2@3 ~ d#2 ~ a#1 ~",
P: "c#2@4 ~@2 c#2 ~ c#2@3 ~ c#2 ~ a#1 ~ b1@4 ~@2 b1 ~ b1 ~ b1 ~ b1@3 ~",
Q: "[d#1,d#2]@3 ~ d#2@3 ~ d#2 ~ d#2 ~ d#2 ~ d#2 ~ c#2@4 ~@2 c#2 ~ c#2@3 ~ c#2 ~ a#1 ~", // D#
R: "b1@4 ~@2 b1 ~ b1@3 ~ b1@3 ~ d#2@3 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~ d#1 ~",
S: "c#2@4 ~@2 c#2 ~ c#2@3 ~ c#2 ~ a#1 ~ b1@4 ~@2 b1 ~ b1@3 ~ b1@3 ~",
T: "[d#2 ~ d#2 ~ d#1 ~ d#1 ~ d#2 ~ d#2 ~ d#2 ~ d#2 ~ c#2 ~ c2@3 ~ a#1@3 ~ c2 c#2 g#1 ~@2 g1@3 ~ f#1@3 ~ f#1 ~ f#2@3 ~ f#1 ~ f#2 ~ f#1 ~ d#1 ~ c#2 ~ c2@3 ~ a#1@3 ~ c2]/2",
U: "c#2 ~ g#1 ~ g1@3 ~ f#1@3 ~ f#1 ~ f#2@3 ~ f#1 ~ f#2 ~ f#1 ~ d#1 ~ c#2 ~ c2@3 ~",
V: "[a#1@3 ~ [c2,c#2] ~ g#1 ~ g1@3 ~ f#1@3 ~ f#1 ~ f#2@3 f#1 ~ f#2 ~ f#1 ~ d#1 ~ c#2 ~ c2@3 ~ a#1@3 ~ [c2,c#2] ~ g#1 ~ g1@3 ~ f#1@3 ~ f#1 ~ f#2@3 f#1 ~ f#2 ~ f#1 ~ d#1 ~]/2", // C#maj7
W: "c#2 ~ c2@3 ~ a#1@3 ~ [c2,c#2] g#1 ~ g1@3 ~ f#1@3 ~ f#1 ~ f#2@3 ~ f#1 f#2 ~ f#1 ~", // C#maj7
X: "d#1 ~ c#2 ~ c2@2 ~@2 a#1@2 ~ [c2,c#2] ~ g#1 ~ g1@2 ~@2 f#1@2 ~ f#1 ~ f#2@2 ~@2 f#1 ~ f#2 ~", // C#maj7
Y: "f#1 d#1 ~ f#1 ~ g#1 ~ g#1@16 ~@9", Z: "[~@3 g#1@8 ~@4 g#1@3 ~ b1@8 ~@4 b1@3 ~ f#1@11 ~@5 f1@29 ~@3 e1@10 ~@3]/3",
AA: "[e1 ~ d#1@2 ~ d#1@7 ~@4 g#1@4 ~@2 g#1 ~ g1@4 ~ g1 ~ b1@2 ~@2 b1@7 ~@2 d#1 ~ e1@15 d#1@15 c#2@4 ~ c#2!2 c#2@2 ~@2 c#2 ~ a#1 ~ b1@2 ~ b1@2]/3",
AB: "[~@2 b1@2 ~@2 b1 ~ d#1 ~ e1@10 ~@3 e1 d#1@2 ~@2 d#1@7 ~@4 g#1@4 ~@2 g#1 ~ g1@4 ~ g1 ~ b1@2 ~@2 b1@6]/2",
AC: "[~@3 d#1 ~ e1@15 d#1@15 c#2@4 ~ c#2!2 c#2@2 ~@2 c#2 a#1 ~ b1@4 ~ b1 ~ b1@2 ~@2 b1 ~ a#1 d#2@4 ~@2 d#2 ~ d#2@2 ~ d#2 ~ a#1 ~ c#2@4 ~ c#2!2 c#2@2 ~@2 c#2 a#1 ~ b1@4]/3",
AD: "~@2 b1!2 ~ b1 ~ b1@2 ~ [d#1,d#2]@2 ~@2 d#2@2 ~@2 d#2!2 ~ d#2 ~ d#2 ~ c#2@4 ~ c#2 ~", // D#
AE: "c#2@2 ~@2 c#2 a#1 ~ b1@4 ~@2 b1 b1@2 ~@2 b1@2 ~@2 g2 d#1 ~ d#1 ~ g2 ~ d#1!2 ~",
AF: "g2 ~ d#1 ~ c#2@4 ~ c#2 ~ c#2@2 ~@2 c#2 a#1 ~ b1@4 ~@2 b1 b1@2 ~@2 b1@2 ~",
AG: "~ g2 d#1 ~ d#1 ~ g2 ~ d#1 ~ d#1 g2 ~ d#1 ~ c#2@4 ~ c#2 ~ c#2@2 ~@2 c#2 a#1 ~ b1@3",
AH: "~@3 b1 b1@2 ~@2 b1 ~ a#1 ~ d#2!2 ~ d#2 ~ d#2 ~ d#2 ~ d#2!2 ~ a#1 ~ c#2@4 ~ c#2",
AI: "~ c#2@2 ~@2 c#2 a#1 ~ b1@4 ~@2 b1 b1@2 ~@2 b1 ~ a#1 ~ g2 a#2 ~ g2 ~ d#1 ~ g2 ~",
AJ: "d#1 g2 ~ a#1 ~ c#2@4 ~ c#2 ~ c#2@2 ~@2 c#2 ~ a#1 b1@4 ~@2 b1 b1@2 ~@2 b1 ~",
AK: "[a#1 ~ g2 a#2 ~ g2 ~ d#1 ~ g2 ~ d#1 g2 ~ a#1 ~ c#2@4 ~ c#2 ~ c#2@2 ~@2 c#2 ~ a#1 b1@4 ~@2 b1 ~ b1@2 ~ b1 ~ a#1 ~ g2 a#2 ~ g2 ~ d#1 ~ g2 ~ d#1 g2 ~ a#1 ~ c#2 ~ c2@2 ~]/2",
AL: "a#1@2 ~@2 [c2,c#2] ~ g#1 ~ g1@3 ~ f#1@3 ~ f#1 ~ f#1@4 ~@2 f#1 ~ f#1 ~@2 d#1 ~ f#1", // C#maj7
AM: "[~ g#1 ~ g#1@38 ~@23]/2",
})).s("gm_electric_bass_finger").gain(0.46)
// drums · kick
const kick = s("bd").struct(`<
~@3 A B C@2 D B C@2 E F G@2 H I B C@2 D B C@2 E J G@7 K@4 L M N O P Q R S T ~@2 U V W X Y Z AA AB AC AD AE AF AG AH AI
AJ AK AL AM AN ~@2
>`.pickRestart({
A: "~@13 x ~@2", B: "x ~@2 x ~@3 x!2 ~@6 x", C: "x ~@6 x!2 ~ x ~@2 x ~ x", D: "x ~@6 x!2 ~@4 x ~@2",
E: "x ~@6 x!3 ~@6", F: "~@4 x ~@3 x ~@2 x!2 ~@3 x ~@5 x ~@7 x ~", G: "x ~ x ~@2 x ~ x!2 ~@2 x ~@3 x",
H: "x ~ x ~@2 x ~ x!2 ~ x ~ x!2 ~ x", I: "x ~@12 x ~@2", J: "~@2 x ~@2 x!2 ~ x ~@2 x ~@3 x",
K: "x ~ x ~ x!5 ~@2 x ~@3 x", L: "x ~ x!7 ~ x ~ x!4", M: "x ~ x ~ x!6 ~@2 x ~@3",
N: "~@3 x ~@3 x ~ x ~@3 x ~ x!4 ~@2 x ~ x ~@5 x ~@2", O: "~@8 x ~ x ~ x ~ x ~@3 x ~ x!4 ~@2 x ~ x ~@3",
P: "~@2 x ~@9 x ~ x ~ x ~ x ~@2 x ~ x!4 ~@2 x ~ x", Q: "~@5 x ~@9 x ~ x ~ x ~ x ~@2 x ~ x!4 ~@2",
R: "x ~ x ~@5 x ~@8 x ~ x ~ x ~ x ~@3 x!5", S: "~@2 x ~ x ~@4 x ~@9 x ~ x!2 ~ x!8", T: "~@3 x ~ x ~ x ~@24",
U: "~@7 x ~@3 x ~ x ~ x ~ x ~ x ~@4 x ~@7", V: "x ~ x ~@2 x ~@5 x ~@3 x!2 ~@5 x ~@6 x ~ x",
W: "~@3 x ~@5 x ~@2 x ~ x ~@5 x ~@6 x ~ x ~@2", X: "~ x ~@4 x ~@3 x ~ x ~@4 x ~@7 x ~ x ~@2 x ~",
Y: "~@4 x ~@3 x ~ x ~@4 x ~@7 x!2 ~@3 x ~@3", Z: "~@2 x ~@2 x ~ x ~@5 x ~@6 x ~ x ~@3 x ~@4 x",
AA: "~@3 x ~ x ~@5 x ~@6 x ~ x ~@3 x ~@4 x ~@2", AB: "~ x ~ x ~@4 x ~@6 x ~ x ~@3 x ~@2 x ~ x ~ x ~ x!2",
AC: "~@5 x ~@6 x ~ x ~@2 x ~@5 x ~@2 x ~ x ~@3", AD: "~@2 x ~@6 x!2 ~@3 x ~@3 x!2 ~ x ~ x ~ x ~@4 x ~",
AE: "~@5 x ~ x ~@3 x ~@4 x ~@3 x ~ x ~@4 x ~@4", AF: "~@2 x ~ x ~@2 x ~@3 x ~ x ~ x!2 ~ x ~@3 x ~@4 x ~@3 x",
AG: "~ x ~@2 x ~@3 x ~ x!2 ~ x ~ x ~@4 x ~@6 x ~ x ~@2", AH: "~ x ~@4 x ~@3 x ~ x ~@4 x ~@6 x ~ x ~@3 x ~",
AI: "~ x ~ x ~ x!2 ~ x ~@5 x ~@6 x ~ x ~@2 x ~@5", AJ: "x ~@2 x ~ x ~@4 x ~@7 x!2 ~@3 x ~@2 x ~ x ~ x ~",
AK: "x ~ x ~@4 x ~@6 x ~ x ~@3 x ~@4 x ~@3 x!2 ~", AL: "~@4 x ~@6 x ~ x ~@2 x ~@3 x ~ x!2 ~ x ~ x ~ x ~@2",
AM: "~@2 x ~@9 x ~ x ~ x ~ x ~ x!7 ~ x ~@2 x", AN: "~ x ~ x ~@28",
})).gain(0.41)
// drums · snare
const snare = s("sd").struct(`<
~@3 A B@3 C B@3 D E B F G H B@3 C B@3 D I B F B F B F B J K J K L M N O P Q R S T ~@2 U V W X Y Z AA AB AC AD AE AF AG
X AH AI AJ AK AL AM ~@2
>`.pickRestart({
A: "~@7 x", B: "~ x ~ x", C: "~@2 x ~@4 x", D: "~@2 x ~@2 x ~@2", E: "x ~ x ~@8 x!2 ~@11 x ~@7",
F: "~@8 x ~@2 x!2 ~@11 x ~@7", G: "~@4 x ~@7 x!4", H: "x ~@6 x", I: "x!2 ~ x!2 ~ x ~@5 x ~@3",
J: "~@8 x ~ x!3 ~ x ~@9 x ~@7", K: "~@4 x!4 ~@4 x ~@3", L: "~@6 x ~ x ~ x!3 ~@11 x ~ x!3 ~ x ~",
M: "~@8 x!5 ~ x ~ x ~@5 x ~@5 x ~@2 x", N: "~ x ~@7 x ~ x ~@3 x!4 ~@2 x ~@5 x ~@4",
O: "~@2 x ~ x ~ x ~@7 x ~ x ~ x ~ x!4 ~@2 x ~@5", P: "x ~@5 x ~ x ~ x ~@7 x!2 ~ x ~ x!4 ~@2 x ~@2",
Q: "~@3 x ~@5 x ~ x ~ x ~@7 x!2 ~ x ~ x!4 ~@2", R: "x ~@5 x ~@4 x ~ x ~ x ~@7 x ~ x ~ x!5",
S: "~@2 x ~@5 x ~@4 x ~ x ~ x ~@6 x!8", T: "x ~@2 x ~ x ~ x ~@24", U: "~@3 x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@8 x ~@5",
V: "~@9 x ~@14 x ~@7", W: "~@7 x ~@2 x ~@11 x ~@9", X: "~@4 x ~@14 x ~@12", Y: "~@2 x ~@2 x!2 ~@10 x ~@14",
Z: "x ~@14 x ~@14 x ~", AA: "x!2 ~@10 x ~@14 x ~@4", AB: "~@10 x ~@13 x ~ x!3 ~ x ~", AC: "~@7 x ~@13 x ~@10",
AD: "~@3 x ~@14 x!4 ~ x ~@8", AE: "x ~@13 x ~@14 x ~@2", AF: "~@11 x ~ x!4 ~@8 x ~@2 x!2 ~@2",
AG: "~@8 x!4 ~ x ~@8 x ~@9", AH: "~ x ~ x!4 ~@8 x ~@14 x ~", AI: "~@12 x ~@13 x ~ x!3 ~", AJ: "x ~@8 x ~@13 x ~@8",
AK: "~@6 x ~@13 x ~ x!2 ~ x ~ x ~@4", AL: "x ~@5 x ~ x ~ x ~@7 x ~ x!7 ~ x ~@2 x", AM: "~ x ~ x ~@28",
})).gain(0.41)
// drums · hihat
const hihat = s("hh").struct(`<
~@4 A@3 B A@3 B C A@2 B ~ A@3 B A@3 B C A@12 B ~@9 D E F G H I J K L M N O P Q R S T U ~@4
>`.pickRestart({
A: "~ x!3 ~ x!3", B: "~ x!3 ~@4", C: "~@5 x!3", D: "~@11 x ~ x ~ x", E: "~@5 x ~@3 x ~@3 x ~@6 x ~@3 x ~@3 x ~@3",
F: "~@3 x ~@3 x ~@2 x ~@7 x ~@3 x ~@2 x ~@6", G: "~ x ~@2 x ~@3 x ~@7 x ~@2 x ~@3 x ~@6 x ~",
H: "~@2 x ~@3 x ~@6 x ~@3 x ~@3 x ~@6 x ~@3", I: "x ~@3 x ~@6 x ~@3 x ~@2 x ~@7 x ~@3 x ~",
J: "~ x ~@7 x ~@2 x ~@3 x ~@7 x ~@2 x ~@3 x", K: "~@6 x ~@3 x ~@3 x ~@6 x ~@2 x ~@3 x ~@3",
L: "~@3 x ~@3 x ~@2 x ~@6 x ~@3 x ~@3 x ~@6", M: "x ~@2 x ~@3 x ~@6 x ~@3 x ~@2 x ~@6 x ~@3",
N: "x ~@3 x ~@6 x ~@2 x ~@3 x ~@6 x ~@3 x ~@2", O: "x ~@6 x ~@3 x ~@3 x ~@6 x ~@2 x ~@3 x ~@2",
P: "~@4 x ~@3 x ~@2 x ~@6 x ~@3 x ~@3 x ~@5", Q: "~ x ~@2 x ~@3 x ~@6 x ~@3 x ~@2 x ~@7 x ~",
R: "~ x ~@3 x ~@6 x ~@2 x ~@3 x ~@6 x ~@3 x ~", S: "~ x ~@7 x ~@2 x ~@3 x ~@6 x ~@2 x ~@3 x ~",
T: "~@5 x ~@3 x ~@2 x ~@7 x ~@2 x ~@3 x ~@4", U: "~@2 x ~@3 x ~@2 x ~@6 x ~@3 x ~@2 x ~@8",
})).gain(0.41)
// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@17 B@4 C B D E F G H I ~@3 J ~@6 K ~ L ~ M N ~ O P Q R S ~@3>".pickRestart({
A: "~@24 x!8", B: "~@8 x!8 ~@16", C: "~@6 x!8 ~@10 x!8", D: "~@15 x!5 ~@12", E: "~@20 x!4 ~@8", F: "~@23 x!5 ~@4",
G: "~@26 x!5 ~", H: "~@28 x!4", I: "x ~@23 x!8", J: "~@11 x!8 ~@13", K: "~@24 x!7 ~", L: "~@18 x!7 ~@7",
M: "~@11 x!7 ~@14", N: "~@8 x!7 ~@17", O: "~ x!7 ~@24", P: "~@26 x ~ x!4", Q: "x!2 ~@30", R: "~@20 x!7 ~@5",
S: "~@20 x!9 ~@3",
})).gain(0.41)
// drums · open hat
const open_hat = s("oh").struct(`<
~@4 A@8 B A@2 C ~ A@8 B A@12 C ~@9 D E F G H I J K L M I N O P Q R S T ~@4
>`.pickRestart({
A: "x!2", B: "~ x", C: "x", D: "~@19 x ~@12", E: "~@2 x ~@13 x ~@14 x", F: "~@14 x ~@14 x ~@2",
// … 57 more lines
More by Soundgarden
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.