Strudelify
Something in the Way cover art

Nevermind

Something in the Way

Nirvana

KeyE minorTempo58 bpm
0:00/0:00
// Something in the Way — Nirvana
// 58 bpm, 4/4, key E 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 (4/4 at bar 1, 2/4 at bar 28, 4/4 at bar 28) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 51 bars on a 48-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 2.
setcpm(58/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 · "guitar 1"
const electric_guitar_clean = note("<A B C D@3 E F G@2 H@3 I@7 J I J I J I K@4 L M N@3 O P ~@14>".pickRestart({
  A: "~@5 [e2,b2,e3]@13 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@4", // E5 C5
  B: "~@3 [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 [c2,g2,c3]@13", // C5 E5 C5
  C: "[g2,c3]@6 [c2,g2,c3]@3 [g2,c3]@3 ~ [e2,b2,e3]@12 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@10", // C5 E5 C5
  D: "[~@3 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 [g2,c3]@3 ~ [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@2]/3", // C5 E5 C5 E5 C5 E5
  E: "~ [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 ~ [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@2", // C5 E5
  F: "~ [e2,b2,e3]@3 ~ [c2,g2,c3]@12 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@5", // E5 C5 E5
  G: "[~@2 [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 ~ [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 [e2,b2,e3]@3 ~ [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@11]/2", // E5 C5 E5 C5 E5
  H: "[~@2 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 [g2,c3]@3 ~ [e2,b2,e3]@12 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@10 [g2,c3,g3]@3 [g2,c3,g3]@3 [g2,c3,g3]@3 ~ [g2,c3,g3]@3 [g2,c3,g3]@3]/3", // E5 C5 E5 C5 E5 C5
  I: "[e2,b2,e3]@4 [e2,b2,e3]@2 [e2,b2,e3]!2 [c2,g2,c3]@4 [g2,c3]@2 [c2,g2,c3] [g2,c3]", // E5 C5
  J: "[e2,b2,e3]@4 [e2,b2,e3]@2 [e2,b2,e3]!2 [c2,g2,c3]@3 [g2,c3,g3]!5", // E5 C5
  K: "[[e2,b2,e3]@12 [e2,b2,e3]@6 [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@48 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 [g2,c3]@3 ~ [e2,b2,e3]@12 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@4]/4", // E5 C5 E5 C5 E5 C5 E5
  L: "~@2 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 [g2,c3]@3 ~ [e2,b2,e3]@13", // E5 C5 E5
  M: "[e2,b2,e3]@6 [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@10", // E5 C5 E5
  N: "[~@3 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 ~ [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 [e2,b2,e3]@3 ~ [c2,g2,c3]@12 [g2,c3]@6 ~ [c2,g2,c3]@3 [g2,c3]@3 [e2,b2,e3]@13 [e2,b2,e3]@6 ~ [e2,b2,e3]@3 [e2,b2,e3]@3 [c2,g2,c3]@13 [g2,c3]@6 [c2,g2,c3]@3 ~ [g2,c3]@2]/3", // E5 C5 E5 C5 E5 C5
  O: "~ [e2,b2,e3]@13 [e2,b2,e3]@6 [e2,b2,e3]@3 [e2,b2,e3]@3 ~ [c2,g2,c3]@9 [g2,c3,g3]@3 ~ [g2,c3,g3]@3 [g2,c3,g3]@3 [g2,c3,g3]@2", // E5 C5
  P: "~ [g2,c3,g3]@3 ~@44", // C5
})).s("gm_electric_guitar_clean").gain(0.8)

// bass · electric bass pick · "bass"
const bass = note("<~@13 A@13 B@2 ~@8 C D@12 E@2>".pickRestart({
  A: "e1@4 e1@2 e1!2 c1@4 c1@2 c1!2", B: "[e1@4 e1@2 e1!2 c1@16 ~@8]/2", C: "~@4 e1@12 e1@6 e1@3 e1@3 c1@12 c1@6 c1@2",
  D: "~ c1@3 e1@12 e1@6 e1@3 e1@3 c1@12 c1@6 c1@2", E: "[~ c1@3 e1@12 e1@6 e1@3 e1@3 c1@48 ~@20]/2",
})).s("gm_electric_bass_pick").gain(0.8)

// chords · distortion guitar · "guitar 2"
const distortion_guitar = note("<~@36 A@7 B A B A B A@2 ~>".pickRestart({
  A: "~@22 b2@3 ~@23", B: "~@22 b2@3 ~@18 [g2,c3,g3]@3 ~@2",
})).s("gm_distortion_guitar").gain(0.8).pan(0.2)

// chords · distortion guitar · "guitar 3"
const distortion_guitar_2 = note("<~@36 A@8 B@7>".pickRestart({
  A: "[~@4 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2,c4]@2, ~@37 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@11]/8", // E5 E E5 C5 E5 E E5 C5 …
  B: "[~ [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@9 [c2,g2,c3]@3 [c2,g2,c3,c4]@6 [c2,g2]@3 [g2,c3]@3 [e2,b2,e3]@9 [e2,b2,e3]@3 [e2,b2,e3]@6 [e2,e3]@3 [b2,e3]@3 [c2,g2,c3]@48 ~@20, ~@37 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@33 g3@9 c4@6 ~@92]/7", // C5 E5 E E5 C5 E5 E E5 …
})).s("gm_distortion_guitar").gain(0.8).pan(0.8)

// chords · cello
const cello = note("<~@13 A@5 B@8 C@2 ~@8 D@8 E@7>".pickRestart({
  A: "[b2,b3] [g2,g3]", B: "[e2,b2,e3,b3] [c2,g2,c3,g3]", C: "[[e2,b2,e3,b3] [c2,g2,c3,g3]@2 ~]/2",
  D: "[~ [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@5]/8", // B G B G B G B G …
  E: "[~ [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [g2,g3]@6 [b2,b3]@6 [c2,c3]@12 ~@5]/7", // B G B G B G B G …
})).s("gm_cello").gain(0.8)

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

// drums · rim
const rim = s("rim").struct("<~@27 A B C D E F G H I ~@15>".pickRestart({
  A: "~@37 x ~@10", B: "~@15 x ~@24 x ~@7", C: "~@9 x ~@12 x ~", D: "~@11 x ~@12", E: "x ~@24 x ~@22",
  F: "~@3 x ~@25 x ~@18", G: "~@7 x ~@24 x ~@15", H: "~@5 x ~@12 x ~@5", I: "~@7 x ~@16",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@13 [~ x ~ x]!13 [~ x ~@2] ~@8 [~@36 x!3 ~@9] [~@2 x ~@2 x]!13 [~ x ~] ~>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@27 A B C D E F G H I ~@15>".pickRestart({
  A: "x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@4", B: "~@2 x ~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@5 x ~@6 x",
  C: "~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@3", D: "~@2 x ~@6 x ~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@6",
  E: "x ~@5 x ~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@6 x ~@2", F: "~@3 x ~@6 x ~@5 x ~@5 x ~@6 x ~@5 x ~@6 x ~@5",
  G: "x ~@6 x ~@5 x ~@6 x ~@5 x ~@5 x ~@6 x ~@5 x ~@2", H: "~@4 x ~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@5 x ~@5",
  I: "~ x ~@5 x ~@6 x ~@5 x ~@6 x ~@5 x ~@14",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@13 A ~@12 B ~@9 C ~@12 D ~>".pickRestart({
  A: "x", B: "~ x", C: "~ x ~@10", D: "~@7 x ~@4",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@13 A B@12 C ~@9 D E@12 F ~>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4", D: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  E: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", F: "~@2 x ~@2 x ~@2 x ~@2 x ~@12",
})).gain(0.72)

stack(electric_guitar_clean, bass, distortion_guitar, distortion_guitar_2, cello, kick, rim, snare, hihat, crash, ride)

More by Nirvana