Strudelify

Stay Away

Nirvana

KeyD minorTempo175 bpm
0:00/0:00
// Stay Away — Nirvana
// 175 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 lead 2 sawtooth (copy of ch 3 lead 2 sawtooth, 0.217 beats late)
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(175/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.

// bass · electric bass pick
const bass = note(`<
  ~@2 A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B D@2 E F D@2 E F A
  B A B A B A B A B A B A B A B A B A B A B A B D@2 E F D@2 E F A B A B A B A B A B A B A B A C A B A B A B A B G@11 H
>`.pickRestart({
  A: "d2@2 d2@2 ~@2 d2 e2 b1@2 b1@2 ~@2 b1!2", B: "f2!2 ~ c2@2 a1 c2 db2", C: "f2!2 ~ c2 ~ a1 c2 db2",
  D: "[d2@2 d2@2 d2 c2@2 d2@2 c2 d2 f2 d2 c2 a1 g1]/2", E: "ab1!4 eb2!3 ab2", F: "ab2!8", G: "d2!16", H: "d2!9 ~@7",
})).s("gm_electric_bass_pick").gain(0.64)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@10 A B A B A B A B ~ C ~ C ~ C ~ C A B A B A B A B ~ D ~ D ~ D ~ D A B A B A B A B E@2 F G E@2 F G A B A B A B A B ~
  C ~ C ~ C ~ C A B A B A B A B E@2 F G E@2 F G A B A B A B A B ~@8 A B A B A B A B H@11 I
>`.pickRestart({
  A: "[d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [b2,gb3,b3] [b2,gb3,b3]@2 [b2,gb3,b3]", // D5 B5
  B: "[f3,c4,f4] [f3,c4,f4]@2 [c3,g3,c4]@2 [a2,e3,a3] [c3,g3,c4] [db3,ab3,db4]", // F5 C5 A5 C5 Db5
  C: "~ [c4,g4,c5]!4 [d4,a4,d5] [c4,g4,c5] [bb3,f4,bb4]", D: "~ [c3,g3,c4]!4 [d3,a3,d4] [c3,g3,c4] [bb2,f3,bb3]",
  E: "[d3,a3,d4]!8", F: "[ab2,eb3,ab3]!8", G: "[ab2,eb3,ab3] [ab3,eb4,ab4]!4 [a3,e4,a4] [ab3,eb4,ab4] [gb3,db4,gb4]",
  H: "[d3,a3,d4]!16", I: "[d3,a3,d4]!9 ~@7",
})).s("gm_overdriven_guitar").gain(0.64)

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

// drums · snare
const snare = s("sd").struct(`<
  A@10 B C B C B C B C B C B C B C B A B C B C B C B C B C B C B C B A B C B C B C B C B@7 A B C B C B C B C B C B C B C
  B A B C B C B C B C B@7 A B C B C B C B C A@8 B C B C B C B C A@8 ~@2 D E
>`.pickRestart({
  A: "x!16", B: "~ x ~ x", C: "~ x!3", D: "x", E: "x!2",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@18 A@7 ~@9 A@7 ~@25 A@7 ~@49 B@3 C>".pickRestart({
  A: "x!4", B: "~@3 x ~@3 x ~@3 x ~@3 x", C: "~ x ~@2",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~@49 B@3 C>".pickRestart({
  A: "~@6 x!2 ~@6 x!2", B: "~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~", C: "~ x ~@2",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B@2 C ~@2 B C ~@2 A B A B A B A B ~@8 A B A B A B A B@2 C
  ~@2 B C ~@2 A B A B A B A B ~@8 A B A B A B A B ~@12
>`.pickRestart({
  A: "~ x ~ x", B: "~ x!3", C: "x!4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@122 [x!4]!3 ~>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B@2 ~ C@2 B ~ C B A B A B A B A B ~@8 A B A B A B A B@2 ~
  C@2 B ~ C B A B A B A B A B ~@8 A B A B A B A B ~@8 B@3 ~
>`.pickRestart({
  A: "x!2", B: "x", C: "x!4",
})).gain(0.64)

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

More by Nirvana