Strudelify

Aliens Exist

blink-182

KeyC majorTempo125 bpm
0:00/0:00
// Aliens Exist — blink-182
// 125 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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.

// chords · overdriven guitar · "Tom - guitar"
const overdriven_guitar = note(`<
  ~ A B C ~@6 D E F E G H I H I J K H L M N M O P Q R S T@3 U V U W X Y X Y Z AA X AB M N M O P Q R S ~@2 AC AD@3 AE AF
  AG AH AI@8 AJ AK AL AM AN AO AP AQ AR AS AT AU@2
>`.pickRestart({
  A: "~@15 f3", B: "f3!5 ~ f3!10", C: "f3 ~", D: "~@7 [c4,d4] e4@7 a3",
  E: "[f3,a3]!3 ~ [f3,a3] ~ [d3,f3]!4 [c3,e3] ~ [c3,e3] ~ [c3,e3]!2", // F Dm C
  F: "[c3,e3]!2 [d3,f3] ~ [d3,f3] ~ [d3,f3]!4 [b2,d3] ~ [b2,d3] [d3,f3] g3 a3", // C Dm Bm Dm
  G: "[c3,e3]!2 [d3,f3] ~ [d3,f3] ~ [d3,f3]!4 [b2,d3] ~ [b2,d3] ~@3", H: "e3!8 c3!8", I: "d3!8 b2!8", J: "e3!8 g3!8",
  K: "f3!8 d3!8", L: "d3!8 ~@8", M: "f3 ~ f3!14", N: "e3 ~ e3!14", O: "g3 ~ g3!14",
  P: "[f3,a3]!2 [d3,f3] ~ [f3,a3]!2 [d3,f3] ~ [g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~", // F Dm F Dm G F G F
  Q: "[g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~", // G F G F G F G F
  R: "[d3,f3]!2 [c3,e3] ~ [d3,f3]!2 [c3,e3] ~ [d3,f3]!2 [c3,e3] ~ [d3,f3]!2 [c3,e3] ~", // Dm C Dm C Dm C Dm C
  S: "[e3,g3]!2 [d3,f3] ~ [e3,g3]!2 [d3,f3] ~ [e3,g3]!2 [d3,f3] ~ [e3,g3]!2 [d3,f3] ~", // Em Dm Em Dm Em Dm Em Dm
  T: "[[a2,c3]@4 [c3,e3]@8 [c3,e3]@8 [c3,e3]@8 [b2,d3]@8 [d3,f3]@4 [c3,e3]@4 [f3,a3]!3 ~]/3", // Am C Bm Dm C F
  U: "[f3,a3] ~ [d3,f3]!4 [c3,e3] ~ [c3,e3] ~ [c3,e3]!4 [d3,f3] ~", // F Dm C Dm
  V: "[d3,f3] ~ [d3,f3]!4 [b2,d3] ~ [b2,d3] [d3,f3] g3 a3 [f3,a3]!3 ~", // Dm Bm Dm F
  W: "[d3,f3] ~ [d3,f3]!4 [b2,d3] ~ [b2,d3] ~@3 e3!4", X: "e3!4 c3!8 d3!4", Y: "d3!4 b2!8 e3!4", Z: "e3!4 g3!8 f3!4",
  AA: "f3!4 d3!8 e3!4", AB: "d3!4 ~@12", AC: "~@12 b3!4", AD: "b3!16", AE: "b3!12 [b3,e4]!4",
  AF: "[b3,e4]!14 [b3,d4]!2", AG: "[b3,d4]!12 [b3,f4]!4", AH: "[b3,f4]!14 [b3,d#4]!2",
  AI: "[[b3,d#4]!12 [a2,c3,e3]@16 [d2,f2,a2]@16 [e2,g2,b2]@16 [b1,d2,f2]@16 [a2,c3,e3]@16 [d2,f2,a2]@16 [e2,g2,b2]@16 [b1,d2,f2]@4]/8", // B Am Dm Em Bdim Am Dm Em …
  AJ: "~@12 f3 ~ f3!2", AK: "f3!12 e3 ~ e3!2", AL: "e3!12 f3 ~ f3!2", AM: "f3!12 g3 ~ g3!2",
  AN: "g3!12 [f3,a3]!2 [d3,f3] ~", // F Dm
  AO: "[f3,a3]!2 [d3,f3] ~ [g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~", // F Dm G F G F G F
  AP: "[g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~ [g3,b3]!2 [f3,a3] ~ [d3,f3]!2 [c3,e3] ~", // G F G F G F Dm C
  AQ: "[d3,f3]!2 [c3,e3] ~ [d3,f3]!2 [c3,e3] ~ [d3,f3]!2 [c3,e3] ~ [e3,g3]!2 [d3,f3] ~", // Dm C Dm C Dm C Em Dm
  AR: "[e3,g3]!2 [d3,f3] ~ [e3,g3]!2 [d3,f3] ~ [e3,g3]!2 [d3,f3] ~ [a2,c3]@4", AS: "e3 c3", AT: "d3 g2", AU: "c3/2",
})).s("gm_overdriven_guitar").gain(0.4)

// bass · electric bass finger · "Mark - bass"
const bass = note(`<
  ~ A B C D E D@2 E D ~ D E D F D E D F D E D F D E D F D E D F ~@2 G H I J K H I J K H I J L D E D F D E D F ~@2 M N@3
  O P Q R S N@7 T H I J K H I J U N V W@2
>`.pickRestart({
  A: "~@15 f2", B: "f2!5 ~ f2!3 e2!3 f2 a2 b2 e3", C: "f2!16", D: "d2!16", E: "e2!16", F: "c2!16", G: "~@12 d2!4",
  H: "d2!12 e2!4", I: "e2!12 d2!4", J: "d2!12 c2!4", K: "c2!12 d2!4", L: "c2!12 ~@4", M: "~@6 e2!2", N: "e2!8",
  O: "e2!6 a2!2", P: "a2!7 g2", Q: "g2!6 b2!2", R: "b2!7 c2", S: "c2!6 e2!2", T: "d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 d2!4",
  U: "c2!12 ~@2 e2@2", V: "d2", W: "[e2@3 ~]/2",
})).s("gm_electric_bass_finger").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  A B C D@7 E ~@2 F G D@7 H ~@2 F G I@4 J ~ K ~ L M N D@7 O ~@2 F G I@4 J ~ P D@3 Q D@11 R ~ L M N S@3 T U ~ V ~
>`.pickRestart({
  A: "~@13 x!2 ~", B: "x!3 ~@2 x!3 ~ x!3 ~@2 x!2", C: "x ~ x!3 ~@2 x!3 ~ x!3 ~@2", D: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
  E: "x!2 ~@2 x!2 ~@2 x!2 ~ x!3 ~@2", F: "~@3 x!2 ~ x ~ x ~@3 x!2 ~@2", G: "x!7 ~ x!2 ~@2 x!2 ~@2",
  H: "x!2 ~@2 x!2 ~@2 x!3 ~ x!3 ~", I: "x!2 ~@2 x!2 ~@3 x!2 ~@2 x!2 ~", J: "~@6 x!6 ~@4", K: "~@5 x!2 ~ x!2 ~@6",
  L: "~@15 x", M: "x ~ x ~ x ~@3 x!2 ~@2 x!4", N: "x!3 ~ x!2 ~@2 x!2 ~@2 x!2 ~@2", O: "x!2 ~@2 x!3 ~ x!3 ~@5",
  P: "~@5 x!2 ~ x!2 ~@2 x!2 ~@2", Q: "x!2 ~@2 x!3 ~ x!3 ~ x!2 ~@2", R: "x!2 ~@2 x!2 ~@2 x!4 ~@4",
  S: "x!2 ~@3 x!2 ~@2 x!2 ~ x!2 ~@2", T: "x!2 ~@3 x!2 ~@2 x!2 ~@5", U: "~@2 x!6 ~@8", V: "~@5 x ~@5 x!3 ~@2",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A@7 B C@2 D E A@7 B C@2 D E ~@4 F G ~ H@2 I J A@7 F C@2 D E ~@4 F G K A@3 L A@11 B H@2 I M ~@3 K ~@2 F ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4", C: "~@2 x ~@3 x!2", D: "~@5 x ~ x", E: "~ x ~ x ~ x ~@4 x!6", F: "~ x ~@6",
  G: "~@15 x", H: "x ~@3 x!2 ~@2", I: "~@6 x ~@3 x ~@2 x ~ x", J: "~ x ~@4 x!6 ~@2 x ~", K: "~@7 x",
  L: "~@2 x!11 ~ x ~", M: "~ x ~@4 x!6 ~@4",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@2 A ~@8 B C D ~@9 B C D ~@5 E ~ F G H ~@10 B C D ~@5 E ~ I ~@15 J G H ~@6 K ~ L ~
>`.pickRestart({
  A: "~@14 x!2", B: "x ~ x ~@5 x!3 ~@5", C: "x!3 ~@5 x ~ x ~@5", D: "~ x!2 ~@13", E: "~@4 x!2 ~@10",
  F: "~@3 x ~@8 x ~ x ~", G: "~@4 x!3 ~@5 x!3 ~", H: "~@4 x ~ x ~@6 x!2 ~", I: "~@3 x ~@12", J: "~@6 x!2",
  K: "x!2 ~@14", L: "~@2 x ~@2 x ~@2",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@32
  [~@2 x ~ x ~ x ~ x ~ x ~ x!2 ~@2]
  ~@22
  [~@2 x ~ x ~ x ~ x ~ x ~ x!2 ~@2]
  ~@25
  [~@7 x]
  [x!8]
  ~@2
>`).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A B C ~@7 D ~@2 E ~@8 F ~@2 E ~ G@4 H ~ I ~ J ~@9 K ~@2 E ~ G@4 H ~ I ~@17 J ~ L M@3 N ~@2 O ~
>`.pickRestart({
  A: "~@15 x", B: "~@3 x ~@4 x ~@3 x ~@3", C: "~ x ~@4 x ~@3 x ~@3 x ~", D: "~@7 x ~@2 x ~@3 x ~", E: "x",
  F: "~@11 x ~@3 x", G: "~@2 x ~@4 x ~@3 x ~@4", H: "x ~@2 x ~@12", I: "~ x!2 ~@13", J: "~@3 x", K: "~@7 x ~@3 x ~@4",
  L: "~@7 x", M: "~@3 x ~@3 x ~@6 x ~", N: "~@3 x ~@3 x ~@4 x ~@2 x", O: "x ~@2 x ~@3 x ~ x ~@6",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A@7 B ~@3 C A@7 D ~@3 C ~@10 E A@6 F G ~@3 C ~@26 H ~@8>".pickRestart({
  A: "x!8", B: "x!4 ~@4", C: "~@4 x!4", D: "x!7 ~ x ~ x ~ x ~ x ~", E: "~@2 x!6", F: "x ~ x ~ x ~ x ~ x ~ x ~ x!4",
  G: "x!3 ~ x ~ x ~ x ~ x ~@5", H: "~@2 x!4 ~@2",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A B@3 C ~@8 B@3 C D@4 E F E B@3 G ~@8 B@3 C D@4 E F E B@15 H B@3 I J@3 K L ~ M ~
>`.pickRestart({
  A: "~@15 x", B: "x!8", C: "x!4 ~@4", D: "x ~ x ~ x ~ x ~ x!8", E: "~@6 x!2", F: "x", G: "x!2 ~@6",
  H: "x!2 ~ x ~ x!2 ~ x ~ x!6", I: "x!2 ~@4 x!2", J: "x ~ x ~ x!9 ~ x ~", K: "x ~ x ~ x!8 ~@4", L: "~@4 x!3 ~",
  M: "~@7 x",
})).gain(0.41)

stack(overdriven_guitar, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, crash)

More by blink-182