Strudelify

Blitzkrieg Bop

Marky Ramone

KeyA majorTempo190 bpm
0:00/0:00
// Blitzkrieg Bop — Marky Ramone
// 190 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 distortion guitar (copy of ch 1 overdriven guitar); ch 4 acoustic bass (copy of ch 3 electric bass pick); ch 12 oboe (copy of ch 11 alto sax); ch 13 tenor sax (copy of ch 11 alto sax)
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(190/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.

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B A B A B C A@2 B A B A B C A ~@6 A@3 B A B A B C A@2 B A B A B C A D@2 E@2 D@2 F B A B A B A B C A@2 B A B A B C A
  D@2 E@2 D@2 F B A B A B A B C A@2 B A B A B C A ~@6 A G ~
>`.pickRestart({
  A: "[a2,e3,a3]!8", B: "[d3,a3,d4]@2 [d3,a3,d4] [e3,b3,e4]@2 [e3,b3,e4]!3",
  C: "[a2,e3,a3]@2 [a2,e3,a3]!2 [d3,a3,d4]@2 [d3,a3,d4]!2", D: "[d3,a3,d4]!8",
  E: "[[a2,e3,a3]!7 [e3,a3] [d3,a3,d4]@2 [d3,a3,d4] [a2,e3,a3]@2 [a2,e3,a3]!3, ~@7 a2@4 ~@5]/2", // A5 D5 A5
  F: "[b2,f#3,b3]@2 [b2,f#3,b3]!6", G: "[a2,e3,a3]!4 [a2,e3,a3]@3 ~",
})).s("gm_overdriven_guitar").gain(0.57).pan(0.4)

// bass · electric bass pick
const bass = note(`<
  A B A B A B C A@2 B A B A B C A ~@4 A@5 B A B A B C A@2 B A B A B C A D@2 A E D@2 F B A B A B A B C A@2 B A B A B C A
  D@2 A E D@2 F B A B A B A B C A@2 B A B A B C A ~@4 A@3 G ~
>`.pickRestart({
  A: "a1!8", B: "d2!3 e2!5", C: "a1!4 d2!4", D: "d2!8", E: "d2!3 a1!5", F: "b1!8", G: "a1!4 a1@3 ~",
})).s("gm_electric_bass_pick").gain(0.64).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A B@10 A B@18 A B@9 A B@6 C B@22 D B@2 A B@2 D B@18 E ~>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!2 ~@2 x!2 ~@2", C: "x!2 ~ x ~ x ~@2", D: "x!2 ~@6 x ~ x ~@5", E: "x!2 ~@2 x ~@3",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!95 [~ x!2 ~] ~>").gain(0.8)

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

// drums · ride
const ride = s("rd").struct("<[x!8]!16 ~@8 [x!8]!63 [x!7 ~] ~@7 [~ x] ~>").gain(0.8)

stack(overdriven_guitar, bass, kick, snare, crash, ride)

More by Marky Ramone