Strudelify
Blew cover art

1989 · Bleach

Blew

Nirvana

KeyC minorTempo120 bpm
0:00/0:00
// Blew — Nirvana
// 120 bpm, 4/4, key C 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: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// bass · electric bass pick · "Chris Novoselic -Bass-"
const bass = note(`<
  A@3 B C@6 D B C@2 D B C@2 D B C@2 D B E F E F E F E F G@2 C@2 D B C@2 D B C@2 D B C@2 D B E F E F E F E F G@2 C@2 H@2
  I@2 J K E F E F E F E F G@2 A@7 B L ~ M
>`.pickRestart({
  A: "~ c1 eb1 f1 f1@2 gb1 c1", B: "~ c1 eb1 f1 f1@2 f1@2", C: "[c1!2 eb1 f1 f1@2 gb1 f1@2 eb1@2 c1 e1@2 e1@2]/2",
  D: "c1!2 eb1 f1 f1@2 gb1 c1", E: "eb1 f1@2 f1!2 eb1 c1 eb1", F: "eb1 f1@2 ~ f1 eb1 gb1@2", G: "g1!8",
  H: "[c1!2 eb1 f1 f1@2 gb1 f1@2 eb1@2 c1 c1@2 c1@2]/2", I: "[c1!2 eb1 f1 f1@2 gb1 bb1@2 gb1 bb1 c2@2 c2!3]/2",
  J: "gb1 eb1 f1 c1 c1@2 eb1 f1", K: "gb1 bb1 c2@2 c2!4", L: "c1@7 ~@9", M: "c1 ~@3",
})).s("gm_electric_bass_pick").gain(0.51)

// chords · overdriven guitar · "Kurt Cobain -Guitar 1-"
const overdriven_guitar = note(`<
  ~@3 A B@4 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 D E D E D E D F G@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 D E D E D E D F G@2 ~@8
  D E D E D E D F G@2 H@7 I J@2 ~
>`.pickRestart({
  A: "~@3 a3",
  B: "[[c2,g2,c3]!2 [eb2,bb2,eb3] [f2,c3,f3] [gb2,db3,gb3]@2 [gb2,db3,gb3] [f2,c3,f3]@2 [eb2,bb2,eb3]@2 [c2,g2,c3] [f2,c3,f3]@2 [f2,c3,f3]@2]/2", // C5 Eb5 F5 Gb5 F5 Eb5 C5 F5
  C: "~@6 f3 e3 f3@4 a3@4", D: "[eb2,bb2,eb3] [f2,c3,f3]@2 [f2,c3,f3]!2 [eb2,bb2,eb3]@2 ~",
  E: "[eb2,bb2,eb3] [f2,c3,f3]@2 ~ [f2,c3,f3] [eb2,bb2,eb3] [gb2,db3,gb3]@2", // Eb5 F5 Eb5 Gb5
  F: "[eb2,bb2,eb3] [f2,c3,f3]@2 ~ [f2,c3,f3] [eb2,bb2,eb3]@3", G: "[g2,d3,g3]!8",
  H: "~ [c2,g2,c3] [eb2,bb2,eb3] [f2,c3,f3] [gb2,db3,gb3]@2 [gb2,db3,gb3] [c2,g2,c3]", // C5 Eb5 F5 Gb5 C5
  I: "~ [c2,g2,c3] [eb2,bb2,eb3] [f2,c3,f3] [f2,c3,f3]@2 [f2,c3,f3]@2", J: "[[c2,g2,c3]@3 ~]/2",
})).s("gm_overdriven_guitar").gain(0.46)

// other · overdriven guitar · "Kurt Cobain -Guitar Solos-"
const overdriven_guitar_2 = note(`<
  ~@8 A B C@2 A B C@2 A B C@2 A B D@2 ~@10 A B C@2 A B C@2 A B C@2 A B C@2 ~@10 E F G@2 H@2 I@2 ~@21
>`.pickRestart({
  A: "~ c3 eb3 f3 gb3 gb3@2 gb3", B: "f3@2 f3 eb3 f3@2 f3 eb3", C: "[~@4 c2@3 ~, eb3@15 ~]/2", D: "[eb3@15 ~]/2",
  E: "g3", F: "f3@6 ~ e3 f3@4 g3@4, ~@3 f3 ~@4", G: "[eb3 c3@2 c3@2 bb2 b2 c3@2 c3!2 g2 bb2 eb3 f3 d3]/2",
  H: "[eb3 c3 d3 c3 d3 ~@2 g3@2 ~@2 g3@2 eb3 f3 d3, ~@5 c3@4 c3@4 ~@3]/2",
  I: "[eb3 c3 d3 c3 d3 ~@2 [g3,f4]@2 ~@3 c3@2 [g3,f4]@2, ~@5 c3@4 c3@3 ~@4, ~@11 g3@2 ~@3]/2", // G7
})).s("gm_overdriven_guitar").gain(0.46)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@25 A ~ A ~ A ~ B ~ C ~@17 A ~ A ~ A ~ B ~ C ~@9 A ~ A ~ A ~ B ~ C ~@8 D ~@2
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@5 x ~ x", C: "~@12 x!4", D: "~@8 x!6 ~@2",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@25 A ~ A ~ A ~ B ~ C ~@17 A ~ A ~ A ~ B ~ C ~@9 A ~ A ~ A ~ B ~ C ~@8 D ~@2
>`.pickRestart({
  A: "~@2 x!2", B: "~@8 x ~@2 x!3 ~@2", C: "~@8 x!4 ~@4", D: "~@3 x!5 ~@8",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [x!8]!75 [~ x!7]!7 [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x] [~ x!2 ~ x ~ x ~@9] x>").gain(0.41)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@25 A ~ A ~ A ~ A ~ B ~@17 A ~ A ~ A ~ A ~ B ~@9 A ~ A ~ A ~ A ~ B ~@8 C ~@2
>`.pickRestart({
  A: "~@9 x ~@6", B: "x!4 ~@4", C: "x!3 ~@13",
})).gain(0.41)

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

stack(bass, overdriven_guitar, overdriven_guitar_2, kick, snare, low_tom, mid_tom, open_hat, high_tom, crash)

More by Nirvana