Strudelify

Online Songs

blink-182

KeyA majorTempo197 bpm
0:00/0:00
// Online Songs — blink-182
// 197 bpm, 8/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(197/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("<~@8 A B A B A B A C@2 ~@100>".pickRestart({
  A: "~@2 a2 ~@4 a2, a2@2 ~ a2@2 a2@2 ~, ~ c#3@3 e3@2 c#3@2", B: "~@2 a2 ~@4 a2, a2@2 ~ a2@2 a2@2 ~, ~ d3@3 d3@2 d3@2",
  C: "[e2,b2]/2", // E5
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@17 A B A C A C A D E@8 A C A C A C A D E@8 F G H F@2 G H F E@8 F G H F@2 G H F@2 I J F@2 I J F K L G M K L G M N F G
  M N F G M F G H F@2 G H F@2 I J F@2 I J F O@4
>`.pickRestart({
  A: "a2 ~ c#3@2 a2 ~ a2 ~ e3@2 a2 ~ c#3@2 a2 ~", B: "b2 ~ c#3@2 b2 ~ b2 ~ e3@2 b2 ~ c#3@2 b2 ~",
  C: "b2 ~ d3@2 b2 ~ b2 ~ d3@2 b2 ~ d3@2 b2 ~", D: "b2 ~ [d3,a3]@4 [d3,a3]@4 [d3,a3]@4 [d3,a3]@2",
  E: "[[a2,e3]@15 ~]/8", F: "[d3,a3]!4", G: "[a2,e3]!4", H: "[e3,b3]!4", I: "[a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]!2",
  J: "~ [e3,b3]!3", K: "[f#2,c#3]!2 ~@2", L: "[d3,a3]!2 ~@2", M: "[e2,b2]!4", N: "[f#2,c#3]!4",
  O: "[[f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3] [d3,a3]@20 ~@5]/4", // F#5 D5
})).s("gm_distortion_guitar").gain(0.32)

// bass · electric bass pick
const bass = note(`<
  A B C D A B C D A B C D A B C E@2 A B C D A B C F A C G A@2 C G H A B C D A B C F A C G A@2 C G H C A D C@2 A D C A C
  G A@2 C G H C A D C@2 A D C@2 A I C@2 A I C J K A D J K A D L C A D L C A D C A D C@2 A D C@2 A I C@2 A I C M@4
>`.pickRestart({
  A: "a1!8", B: "b1!8", C: "d2!8", D: "e2!8", E: "e2/2", F: "e2 e2@2 e2@2 e2@2 e2", G: "f#2!4 e2!4", H: "a1!5 ~@3",
  I: "~@2 e2!6", J: "f#1!2 ~@2", K: "d2!2 ~@2", L: "f#1!8", M: "[f#1!7 d2@20 ~@5]/4",
})).s("gm_electric_bass_pick").gain(0.25)

// other · distortion guitar
const distortion_guitar_2 = note(`<
  ~@48 A B C D E B C D F ~@7 A B C D E B C D F B C D E B C D F ~@3 G@2 ~@2 H@2 ~@2 G@2 ~@2 A B C D E B C D F B C D E B C
  D F ~@4
>`.pickRestart({
  A: "~@5 a3!3", B: "a3@2 a3@2 a3!4", C: "c#4@2 c#4!6", D: "b3@2 b3!6", E: "a3@3 ~@2 a3!3", F: "a3@3 ~@5",
  G: "[~ c#4!4 b3 a3 a3@8 ~]/2", H: "[~ c#4!5 e4 c#4@8 ~]/2",
})).s("gm_distortion_guitar").gain(0.19)

// other · distortion guitar
const distortion_guitar_3 = note("<~@81 A@16 ~@20>".pickRestart({
  A: "[c#4@2 a3@2 b3@2 e4 c#4@3 a3@2 b3@2 e4 c#4@3 a3@2 b3@2 e4 c#4@4 ~@5]/4",
})).s("gm_distortion_guitar").gain(0.19)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A@7 ~@9 A@7 ~@34 B ~@3 B ~@27 B ~@3 B ~@2 C ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@3 x!2 ~@3", C: "~@5 x!2 ~",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A B@6 C ~ D E@6 ~@9 D E@6 ~@49 F G@2 ~ F G@2 H ~@20>".pickRestart({
  A: "~@3 x ~@2 x ~", B: "x ~@2 x ~@2 x ~", C: "x", D: "~ x ~ x!3 ~ x", E: "x!2 ~ x!3 ~ x", F: "~@3 x!2 ~@2 x",
  G: "x ~@2 x!2 ~@2 x", H: "x ~@2 x!2 ~@3",
})).gain(0.25)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@8 [~ x!2 ~ x!2 ~ x]!7 ~@102>").gain(0.16)

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

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

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

stack(
  electric_guitar_clean, distortion_guitar, bass, distortion_guitar_2, distortion_guitar_3, kick, snare, mid_tom,
  open_hat, open_hat_soft, high_tom, crash, cabasa
)

More by blink-182