Strudelify
Come as You Are cover art

1991 · Nevermind

Come as You Are

Nirvana

KeyF minorTempo120 bpm
0:00/0:00
// Come as You Are — Nirvana
// 120 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 121 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 · [...]/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 · "PRG.CHANGE"
const bass = note(`<
  A@8 B C D E@2 C D E@2 C D E@2 C D F G H I H I H I J K C D E@2 C D E@2 C D E@2 C D F G H I H I H I L M ~@64
>`.pickRestart({
  A: "[eb2!2 e2 f2@2 ab2@2 ab2@2 f2 e2 eb2@2 eb2 eb2@3 eb2 e2 f2@2 ab2@2 ab2@2 f2 e2 eb2@2 eb2 eb2@3 eb2 e2 f2@2 ab2@2 ab2@2 f2 e2 eb2@2 eb2 eb2@3 eb2 e2 f2@2 ab2@2 ab2@2 f2 e2 eb2@2 eb2 eb2@2]/8",
  B: "~ eb2 e2 f2@2 ab2@2 ab2", C: "f2!2 e2 eb2 bb2 eb2 eb2@2", D: "bb2 eb2 e2 f2@2 ab2@2 ab2",
  E: "[f2!2 e2 eb2 bb2 eb2 eb2@3 eb2 e2 f2@2 ab2@2 ab2]/2", F: "f2!2 e2 eb2 bb2 eb2!2 ~", G: "bb2 eb2 e2 f2!5",
  H: "f2!3 eb2!5", I: "eb2!3 f2!5", J: "f2!3 eb2!3 eb2@2", K: "eb2!2 e2 f2@2 ab2@2 ab2", L: "f2!2 eb2!6", M: "eb2 ~@7",
})).s("gm_electric_bass_pick").gain(0.64).pan(1)

// chords · distortion guitar · "PRG.CHANGE"
const distortion_guitar = note(`<
  ~@56 A ~@7 B C D C D C D C D C D C D C D C D C D C E@7 F@2 ~@15 B C D C D C D C G@5
>`.pickRestart({
  A: "~ [ab2,eb3]@2 ~@5", B: "[eb2,bb2]!2 [e2,b2] [f2,c3]@2 [ab2,eb3] [f2,c3] [ab2,eb3]",
  C: "[f2,c3]!2 [e2,b2] [eb2,bb2] [bb2,f3] [eb2,bb2] [eb2,bb2]@2", // F5 E5 Eb5 Bb5 Eb5
  D: "[bb2,f3] [eb2,bb2] [e2,b2] [f2,c3]@2 [ab2,eb3] [f2,c3] [ab2,eb3]", // Bb5 Eb5 E5 F5 Ab5 F5 Ab5
  E: "[[bb2,f3] [eb2,bb2] [e2,b2] [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [eb2,bb2]@2 [f2,c3]@2 [f2,c3]@2 [f2,c3]]/7", // Bb5 Eb5 E5 F5 Eb5 F5 Eb5 F5 …
  F: "[~ [f2,c3]@2 [eb2,bb2]@8 ~@5]/2", G: "[[bb2,f3] [eb2,bb2] [e2,b2] [f2,c3]@32 ~@5]/5",
})).s("gm_distortion_guitar").gain(0.64).pan(1)

// chords · overdriven guitar · "PRG.CHANGE"
const overdriven_guitar = note("<~@56 A@8 ~@28 A@16 ~@13>".pickRestart({
  A: "[~@3 [bb1,f2]@8 [db2,ab2]@8 [bb1,f2]@8 [db2,ab2]@8 [bb1,f2]@8 [db2,ab2]@8 [bb1,f2]@8 [db2,ab2]@5]/8", // Bb5 Db5 Bb5 Db5 Bb5 Db5 Bb5 Db5
})).s("gm_overdriven_guitar").gain(0.38).pan(1)

// bass · electric bass pick · "PRG.CHANGE"
const bass_2 = note(`<
  A B C B D B C B E ~ F ~ G ~ F ~ G ~ F ~ G ~ F ~@9 F ~ F ~ G ~ F ~ G ~ F ~ G ~ F ~@74
>`.pickRestart({
  A: "~@3 f2", B: "f2 bb2", C: "bb2@3 f2", D: "bb2@3 ~@3 f2@2", E: "bb2@3 ~@3 f2 ~", F: "~@6 f2 ~", G: "bb2 ~@5 f2 ~",
})).s("gm_electric_bass_pick").gain(0.64).pan(0)

// chords · overdriven guitar · "PRG.CHANGE"
const overdriven_guitar_2 = note("<~@68 A B@2 C D B@2 C D B@2 C D B@2 C E@2 ~@30 F@5>".pickRestart({
  A: "~@3 [c4,g4]@3 [eb4,bb4]@2", B: "[f4,c5]@3 [c4,g4]@3 [eb4,bb4]@2", C: "[f4,c5]@3 [g4,d5]!3 [f4,c5]@2",
  D: "[eb4,bb4]@2 [c4,g4] [c4,g4]@3 [eb4,bb4]@2", E: "[[eb4,bb4]@2 [c4,g4]@7 ~@7]/2", F: "[~@3 [f1,c2,c5,g5]@32 ~@5]/5",
})).s("gm_overdriven_guitar").gain(0.57).pan(0)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@19 C D E D E D E F A B@15 C D E D E D E G B@2 H B H B H B I B J B J B J B J B J B J B J B J B J B@2 D E D E D
  E G B@2 H B H B H B H B H B H B H B I B J B J B J K L ~@4
>`.pickRestart({
  A: "x!3 ~@2 x ~@2", B: "~ x ~@3 x ~@2", C: "~@5 x ~@2", D: "~@2 x ~@3 x!10", E: "x!6 ~@4 x ~@5",
  F: "~@2 x ~@2 x!10 ~", G: "~ x ~ x ~ x ~ x", H: "~@2 x ~ x!2 ~@4 x ~@5", I: "~@2 x ~ x!2 ~@4 x ~@2 x ~@2",
  J: "~@2 x ~@7 x ~@2 x ~@2", K: "~ x ~@3 x ~ x", L: "x!3 ~@5",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A B@3 C B@3 C B@3 C B@3 C B D E F G H I H G H I J B@3 C B@3 C B@3 C B D E F G H I H G H I J K@3 L K@3 M N@20 G H I
  H G H I J K@3 L K@3 L K@3 L K@3 M N@7 O ~@4
>`.pickRestart({
  A: "~@3 x!5", B: "x!8", C: "x!4 ~ x!3", D: "x!6 ~ x", E: "x!2 ~ x!3 ~ x", F: "x!2 ~ x ~ x ~ x", G: "~ x ~ x ~@4",
  H: "~@3 x ~ x ~ x", I: "~ x ~@6", J: "~@3 x ~ x!3", K: "x!4 ~@2 x!2", L: "x!4 ~@3 x", M: "x!4 ~ x ~ x",
  N: "~ x ~ x ~ x ~ x", O: "x!4 ~@4",
})).gain(0.3)

stack(bass, distortion_guitar, overdriven_guitar, bass_2, overdriven_guitar_2, kick, snare, crash)

More by Nirvana