Strudelify
Heart-Shaped Box cover art

1993 · Nirvana

Heart-Shaped Box

Nirvana

KeyA minorTempo100 bpm
0:00/0:00
// Heart-Shaped Box — Nirvana
// 100 bpm, 4/4, key A minor. 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 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 4 "Kris Novelis -Bass-" named as a bass, played on electric bass finger (its cello patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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.

// other · shanai · "Kurdt Cobain -Guitar-"
const shanai = note(`<
  A B C D E F G H I J K H E F G H I J K ~@17 E F G H I J K H E F G H I J K ~@21 E F G H E F G H I J K H E F G H I J K
  ~@24
>`.pickRestart({
  A: "~@2 e3 ~ a3 ~ e3 ~@3 c3 ~ f3 ~ c3 ~, a2 ~ f2 ~", B: "d2@4 a2 ~ d3@3 ~ a2 ~ d3 ~ a2 ~",
  C: "e3 ~ e3 ~ a3 ~ e3 ~@3 c3 ~ f3 ~ f2 ~, a2 ~ f2 ~",
  D: "~@2 f#3 ~ f#3 ~ a2 ~ f#3 ~ c3 ~ [c3,f#3] ~ [d3,g3] ~, d2 ~@3", // Cdim G5
  E: "e3 ~ e3 ~ [a3,c#4] ~ a2 ~ f2 ~ c3 ~ f3 ~ f2 ~, a2@5 ~@11", F: "d2@3 ~ a2 ~ d3@3 ~ d2 ~ a2 ~ [d3,g3] ~",
  G: "[a2,e3] ~ e3 ~ a3@4 ~@2 c3 ~ f3 ~ d2 ~, ~@8 f2@5 ~@3", H: "d2 ~ f#3 ~ f#3 ~ a2 ~ f#3 ~ c3 ~ c3 ~ [a2,d3] ~",
  I: "~@2 e3 ~ [a3,c#4]@2 [a2,e3] ~ f2 ~ c3 ~ f3 ~ c3 ~, a2@5 ~@11", // A A5
  J: "d2 ~ a2 ~ a2 ~ d3@3 ~ a2 ~ d3 ~ [d3,g3] [e3,a3]", K: "a2 ~ e3 ~ [a3,c#4] ~ a2 ~ f2 ~ c3 ~ f3 ~ f2 ~",
})).s("gm_shanai").gain(0.46)

// chords · distortion guitar · "Kurdt Cobain -Guitar-"
const distortion_guitar = note(`<
  ~@19 A B C B C B C B C B D B D E F G H ~@15 A B I B I B I B I B I B I J K J L ~@23 A B C B C B C B C B D B D M N O N O
  N P Q@4
>`.pickRestart({
  A: "d2 [d2,f#3] d2!5 [d2,g3], ~ f#3!3, ~@3 a2@5, ~@5 c3@3", // D G5
  B: "[a2,e3,a3] ~ [a2,e3,a3] ~@5 [f2,c3,f3] ~ [f2,c3,f3] ~@5", C: "[d2,a2,d3] ~ [a2,f#3] ~ f#3 ~ a2 ~ f#3 ~ c3 ~@5",
  D: "[d2,a2,d3] ~ [a2,f#3] ~ f#3 ~ a2 ~ f#3 ~ c3 ~@3 a2 ~", // D5 D
  E: "[f2,c3,f3] ~ [f2,c3,f3] ~ [f3,a3,c4]@2 f2 ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3] ~", // F5 F F5
  F: "[d2,a2,f#3]@3 ~ a2 ~@9 g3 ~", // D
  G: "[f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3,a3,c4] ~ f2 ~ [f2,c3,f3,a3] ~ f2 ~ [f2,c3,f3,a3] ~ [c3,f3]!2", // F5 F F5
  H: "[d2,a2,f#3] ~ f#3 ~ f#3 ~ f#3 ~ f#3 ~ c3 ~ c3 ~ [a2,d3] ~", // D D5
  I: "[d2,a2,d3] ~ [a2,f#3] ~ f#3 ~ a2 ~ f#3 ~ c3 ~ c3@3 ~", // D5 D
  J: "[f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~", // F5
  K: "[d2,a2,f#3]@3 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", L: "[d2,a2,f#3]@3 ~ f#3 ~ [a2,f#3] ~ [a2,f#3] ~ c3 ~ c3 ~ d3!2",
  M: "[f2,c3,f3]@4 [f2,c3,f3,a3] ~ [c3,f3] ~ [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2", // F5 F F5
  N: "[d2,a2,f#3]@3 ~ [d2,a2] ~ [d2,a2] ~ [d2,a2] ~ [a2,d3] ~ [a2,d3] ~ [a2,d3,g3] ~", // D D5 Dsus4
  O: "[f2,c3,f3]@3 ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [g2,d3,g3] ~", // F5 F F5 G5
  P: "[f2,c3,f3]@3 ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3,f3,a3] ~ [f2,c3,g3] f3", // F5 F Fsus2
  Q: "[[d2,a2,f#3] ~ f#3 ~ f#3 ~ f#3@2 ~ f#3@2 [c3,f#3]@3 c3@45 ~@5]/4", // D Cdim
})).s("gm_distortion_guitar").gain(0.46)

// other · distortion guitar · "Kurdt Cobain -Guitar 2-"
const distortion_guitar_2 = note(`<
  ~@20 A B A B A B A B A B A B ~ C ~@18 D E D E D E D E D E D E ~ F ~@2 G H G I J@2 K@2 ~@16 A B A B A B A B A B A B ~ L
  ~ L ~ L ~@5
>`.pickRestart({
  A: "~@4 b3@3 ~@5 b3@3 ~", B: "~@12 b3@3 ~", C: "~@6 b3@2 b3@2 b3 ~ c4 ~ g3 ~", D: "~@4 c4@3 ~@5 c4@3 ~",
  E: "~@12 c4@3 ~", F: "[a2,f#3]@3 ~ a2 ~ b3 ~ b3@4 c4 ~ [d3,g3] ~", G: "a3 a4 g3 g4", H: "d3@2 f4@2 ~ d4 c4 b3",
  I: "d3@4 e4@4 e4 ~ d4 ~@3 b3@2, ~@3 c4", J: "[[a2,e3]@7 ~]/2", K: "[[a2,e3,a3,c#4]@3 ~]/2",
  L: "~@4 a2 ~ b3@2 b3@2 b3 ~ c4 ~ g3 ~",
})).s("gm_distortion_guitar").gain(0.46).pan(1)

// bass · electric bass finger · "Kris Novelis -Bass-"
const bass = note(`<
  ~@4 A B A C A B A C A B A C A B A D E F G H G H G H G H G H I J I K A B A C A B A C A B A C A B A L G H G H G H G H G
  H G H I M I M G H G H A C A B A B A C A B A C A B A C A B A D G H G H G H G H G H G H I N O N O N O P ~@3
>`.pickRestart({
  A: "a1 ~ a1 ~ a1 ~ a1 ~ f1 ~ f1 ~ f1 ~ f1 ~", B: "d1@5 ~ d1@3 ~ c1 ~ d1 ~ c1 ~", C: "d1@4 d1@3 ~ d1@3 ~ d1@3 ~",
  D: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ g1 ~", E: "a1 ~ a1 ~ b1@3 ~ f1 ~ f1 ~ b1@3 ~",
  F: "d1 ~ f#2 ~ f#2 ~ a1 ~ f#2 ~ c2 ~ f#2 ~ d2!2", G: "a1 ~ a1 ~ b1 ~ a1 ~ f1 ~ f1 ~ b1 ~ a1 ~",
  H: "d1 ~ a1 ~ d2 ~ a1 ~ d2 ~ a1 ~ c2 ~ b1 ~", I: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", J: "f#2@3 ~@13",
  K: "f#2@2 f#2 ~ f#2 ~ a1 ~ f#2 ~ c2 ~ c3 ~@3", L: "~@2 f#2@2 ~@8 f#2 ~ a1!2, d1 f#2!2 ~, ~@6 a1@4 c2@5 ~",
  M: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2 ~", N: "f#2 ~@3 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ g2 ~",
  O: "f2 ~@3 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ g2 ~", P: "d2@3 ~",
})).s("gm_electric_bass_finger").gain(0.51)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~@19 A ~ A ~ A ~ A ~ A ~ A ~ A ~@19 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@25
>`.pickRestart({
  A: "~ x!3",
})).gain(0.46)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@19 A B A B A ~ A B A B A B A ~@19 A B A B A B A B A B A B A ~@27 A B A B A B A B A B A B A ~@11
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@2",
})).gain(0.46)

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

stack(shanai, distortion_guitar, distortion_guitar_2, bass, kick, rim, snare, ride, crash)

More by Nirvana