Strudelify

Anthem Part Two

blink-182

KeyC majorTempo206 bpm
0:00/0:00
// Anthem Part Two — blink-182
// 206 bpm, 8/8, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 191 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(206/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 · electric guitar clean
const electric_guitar_clean = note("<A@24 B@7 ~@121 C@7 D ~@22 E@6 F@3>".pickRestart({
  A: "[~@31 c4, g4!2 f4!2 e4!2 f4!2 g4!2 f4!2 e4!2 f4!2, ~ c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 ~]/8",
  B: "[~@27 c4, g4!2 f4!2 e4!2 f4!2 g4!2 f4!2 e4!2, ~ c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 ~]/7",
  C: "[c3,g3]@2 [c3,g3]!6", D: "[c3,g3]",
  E: "[~@23 c4, g4!2 f4!2 e4!2 f4!2 g4!2 f4!2, ~ c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 c4@2 ~]/6",
  F: "[~ f4@2, e4!2 ~@4, ~ c4@2 c4@9]/3",
})).s("gm_electric_guitar_clean").gain(0.01)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@24 A B C D A B C E F@2 G H F@2 I@2 ~@8 A@2 C D A@2 C D ~@12 A@2 C D A@2 C D ~@12 J@5 ~ F@2 G H F@2 I@2 ~@8 A@2 C D
  A@2 C D ~@12 J@5 ~@33 J@5 ~ F K L H F K L H F K L H F K L M@2
>`.pickRestart({
  A: "[c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // C5
  B: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  C: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~", // A5
  D: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  E: "[c3,f3]!2 ~ [c3,f3] [c3,f3]@2 ~@2 [c3,f3]!2 ~ [c3,f3] [c3,f3]@2 ~@2", F: "[c3,g3]!4", G: "[a2,e3]!3 [f2,c3]",
  H: "[f2,c3]!4", I: "[[a2,e3]!3 [f2,c3,f3]@5]/2", J: "[c3,c4]!8", K: "[d3,a3]!4", L: "[a2,e3]!4", M: "[f2,c3]/2",
})).s("gm_distortion_guitar").gain(0.64)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  A ~@3 B ~@3 B ~@7 C@3 D C@3 D C@3 D C@3 E F G F G F G H I J@8 K ~@11 J@8 K ~@11 L M N O L M N O P Q R S P T F G F G F
  G H I J@8 K ~@11 L M N O L M N O P Q R S P T ~@24 L M N O L M N O P Q R S P T C@3 D C@3 D C@3 D C@3 U@2
>`.pickRestart({
  A: "[g2,c3]!3 ~@5", B: "[c3,g3]!2 ~ [c3,g3]!2 ~@11", C: "c3 ~ c3 ~ d3@2 f3@2 c3 ~ c3 ~ e3@4",
  D: "c3 ~ c3 ~ d3@4 c3 ~ c3 ~ d3@4", E: "[f2,c3]!2 ~ [f2,c3]!2 ~@3 [f2,c3]!2 ~ [f2,c3]!2 ~@3",
  F: "[e3,e4]!3 [f3,f4]!3 [e3,e4]!2", G: "[e3,e4] [c3,c4]!3 [d3,d4]!4", H: "[e3,e4]!3 [f3,f4]!3 [c3,c4]!2",
  I: "[c3,c4]!8", J: "[[c3,c4]@61 [e3,e4]!3]/8", K: "[c3,c4] ~@3", L: "[e2,c3,g3]!4", M: "[f2,c3,f3]!4", N: "[c3,g3]!4",
  O: "[g2,d3,g3]!4", P: "[a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~",
  Q: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  R: "[c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // C5
  S: "[g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~ [g2,d3] ~", T: "[f2,c3,f3] ~@3", U: "c3/2",
})).s("gm_distortion_guitar").gain(0.64)

// bass · electric bass pick
const bass = note(`<
  A ~@3 A ~@3 B C D E F C D E F C D E F C D E F C D E F C D G F@2 H I F@2 J@2 F@2 D I F@2 D E F@2 D I F@2 D E K L M@2
  F@2 D I F@2 D E F@2 D I F@2 D E K L M@2 N I F O P E F O D E F Q R S F@2 H I F@2 J@2 F@2 D I F@2 D E F@2 D I F@2 D E K
  L M@2 N I F O P E F O D E F Q R S T@2 U V T@2 U V T@2 U V T@2 U W T@2 U W T@2 U W N I F O P E F O D E F Q R S F C D E
  F C D E F C D E F C D X@2
>`.pickRestart({
  A: "c2!2 ~ c2 c2@2 ~@10", B: "c2!2 ~ c2 c2@2 ~@6 d2@2 d2@2", C: "d2!8", D: "a1!8", E: "f2!8", F: "c2!8",
  G: "f2!2 ~ f2 f2@2 ~@2 f2!2 ~ f2 f2@2 ~@2", H: "a1!6 f1!2", I: "f1!8", J: "[a1!6 f1@10]/2",
  K: "~@3 a2, a2@3 ~, ~@3 e3@5", L: "~@3 g2, g2@3 ~, ~@3 d3@5", M: "[~@3 c3@13, f2]/2", N: "e1!8", O: "g1!8", P: "e2!8",
  Q: "g2!8", R: "a2!8", S: "f2 ~@3", T: "c2@2 c2!6", U: "a1@2 a1!6", V: "f1@2 f1!6", W: "f2@2 f2!6", X: "f1/2",
})).s("gm_electric_bass_pick").gain(0.64)

// chords · distortion guitar
const distortion_guitar_3 = note(`<
  ~@80 A B ~@2 A B ~@2 A B ~@32 A B ~@2 A B ~@2 A B ~@20 C@3 D C@3 ~ A B ~@2 A B ~@2 A B ~@21
>`.pickRestart({
  A: "g5", B: "f5@3 ~", C: "c5 g4", D: "f4!2",
})).s("gm_distortion_guitar").gain(0.15)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@152 [g4 c5]!3 [g4!2] [g4 c5]!3 ~@32>").s("gm_distortion_guitar").gain(0.05)

// other · overdriven guitar
const overdriven_guitar = note("<~@76 A B C@2 ~@38 A B D@2 ~@69>".pickRestart({
  A: "e3", B: "g3", C: "[a3@3 ~]/2", D: "[a3@5 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.64)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@76 A B C@2 ~@38 A B D@2 ~@69>".pickRestart({
  A: "e3", B: "d3", C: "[c3@3 ~]/2", D: "[c3@5 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.64)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@48 A@7 B ~@12 A@7 B ~@34 A@7 B ~@73>".pickRestart({
  A: "~ x ~@3 x ~@2", B: "~@3 x ~@4",
})).gain(0.16)

// drums · rim
const rim = s("rim").struct("<~@152 A B C D E F G ~@32>".pickRestart({
  A: "~@6 x ~@5 x ~@2 x", B: "~@2 x ~@2 x ~@2 x ~@5 x ~", C: "~@4 x ~@3 x ~@2 x ~@2 x ~", D: "~ x ~ x ~ x ~ x",
  E: "~@2 x ~@2 x ~@2", F: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", G: "~@2 x ~@2 x ~@2 x ~@7",
})).gain(0.16)

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

// drums · low tom
const low_tom = s("lt").struct("<~@57 A ~@19 A ~@41 A ~@39 B ~@31>".pickRestart({
  A: "~@7 x", B: "~@13 x ~@2",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  A ~@3 A ~@3 A ~@22 B ~@6 C ~ D E D E D E D E ~@9 F ~@2 D E D E D E D E ~@9 F ~@5 F ~@3 F G@4 ~@8 C ~ D E D E D E D E
  ~@9 F ~@5 F ~@3 F G@4 ~@25 H ~@3 F ~@3 F G@4 ~@19
>`.pickRestart({
  A: "x!2 ~ x!2 ~@11", B: "x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3", C: "~ x ~@6", D: "x!3 ~ x!3 ~", E: "x!3 ~ x ~ x!2", F: "~@3 x",
  G: "~@6 x!2", H: "~@11 x ~ x ~@2",
})).gain(0.25)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@40 A ~ A ~ A ~ A ~@13 A ~ A ~ A ~ A ~@35 A ~ A ~ A ~ A ~@82>".pickRestart({
  A: "~@7 x ~@8",
})).gain(0.13)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@32 A B A C A B D ~ E ~ E ~ E ~ E ~@10 F ~@2 E ~ E ~ E ~ E ~@10 F ~@10 B@5 ~ A B A C A B D ~ E ~ E ~ E ~ E ~@10 F
  ~@10 B@5 ~@33 B@5 ~@18
>`.pickRestart({
  A: "~ x!2 ~", B: "x!4", C: "x!3 ~", D: "~@5 x ~@2", E: "~@7 x", F: "x",
})).gain(0.25)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@56 [~@12 x!4] ~@19 [~@12 x!4] ~@41 [~@12 x!4] ~@72>").gain(0.16)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A B@22 ~ B@6 C ~ D B D B D B D E B@3 E B@3 F ~ G ~@2 D B D B D B D E B@3 E B@3 F ~ G ~@2 H I B@2 H I B@2 E@4 B J
  B@6 C ~ D B D B D B D E B@3 E B@3 F ~ G ~@2 H I B@2 H I B@2 E@4 B J ~@23 K H I B@2 H I B@2 E@4 B J L@3 M L@3 N O@7 J ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x!2 ~ x!2 ~@3", D: "~@2 x!2 ~@2 x ~", E: "~@2 x ~@3 x!2", F: "~ x!2 ~@2 x!2 ~",
  G: "~@5 x ~@2", H: "~@2 x!2", I: "~ x ~@2 x!2 ~ x", J: "x", K: "x ~@2 x ~ x ~@2 x ~@2 x ~@4", L: "x!2",
  M: "x ~@3 x!2 ~@2", N: "x!2 ~ x!2 ~ x ~", O: "x!4",
})).gain(0.25)

// drums · splash
const splash = s("cr").struct(`<
  ~@8 A ~@23 B ~ B A B ~ A ~ C ~@7 C ~@7 C ~ C ~ C ~@7 C ~@7 C ~ C ~ D@2 C ~ D@2 C ~ C ~@4 C B ~ B A B ~ A ~ C ~@7 C ~@7
  C ~ C ~ D@2 C ~ D@2 C ~ C ~@4 C@2 ~@15 C ~@3 C ~@3 D@2 C ~ D@2 C ~ C ~@4 C@2 ~@3 C ~@3 E@7 C ~
>`.pickRestart({
  A: "~@3 x", B: "x ~@2 x", C: "x", D: "x!4", E: "x!2",
})).gain(0.25)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@8 A B@22 ~@10 C ~ C ~ C ~ C D E@3 F E@2 ~@6 C ~ C ~ C ~ C D E@3 F E@2 ~@7 D G ~@2 D G ~@15 C ~ C ~ C ~ C D E@3 F E@2
  ~@7 D G ~@2 D G ~@22 D E@3 D E@2 ~@3 D G ~@2 D G ~@6 D E@3 D E@3 H@7 ~@2
>`.pickRestart({
  A: "~@7 x", B: "x!8", C: "~@3 x ~ x ~@2", D: "~ x!3", E: "x!4", F: "x!3 ~ x ~ x ~", G: "x!3 ~", H: "~ x ~ x",
})).gain(1.29)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@152 [~ x ~ x ~ x ~ x]!7 ~@32>").gain(0.8)

stack(
  electric_guitar_clean, distortion_guitar, distortion_guitar_2, bass, distortion_guitar_3, distortion_guitar_soft,
  overdriven_guitar, overdriven_guitar_2, kick, kick_soft, rim, snare, low_tom, mid_tom, mid_tom_soft, open_hat,
  open_hat_soft, high_tom, splash, cabasa, cabasa_soft
)

More by blink-182