Strudelify

Dare to Be Stupid

"Weird Al" Yankovic

KeyE minorTempo178 bpm
0:00/0:00
// Dare to Be Stupid — "Weird Al" Yankovic
// 178 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 15 piano (copy of ch 14 piano); ch 16 piano (copy of ch 14 piano)
// note: Full arrangement: all 152 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GtrSteel.
setcpm(178/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.

// other · pad poly · "PolySynth"
const pad_poly = note(`<
  ~@7 A B@3 C B@3 C B@2 D@2 E F B@2 G B D@2 E F B@2 H I J@2 H I ~@3 A B@2 D@2 E F B@2 G B D@2 E F B@2 K L M L K N O P O
  P O P O Q B@3 C B@3 C B@2 D@2 E F B@2 G B D@2 E F B@2 K L M L K N O P O P O P O ~ H I J@2 H I ~@3 A B@2 D@2 E F B@2 O
  P O P O P O P O P O P O P O P O P O P O P O R
>`.pickRestart({
  A: "e6 ~ a5 ~ b5 ~ f#5 ~ a5 ~ e5 ~ f#5 ~ b4 ~", B: "e4 ~ e4 ~ d4 ~ c#4 ~ b3 ~ a3 ~ g#3 ~ e3 ~",
  C: "d4 ~ c#4 ~ b3 ~ d4 ~ c#4 ~ b3 ~ c#4 ~ d4 ~", D: "g4 ~ g4 ~ f4 ~ e4 ~ d4 ~ c4 ~ b3 ~ g3 ~",
  E: "a4 ~ a4 ~ g4 ~ f#4 ~ e4 ~ d4 ~ c#4 ~ a3 ~", F: "c5 ~ c5 ~ a#4 ~ a4 ~ g4 ~ f4 ~ e4 ~ c4 ~",
  G: "e4@2 e4@2 d4 ~ c#4 ~ b3 ~ a3 ~ g#3 ~ e3 ~", H: "b3 ~ b3 ~ f#4 ~ f#4 ~ b4 ~ b4 ~ f#4 ~ f#4 ~",
  I: "d4 ~ d4 ~ a4 ~ a4 ~ d5 ~ d5 ~ a4 ~ a4 ~", J: "e4 ~ e4 ~ b4 ~ b4 ~ e5 ~ e5 ~ b4 ~ b4 ~",
  K: "d4 ~ d4 ~ a4 ~ d5 ~@3 d4 ~ a4 ~ d5 ~", L: "e4 ~ e4 ~ b4 ~ e5 ~@3 e4 ~ b4 ~ e5 ~",
  M: "g4 ~ g4 ~ d5 ~ g5 ~@3 g4 ~ d5 ~ g5 ~", N: "e5 ~ e4 ~ b4 ~ e5 ~ d5 ~ d4 ~ a4 ~ d5 ~",
  O: "b4 ~ b3 ~ f#4 ~ b4 ~ a4 ~ a3 ~ e4 ~ a4 ~", P: "~@10 e4 ~ a3 ~ d4 ~", Q: "e4 ~ e4 ~ e4 ~ d4@3 ~ e4@3 ~@3",
  R: "e5 ~ e5 ~ e5 ~ d5@3 ~ e5@3 ~@3",
})).s("gm_pad_poly").gain(0.26).pan(0.8)

// other · xylophone · "Xylophon" · E A B F# A E F# B …
const xylophone = note(`<
  [[e5,e6,e7]@3 ~ [e5,e6,e7]@3 ~ [e5,e6,e7]@3 ~ [e5,e6,e7]@3 ~]!7
  [[e5,e6,e7] ~ [a4,a5,a6] ~ [b4,b5,b6] ~ [f#4,f#5,f#6] ~ [a4,a5,a6] ~ [e4,e5,e6] ~ [f#4,f#5,f#6] ~ [b3,b4,b5] ~]
  ~@33
  [[e5,e6,e7] ~ [a4,a5,a6] ~ [b4,b5,b6] ~ [f#4,f#5,f#6] ~ [a4,a5,a6] ~ [e4,e5,e6] ~ [f#4,f#5,f#6] ~ [b3,b4,b5] ~]
  ~@77
  [[e5,e6,e7] ~ [a4,a5,a6] ~ [b4,b5,b6] ~ [f#4,f#5,f#6] ~ [a4,a5,a6] ~ [e4,e5,e6] ~ [f#4,f#5,f#6] ~ [b3,b4,b5] ~]
  ~@32
>`).s("gm_xylophone").gain(0.36)

// bass · synth bass 1 · "SynBass1"
const bass = note(`<
  A@6 B ~ C@3 D C@3 D C@2 E@2 F G C@4 E@2 F G C@2 H I J@2 H I K L M ~ C@2 E@2 F G C@4 E@2 F G C@2 I J N J I O P Q R Q R
  Q R S C@3 D C@3 D C@2 E@2 F G C@4 E@2 F G C@2 I J N J I O P Q R Q R Q R ~ H I J@2 H I K L M ~ C@2 E@2 F G C@2 R Q R Q
  R Q R Q R Q R Q R Q R Q R Q R Q R Q R T
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  C: "e2@2 e2 ~@3 e2 ~@3 e2 ~@5", D: "d3 ~ c#3 ~ b2 ~ d3 ~ c#3 ~ b2 ~ c#3 ~ d3 ~", E: "g2@2 g2 ~@3 g2 ~@3 g2 ~@5",
  F: "a2@2 a2 ~@3 a2 ~@3 a2 ~@5", G: "c3@2 c3 ~@3 c3 ~@3 c3 ~@5", H: "b1@2 b1 ~ b2 ~ b1 ~@3 b1 ~@5",
  I: "d2@2 d2 ~ d3 ~ d2 ~@3 d2 ~@5", J: "e2@2 e2 ~ e3 ~ e2 ~@3 e2 ~@5", K: "e2@5 ~@3 d2@5 ~@3", L: "a2@5 ~@3 g2@5 ~@3",
  M: "b2@5 ~@3 a2@5 ~@3", N: "g2@2 g2 ~ g3 ~ g2 ~@3 g2 ~@5", O: "e3 ~ e2 ~ b2 ~ e3 ~ d3 ~ d2 ~ a2 ~ d3 ~",
  P: "b2 ~ b1 ~ f#2 ~ b2 ~ a2 ~ a1 ~ e2 ~ a2 ~", Q: "~@10 e3 ~ a2 ~ d3 ~",
  R: "b3 ~ b2 ~ f#3 ~ b3 ~ a3 ~ a2 ~ e3 ~ a3 ~", S: "e3 ~ e3 ~ e3 ~ d3@3 ~ e3@3 ~@3",
  T: "[e2,e3,e5] ~ [e2,e3,e5] ~ [e2,e3,e5] ~ [d2,d3,d5]@3 ~ [e2,e3,e5]@3 ~@3", // E D E
})).s("gm_synth_bass_1").gain(0.31).pan(0.7)

// other · overdriven guitar · "GtrOverdrv"
const overdriven_guitar = note(`<
  A B A B A B C D E@3 F E@3 F G@2 H@2 I J G@4 H@2 I J G@2 K L M@2 K L N O P D G@2 H@2 I J G@4 H@2 I J G@2 L M Q M L R S
  T U T U T U V E@3 F E@3 F G@2 H@2 I J G@4 H@2 I J G@2 L M Q M L R S T U T U T U ~ K L M@2 K L N O P D G@2 H@2 I J G@2
  U T U T U T U T U T U T U T U T U T U T U T U W
>`.pickRestart({
  A: "e3 ~ e3 ~ [b3,b4] ~ [b3,b4] ~ e3 ~ e3 ~ [b3,b4] ~ [b3,b4] ~", B: "d3 ~ d3 ~ a3 ~ a3 ~ d4 ~ d4 ~ a3 ~ d3 ~",
  C: "b2 ~ b2 ~ f#3 ~ f#3 ~ b3 ~ b3 ~ f#3 ~ f#3 ~", D: "e3 ~ a2 ~ b2 ~ f#2 ~ a2 ~ e2 ~ f#2 ~ b1 ~",
  E: "[e2,e4]@2 [e2,e4] ~ d4 ~ [e2,c#4] ~ b3 ~ [e2,a3] ~ g#3 ~ e3 ~", // E C#m A5
  F: "[d3,d4] ~ [c#3,c#4] ~ [b2,b3] ~ [d3,d4] ~ [c#3,c#4] ~ [b2,b3] ~ [c#3,c#4] ~ [d3,d4] ~", // D C# B D C# B C# D
  G: "e2@2 e2 ~@3 e2 ~@3 e2 ~@5", H: "g2@2 g2 ~@3 g2 ~@3 g2 ~@5", I: "a2@2 a2 ~@3 a2 ~@3 a2 ~@5",
  J: "c3@2 c3 ~@3 c3 ~@3 c3 ~@5", K: "b1@2 b1 ~ b2 ~ b1 ~@3 b1 ~@5", L: "d2@2 d2 ~ d3 ~ d2 ~@3 d2 ~@5",
  M: "e2@2 e2 ~ e3 ~ e2 ~@3 e2 ~@5", N: "e3 ~ e3!3 ~ b2 ~ d3 ~ e3 ~ e3 ~@3", O: "a3 ~ a3!3 ~ e3 ~ g3 ~ a3 ~ a3 ~@3",
  P: "b3 ~ b3!3 ~ f#3 ~ a3 ~ b3 ~ b3 ~@3", Q: "g2@2 g2 ~ g3 ~ g2 ~@3 g2 ~@5",
  R: "e3 ~ e2 ~ b2 ~ e3 ~ d3 ~ d2 ~ a2 ~ d3 ~", S: "b2 ~ b1 ~ f#2 ~ b2 ~ a2 ~ a1 ~ e2 ~ a2 ~", T: "~@10 e3 ~ a2 ~ d3 ~",
  U: "b3 ~ b2 ~ f#3 ~ b3 ~ a3 ~ a2 ~ e3 ~ a3 ~", V: "e3 ~ e3 ~ e3 ~ d3@3 ~ e3@3 ~@3",
  W: "[e2,e3,e5] ~ [e2,e3,e5] ~ [e2,e3,e5] ~ [d2,d3,d5]@3 ~ [e2,e3,e5]@3 ~@3", // E D E
})).s("gm_overdriven_guitar").gain(0.26).pan(0.7)

// other · orchestra hit · "OrchHit"
const orchestra_hit = note("<~@151 [e4 ~ e4 ~ e4 ~ d4@3 ~ e4@3 ~@3]>").s("gm_orchestra_hit").gain(0.36)

// other · tenor sax · "SaxTenor (melody)"
const tenor_sax = note(`<
  ~@16 A B C D E F G H I J C H K L M ~ N O P Q R S ~@4 T U T U T V W X T U T U T V Y X Z AA AB AA AC AD AE X AF X AG ~
  AG ~@8 AH AI AJ M AK AL AM M AN AO AP AQ AP AR AS AT X Z AA AB AA AC AD AE X AF X AU@2 AG ~ AV AW AX ~ AY AZ ~@4 K BA
  BB BC BD BE X@2 ~@16 BF ~ BF ~ BF ~ BF ~
>`.pickRestart({
  A: "~@2 e4 ~ e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~", B: "d4 ~ e4 ~ e4 ~ e4@2 ~@6 e4 ~",
  C: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ g4 ~ e4 ~", D: "~@14 e4 ~", E: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@2 e4 ~",
  F: "d4 ~ e4 ~ e4 ~ g4 ~@5 d4 ~ d4 ~", G: "e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ e4@2 ~@2 e4 ~", H: "~@10 e4 ~ e4 ~ e4 ~",
  I: "e4@2 ~@2 e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ d4@2", J: "~@2 e4 ~@7 e4 ~ e4 ~ e4 ~", K: "~@4 e4 ~ e4 ~ e4@2 ~@4 e4 ~",
  L: "d4 ~ e4@2 ~@2 e4@2 ~@2 e4 ~ e4 ~ e4 ~", M: "e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ e4@2 ~@2 e4@2",
  N: "~@2 b3 ~ b3 ~ b3 ~ b3@2 ~@2 b3 ~ b3 ~", O: "d4 ~ d4 ~ e4 ~ d4@2 ~@6 d4 ~",
  P: "e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ e4@3 ~ e4@2", Q: "~@12 b3 ~ b3 ~", R: "b3@2 ~@2 b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  S: "d4 ~ d4 ~ d4 ~ e4 ~ d4 ~@7", T: "e4@4 ~@6 e4 ~ e4 ~ e4 ~", U: "d4@2 ~@2 e4@3 ~@9",
  V: "g4 ~ d4 ~ e4@2 ~@4 d4 ~ d4 ~ d4 ~", W: "e4@3 ~@13", X: "e4 ~ e4 ~ e4 ~ d4@3 ~ e4@3 ~@3", Y: "e4@3 ~@9 e4 ~ d4 ~",
  Z: "~@4 d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~", AA: "e4 ~@7", AB: "~@4 d4 ~ d4 ~ d4 ~ d4 ~ g4 ~ d4 ~",
  AC: "~@2 d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~", AD: "e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ d4 ~ e4 ~ a3 ~", AE: "b3@3 ~@13",
  AF: "~@10 e4 ~ e4 ~ d4 ~", AG: "~@4 f#4 ~ f#4 ~ g4 ~ f#4 ~ e4 ~ e4@2", AH: "~@10 e4 ~ e4 ~ e4@2",
  AI: "~@4 e4 ~ e4 ~ e4 ~ e4@2 ~@4", AJ: "e4 ~ e4 ~ e4 ~ d4@2 ~@4 e4 ~ d4 ~", AK: "~@14 d4 ~",
  AL: "e4 ~ e4@2 ~@2 e4@2 ~@2 e4 ~ e4 ~ e4 ~", AM: "d4 ~ e4 ~ e4@2 ~@2 e4 ~@3 e4 ~ e4 ~", AN: "~@12 e4 ~ e4 ~",
  AO: "e4@2 ~@2 e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~", AP: "d4 ~ e4@2 ~@2 e4 ~@5 e4 ~ e4 ~",
  AQ: "e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~ e4 ~ e4 ~", AR: "e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~",
  AS: "d4 ~ e4 ~ e4 ~ e4@2 ~@4 g4 ~ d4 ~", AT: "e4@2 ~@10 e4 ~ d4 ~",
  AU: "[~@4 f#4 ~ f#4 ~ g4 ~ f#4@2 ~@2 e4@5 ~@13]/2", AV: "~@4 b3 ~ b3 ~ b3@2 ~@2 b3@2 ~@2",
  AW: "d4 ~ e4@2 ~@2 d4@2 ~@4 e4 ~ d4 ~", AX: "e4@2 ~@2 e4@2 ~@2 d4 ~ e4@2 ~@2 e4@2",
  AY: "~@4 b3 ~ b3 ~ b3 ~ b3@2 ~@2 b3 ~", AZ: "d4 ~ e4@2 ~@2 d4@2 ~@8", BA: "e4 ~ e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~ e4 ~",
  BB: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@2", BC: "e4 ~ e4 ~ e4 ~ g4@2 ~@2 e4@2 ~@2 e4 ~",
  BD: "e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@4 e4 ~", BE: "d4 ~ e4 ~ e4 ~ e4 ~ g4@2 ~@6", BF: "f#4 ~ f#4 ~ f#4 ~ g4@3 ~ f#4@3 ~@3",
})).s("gm_tenor_sax").gain(0.51)

// other · piano
const piano = note("<[e3 ~@15] ~@151>").s("gm_piano").gain(0.26)

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

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

// drums · clap
const clap = s("cp").struct("<~@37 [~@3 x] ~@77 [~@3 x] ~@36>").gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@3 A ~@59 A ~@3 A ~@53 B C ~@4 B C ~@11>".pickRestart({
  A: "~@4 x!4 ~@8", B: "~@14 x!2", C: "x!2 ~@14",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@11 A ~@3 A ~@7 A ~@25 A ~@14 A ~@10 A ~@3 A ~@7 A ~@14 A ~@24 A ~@6 B ~@5 B ~@11
>`.pickRestart({
  A: "~@8 x!8", B: "~@2 x!8 ~@6",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@7 A ~@7 A ~@9 A ~@7 A ~@7 A ~@21 A ~@7 A ~@7 A ~@13 A ~@9 A ~@31>".pickRestart({
  A: "x",
})).gain(0.36)

// drums · cowbell
const cowbell = s("cb").struct("<[x!4]!7 ~@145>").gain(0.36)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<[x!4]!7 ~@145>").gain(0.52)

stack(
  pad_poly, xylophone, bass, overdriven_guitar, orchestra_hit, tenor_sax, piano, kick, snare, clap, hihat, mid_tom,
  high_tom, crash, cowbell, woodblocks
)

More by "Weird Al" Yankovic