Strudelify
Smells Like Teen Spirit cover art

1991 · Nevermind

Smells Like Teen Spirit

Nirvana

KeyF minorTempo120 bpm
0:00/0:00
// Smells Like Teen Spirit — Nirvana
// 120 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Alternate transcription: 131 bars, about 4:22 at 120 bpm; not verified against the released recording.
// note: Full arrangement: all 131 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 Cobain -Guitar Overdub-.
setcpm(120/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 · electric guitar clean · "Kurt Cobain -Clean Guitar-"
const electric_guitar_clean = note("<A B A C ~@8 D@12 ~@20 D@12 ~@36 D@12 ~@27>".pickRestart({
  A: "[f2,c3,f3]@3 [f2,c3,f3] [f2,c3,f3]@2 ~ [f2,c3,f3]!3 [bb2,f3,bb3]@2 [bb2,f3,bb3] ~ [f2,c3,f3] ~, ~@13 [bb2,f3,bb3]@2 ~", // F5 Bb5 F5 Bb5
  B: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!4 [db3,ab3,db4]@2 [db3,ab3,db4] ~ [ab2,eb3,ab3] ~, ~@13 [db3,ab3,db4]@2 ~", // Ab5 Db5 Ab5 Db5
  C: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@2 ~ [ab2,eb3,ab3]!3 [db3,ab3,db4]@2 [db3,ab3,db4] [db3,ab3,db4]@2 ~", // Ab5 Db5
  D: "[~@3 f4@9 ~@4, ~ c4@3 ~@4]/2",
})).s("gm_electric_guitar_clean").gain(0.5)

// chords · distortion guitar · "Kurt Cobain -Dist Guitar-"
const distortion_guitar = note(`<
  ~@3 A B C B C B C B D ~@12 E@8 B C B C B C B F G H G H ~@12 E@8 B C B C B C B F G H G H B C B C B C B C B C B C B C B
  C I@4 ~@8 E@8 B C B C B C B F B C B C J@3 K L@3
>`.pickRestart({
  A: "~@3 [c2,g2,c3]", // C5
  B: "[f2,c3,f3]@3 [f2,c3,f3] [f2,c3,f3]@4 [f2,c3,f3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [f2,c3,f3]@2", // F5 Bb5 F5
  C: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@4 [ab2,eb3,ab3]!2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [ab2,eb3,ab3]@2", // Ab5 Db5 Ab5
  D: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@4 [ab2,eb3,ab3]!2 [db3,ab3,db4]@2 [db3,ab3,db4] [db3,ab3,db4]@2 ~", // Ab5 Db5
  E: "[f2,c3,f3]/2", // F5
  F: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@4 [ab2,eb3,ab3]!2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [db3,ab3,db4]@2", // Ab5 Db5
  G: "[f2,c3,f3]@2 [e2,b2,e3] [f2,c3,f3] [gb2,db3,gb3]!2 gb3@2", // F5 E5 F5 Gb5
  H: "[f2,c3,f3]@2 [e2,b2,e3] [f2,c3,f3] [bb2,f3,bb3]@2 [ab2,eb3,ab3]@2", I: "[f2,c3,f3]/4",
  J: "[[f2,c3,f3]@3 [f2,c3,f3] [f2,c3,f3]@3 [f2,c3,f3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [f2,c3,f3]@2 [ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@4 [ab2,eb3,ab3]!2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [ab2,eb3,ab3]@2 [f2,c3,f3]@3 [f2,c3,f3] [f2,c3,f3]@4 [f2,c3,f3]!2 [bb2,f3,bb3]@2 ~ [f2,c3,f3]@2 [ab2,eb3,ab3]@2, ~@43 [bb2,f3,bb3]@2 ~@3]/3", // F5 Bb5 F5 Ab5 Db5 Ab5 F5 Bb5 …
  K: "~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3]@4 [ab2,eb3,ab3]!2 [db3,ab3,db4]@2 [db3,ab3,db4]@2 [ab2,eb3,ab3]@2 ~", // Ab5 Db5 Ab5
  L: "[[f2,c3,f3]@35 ~@13]/3", // F5
})).s("gm_distortion_guitar").gain(0.45)

// chords · overdriven guitar · "Kurt Cobain -Guitar Overdub-"
const overdriven_guitar = note(`<
  ~@4 A B A B A B A B ~@12 C D C D C D C E A B A B A B A B ~@16 C D C D C D C F A B A B A B A B ~@4 G@2 H I@3 H J@3 K@6
  ~@12 C D C D C D C L A B A B A B A B A B A B M N M N ~@3
>`.pickRestart({
  A: "~@7 [f2,c3,f3] ~@8", B: "~@7 [ab2,eb3,ab3] ~@8", C: "~ f4 c4 f4", D: "c4 f4 c4 f4", E: "c4 f4 c4 [a1,e2,a2]",
  F: "c4 f4 c4 [g1,d2,g2]", G: "[~@3 eb4@3 ~@4 c4@2 f4 ~ eb4@2, ~@7 ab3@6 f4@2 ~]/2", H: "~@2 db4 c4@2 ~@3",
  I: "[~@6 c4@4 bb3@2 ~@2 g3@5 ~@3 eb4@6 ~@2 ab3@6 c4@4 f4@4 eb4@4, ~ bb3 ~@10]/3",
  J: "[~@3 c4@2 bb3 ~@4 ab3 g3@2 ~ ab3 g3@4 g3@3 g3!2, ~@2 bb3@2 ~@3 g3@4 ~@13]/3",
  K: "[~@2 ab3 g3@2 ~ ab3 g3@4 g3@3 g3!2]/2", L: "c4 f4 c4 [g1,d2,g2,f4]", M: "~@6 [f2,c3,f3] ~@9",
  N: "~@6 [ab2,eb3,ab3] ~@9", // Ab5
})).s("gm_overdriven_guitar").gain(0.5)

// bass · electric bass finger · "Chris Novoselic -Bass-"
const bass = note(`<
  ~@4 A B A B A B A B C D C D C D C D C D C D C D C D C D C D A B A B A B A B E F E F C D C D C D C D C D C D C D C D C
  D C D A B A B A B A B E F E F A B A B A B A B A B A B A B A B C D C D C D C D C D C D C D C D C D C D A B A B A B A B
  A B A B G@3 H I ~@2
>`.pickRestart({
  A: "f1@2 ~ f1 f1@2 ~ f1!3 bb1@2 bb1@2 f1@2", B: "ab1@2 ~ ab1 ab1@2 ~ ab1!3 db2@2 db2@2 ab1@2",
  C: "f1 ~ f1 ~ f1 ~ f1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", D: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ db2 ~ db2 ~ db2 ~ db2 ~",
  E: "f1@3 ~ e1@2 f1@2 gb1@2 gb1@2 ~@4", F: "f1@2 e1 f1 bb1@2 ab1@2",
  G: "[f1@2 ~ f1 f1@2 f1!3 bb1@2 bb1@2 f1@2 ab1@2 ~ ab1 ab1@2 ~ ab1!3 db2@2 db2@2 ab1@2 f1@2 ~ f1 f1@2 ~ f1!3 bb1@2 ~ f1@2 ab1@2, ~@43 bb1@2 ~@3]/3",
  H: "~ ab1 ~ ab1@2 ~ ab1!3 db2@2 db2@2 ab1@2 ~", I: "f1",
})).s("gm_electric_bass_finger").gain(0.5)

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

// drums · snare
const snare = s("snare_modern:14").struct(`<
  ~@3 A B@7 C D@11 E F G F G F G F H B@8 I J I J D@11 E F G F G F G F H B@8 I J I J B@15 K D@11 E F G F G F G F H B@12 L
  M N O P ~@2
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x!2 ~@2 x!2 ~@2", C: "x ~@3 x ~@3 x ~ x ~ x!4", D: "~ x ~ x", E: "~@2 x ~@3 x!2",
  F: "x!2 ~@2 x ~@3 x!2 ~@2 x ~@3", G: "x!2 ~@2 x ~@3 x!2 ~@2 x ~ x ~", H: "x!13 ~@3", I: "x ~ x ~ x!2 ~@2",
  J: "x ~@3 x ~@3 x ~ x ~ x!3 ~", K: "x ~@3 x ~@3 x!8", L: "x ~@3 x ~@2 x ~@3 x ~@3 x", M: "~@3 x ~@3 x ~@3 x ~@3 x",
  N: "~@3 x ~@3 x ~@3 x ~@2 x ~", O: "~@3 x ~@3 x ~@3 x!3 ~ x", P: "x",
})).gain(0.35)

// drums · low tom
const low_tom = s("tom2_stick:4").struct("<~@40 A B A B ~@28 A B A B ~@55>".pickRestart({
  A: "~@4 x!2 ~@2", B: "~@8 x ~ x ~ x!3 ~",
})).gain(0.35)

// drums · open hat
const open_hat = s("hihat:13").struct("<~@3 A B@8 ~@20 B@8 C@4 ~@20 B@8 C@4 B@16 ~@20 B@12 D E F G H ~@2>".pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", B: "x!8", C: "x!6 ~@2", D: "x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x",
  E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", F: "~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~", G: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~@2",
  H: "x",
})).gain(0.21)

// drums · high tom
const high_tom = s("tom_stick:4").struct("<~@41 A ~ A ~@29 A ~ A ~@55>".pickRestart({
  A: "~@11 x ~@4",
})).gain(0.35)

// drums · crash
const crash = s("sus_cymbal2:9").struct(`<
  ~@3 A B@8 ~@11 C B@16 D E D E ~@11 C B@16 D E D E B@16 ~@11 C B@20 F G H I J ~@2
>`.pickRestart({
  A: "~@3 x", B: "x!4", C: "~@6 x!2", D: "x!3 ~", E: "x ~@3 x ~@3 x ~@3 x!3 ~", F: "x ~@3 x ~@2 x ~@3 x ~@3 x",
  G: "~@3 x ~@3 x ~@3 x ~@3 x", H: "~@3 x ~@3 x ~@3 x ~@2 x ~", I: "~@3 x ~@3 x ~@3 x!3 ~ x", J: "x",
})).gain(0.19)

// drums · ride
const ride = s("sus_cymbal:15").struct(`<
  ~@3 A B@8 C@12 B@16 D@4 C@12 B@16 D@4 B@16 C@12 B@20 E F G H I ~@2
>`.pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", B: "x!8", C: "x!4", D: "x!6 ~@2", E: "x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x",
  F: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", G: "~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~", H: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~@2",
  I: "x",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("<~@3 A B@8 ~@20 B@8 C@4 ~@20 B@8 C@4 B@16 ~@20 B@12 D E F G H ~@2>".pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x!4", B: "x!8", C: "x!6 ~@2", D: "x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x",
  E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", F: "~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~", G: "x ~@2 x ~ x ~ x ~ x ~ x ~ x ~@2",
  H: "x",
})).gain(0.23)

stack(
  electric_guitar_clean, distortion_guitar, overdriven_guitar, bass, kick, snare, low_tom, open_hat, high_tom, crash,
  ride, tambourine
)

More by Nirvana