Strudelify
Dare to Be Stupid cover art

Transformers The Movie

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, A@4 for four bars: 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 G ~ M N G O P Q ~@4 R S R S R T U V R S R S R T W V X U Y U Z AA AB V AC V AD ~ AD
  ~@8 AE AF AG G AH AI AJ G AK AL AM AN AM AO AP AQ V X U Y U Z AA AB V AC V AR@2 AD ~ AS AT AU ~ AV AW ~@4 K AX AY AZ
  BA BB V@2 ~@16 BC ~ BC ~ BC ~ BC ~
>`.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@2", 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: "~@2 b3 ~ b3 ~ b3 ~ b3@2 ~@2 b3 ~ b3 ~",
  N: "d4 ~ d4 ~ e4 ~ d4@2 ~@6 d4 ~", O: "~@12 b3 ~ b3 ~", P: "b3@2 ~@2 b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~",
  Q: "d4 ~ d4 ~ d4 ~ e4 ~ d4 ~@7", R: "e4@4 ~@6 e4 ~ e4 ~ e4 ~", S: "d4@2 ~@2 e4@3 ~@9",
  T: "g4 ~ d4 ~ e4@2 ~@4 d4 ~ d4 ~ d4 ~", U: "e4 ~@7", V: "e4 ~ e4 ~ e4 ~ d4@3 ~ e4@3 ~@3", W: "e4@3 ~@9 e4 ~ d4 ~",
  X: "~@4 d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~", Y: "~@4 d4 ~ d4 ~ d4 ~ d4 ~ g4 ~ d4 ~",
  Z: "~@2 d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~", AA: "e4 ~ e4 ~ e4 ~ e4 ~ d4 ~ d4 ~ e4 ~ a3 ~", AB: "b3@3 ~@13",
  AC: "~@10 e4 ~ e4 ~ d4 ~", AD: "~@4 f#4 ~ f#4 ~ g4 ~ f#4 ~ e4 ~ e4@2", AE: "~@10 e4 ~ e4 ~ e4@2",
  AF: "~@4 e4 ~ e4 ~ e4 ~ e4@2 ~@4", AG: "e4 ~ e4 ~ e4 ~ d4@2 ~@4 e4 ~ d4 ~", AH: "~@14 d4 ~",
  AI: "e4 ~ e4@2 ~@2 e4@2 ~@2 e4 ~ e4 ~ e4 ~", AJ: "d4 ~ e4 ~ e4@2 ~@2 e4 ~@3 e4 ~ e4 ~", AK: "~@12 e4 ~ e4 ~",
  AL: "e4@2 ~@2 e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~", AM: "d4 ~ e4@2 ~@2 e4 ~@5 e4 ~ e4 ~",
  AN: "e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~ e4 ~ e4 ~", AO: "e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~",
  AP: "d4 ~ e4 ~ e4 ~ e4@2 ~@4 g4 ~ d4 ~", AQ: "e4@2 ~@10 e4 ~ d4 ~",
  AR: "[~@4 f#4 ~ f#4 ~ g4 ~ f#4@2 ~@2 e4@5 ~@13]/2", AS: "~@4 b3 ~ b3 ~ b3@2 ~@2 b3@2 ~@2",
  AT: "d4 ~ e4@2 ~@2 d4@2 ~@4 e4 ~ d4 ~", AU: "e4@2 ~@2 e4@2 ~@2 d4 ~ e4@2 ~@2 e4@2",
  AV: "~@4 b3 ~ b3 ~ b3 ~ b3@2 ~@2 b3 ~", AW: "d4 ~ e4@2 ~@2 d4@2 ~@8", AX: "e4 ~ e4 ~ e4 ~ e4@2 ~@2 e4 ~ e4 ~ e4 ~",
  AY: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@2", AZ: "e4 ~ e4 ~ e4 ~ g4@2 ~@2 e4@2 ~@2 e4 ~",
  BA: "e4 ~ e4 ~ e4 ~ e4 ~ e4@2 ~@4 e4 ~", BB: "d4 ~ e4 ~ e4 ~ e4 ~ g4@2 ~@6", BC: "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