Strudelify

Molly's Lips

Nirvana

KeyG majorTempo167 bpm
0:00/0:00
// Molly's Lips — Nirvana
// 167 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(167/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 · overdriven guitar
const overdriven_guitar = note(`<
  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 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 C@2
>`.pickRestart({
  A: "[g2,d3,g3]@2 [g2,d3,g3] [e2,b2,e3] [c3,g3,c4]@2 [c3,g3,c4] [e2,b2,e3]", // G5 E5 C5 E5
  B: "[g2,d3,g3]@2 [g2,d3,g3] [e2,b2,e3] [c3,g3,c4]!3 [b2,f#3,b3]", C: "[[g2,d3,g3]@31 ~]/2",
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  ~@4 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 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 C@2
>`.pickRestart({
  A: "g1@2 g1 e1 c2@2 c2 e1", B: "g1@2 g1 e1 c2!3 b1", C: "g1/2",
})).s("gm_electric_bass_finger").gain(0.64)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@3 [~@2 x!6] ~@70>").gain(0.64)

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

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

// drums · ride
const ride = s("rd").struct("<~@16 A B@3 A B@3 ~@8 A B@3 A B@3 ~@16 A B@3 A B@3 ~@10>".pickRestart({
  A: "~ x!3", B: "x!4",
})).gain(0.64)

stack(overdriven_guitar, bass, kick, snare, hihat, open_hat, crash, ride)

More by Nirvana