Strudelify
Rape Me cover art

In Utero

Rape Me

Nirvana

KeyE♭ minorTempo117 bpm
0:00/0:00
// Rape Me — Nirvana
// 117 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Kurt -Guitar II-.
setcpm(117/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.

// chords · acoustic guitar steel · "Kurt -Guitar I-"
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N O P Q R O P Q S T U T U T U T V O P Q R O P Q W X Y X Y X Y X Z AA AB@2 AC T U T U T U T V
  O P Q R O P Q R O P O P O P O AD@4 ~
>`.pickRestart({
  A: "~@4 [ab2,eb3,ab3] ~@3 [ab2,eb3,ab3] ~@3 [ab2,eb3,ab3] ~@3", // Ab5
  B: "[ab2,eb3,ab3] ~@3 [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@2 ~ [ab2,eb3,ab3] [ab2,db3,gb3,bb3] [b2,eb3,gb3,b3]!2 ~", // Ab5 Gb B
  C: "[b2,eb3,gb3,b3]!2 [ab2,db3,gb3,bb3] ~ [eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3,bb3,eb4] ~ [eb2,bb2,eb3,bb3,eb4]!2 [eb2,ab2,db3,gb3,bb3,eb4] [gb2,bb2,db3,gb3,bb3,gb4]!2 ~", // B Gb Eb5 Ebm7 Gb
  D: "[gb2,bb2,db3,gb3,bb3,gb4]!2 eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@2 ~ [ab2,eb3,ab3] [ab2,db3,gb3,bb3] [b2,eb3,gb3,b3]!2 ~", // Gb Ab5 Gb B
  E: "[b2,eb3,gb3,b3]!2 [ab2,db3,gb3,bb3] ~ [eb2,bb2,eb3,bb3]@3 ~ [eb2,bb2,eb3,bb3,eb4]@2 ~ [eb2,bb2,eb3,bb3,eb4] [eb2,ab2,db3,gb3,bb3,eb4] [gb2,bb2,db3,gb3,bb3,gb4]!2 ~", // B Gb Eb5 Ebm7 Gb
  F: "[gb2,bb2,db3,gb3,bb3,gb4]!2 eb2 ~ ab2@3 ~ [eb3,ab3,c4] ~ ab2 ~ b2 ~ eb3 ~", // Gb Ab
  G: "[gb3,b3] ~ b2 ~ eb2@3 ~ [eb3,ab3] ~ eb2 ~ gb2 ~ db3 ~", // B5 Ab5
  H: "[gb3,b3] ~ eb2 ~ ab2@3 ~ [eb3,ab3,db4] ~ ab2 ~ b2 ~ gb3 ~", // B5 Dbsus2
  I: "[b3,eb4] ~ ab2 ~ eb2@3 ~ [eb3,ab3] ~ eb2 ~ gb2 ~ db3 ~", // B Ab5
  J: "[gb3,bb3] ~ eb2 ~ ab2@3 ~ [eb3,ab3,c4] ~ ab2 ~ b2 ~ gb3 ~", // Gb Ab
  K: "[b3,eb4] ~ ab2 ~ eb2@3 ~ [eb3,bb3] ~ eb2 ~ gb2 ~ db3 ~", // B Eb5
  L: "[gb3,bb3] ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [eb3,ab3,c4] ~ ab2 ~ [b2,eb3,gb3] ~ [b2,eb3,gb3,b3] ~", // Gb Ab5 Ab B
  M: "[b2,eb3,gb3,b3] ~ eb2 ~ [eb2,bb2,eb3,bb3]@3 ~ [eb2,bb2,eb3,bb3] ~ [eb2,bb2,eb3,bb3]!2 [eb2,ab2,db3,gb3,bb3,eb4] [gb2,bb2,db3,gb3,bb3,gb4]!2 ~", // B Eb5 Ebm7 Gb
  N: "[gb2,bb2,db3,gb3,bb3,gb4] ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@3 ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // Gb Ab5 B5
  O: "[b2,gb3,b3]@3 ~ [eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3]@3 ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~", // B5 Eb5 Gb5
  P: "[gb2,db3,gb3] ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@3 ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // Gb5 Ab5 B5
  Q: "[b2,gb3,b3]@3 ~ [eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3]@3 ~ gb2 ~ eb2 ~", // B5 Eb5
  R: "gb2 ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@3 ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // Ab5 B5
  S: "gb2 ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3]!2 [ab2,db3,gb3,bb3] [b2,eb3,gb3,b3,eb4]!2 ~", // Ab5 Gb B
  T: "[b2,eb3,gb3,b3,eb4] ~ [ab2,db3,gb3,bb3] ~ [eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3,bb3,eb4] ~ [eb2,bb2,eb3,bb3,eb4]!2 [eb2,ab2,db3,gb3,bb3,eb4] [gb2,bb2,db3,bb3,gb4]!2 ~", // B Gb Eb5 Ebm7 Gb
  U: "[gb2,bb2,db3,bb3,gb4] ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3]!2 [ab2,db3,gb3,bb3] [b2,eb3,gb3,b3,eb4]!2 ~", // Gb Ab5 Gb B
  V: "[gb2,bb2,db3,bb3,gb4] ~ eb2 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@3 ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // Gb Ab5 B5
  W: "gb2 ~ eb2 ~ [b2,gb3,b3]@3 ~ [b2,gb3,b3]@3 ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // B5
  X: "[b2,gb3,b3]@3 ~ [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@3 ~ gb2 ~ f2 ~", // B5 Ab5
  Y: "e2 ~ eb2 ~ [b2,gb3,b3]@3 ~ [b2,gb3,b3]@3 ~ [b2,gb3,b3] ~ [b2,gb3,b3] ~", // B5
  Z: "e2 ~ eb2 ~ [e2,b2,e3]@3 ~ [e2,b2,e3]@2 ~ [e2,b2,e3]!4 ~", // E5
  AA: "[e2,b2,e3] ~ [e2,b2,e3] ~ [gb2,db3,gb3]@3 ~ [gb2,db3,gb3]@2 ~ [gb2,db3,gb3]!4 ~", // E5 Gb5
  AB: "[[gb2,db3,gb3] ~ [gb2,db3,gb3] ~@9 [bb3,eb4]@20, ~@4 [eb2,bb2,eb3]@27 ~]/2", // Gb5 Eb5
  AC: "~@4 [ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3]!2 [ab2,db3,gb3,bb3] [b2,eb3,gb3,b3,eb4]!2 ~", // Ab5 Gb B
  AD: "[[gb2,db3,gb3] ~ eb2 ~ [ab2,eb3,ab3]@51 ~@9]/4", // Gb5 Ab5
})).s("gm_acoustic_guitar_steel").gain(0.45)

// chords · overdriven guitar · "Kurt -Guitar II-"
const overdriven_guitar = note(`<
  ~@12 A@2 B ~ B ~ B ~ B ~@9 B ~ B ~@3 B ~@3 C ~@17 B ~ B ~@3 B ~ D E D E D E D E ~@4
>`.pickRestart({
  A: "[~@3 b3@2 ~@3]/2", B: "~@2 eb2 ~@13", C: "~@4 g2@3 ~@9", D: "~@12 eb3 ~@3", E: "b2 ~ bb2 ~@13",
})).s("gm_overdriven_guitar").gain(0.4)

// bass · acoustic bass · "Krist Novoselic -Bass-"
const bass = note(`<
  ~@13 A B C D E B C D E B C D E B C D E B C D E B C D F G H G H G H G I J K@3 ~@7 A B C D E B C D E L M L M L M L N@2
  ~@3
>`.pickRestart({
  A: "~@4 ab1@3 ~ ab1 ~ ab1 ~ b1 ~ b1 ~", B: "b1 ~ b1 ~ eb1@3 ~ eb1 ~ eb1 ~ gb1 ~ gb1 ~",
  C: "gb1 ~ gb1 ~ ab1@3 ~ ab1 ~ ab1 ~ b1 ~ b1 ~", D: "db2 ~ db2 ~ eb2@3 ~ eb2 ~ eb2 ~ gb2 ~ eb2 ~",
  E: "gb2 ~ eb2 ~ ab1@3 ~ ab1 ~ ab1 ~ b1 ~ b1 ~", F: "gb2 ~ eb2 ~ b1@3 ~ b1 ~ b1 ~ b1 ~ a1 ~",
  G: "b1 ~ d2 ~ ab1@3 ~ ab1 ~ ab1 ~ gb1 ~ f1 ~", H: "e1 ~ eb1 ~ b1@3 ~ b1 ~ b1 ~ b1 ~ a1 ~",
  I: "e1 ~ eb1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", J: "e1 ~ e1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~ gb1 ~",
  K: "[gb1 ~ ab1 ~ eb2@31 ~@13]/3", L: "db2 ~ db2 ~ eb1@3 ~ eb1@2 ~ eb1 gb2 gb1!2 ~",
  M: "gb1 ~ eb1 ~ ab1@3 ~ ab1 ~ ab1 ~ b1 ~ b1 ~", N: "[gb1 ~ eb1 ~ ab1@19 ~@9]/2",
})).s("gm_acoustic_bass").gain(0.45)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@37 A B C B C B C B D ~ E ~@25 F ~@4>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@6 x ~@6 x ~@2", C: "x ~@2 x ~@3 x", D: "x", E: "~ x ~@2", F: "~ x!4 ~@11",
})).gain(0.23)

// drums · mid tom
const mid_tom = s("mt").struct("<~@73 [~ x ~@2] ~@2 [~@7 x!2 ~@4 x ~@2] ~>").gain(0.14)

// drums · high tom
const high_tom = s("ht").struct("<~@73 [~ x ~@2] ~@2 [~ x ~@4 x ~@9] ~>").gain(0.14)

// drums · china
const china = s("cr").struct("<~@73 [~ x ~@2] ~@2 [~@13 x ~@2] ~>").gain(0.23)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@13 A B@6 C D ~@7 A B@6 C E F E F E F E F G@2 H ~@9 A B@6 C B@8 I ~@4
>`.pickRestart({
  A: "~@4 x ~@3 x ~@3 x!3 ~", B: "x ~@3 x ~@3 x ~@3 x!3 ~", C: "x ~@3 x ~@3 x ~@5 x!2", D: "x", E: "x!4",
  F: "x ~@3 x ~@3 x ~@3 x ~ x!2", G: "x!2", H: "x!2 ~@2", I: "x ~ x!3 ~@11",
})).gain(0.23)

stack(acoustic_guitar_steel, overdriven_guitar, bass, kick, snare, low_tom, mid_tom, high_tom, china, ride_bell)

More by Nirvana