Strudelify

Breed

Nirvana

KeyF♯ minorTempo155 bpm
0:00/0:00
// Breed — Nirvana
// 155 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(155/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
const overdriven_guitar = note(`<
  A@16 B@3 C B@3 C B D@2 E D@3 F G H G H G H G H A@8 B@3 C B@3 C B D@2 E D@3 F G H G H G H G H A@8 I@3 J K@3 L M@3 N O@2
  P@2 G H G H G H G H A@8 Q
>`.pickRestart({
  A: "[f#2,c#3,f#3]!2 [e2,b2,e3] [f#2,c#3,f#3] [a2,e3,a3]@2 [e2,b2,e3]@2", B: "[f#3,c#4]!8", C: "[f#3,c#4]!3 [f3,c4]@5",
  D: "[f#3,c#4,f#4]!8", E: "[f#3,c#4,f#4]!3 [f3,c4,f4]@5", F: "[f#2,c#3,f#3]!8",
  G: "[d3,a3,d4]!3 [a2,e3,a3] [a2,e3,a3]@2 [a2,e3,a3]@2", H: "[c3,g3,c4]!3 [b2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]@2",
  I: "[f#3,f#4]!8", J: "[f#3,f#4] [f3,f4]!2 [e3,e4]!2 [d#3,d#4]!2 [d3,d4]", K: "[a3,a4]!8",
  L: "[a3,a4] [g#3,g#4]!2 [g3,g4]!2 [f#3,f#4]!2 [f3,f4]", M: "[c4,c5]!8",
  N: "[c4,c5] [b3,b4]!2 [a#3,a#4]!2 [a3,a4]!2 [g#3,g#4]", O: "[d#4,d#5]!8", P: "[e4,e5]!8", Q: "[f#2,c#3,f#3]",
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  ~@4 A@4 B A@23 C D C D C D C D B A@23 C D C D C D C D B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C D C D C D C D B A@3 B A@3
  E
>`.pickRestart({
  A: "f#1!2 e1 f#1 a1@2 e1@2", B: "f#1 ~ f#1@2 e1@2 f#1@2 a1@4 e1@4", C: "d2!3 a1 a1@2 a1@2", D: "c2!3 b1 b1@2 b1@2",
  E: "f#1",
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@2 A@6 B@23 A B@7 C B@23 A B@7 C B@23 A B@7 C B@8 D>".pickRestart({
  A: "x!4", B: "x!2 ~ x!2 ~@3", C: "~ x ~ x ~ x ~ x", D: "x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@2 A@6 B@23 A B@7 C B@23 A B@7 C B@7 D B@15 A B@7 C B@8 ~>".pickRestart({
  A: "x!16", B: "~ x ~ x", C: "x!2", D: "~@4 x ~@5 x!6",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@39 [x!4] ~@31 [x!4] ~@31 [x!4] ~@9>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 [~ x ~ x] ~@31 [~ x ~ x] ~@31 [~ x ~ x] ~@9>").gain(0.64)

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

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

// drums · ride
const ride = s("rd").struct("<~@32 A B C B C B C B ~@24 A B C B C B C B ~@24 A B C B C B C B ~@9>".pickRestart({
  A: "~ x ~ x", B: "x!4", C: "x!2 ~ x",
})).gain(0.64)

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

More by Nirvana