Strudelify

Dumpweed

blink-182

KeyE majorTempo100 bpm
0:00/0:00
// Dumpweed — blink-182
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 18 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): guitar program 28.
setcpm(100/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.

// other · distortion guitar · "untitled"
const distortion_guitar = note("<A B C D E F E F G H I@2 H@2 I@2 A ~>".pickRestart({
  A: "[e1,e2]@15 [e1,e2]", B: "[e1,e2]", C: "[a1,a2]@15 [a1,a2]", D: "[a1,a2]",
  E: "[e1,e2]@2 [e1,e2]@2 [e1,e2]!2 [e1,e2]@2 [a1,a2] [a1,a2]@2 [a1,a2]!3 [a1,a2]@2", // E A
  F: "[b1,b2]@2 [b1,b2]@2 [b1,b2]!2 [b1,b2]@2 [b1,b2] [b1,b2]@2 [b1,b2] [b1,b2]@2 [a1,a2]@2", G: "e2!9 b2!4 ~@3, e1 ~",
  H: "~ e2!8 b2!4 ~@3", I: "~ a2!8 b2!4 ~@3",
})).s("gm_distortion_guitar").gain(0.62)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@8
  [~ g#3!3 g#3@2 ~ g#3 f#3@2 f#3 g#3 f#3@2 ~@2]
  [~ g#3!3 g#3@2 ~@2 a3!2 g#3!2 f#3@2 ~@2]
  [~ a3!3 a3@2 ~ a3 f#3!3 g#3 f#3@2 e3@2]!2
  [~ g#3!3 g#3@2 ~ g#3 f#3@2 f#3 g#3 f#3@2 ~@2]
  [~ g#3!3 g#3@2 ~@2 a3!2 g#3!2 f#3@2 ~@2]
  [~ a3!3 a3@2 ~ a3 f#3!3 g#3 f#3@2 e3@2]!2
  ~@2
>`).s("gm_electric_guitar_clean").gain(0.8)

// bass · electric bass finger
const bass = note("<A@2 B@2 C D C E@2 F G@2 F@2 G@2 A ~>".pickRestart({
  A: "e1", B: "a1", C: "e1!2 a1!2", D: "b1!2 a1!2", E: "[b1@4 b1@4 a1@4 ~@5 e2!8 b1!4 ~@3, ~@3 a1@3 ~@2]/2",
  F: "~ e2!8 b1!4 ~@3", G: "~ a1!8 b1!4 ~@3",
})).s("gm_electric_bass_finger").gain(0.8)

// drums · kick
const kick = s("bd").struct("<A B A C D@4 E@3 F E@4 G H>".pickRestart({
  A: "x ~@14 x", B: "x", C: "x ~@6 x", D: "~ x ~ x ~ x ~ x ~@2 x ~@2 x ~ x", E: "x!3 ~",
  F: "x ~@3 x ~@3 x ~ x ~ x!2 ~ x", G: "x!8", H: "x!5 ~@3",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@3
  [~@7 x]
  [x ~ x ~ x ~ x ~ x!2 ~ x!2 ~ x ~]!4
  [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~]!3
  [~@2 x!2 ~@2 x ~@2 x ~@2 x ~@2 x]
  [~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~]!4
  ~
  [~ x ~@2]
>`).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@7 [~@13 x!2 ~] ~@3 [~@13 x!2 ~] ~@6>").gain(0.8)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 [~@3 x ~@3 x]!3 [~@3 x ~@4] [~@3 x ~@3 x]!4 [x!16] [x!10 ~@6]>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 [~@9 x ~ x!2 ~@3] ~@3 [~@3 x] ~@6>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x ~ x ~ x]!4 ~@4 [~@5 x ~@6 x ~@3]!3 [~@5 x ~@10] [~@5 x ~@6 x ~@3]!4 ~@2>")
  .gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@7 [~@8 x!3 ~@5] ~@3 [~@10 x!2 ~@4] ~@6>").gain(0.8)

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

// drums · ride
const ride = s("rd").struct("<~@17 [~@3 x ~@2 x ~@9]>").gain(0.8)

stack(
  distortion_guitar, electric_guitar_clean, bass, kick, snare, low_tom, pedal_hat, mid_tom, open_hat, high_tom, crash,
  ride
)

More by blink-182