Strudelify
Black Hole Sun cover art

Superunknown

Black Hole Sun

Soundgarden

KeyG majorTempo52 bpm
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