Strudelify

Smell Like Teen Spirit

Nirvana

KeyF minorTempo120 bpm
0:00/0:00
// Smell 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: 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): guitar program 29.
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 · harpsichord
const harpsichord = 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] f3 [f2,c3,f3] ~, ~@13 [bb2,bb3]@2 ~", // F5 Bb5 F5 Bb
  B: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3] [ab2,eb3,ab3]@2 [ab2,eb3,ab3]!4 [db3,ab3,db4]@2 [db3,ab3,db4] ab3 [ab2,eb3,ab3] ~, ~@13 [db3,db4]@2 ~", // Ab5 Db5 Ab5 Db
  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_harpsichord").gain(0.51)

// chords · distortion 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.46)

// chords · overdriven guitar
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.51)

// bass · electric bass finger
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.51)

// drums · kick
const kick = s("bd").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.51)

// drums · snare
const snare = s("sd").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.51)

// drums · low tom
const low_tom = s("lt").struct("<~@40 [~@5 x ~@2]!4 ~@28 [~@5 x ~@2]!4 ~@55>").gain(0.51)

stack(harpsichord, distortion_guitar, overdriven_guitar, bass, kick, snare, low_tom)

More by Nirvana