Strudelify

Milk It

Nirvana

KeyE minorTempo68 bpm
0:00/0:00
// Milk It — Nirvana
// 68 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/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.

// other · overdriven guitar
const overdriven_guitar = note("<A B C D ~@6 E F G H I@3 J ~@10 K L I@3 J ~@10 M N O P Q R S T ~@14 U>".pickRestart({
  A: "b4@3 f4@3 f#4 ~@2 c#4@3 d#4@2 c4@2, ~@7 g#4@4 ~@5", B: "b3@2 g4 f4 ~@2 c#4 ~ d#4 ~@7, ~@5 d4@2 ~@9",
  C: "~@2 b4!4 c#5@3 g4@2 ~ a#4 ~ a2@2", D: "e4@2 g#4 b3 g4 d5 [a#3,d#5] ~ a#5 ~@3 [a3,d4] ~@3",
  E: "a#2@8 e2@3 e4@2 e4 ~@2", F: "[a#2,c3] c3@2 a#2@4 ~ e2@3 d#4 a3 e4 c5 ~, ~@7 a#2@2 ~@7",
  G: "a#2@2 a#2!6 e2@4 a3@2 g4@2", H: "a#2!2 a#2@2 a#2!4 e2@2 e2!2 a3@2 g4@2", I: "a#2!8 e2@2 e2 e2@2 e2@2 e2",
  J: "a#2!8 e2@2 e2 e2@2 e2!2 ~", K: "a#2@5 ~@3 e2@5 ~@3", L: "a#2@3 a#2@2 a#2@2 ~ e2@2 e2@2 a3@2 g4@2, ~@7 a#2@2 ~@7",
  M: "a#2!4 ~ a#2 ~ a#2 e2@2 e2@2 a3@2 g4@2", N: "e2 a#2!7 e2@2 g3 a3 [a#3,b3]!4",
  O: "[a#3,c#4] c#4 [a#3,c#4] d4@2 [a#3,d4] f4!3 f#4!3 g4!2 a4@2", P: "a#4@3 b4@3 ~ d5@2 ~ c5@2 a#4 ~@3, ~@3 c#5@2 ~@3",
  Q: "g5@2 ~ c#5@2 ~ f#5@2 b4@2 f#5@2 f#4@2 g4 e4", R: "e4@2 d4 d4@2 ~ c#4@2 c4@2 a3 g#3 ~@2 f3 ~",
  S: "f3!2 ~ g3 a#3 ~ c4 c#4 ~ d4 d#4!3 e4 f#4 g4",
  T: "g#4@2 c5@2 ~ b3 g5@2 a#5@2 g5@2 ~ g3@2 ~, ~@2 [b3,d#5] ~@3 [g3,e5] ~", U: "[g2,d3] ~@7",
})).s("gm_overdriven_guitar").gain(0.36)

// bass · electric bass finger
const bass = note("<A B A B C D C D C D A@7 E A B A B A B F@4 A@5 E A B A B A B F@4 A@9 B A B A B F@8 G>".pickRestart({
  A: "a#1!3 e1!3 g1!6 g#1!2 e1!2", B: "a#1!3 e1!3 g1!3 ~@7", C: "a#1@2 a#1 e2!2 g1 g1@2 g1!3 g#1!2 e1 e1@2",
  D: "a#1@2 a#1 e2!2 g1 g1@2 g1 ~@7", E: "a#1!3 e1!3 g1!6 g#1!2 e1 ~", F: "a#1!3 e1!5 g1!3 g#1 e1!4", G: "g1 ~@7",
})).s("gm_electric_bass_finger").gain(0.51)

// other · overdriven guitar
const overdriven_guitar_2 = note("<A B C D ~@6 E F G H I@3 J ~@10 K L I@3 J ~@10 M N O P Q R@2 S ~@14 T>".pickRestart({
  A: "e5@3 a#4@3 b4@3 e4@3 a4@2 d#5@2", B: "b3@2 ~ a2@2 ~ e4@2 a4 ~ g4!2 f#4 ~@3",
  C: "b4@3 c4@3 ~@2 a4@3 ~@2 c#4@3, ~@6 f4@4 ~ a3@4 ~", D: "f#4@2 e4@2 d#4@2 d4@2 b3 ~@7", E: "a#2@8 e2@3 e4@2 e4 ~@2",
  F: "[a#2,c3] c3@2 a#2@4 ~ e2@3 d#4 a3 e4 c5 ~, ~@7 a#2@2 ~@7", G: "a#2@2 a#2!6 e2@4 a3@2 g4@2",
  H: "a#2!2 a#2@2 a#2!4 e2@2 e2!2 a3@2 g4@2", I: "a#2!8 e2@2 e2 e2@2 e2@2 e2", J: "a#2!8 e2@2 e2 e2@2 e2!2 ~",
  K: "a#2@8 e2@5 ~@3", L: "a#2@3 a#2@2 a#2@2 ~ e2@2 e2@2 a3@2 g4@2, ~@7 a#2@2 ~@7",
  M: "~@2 a#3 e4 ~ e4 ~ a#3 e4 d#4 g#4 d#4!4 g4", N: "g4!3 f#4 ~ f#4 c#5!3 c#5@2 c5@2 c5 d#5!2",
  O: "d#5 d5 d#5 d5 d#5 d5 ~ a#4!2 a4!2 f#4 f4 e4 d#4@2",
  P: "e4!2 d#4!2 ~ c#4 ~ [a#3,d4] e4 [a#3,e4]@2 f4!2 f#4@2 [b3,e4]", // A# A#dim E5
  Q: "e5 ~ [a#4,e5]!2 a#4!2 c5 c#5 d#5@2 ~@2 d#5@2 e5 f#5, ~@5 g#5 ~@2, ~@11 a#5@2 ~@3", // A#dim
  R: "[e5!2 f5!2 f#5 ~ e5 d5!2 c#5 c5@2 ~ b4 c5 a#3@2 e4 f#4 g4@2 a4 ~ d#4 d4 b3!4 ~@2 [c4,e4]]/2", // C
  S: "[c4,e4] ~ [c#4,f4]!2 [d4,f#4] [d#4,g4] e4 b3 e4@2 [b3,e4]!3 ~@3", T: "[g2,d3] ~@7",
})).s("gm_overdriven_guitar").gain(0.31)

// chords · overdriven guitar
const overdriven_guitar_3 = note(`<
  ~@4 A B A B A C ~@8 A B A B A C D@4 ~@6 A B A B A C D@4 ~@8 A B A B A C D@8 E
>`.pickRestart({
  A: "[a#2,f3]!3 [e3,b3]!2 [g2,d3]!2 e2 [g2,d3]!3 [g#2,d#3]!2 [e2,b2]!3", // A#5 E5 G5 G#5 E5
  B: "[a#2,f3]!3 [e3,b3]!2 [g2,d3]!2 e2 [g2,d3] ~@7", C: "[a#2,f3]!3 [e3,b3]!2 [g2,d3]!2 e2 g2!3 g#2!2 e2 e2@2",
  D: "[a#2,f3]!3 [e3,b3]!5 [g2,d3]!3 g#2 [e2,b2]!4", E: "[g2,d3] ~@7",
})).s("gm_overdriven_guitar").gain(0.51)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~ A ~ A ~ B ~@15 B ~@15 B ~@17 B ~@10 C>".pickRestart({
  A: "~ x", B: "~@7 x", C: "x",
})).gain(0.51)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~ B ~ C ~ C ~@9 C ~ C ~ C ~@11 C ~ C ~ C ~@13 C ~ C ~ C ~@11>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@7 x",
})).gain(0.36)

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

// drums · crash
const crash = s("cr").struct(`<
  A@3 ~ B A B A B A@2 ~@7 C D C D C E C@4 A ~@5 C D C D C E C@4 A ~@7 C D C D C E C@8 A
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@3 x", C: "x!8", D: "x!5 ~@3", E: "x!4 ~@4",
})).gain(0.36)

// drums · ride bell
const ride_bell = s("rd").struct("<~@13 A ~@9 B ~@15 B ~@17 B ~@9>".pickRestart({
  A: "x", B: "~@8 x!3 ~ x ~@3",
})).gain(0.36)

stack(
  overdriven_guitar, bass, overdriven_guitar_2, overdriven_guitar_3, kick, snare, low_tom, hihat, mid_tom, open_hat,
  crash, ride_bell
)

More by Nirvana