Strudelify
Lithium cover art

Nirvana

Lithium

Nirvana

KeyA minorTempo124 bpm
0:00/0:00
// Lithium — Nirvana
// 124 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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.

// other · electric guitar muted · "guitar 1- Kurt"
const electric_guitar_muted = note(`<
  A B C D A E F G H I J K A E F G A E F ~@13 A E F G H I J K A E F G A E F ~@35 A E F G H I J K A E F G A E F ~@37
>`.pickRestart({
  A: "e2@3 ~ e2 ~ e2@2 g#2@2 d#3@2 g#2 ~ e2@2", B: "c#3@2 [g#3,c#4]@2 [g#3,c#4] ~ e2@2 a2@2 e3@2 a3@2 e2@2",
  C: "[c3,g3]@2 [c3,g3]!2 [d3,a3]!2 [d3,a3,d4] a2", D: "[b2,f#3]@2 [b2,f#3]!2 [d3,a3]!2 [d3,a3,d4] a2",
  E: "c#3 g#3 ~ e2 a2 e3 a3 e2", F: "c3@2 [g3,c4] c3 [d3,a3]!3 a2",
  G: "[b2,f#3]@2 [b3,d#4] [f#3,b3] [a3,d4] d3 [d4,f#4] e2", H: "e2@3 ~ e2 ~ e2@2 g#2@2 d#3@2 ~@2 c#3@2",
  I: "c#3 [g#3,c#4] ~ e2 a2 e3 a3 e2", J: "c3@2 c4 c3 d3!2 [g3,c4] a2", K: "b2@2 [b3,d#4] b2 d3 [d3,a3] [a3,d4] e2",
})).s("gm_electric_guitar_muted").gain(0.8)

// chords · distortion guitar · "guitar 2- Kurt"
const distortion_guitar = note(`<
  ~@19 A B C D E B C D E B C D E ~@15 A B C D E B C D E B C D E F G F H F G F G F G F H F G F I J K ~@19 A B C D E B C D
  E B C D E F G F H F G F G F G F H F G F I J L M@6
>`.pickRestart({
  A: "[b2,f#3]@2 [b2,f#3]!2 [d3,a3,d4]!4", B: "[e2,b2,e3]@2 [e2,b2,e3]!2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]!2",
  C: "[c#3,g#3,c#4]@2 [c#3,g#3,c#4]!2 [a2,e3,a3]@2 [a2,e3,a3] [a2,d3,g3]", D: "[c3,g3,c4]@2 [c3,g3,c4]!2 [d3,a3,d4]!4",
  E: "[b2,f#3,b3]@2 [b2,f#3,b3]!2 [d3,a3,d4]@2 [d3,a3,d4]!2", F: "[a2,e3,a3]@2 a2!2 [c3,g3,c4]@2 [c3,g3,c4] a2",
  G: "[a2,e3,a3]@2 [a2,e3,a3] a2 [c3,g3,c4] e2 g2 g#2", H: "[a2,e3,a3]@2 a2!2 [c3,g3,c4]!3 a2",
  I: "[a2,e3,a3]@2 [a2,e3,a3] a2 [c3,g3,c4]!4", J: "[d3,a3,d4]@2 [d3,a3,d4]!5 a2",
  K: "[b2,f#3,b3]@2 [b2,f#3,b3]!3 e2 g2 e2", L: "[b2,f#3,b3]@2 [b2,f#3,b3]!3 e2 g2@2", M: "[~ e2@80 ~@15]/6",
})).s("gm_distortion_guitar").gain(0.8)

// bass · electric bass pick · "bass- Krist"
const bass = note(`<
  ~@19 A B C D E B F D E B C D E G H I J G K I L G H I J G M N O B C D E B F D E B F D E P Q R S P Q R S P Q T U V Q R W
  X Y G Z I AA G H I J G K I L G H I J G M N O B C D E B F D E B F D E P Q R S P Q R S P Q T U V Q R W X AB AC@6
>`.pickRestart({
  A: "~@3 e2", B: "e1@3 e1 g#1@2 ~ g#1", C: "c#2@2 c#2@3 ~ c#2@2 a2@2 a2@2 a2@2 e2@2",
  D: "g2@2 g2@2 g2@2 g2!2 a2@2 a2@2 a2@4", E: "b1!2 b1@2 d2!4", F: "c#2@2 ~ c#2 a2!3 e2", G: "e2@2 ~ e2 d#2@2 ~ d#2",
  H: "c#2@2 ~ c#2 a1@2 ~ a1", I: "g2@2 ~ g2 a2@2 a2@2", J: "b1!2 b1@2 d2@2 d2@2", K: "c#2@2 ~ c#2 a1@2 a1@2",
  L: "b1!2 d2!2", M: "c#2@2 ~ c#2 a1 a1@2 a1", N: "c2!2 g2 c2 d2!2 a2 d2", O: "b1!4 d2!4", P: "a1@2 a1!2 c2@2 c2@2",
  Q: "a1@2 a1 c2@2 d2 e2 g2", R: "a2@2 a2!2 g2 e2 g2 e2", S: "e2 d#2 d2 a1 c2 a1 c2 d2", T: "a2@2 a2!2 g2 e2 g2 a2",
  U: "a2 c3 a2 g#2 g2 e2 d2 c2", V: "a1!4 c2@2 c2@2", W: "e2 d#2 d2!2 c2!2 a1 c2", X: "d2!8", Y: "b1!5 e1 g1 a1",
  Z: "c#2@2 ~ c#2 a1 g1 g#1 a1", AA: "b1@2 b1@2 d2!4", AB: "b1!5 e1 g1@2", AC: "[~ e1@80 ~@15]/6",
})).s("gm_electric_bass_pick").gain(0.8)

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

// drums · rim
const rim = s("rim").struct("<~@4 [~ x ~ x]!15 ~@13 [~ x ~ x]!15 ~@31 [~ x ~ x]!19 ~@37>").gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@19 A@3 B C A@2 B C A@2 B C ~@15 A@3 B C A@2 B C A@2 B C A D A D A D A D A D A D A D A E A@2 ~@19 A@3 B C A@2 B C A@2
  B C A D A D A D A D A D A D A D A E A@2 ~@6
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~ x!3", D: "~@2 x ~@2 x ~ x", E: "~@4 x ~@3 x ~@3 x ~ x!2",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@19 [~ x] ~@27 [~ x] ~@49 [~ x] ~@36>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@78 x ~@55>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@60 A B A B A B A B A B A B A B A B A C ~@32 A B A B A B A B A B A B A B A B A D ~@6
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~ x ~ x!3 ~", D: "x ~ x ~ x!2 ~@2",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~ A ~ A ~ A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~ A ~ A B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@21 A ~ A ~ A ~ A ~ A ~
  A B A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A C D ~@5
>`.pickRestart({
  A: "x", B: "~ x!3", C: "~@3 x", D: "~ x ~@14",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct(`<
  ~@4 A@15 B C A C A C A C A C A C A@16 B C A C A C A C A C A C B ~@18 A@19 B C A C A C A C A C A C B ~@24
>`.pickRestart({
  A: "x!8", B: "x!2 ~@6", C: "~ x!7",
})).gain(0.64)

stack(electric_guitar_muted, distortion_guitar, bass, kick, rim, snare, low_tom, hihat, open_hat, crash, ride)

More by Nirvana