Strudelify

Downer

Nirvana

KeyG majorTempo202 bpm
0:00/0:00
// Downer — Nirvana
// 202 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(202/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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"
const distortion_guitar = note(`<
  ~@4 A B@4 ~@7 A B@4 C@8 B@4 D@2 E@2 D@2 F@2 B@4 ~@7 G B@4 C@8 B@4 D@2 E@2 D@2 F@2 B@4 H@4 I
>`.pickRestart({
  A: "~@3 [a2,d3,g3,b3,e4]", B: "[e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3] [c3,g3,c4]!3",
  C: "[a#2,f3,a#3]@2 [b2,f#3,b3] [c3,g3,c4]@2 [c3,g3,c4] [a#2,f3,a#3] e2", // A#5 B5 C5 A#5
  D: "[[a2,e3,a3]@7 [a#2,f3,a#3]@7 [a#2,f3,a#3]@2]/2", E: "[[e3,a3,e4]@7 [f3,c4,f4]@3 [f3,c4,f4]@2 [f3,c4,f4]@4]/2",
  F: "[[e3,a3,e4]@7 [f3,c4,f4]@3 [f3,c4,f4]!2 [f3,c4,f4]@2 [f3,c4,f4]@2]/2", G: "~@3 [e3,g#3]",
  H: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ c3@2 c3@2 c3@2", I: "e2@3 ~@13",
})).s("gm_distortion_guitar").gain(0.8)

// bass · electric bass finger · "Krist Novoselic"
const bass = note("<~ A@20 B@8 A@4 C@2 D@2 C@2 E@2 A@16 B@8 A@4 C@2 D@2 C@2 E@2 A@8 F>".pickRestart({
  A: "e1!5 c2!3", B: "a#1@2 b1 c2@2 c2 a#1 e1", C: "[a1@7 a#1@7 a#1@2]/2", D: "[e2@7 f2@3 f2@2 f2@4]/2",
  E: "[e2@7 f2@3 f2!2 f2@2 f2@2]/2", F: "e1@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.8)

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

// drums · rim
const rim = s("rim").struct("<[x!4] ~@85>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~ A@20 B@8 A@4 B@8 A@16 B@8 A@4 B@8 A@4 C@4 ~>".pickRestart({
  A: "~@2 x ~@2 x!3", B: "~ x ~ x", C: "x!4",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~ [x!8]!84 ~>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@85 x>").gain(0.8)

stack(distortion_guitar, bass, kick, rim, snare, open_hat, crash)

More by Nirvana