Strudelify
Floyd the Barber cover art

1989 · Bleach

Floyd the Barber

Nirvana

KeyC majorTempo135 bpm
0:00/0:00
// Floyd the Barber — Nirvana
// 135 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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@16 B@8 A@12 B@8 C D C D C D C D A@16 B@8 A ~@4>".pickRestart({
  A: "[f2,c3,f3]@2 [f2,c3,f3]@2 [e2,b2,e3]!3 ~", // F5 E5
  B: "[[c3,g3,c4] [c3,g3,c4]@2 [g#2,d#3,g#3] [g#2,d#3,g#3]@2 [b2,f#3,b3] [b2,f#3,b3]@2 [g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2]/2", // C5 G#5 B5 G5
  C: "[f2,c3,f3]@2 [f2,c3,f3] [e2,b2,e3] [f2,c3,f3] [e2,b2,e3] [f2,c3,f3] [a#2,f3,a#3]", // F5 E5 F5 E5 F5 A#5
  D: "[c3,g3,c4]@2 [c3,g3,c4] [a#2,f3,a#3]@2 [a2,e3,a3] [a#2,f3,a#3] [a2,e3,a3]", // C5 A#5 A5 A#5 A5
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass pick
const bass = note("<A@16 B@8 A@12 B@8 C D C D C D C D A@16 B@8 A ~@4>".pickRestart({
  A: "f1@2 f1@2 e1!3 ~", B: "[c2 c2@2 g#1 g#1@2 b1 b1@2 g1 g1@2 g1@2 g1@2]/2", C: "f1@2 f1 e1 f1 e1 f1 a#1",
  D: "c2@2 c2 a#1@2 a1 a#1 a1",
})).s("gm_electric_bass_pick").gain(0.64)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A@8 ~@3 A ~@3 A ~@8 A@4 ~@3 A ~@3 A ~@16 A@8 ~@3 A ~@3 A ~@8 A@2 B ~@2>".pickRestart({
  A: "~@4 x!3 ~", B: "~@5 x!2 ~",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@4 ~@3 B ~@3 B ~@8 A@4 ~@3 B ~@3 B ~@16 A@8 ~@3 B ~@3 B ~@8 B@2 ~@3>".pickRestart({
  A: "~@4 x!3 ~", B: "~ x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<A@8 ~@3 A ~@3 A ~@8 A@4 ~@3 A ~@3 A ~@16 A@8 ~@3 A ~@3 A ~@8 A@3 ~@2>".pickRestart({
  A: "~@4 x!3 ~",
})).gain(0.64)

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

// drums · high tom
const high_tom = s("ht").struct("<~@78 [~ x] ~@2>").gain(0.64)

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

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

More by Nirvana