Strudelify

Wynona's Big Brown Beaver

Primus

KeyD majorTempo132 bpm
0:00/0:00
// Wynona's Big Brown Beaver — Primus
// 132 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 140 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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.

// bass · electric bass pick · "Bass (Les Claypool"
const bass = note(`<
  ~ A@4 B@3 C D@4 E F E G E F E H I J I K I J I J I@2 L M E N E N E O E P Q I J R S I T I U I V I W E F E X E F E Y Z AA
  Z AA Z AA Z AB AC AD@2 AE AF AG AH I@3 AI I@3 AJ I@3 AK AL V@2 AM AN C@3 E F E AO E F E AP Z AA Z AA Z AA AQ AR AS AT
  AU AR@2 AV AW AX AY AZ BA BB BA BB BA BB BA BC BD A BE C BF D@4
>`.pickRestart({
  A: "[d2,d3]!2 ~@2 [d2,d3]!2 ~@2", B: "[d2,f#3]!2 d3@2 [d2,f#3]!2 d3@2", C: "[d2,f#3]!2 ~@2 [d2,f#3]!2 ~@2",
  D: "[d2,a2,d3]!2 ~@2 [d2,a2,d3]!2 ~@2", E: "d2@2 d2@2 a2 b2 d3 f3 d3@2 ~ f3 e3 d3 c3@2, ~@5 d2 ~@2",
  F: "d2!2 d3 a3 d2!2 g3 d4", G: "d2!2 d3 a3 ~ e3 g2 c3", H: "d2 e3 c3 b2 a2@2 f2@2",
  I: "d2@2 d2@2 ~@3 d2 d2@2 d2@2 ~@3 d2", J: "d2@2 d2@2 ~@3 d2 d2@2 d2@2 ~@2 c2 c#2",
  K: "d2@2 d2@2 c2!3 c#2 d2@2 d2@2 c2!3 c#2", L: "d2@2 d2@2 ~@3 d2 d2@2 d2@2 ~@4", M: "d2!2 a2 g2 c4@2 [d2,g2]@2",
  N: "d2@2 d2@2 d3@2 a3@2 d2@2 ~ g3 f#3 e3 c3@2, ~@5 d2 ~@2", O: "d2!2 d3 a3 d2!2 g3 c4",
  P: "d2@2 e3@2 c3!2 b2@2 a2@2 d3@2 c3@4", Q: "d2!2 ~@5 [c2,g2,c3]", R: "d2@2 d2@2 ~@3 d2 d2@2 d2@2 f#2 ~ f#2!2",
  S: "g2 ~ g2 g#2 ~ g#2 a2@2 ~ b2 c3!2 c#3@2 d3@2", T: "d2!2 ~@2 d2!2 ~@2", U: "d2!2 ~@2 d2 ~ [d2,f#3]@2",
  V: "d2@2 d2@2 ~@3 d2 d2@2 d2@2 c2!3 c#2", W: "d2!2 g#2 g2!2 ~ [g2,c3]@2", X: "d2!2 d3 a3 d2 e3 g2 c3",
  Y: "d2@2 g3 f#3 f3 e3@2 e3@2 d3 c3@2 b2@2 a2@2", Z: "d2@2 d2@2 ~ d2 ~ d2 d2@2 d2@2 ~ d2 ~ d2",
  AA: "d2@2 d2@2 ~ d2 ~ d2 c2@2 d2@2 c2@2 d2@2", AB: "d2@2 d2@2 [d3,f#3]@2 ~ d2 d2@2 d2@2 [d3,f#3]@2 ~ d2",
  AC: "d2@2 d2@2 d2 d2@2 d2 d2@2 d2@2 d2 d2@2 d2", AD: "d2!2 [c3,f#3]@2 d2!2 [c3,f#3]@2",
  AE: "d2@2 d2@2 f#3!4 f#3@2 f#3@2 d3!4", AF: "d3@2 d2@2 e3!4 e3@2 ~@2 a3!4", AG: "a3@2 ~@2 f#3!4 f#3@2 ~@2 d3!4",
  AH: "d3@2 d2@2 [a2,d3,f#3]@4 d2@2 d2@2 [a2,d3,f#3]@3 d2", AI: "d2@2 d2@2 ~@3 d2 d2@2 d2@2 c2@4",
  AJ: "c2@2 ~ d2 c2@2 ~ d2 c2@2 ~ d2 c2@2 ~ c2", AK: "d2@2 d2@2 ~@3 d2 d2@2 ~@2 [d3,f#3]@4",
  AL: "d2@2 d2@2 d2 ~@2 d2 d2@2 d2@2 ~@3 d2", AM: "d2@2 d2@2 ~@3 d2 d2@2 ~@2 [a2,d3,f#3]@4",
  AN: "d2@2 d2@2 ~@3 [d2,f#3] [d2,f#3]@2 [d2,f#3]@2 ~@4", AO: "d2@2 d2@2 d3@2 a3@2 d2@2 e3@2 c3!2 b2@2",
  AP: "d2@2 e3 g2 c3 e3 g2 c3 e3 g2 c3 e3 c3!2 b2@2", AQ: "d2@2 d2!3 d2@2 d2 d2@2 d2!3 e2@2 ~",
  AR: "d2!2 [a2,d3,f#3]@2 d2!2 [a2,d3,f#3]@2", AS: "d2@2 d2@2 ~ c2!2 c#2 d2@2 d2@2 ~ d2 ~ c2",
  AT: "c2 d2 d2@2 d2 d2@2 d2 c2@2 d2@2 c2@2 d2@2", AU: "d2@2 d2@2 d2 d2@2 d2 d2@2 d2@2 d2 d2@2 ~",
  AV: "d2@2 d2@2 f#3!4 f#3@2 d2@2 d3!4", AW: "d2@2 d2@2 b2!4 d2@2 d2@2 a2!4", AX: "a2@2 d2@2 f#3!4 d2@2 d2@2 d3!4",
  AY: "d2@2 d2@2 b2!4 d2@2 d2@2 [a2,d3,f#3]@4", AZ: "d2!2 [a2,d3,f#3]@2 d2!2 f#3!2", BA: "d2!2 f#3!2 d2!2 f#3!2",
  BB: "d2!2 [d2,f#3]@2 d2!2 f#3!2", BC: "d2!2 [d2,f#3]@2 d2!2 [d2,f#3]@2", BD: "d2!2 [d2,f#3]@2 [d2,d3]!2 ~@2",
  BE: "[d2,d3]!2 ~@2 [d2,f#3]!2 ~@2", BF: "[d2,f#3]!2 ~@2 [d2,a2,d3]!2 ~@2",
})).s("gm_electric_bass_pick").gain(0.5)

// chords · acoustic guitar steel · "Extra Guitar Track"
const acoustic_guitar_steel = note("<~@21 A@5 ~@16 A@5 ~ B C ~ D ~@27 E ~@3 F@2 ~@55>".pickRestart({
  A: "[~ [d4,a4,d5,g#5]@19]/5", B: "~@4 g#4!3 a4", C: "a4@3 [d4,f#4]", D: "~@2 d#6!2 e6 e6@2 c#6", E: "[d5,g5,b5]@3 ~",
  F: "[d5,g5,b5]/2", // G
})).s("gm_acoustic_guitar_steel").gain(0.59)

// drums · kick
const kick = s("bd").struct(`<
  A B@3 C@12 D C@3 E B@11 F C@3 D C@3 G H B@11 F C@7 F C@15 B@20 C@26 B@8 C@8 G
>`.pickRestart({
  A: "~@15 x", B: "x ~ x ~@4 x!2 ~ x ~@4 x", C: "x ~ x ~@4 x!2 ~ x ~@3 x!2", D: "x ~ x ~@4 x!2 ~ x ~@2 x ~@2",
  E: "x ~ x ~@5 x!8", F: "x ~ x ~@3 x ~@3 x ~@4 x", G: "x ~ x ~@4 x!2 ~ x ~@5", H: "~@2 x ~ x!2 ~ x!2 ~ x ~@3 x ~",
})).gain(0.59)

// drums · snare
const snare = s("sd").struct("<~ A@15 B A@3 C A@11 D A@3 B A@3 E ~ A@11 D A@3 F A@3 D A@34 G A@42 H>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x!4 ~@8", D: "~ x!2 ~", E: "~@4 x ~@7 x!2 ~ x", F: "~@4 x!12",
  G: "~@4 x ~@3 x!8", H: "~ x ~@2",
})).gain(0.59)

// drums · clap
const clap = s("cp").struct("<~ A@15 B A@3 ~ A@11 C A@3 B A@3 D ~ A@11 C A@3 E A@3 C A@34 F A@42 G>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~ x!2 ~", D: "~@4 x ~@7 x!2 ~ x", E: "~@4 x!12", F: "~@4 x ~@3 x!8",
  G: "~ x ~@2",
})).gain(0.59)

// drums · low tom
const low_tom = s("lt").struct("<~@32 A ~@20 A ~@7 A ~@22 B ~@55>".pickRestart({
  A: "~@13 x!2 ~", B: "~@3 x",
})).gain(0.59)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[~ x!2 ~] ~@139>").gain(0.59)

// drums · mid tom
const mid_tom = s("mt").struct("<~@12 A ~@19 B ~@20 B ~@7 B ~@22 C ~@55>".pickRestart({
  A: "~@13 x!2 ~", B: "~@11 x!2 ~@3", C: "~@5 x ~@2",
})).gain(0.59)

// drums · open hat
const open_hat = s("oh").struct("<~@45 [~@7 x] ~@94>").gain(0.59)

// drums · high tom
const high_tom = s("ht").struct("<~@12 [~@3 x] ~@127>").gain(0.59)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@5 B ~ B ~@3 B ~ C ~@11 B ~ B ~@3 B@2 ~@15 B ~@18 A ~@19 B ~@42>".pickRestart({
  A: "~ x ~@2", B: "x", C: "~@3 x",
})).gain(0.59)

// drums · ride
const ride = s("rd").struct(`<
  ~@13 A@3 B A@3 C@2 ~@11 A@3 B A@4 C@2 ~@11 A@3 C A@3 B A@15 D ~@19 A@26 ~@8 A@8 B
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x", D: "~ x ~@2",
})).gain(0.59)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@12 ~@8 B@11 C ~@9 B@11 C ~@23 B@19 C ~@26 B@8 ~@9>".pickRestart({
  A: "x!2", B: "x!4", C: "x!2 ~@2",
})).gain(0.59)

stack(
  bass, acoustic_guitar_steel, kick, snare, clap, low_tom, pedal_hat, mid_tom, open_hat, high_tom, crash, ride,
  tambourine
)

More by Primus