Strudelify

Aneurysm

Nirvana

KeyB minorTempo156 bpm
0:00/0:00
// Aneurysm — Nirvana
// 156 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(156/4)

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

// other · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note("<A B A B ~@35 C ~@3 D ~@107>".pickRestart({
  A: "f#3@3 ~ f#3@2 e3 ~ c4 ~ c4 ~ [c4,c5] ~ [c4,c5] ~, ~@4 f#4 ~@11", // C
  B: "b3 ~ b3 ~ [b3,b4] ~ [b3,b4] ~ a3 ~ a3 ~ [a3,a4] ~ [a3,a4] ~", C: "~@2 e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~",
  D: "~@4 e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~",
})).s("gm_electric_guitar_clean").gain(0.41)

// other · overdriven guitar · "Dist. Guitar"
const overdriven_guitar = note(`<
  ~@4 A@2 B C D E F G H I J K J K J K J K J K J K J K A B D E F L M N ~@4 O P ~@2 O P ~@2 O P ~@2 O P ~@2 O P ~@2 O P Q
  R Q R Q R Q R Q R Q R Q R Q R ~@2 O P ~@2 O P ~@2 O P ~@2 O P Q R Q R Q R Q R Q R Q R Q R Q R A B D E F L M S T U V W
  J K J K J K J K J K J K J K J K J K J K A B D E F L M S X
>`.pickRestart({
  A: "a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~", B: "a#4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~",
  C: "b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~", D: "b4 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~",
  E: "c5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~", F: "c#5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~",
  G: "d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~",
  H: "[f#3,f#4]@3 ~ f#3@2 [e3,e4] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~ [c4,c5] ~, ~@4 f#4 ~@11", // F# E C
  I: "[b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [b3,b4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~", // B A
  J: "[f#3,f#4]@3 ~ f#3@2 e3 ~ [c4,c5]@2 [c4,c5]@2 [c4,c5] ~ [c4,c5] ~, ~@4 f#4 ~@11", // F# C
  K: "[b3,b4]@2 [b3,b4]@2 [b3,b4] ~ [b3,b4] ~ [a3,a4]@2 [a3,a4]@2 [a3,a4] ~ [a3,a4] ~", // B A
  L: "d5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~ d#5 ~", M: "d#5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~",
  N: "b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~ b5 ~", O: "[d4,d5]@3 ~ [d4,d5]@3 ~ [d4,d5] ~ [d4,d5] ~ [d4,d5] ~ [d4,d5] ~",
  P: "[d4,d5]@2 [d4,d5] ~ [d4,d5]@2 [d4,d5] ~ [d4,d5] ~ [d4,d5] ~ [d4,d5] ~ [d4,d5] ~", // D
  Q: "[f#3,f#4] ~ [f#3,f#4] ~ [g#3,g#4] ~ [a3,a4]@3 ~ [a3,a4] ~ [a3,a4] ~ [a#3,a#4] ~", // F# G# A A#
  R: "[b3,b4]@3 ~ [b3,b4] ~ [a#3,a#4] ~ [a3,a4]@3 ~ [a3,a4] ~ [a3,a4] ~", S: "e5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~",
  T: "f5 ~ f#5 ~ f#5 ~ f#5 ~ f#5 ~ f#5 ~ f#5 ~ f#5 ~", U: "f#5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~",
  V: "g5 ~ g#5 ~ g#5 ~ g#5 ~ g#5 ~ g#5 ~ g#5 ~ g#5 ~", W: "g#5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5 ~ a5 ~",
  X: "[c4,f4,b4,f5,a5,b5,d6]@11 ~@5", // Dm7
})).s("gm_overdriven_guitar").gain(0.41)

// bass · electric bass finger · "Bass Guitar"
const bass = note(`<
  ~@4 A B A B A B A B C B C B C B C B C B C B C B C B D@8 E@3 F G H E F G H E F G H E F G H E F G H E F G H I J I J I J
  I J I J I J I J I J E F G H E F G H E F G H E F G H I J I J I J I J I J I J I J I J D@3 K A B A B A B A B C B C B C B
  C B C B C B C B C B C B C B D@9
>`.pickRestart({
  A: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ c3 ~ c3 ~ c3 ~ c3 ~", B: "b2 ~ b2 ~ b2 ~ b2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
  C: "f#2@3 ~ f#2 ~ e2 ~ c3 ~ c3 ~ c3 ~ c3 ~", D: "f#2@11 ~@5", E: "b2 ~ b2 ~ b2 ~ b2!3 ~ b2 ~ b2 ~ b2!2",
  F: "b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~", G: "d3@3 ~ d3@3 ~ d3@2 d3 ~ d3@2 d3 ~",
  H: "d3@2 d3 ~ d3@2 d3 ~ d3@2 d3 ~ d3@2 d3 ~", I: "f#2 ~ f#2 ~ g#2 ~ a2@3 ~ a2 ~ a2 ~ a#2 ~",
  J: "b2@3 ~ b2 ~ a#2 ~ a2@3 ~ a2@3 ~", K: "f#2@11 ~@3 e2 ~",
})).s("gm_electric_bass_finger").gain(0.41)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@11 A B C B D B E B F B C B D B F B G ~@12 B H ~@2 B H ~@2 B H ~@2 B H ~@2 B H ~@2 B I J@16 ~@2 B H ~@2 B H ~@2 B H
  ~@2 B I J@16 ~@12 B C B D B E B F B C B D B E B F B C B D ~@9
>`.pickRestart({
  A: "~@8 x!8", B: "~ x ~ x", C: "~@4 x ~@5 x!2 ~@2 x!2", D: "~ x ~@2", E: "~@4 x ~@5 x!2 ~@4",
  F: "~@4 x ~@3 x!2 ~@2 x!2 ~@2", G: "~@4 x ~@3 x!8", H: "~ x!3", I: "~ x!7", J: "~@2 x!2 ~@2 x ~",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@15 A ~@3 B ~@3 A ~ B ~@10 C@4 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@18 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@33 A ~@3 B
  ~@3 A ~@3 B ~@3 A ~@9
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "~@5 x ~ x", C: "~ x ~ x",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A@4 ~@3 B ~ C ~@5 B ~@101 B ~ C ~@5 B ~ C ~@5 B ~@9>".pickRestart({
  A: "x!8", B: "~@12 x!4", C: "~@14 x!2",
})).gain(0.41)

// drums · splash
const splash = s("cr").struct(`<
  ~@4 A ~@7 A ~ A B A ~ A ~ A ~ A B A ~ A ~ A@8 ~@4 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@18 ~@2 A@2 ~@2 A@2 ~@2 A@2
  ~@2 A@31 ~ A B A ~ A ~ A ~ A B A ~ A ~ A ~ A B A@8 C
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "x!7 ~ x ~ x ~ x ~@3",
})).gain(0.41)

// drums · ride
const ride = s("rd").struct(`<
  ~@12 A@15 B C@8 ~@4 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 A@16 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 A@16 C@12 A@20
  C@8 ~
>`.pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "~ x!3",
})).gain(0.41)

stack(electric_guitar_clean, overdriven_guitar, bass, kick, snare, low_tom, mid_tom, splash, ride)

More by Nirvana