Strudelify

Stain

Nirvana

KeyD majorTempo166 bpm
0:00/0:00
// Stain — Nirvana
// 166 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Guitar" overdriven guitar (copy of ch 1 "Guitar" overdriven guitar)
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(166/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  A B C D@14 E F G F G F G F H C D@10 E F G F G F G F I C D@11 F G F G F G F I C D@10 E F G F G F G F G F G F G F G F J
>`.pickRestart({
  A: "[d3,a3,d4]@11 ~@5", B: "[d#3,a#3,d#4]@11 ~@5",
  C: "[e3,b3,e4] ~ [e3,b3,e4] ~@3 [e3,b3,e4]@4 [e3,b3,e4] ~ [d3,a3,d4] ~ [d#3,a#3,d#4] ~", // E5 D5 D#5
  D: "[d#3,a#3,d#4] ~ [e3,b3,e4] ~@3 [e3,b3,e4]@4 [e3,b3,e4] ~ [d3,a3,d4] ~ [d#3,a#3,d#4] ~", // D#5 E5 D5 D#5
  E: "[d#3,a#3,d#4] ~ [e3,b3,e4] ~@3 [e3,b3,e4]@4 [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~", // D#5 E5
  F: "[a#3,f4,a#4]@3 ~ [a3,e4,a4] ~ [a3,e4,a4]@4 ~@2 [a3,e4,a4] ~ [d3,a3,d4]@2", // A#5 A5 D5
  G: "~@2 [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~", // D5
  H: "~@2 [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~@3 [d#3,a#3,d#4]@4", // D5 D#5
  I: "~@2 [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~@3 [d#3,a#3,d#4]@3 ~", // D5 D#5
  J: "~@2 [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~ [d3,a3,d4] ~@7", // D5
})).s("gm_overdriven_guitar").gain(0.15)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B@12 C D E D E D E D F G B@10 C D E D E D E D F G B@8 H B@2 D E D E D E D F G B@10 C D E D E D E D E D E D E D E
  D I
>`.pickRestart({
  A: "~@6 e2@3 ~ e2 ~ d2 ~ d#2 ~", B: "d#2 ~ e2 ~@3 e2@3 ~ e2 ~ d2 ~ d#2 ~", C: "d#2 ~ e2 ~@3 e2@3 ~ e2 ~ e2 ~ e2 ~",
  D: "a#2@3 ~ a2 ~ a2@4 ~@2 a2 ~ d2@2", E: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  F: "~@2 d2 ~ d2 ~ d2 ~ d2 ~@3 d#2@3 ~", G: "e2 ~ e2 ~@3 e2@3 ~ e2 ~ d2 ~ d#2 ~",
  H: "d#2 ~ e2 ~@3 e2@3 ~ e2 ~ d2 ~ d2 ~", I: "~@2 d2 ~ d2 ~ d2 ~ d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.5)

// other · overdriven guitar · "Guitar"
const overdriven_guitar_2 = note("<~@46 A B C D E F G H I J K L ~@36>".pickRestart({
  A: "c5 ~ f5 ~@2 c5 ~@2 e4 ~@3 e5 ~ g4 ~", B: "f5 b4 ~@3 c5 ~@2 f4 ~@3 e5 ~ a4 e5",
  C: "f3 ~ b4 a3 ~ c4 ~ [a3,d5] ~@2 [c4,g4] ~@2 e5 ~ c4", D: "f5 ~ b3 ~ b3 ~ a4 ~ c4 f5 ~ d5 ~ f4 ~ e5",
  E: "f5 ~ f4 ~ d5 g4 ~@2 b4 ~ b3 ~ d4 ~ c5 ~", F: "b5 a5 g5 f5 e5 d5 c5 b4 a4 g4 f4 e4 d4 c4 b3 a3",
  G: "e5 c4 b4 [c4,f4,a4,f5,b5] c5 d5 f5 b4", H: "~ f5 ~ f5 ~@2 b4 e4 f5 ~ d5 ~@2 f4 ~@2",
  I: "[e4,g4] ~@2 c5 g4 ~ d5 ~ f4 ~ b5 ~ b5 ~ b5 ~", // Em
  J: "c6 ~ [d5,d7] ~ [g5,d7] ~ [a4,b4,c5,d5,f5,a5,c6,e6,f6,b6] d7 f5 d7 b5 d5 [e6,c7] e5 [g5,d7] c6", // D G5 Dm7 C G5
  K: "g5 ~@2 c6 ~ b5 ~@4 c6 ~@2 f6 ~@2", L: "f4 g4 a4 b4 d5 e5 f5 f#5 a5 b5 c6 d6 e6 f6 g6 a6",
})).s("gm_overdriven_guitar").gain(0.5)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C@13 D E D E D E D E C@12 D E D E D E D E C@12 D E D E D E D E C@12 D E D E D E D E D E D E D E D E
>`.pickRestart({
  A: "~ x ~@2", B: "~@3 x ~ x ~ x", C: "x!2 ~ x ~ x ~ x", D: "x ~@2 x ~ x ~ x", E: "~ x ~@6",
})).gain(0.4)

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

// drums · splash
const splash = s("cr").struct(`<
  ~@3 A@2 ~@13 B ~ B ~ B ~ B ~@13 B ~ B ~ B ~ B ~@13 B ~ B ~ B ~ B ~@13 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~
>`.pickRestart({
  A: "~@3 x ~@4", B: "x ~@2 x ~@3 x",
})).gain(0.4)

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

stack(overdriven_guitar, bass, overdriven_guitar_2, kick, snare, splash, ride)

More by Nirvana