Strudelify

Whoa

Black Rob

KeyG minorTempo96 bpm
0:00/0:00
// Whoa — Black Rob
// 95.7 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 1 piano (copy of ch 3 tuba)
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(95.7/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · tuba
const tuba = note(`<
  A B A C A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A C D ~@2
>`.pickRestart({
  A: "g3 ~@7 g3 ~@7", B: "g3 ~@7 bb3 ~ g3 ~ bb3 ~ g3 ~", C: "g3 ~@7 g3 ~ bb3 ~ g3 ~ bb3 ~", D: "g3 ~@15",
})).s("gm_tuba").gain(0.46)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A@6 ~@2 A@6 ~@2 A@8 ~@2 A@6 ~@2 A@8 ~@2 A@6 ~@2 A@8 ~@2 A@6 ~@2 A@8 ~@2 A@6 ~@2 A@8 ~@2 A@6 ~@2 A@8 ~@2 A@2 ~
>`.pickRestart({
  A: "~ x ~ x",
})).gain(0.4)

stack(tuba, kick, snare)