Strudelify
Son of a Gun cover art

Incesticide

Son of a Gun

Nirvana

KeyA majorTempo180 bpm
0:00/0:00
// Son of a Gun — Nirvana
// 180 bpm, 4/4, key A 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) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/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 · "Kurt Cobain -Lead Guitar-"
const distortion_guitar = note(`<
  A B A B A B A B A B A B A B A B C D E F C D E F C D E F C D E F A B A B A B A B C D E F C D E F C D E F C D E F G H G
  H I J I J G H G H G H G H A B A B A B A B C D E F C D E F C D E F C D E F C D E F C D E F C D E F C D E K@3
>`.pickRestart({
  A: "[a#2,f3,a#3]@2 [a#2,f3,a#3]!2 [f2,c3,f3,c4]@2 [f2,c3,f3,c4]!2", // A#5 F5
  B: "[d#3,a#3,d#4]@2 [d#3,a#3,d#4]!2 [f2,c3,f3,c4]!4", // D#5 F5
  C: "[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]!2 ~ [f2,c3,f3], ~@3 [g2,d3,g3]", // G5 F5 G5
  D: "[c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]!2 g3 [g2,d3,g3], ~@3 [c3,c4]", // C5 G5 C
  E: "[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]!2 d3 [g2,d3,g3], ~@3 [a3,d4]", // D5 G5 D5
  F: "[c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]!2 c3 [f2,c3,f3], ~@3 [g3,c4]", G: "[g2,d3,g3]!8", H: "[d3,a3,d4]!8",
  I: "[a2,e3,a3]!8", J: "[e3,b3,e4]!8",
  K: "[[c3,g3,c4]@4 [c3,g3,c4]@5 [c3,g3,c4]@2 [c3,g3,c4]@3 c3@3 [f2,c3,f3]@3 [g2,d3,g3]@16 ~@12, ~@7 [g3,c4]@3 ~@14]/3", // C5 F5 G5 C5
})).s("gm_distortion_guitar").gain(0.51)

// bass · fretless bass · "Chris Novoselic -Bass-"
const bass = note(`<
  ~@4 A B A B A B A B A B A B C D E D C D E D C D E D C D E D A B A B A B A B C D E D C D E D C D E D C D E D C E C E F
  G F G C E C E C E C E A B A B A B A B C D E D C D E D C D E D C D E D C D E D C D E D C D E D C D E H I ~
>`.pickRestart({
  A: "a#1@2 a#1!2 f1@2 f1!2", B: "d#2@2 d#2!2 f1!4", C: "g1!8", D: "c2!8", E: "d2!8", F: "a1!8", G: "e2!8",
  H: "c2@2 c2@2 c2@2 ~ c2@2 c2@2 c2@3 c2@2", I: "~ c2@3 g1@6 ~@6",
})).s("gm_fretless_bass").gain(0.51)

// drums · kick
const kick = s("bd").struct("<~@2 [x!8]!109 [x ~ x ~ x ~@2 x ~ x ~ x ~@2 x ~] [~ x ~@2 x ~@11] ~>").gain(0.46)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@19 C B@3 C B@3 C B@3 C B@3 C B@3
  C B@3 C B@3 C B@3 C B@3 D E F
>`.pickRestart({
  A: "~@4 x!4", B: "x!4", C: "x ~ x ~ x!4", D: "x ~@3 x ~@4 x ~ x ~@2 x ~", E: "~ x ~@2 x ~@11", F: "~@3 x",
})).gain(0.46)

// drums · ride bell
const ride_bell = s("rd").struct("<~@3 [x!4 ~@4] ~@108 [~ x ~@2] ~>").gain(0.46)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [x!4]!107 [x ~@3 x ~@4 x ~@4 x ~] ~@2>").gain(0.46)

stack(distortion_guitar, bass, kick, snare, crash, ride_bell, tambourine)

More by Nirvana