Strudelify

Beeswax

Nirvana

KeyD majorTempo154 bpm
0:00/0:00
// Beeswax — Nirvana
// 153.8 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 113 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(153.8/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.

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A ~@4 B C B C B C B C B C B C B C B D E@8 B C B C B C B D E@8 F G F G F G H I E@8 B C B C B C B C J@7 K@8 L@8 M@8 N@8
  O ~@4
>`.pickRestart({
  A: "[a#3,f4]@4 [a#2,f3]@3 ~@17", B: "[c3,g3,c4] [b2,f#3,b3]!2 [a#2,f3,a#3]!2 [a2,e3,a3]!2 [g#2,d#3,g#3]",
  C: "[g#2,d#3,g#3] [g2,d3,g3] [g3,d4,g4]@6", D: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3]!4",
  E: "[[d2,a2,d3]@3 [a2,e3,a3] [d3,a3,d4] ~ [d2,a2,d3]@3 [a2,e3,a3] [d3,a3,d4] ~@5]/2", // D5 A5 D5 A5 D5
  F: "[d#2,a#2,d#3]!3 [d2,a2,d3] ~ [d3,a3,d4]!3", G: "[d3,a3,d4]!8", H: "[d#2,a#2,d#3]!3 [d2,a2,d3] ~@4",
  I: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  J: "[[c3,g3,c4]@3 [b2,f#3,b3]@3 [b2,f#3,b3]@3 [a#2,f3,a#3]@2 [a#2,f3,a#3]@3 [a2,e3,a3]@3 [a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@3 [g3,d4,g4]@18 [c3,g3,c4]@3 [b2,f#3,b3]@3 [b2,f#3,b3]@3 [a#2,f3,a#3]@3 [a#2,f3,a#3]@3 [a2,e3,a3]@3 [a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@3 [g3,d4,g4]@18 [c3,g3,c4]@3 [b2,f#3,b3]@3 [b2,f#3,b3]@3 [a#2,f3,a#3]@3 [a#2,f3,a#3]@3 [a2,e3,a3]@3 [a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]@3 [g3,d4,g4]@18 [c3,g3,c4]@3 [b2,f#3,b3]@3 [b2,f#3,b3]@3 [a#2,f3,a#3]@3 [a#2,f3,a#3]@3 [a2,e3,a3]@3 [a2,e3,a3]@3 [g#2,d#3,g#3]@3 [g2,d3,g3]]/7", // C5 B5 A#5 A5 G#5 G5 C5 B5 …
  K: "[~@5 [g2,d3,g3]@3 ~@3 [g2,d3,g3]@3 [g2,d3,g3]@3 [g2,d3,g3]@3 [g2,d3,g3]@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@7]/8", // G5 D5 A5 D5 A5 D5 A5 D5 …
  L: "[~@2 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d2,a2,d3]@3 ~@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d2,a2,d3]@3 ~@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d2,a2,d3]@3 ~@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d3,a3,d4]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d#2,a#2,d#3]@3 [d2,a2,d3]@3 ~@12 [g2,d3,g3]]/8", // A5 D5 D#5 D5 D#5 D5 D#5 D5 …
  M: "[~@5 [g2,d3,g3]@3 ~@3 [g2,d3,g3]@3 ~@3 [g2,d3,g3]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@7]/8", // G5 D5 A5 D5 A5 D5 A5 D5 …
  N: "[~@2 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@15 [d2,a2,d3]@9 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@3 [d2,a2,d3]@7]/8", // A5 D5 A5 D5 A5 D5 A5 D5 …
  O: "~@2 [a2,e3,a3]@3 [d3,a3,d4]@3 ~@16", // A5 D5
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B A B A B A B A B A B A B A C D@8 A B A B A B A C D@8 E F E F E F G H D@8 A B A B A B A B I@7 J@8 K@8 L@8 M@8 N
  ~@4
>`.pickRestart({
  A: "c2 b1!2 a#1!2 a1!2 g#1", B: "g#1 g1 g1@6", C: "g1 ~ g1 ~ g1!4", D: "[d1@3 a1 d2 ~ d1@3 a1 d2 ~@5]/2",
  E: "d#1!3 d1 ~ d2!3", F: "d2!8", G: "d#1!3 d1 ~@4", H: "g1 ~ g1 ~ g1 ~ g1 ~",
  I: "[c2@3 b1@3 b1@3 a#1@2 a#1@3 a1@3 a1@3 g#1@3 g#1@3 g1@3 g1@18 c2@3 b1@3 b1@3 a#1@3 a#1@3 a1@3 a1@3 g#1@3 g#1@3 g1@3 g1@18 c2@3 b1@3 b1@3 a#1@3 a#1@3 a1@3 a1@3 g#1@3 g#1@3 g1@3 g1@18 c2@3 b1@3 b1@3 a#1@3 a#1@3 a1@3 a1@3 g#1@3 g1]/7",
  J: "[~@5 g1@3 ~@3 g1@3 g1@3 g1@3 g1@3 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@7]/8",
  K: "[~@2 a1@3 d2@3 ~@15 d#1@3 d#1@3 d#1@3 d1@3 ~@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d#1@3 d#1@3 d#1@3 d1@3 ~@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d#1@3 d#1@3 d#1@3 d1@3 ~@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d#1@3 d#1@3 d#1@3 d1@3 ~@12 g1]/8",
  L: "[~@5 g1@3 ~@3 g1@3 ~@3 g1@3 ~@3 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@7]/8",
  M: "[~@2 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@9 a1@3 d2@3 ~@15 d1@9 a1@3 d2@3 ~@3 d1@7]/8",
  N: "~@2 a1@3 d2@3 ~@16",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  A B@19 C D E D C D E D C B@7 C D E D C D E D C F G F G F G H ~ D E D C D E D C B@8 I J@5 K L M N M L M N M L O P O P O
  P Q ~ M N M L M N M L M N M L M N M L ~@4
>`.pickRestart({
  A: "~ x ~@4", B: "x ~ x ~ x!2 ~@2", C: "~ x ~ x ~@4", D: "~@3 x ~ x ~@2", E: "~ x ~@6", F: "~@3 x!2 ~ x ~", G: "x!4",
  H: "~@3 x ~@4", I: "x ~@5 x ~@4 x ~@2 x ~@8 x", J: "~@5 x ~@5 x ~@2 x ~@8 x", K: "~@5 x ~@5 x ~@2 x ~@9",
  L: "~ x ~@2 x ~@7", M: "~@4 x ~@2 x ~@4", N: "~ x ~@10", O: "~@8 x ~@2 x ~@5 x ~@5 x", P: "~@5 x ~@5 x ~@5 x ~@6",
  Q: "~ x ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@19 B C D C E C D C E A@7 B C D C E C D C E F ~ F ~ F ~ F B C D C E C D C E A@8 G H@5 I J K L K M K L K M N O N O N
  O P J K L K M K L K M K L K M K L K Q ~@4
>`.pickRestart({
  A: "~@3 x ~@2 x ~", B: "x ~ x ~ x!4", C: "x!4", D: "x ~@5 x ~@2 x!2 ~@13", E: "x!2 ~@2", F: "x!3 ~@5",
  G: "~@9 x ~@7 x ~@6", H: "~@8 x ~@8 x ~@6", I: "~@8 x ~@8 x ~@5 x", J: "~@5 x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x",
  K: "~@5 x ~@5 x ~@5 x ~@5 x", L: "~@5 x ~@2 x ~ x ~@12 x", M: "~@5 x ~@17 x", N: "~@2 x ~@2 x ~@18", O: "~@23 x",
  P: "~@2 x ~@2 x ~@17 x", Q: "~@5 x ~@18",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~ A@19 ~@2 B ~ C ~ B ~ C A@7 ~@2 B ~ C ~ B ~ C ~@9 B ~ C ~ B ~ C A@8 D@7 ~@2 E ~ F ~ E ~ F ~@9 E ~ F ~ E ~ F ~ E ~ F ~
  E ~ F ~@4
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@18 x!2 ~ x!2 ~", C: "~@6 x!2", D: "~@11 x ~@2 x ~@9", E: "~@17 x ~ x!2 ~ x ~",
  F: "~@17 x ~@2 x ~@3",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@22 A ~ B ~ A ~ B ~@9 A ~ B ~ A ~ B ~@9 A ~ B ~ A ~ B ~@17 C ~ D ~ C ~ D ~@9 C ~ D ~ C ~ D ~ C ~ D ~ C ~ D ~@4
>`.pickRestart({
  A: "~@12 x!2 ~ x!2 ~@7", B: "~@4 x!2 ~@2", C: "~@11 x ~ x!2 ~ x ~@7", D: "~@11 x ~@2 x ~@9",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A@20 B A B A B A B A@9 B A B A B A B A ~@8 B A B A B A B A@9 C D@6 E D E D E D E D E ~@8 D E D E D E D E D E D E D E
  D E ~@4
>`.pickRestart({
  A: "x!4", B: "~ x!3", C: "x ~@5 x ~@4 x ~@5 x ~@5 x", D: "~@5 x ~@5 x ~@5 x ~@5 x", E: "~@5 x ~@5 x ~@5 x ~@6",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@21 A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ B ~ B ~ B ~ B C A ~ A ~ A ~ A ~@16 D ~ D ~ D ~ D ~ D E D E D E D F G ~ D ~ D ~
  D ~ D ~ D ~ D ~ D ~@6
>`.pickRestart({
  A: "x", B: "x!4 ~@4", C: "x!4", D: "~@23 x", E: "~@2 x ~@2 x ~@2 x ~@15", F: "~@2 x ~@2 x ~@2 x ~@14 x",
  G: "~@5 x ~@5 x ~@5 x ~@5 x",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@45 A B A B A B A ~@33 C D C D C D E ~@21>".pickRestart({
  A: "~@4 x!4", B: "x!8", C: "~@11 x ~@2 x ~@2 x ~@2 x ~@2 x", D: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3",
  E: "~@11 x ~@2 x ~@2 x ~@2 x ~@3",
})).gain(0.64)

stack(overdriven_guitar, bass, kick, snare, low_tom, mid_tom, open_hat, crash, ride)

More by Nirvana