Strudelify

Between Angels and Insects

Papa Roach

KeyC majorTempo186 bpm
0:00/0:00
// Between Angels and Insects — Papa Roach
// 186 bpm, 4/4, 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.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 29.
setcpm(186/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 · distortion guitar · "TabIt MIDI - Track 1"
const distortion_guitar = note("<A@7 B@8 C@8 ~@13 D@7 E@16 F@8 ~@9 D@7 G@8 H ~@99>".pickRestart({
  A: "[~@14 e3 ~@15 e3 ~@15 e3 ~@8 c3, d2@4 d2@3 d2@3 d2@3 d2@3 a#2@4 a#2@3 a#2@3 a#2@3 a#2@3 a2@4 a2@3 a2@3 a2@3 a2@3 c3@4 c3@3 ~, ~@2 f3@3 e3@3 g3@3 f3@3 ~ f3@3 f3@3 e3@3 g3@3 f3@3 ~ f3@3 f3@3 e3@3 g3@3 f3@3 ~ f3@3 f3@3 e3@3]/7",
  B: "[~@6 f3 ~@15 e3 ~@15 e3 ~@15 e3 ~@8 c3, g3@3 f3@3 ~ e3@3 f3@3 e3@3 g3@3 f3@3 ~ f3@3 f3@3 e3@3 g3@3 f3@3 ~ f3@3 f3@3 e3@3 g3@3 f3@3 ~ f3@3 f3@3 e3@3, ~@2 c3@3 c3@19 a#2@4 a#2@3 a#2@3 a#2@3 a#2@3 a2@4 a2@3 a2@3 a2@3 a2@3 c3@4 c3@3 ~, ~@8 d2@4 d2@3 d2@3 d2@3 d2@3 ~@40]/8",
  C: "[~@6 f3 ~@3 f3@3 e3@3 g3@3 f3@3 e3@4 f3@3 e3@3 f3@3 g3@3 ~@26, g3@3 f3@3 ~ e3@3 ~@54, ~@2 c3@3 c3@59, ~ d2@7]/8",
  D: "[d2@2 d2@2 d2@2 d2@2 ~@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 f2@2 f2@2 f2@2 f2@2 f2@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 a2@2 a2@2 a2@2 a2@2 a2@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 a#2@2 a#2@2 a#2@2 a#2@2 a#2@2 [a#2,f3]@6, ~ d2@13]/7", // D F G F D F G F …
  E: "[[a#2,a#3]@2 [c3,c4]@2 c4@2 [a#2,a#3]@2 [c3,c4]@2 c4@2 [a#2,a#3]@2 c4@2 d2@2 d2@2 d2@2 d2@2 ~@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 f2@2 f2@2 f2@2 f2@2 f2@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 a2@2 a2@2 a2@2 a2@2 a2@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 a#2@2 a#2@2 a#2@2 a#2@2 a#2@2 [a#2,f3]@6, ~@2 c3@2 ~ c3@2 c3@57, ~@3 d2@13]/8", // A# C A# C A# D F G …
  F: "[[a#2,a#3] [c3,c4] c4 [a#2,a#3] [c3,c4] c4 [a#2,a#3] [c3,c4]@57, ~@2 c3@2 ~ c3@2 ~@57]/8", // A# C A# C A# C
  G: "[[a#2,a#3]@2 [c3,c4]@2 c4@2 [a#2,a#3]@2 [c3,c4]@2 c4@2 [a#2,a#3]@2 c4@2 d2@2 d2@2 d2@2 d2@4 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 f2@2 f2@2 f2@2 f2@2 f2@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 a2@2 a2@2 a2@2 a2@2 a2@2 [d3,d4]@6 [f3,f4]@2 [g3,g4]@2 [g3,g4]@2 [g3,g4]@3 ~ [f3,f4]@6 a#2@2 a#2@2 a#2@2 a#2@2 a#2@2 [a#2,f3]@6, ~@2 c3@2 ~ c3@2 c3@57]/8", // A# C A# C A# D F G …
  H: "[a#2,a#3] [c3,c4] c4 [a#2,a#3] c4!2 [a#2,a#3] ~, ~ c3!2 ~", // A# C A#
})).s("gm_distortion_guitar").gain(0.41)

// bass · electric bass finger
const bass = note(`<
  ~@8 A@2 B@2 C@2 D@2 E@4 F G F G H I H I F G F G H J K L M N O P Q ~ R S M T O P Q ~ R S M T O P Q ~ R S F G F G H I H
  I U G F G H I H I M T O P Q ~ R S M T O P Q ~ R S F G F G H I H I U G F G H I H I V@2 W@2 X@2 Y@2 Z AA AB AC AD AE AF
  AG AH@2 AI@2 AJ@2 AK@2 AL@2 AM@2 H@2 AN@2 A@2 F G F G H I H I U G F G H I H I AO G AO G H I H I AP@8 AQ@6 AR@3 ~@8
>`.pickRestart({
  A: "d2/2", B: "a#2/2", C: "a2/2", D: "c3/2", E: "d2/4", F: "d1!4", G: "d1 c1!7", H: "a1!4", I: "a1 c2!7",
  J: "a1 a#1!7", K: "f1!4", L: "d#1!8", M: "d1!4 d1@2 ~@2", N: "~@4 d2 c2 a1 g1", O: "f1!5 ~@3", P: "~@7 f1",
  Q: "a1!5 ~@3", R: "a#1!5 a#1@3", S: "a#1 c2!2 a#1 c2!2 a#1 c2", T: "~@7 d1", U: "~ d1", V: "d1/2", W: "a#1/2",
  X: "a1/2", Y: "c2/2", Z: "d2@2 d2@3 a2 c3 d3", AA: "f3@3 e3@3 c3 d3", AB: "a#1@2 a#1@3 d#2 f2 g#2",
  AC: "a#2 c3@2 a#2@3 f2 a#1", AD: "a1@2 a1@4 a1 e2", AE: "a1@5 a1 e2 a1", AF: "c2 c2@3", AG: "c2@3 a1",
  AH: "[d2 d2@7]/2", AI: "[a#1 a#1@7]/2", AJ: "[a1 a1@7]/2", AK: "[c2 c2@7]/2", AL: "d2!4", AM: "a#1!4", AN: "c2!4",
  AO: "d1!8", AP: "d1/8",
  AQ: "[~@2 f3@3 e3@3 g3@3 f3@3 ~@4 f3@3 e3@3 g3@3 f3@3 ~@4 f3@3 e3@3 g3@3 f3@3 e3@2, d2 d2 d2, ~@7 e3@2 ~@6 e3@2 ~@7]/6",
  AR: "[~@2 f3@3 e3@3 g3@3 f3@3 e3 f3@9, d2]/3",
})).s("gm_electric_bass_finger").gain(0.51)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@20 A B C B D E D E C B C B D F G H@8 ~@17 C B C B D E D E I B C B D E D J@8 ~@9 C K@8 L@6 M@7 N@3 O@2 P@16 Q@8 K@8
  R@8 L@6 S@8 ~ T O@2 P@8 U@2 V@4
>`.pickRestart({
  A: "[a2,d3]!4, d2 ~@3 d2 ~@3 d2 ~@3 d2 ~@3", B: "[d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4]!2",
  C: "[d2,a2,d3]!4", D: "[a2,e3,a3]!4", E: "[a2,e3,a3] [c3,g3,c4]!7",
  F: "[a2,e3,a3] [a#2,f3,a#3]@2 [a#2,f3,a#3] [a#2,f3,a#3]@2 [a#2,f3,a#3]!2", // A5 A#5
  G: "[f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]!2", H: "[[d#2,a#2,d#3]!7 a#2@57]/8", I: "d3 [d2,a2,d3]",
  J: "[[a2,e3,a3] [c3,g3,c4]!6 [c3,g3,c4]@57]/8", // A5 C5
  K: "[[d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4] [c3,c4] [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4] [c3,c4] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] [c3,g3,c4]!6 [c3,c4] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] [c3,g3,c4]!6 [c3,c4] d3@4 [d2,a2,d3]@4, ~@7 g3@10 ~@6 g3@10 ~@6 g3@10 ~@6 g3@9]/8", // D5 C5 C D5 C5 C A5 C5 …
  L: "[[d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4] [c3,c4] [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4] [c3,c4] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] [c3,g3,c4]!6 [c3,c4] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2, ~@7 g3@10 ~@6 g3@10 ~@6 g3@9]/6", // D5 C5 C D5 C5 C A5 C5 …
  M: "[[a2,e3,a3] [c3,g3,c4]!6 [c3,c4] [d2,a2,f3]@16 [f3,a#3]@16 [a2,e3,a3]@16, ~ g3@7, ~@3 a#2@4]/7", // A5 C5 C Dm A#5 A5
  N: "[[c3,c4]@16 d2@2 f3@2 d2 e3@2 d2, g3]/3", // C
  O: "[~@2 d2 f3@2 d2 e3 f3 ~@2 f3@2 ~ e3@2 a#2, g3, ~@8 a#2@4 a#2@3 ~]/2",
  P: "[~@3 f3@2 ~ e3 f3 a2@2 f3@2 a2 e3@2 a2 ~@2 a2 f3@2 a2 e3 f3 c3@2 f3@2 c3 e3@2 c3 ~@2 c3 f3@2 c3 f3 e3 d2@2 f3@2 d2 e3@2 d2 ~@2 d2 f3@2 d2 e3 f3 ~@2 f3@2 ~ e3@2 a#2, g3 g3 g3 g3, ~@2 a#2@3 a#2@51 a#2@4 a#2@3 ~]/8",
  Q: "[~@3 f3@2 ~ e3 f3 a2@2 f3@2 a2 e3@2 a2 ~@2 a2 f3@2 a2 e3 f3 c3@2 f3@2 c3 e3@2 c3 ~@2 c3 f3@2 c3 f3 e3 [d2,a2]@16 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2, g3 g3 g3@2, ~@2 a#2@3 a#2@59]/8", // D5
  R: "[[d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4] [c3,c4] [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3] [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4] [c3,c4] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] [c3,g3,c4]!6 [c3,c4] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] [c3,g3,c4]!6 [c3,c4] [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2, ~@7 g3@10 ~@6 g3@10 ~@6 g3@10 ~@6 g3@9]/8", // D5 C5 C D5 C5 C A5 C5 …
  S: "[[a2,e3,a3] [c3,g3,c4]!6 [c3,c4] [d2,a2,d3]@56, ~@7 g3@57]/8", T: "d2@2 f3@2 d2 e3@2 d2",
  U: "[~@3 f3@2 ~ e3 f3 a2@2 f3@2 a2 e3@2 a2, g3, ~ a#2@2 ~@5]/2",
  V: "[~@2 a2 f3@2 a2 e3 f3 c3@2 f3@2 c3 e3@2 c3 ~@2 c3 f3@2 c3 f3 e3@8 ~, g3@9 ~@7]/4",
})).s("gm_overdriven_guitar").gain(0.41)

// chords · overdriven guitar
const overdriven_guitar_2 = note(`<
  ~@43 A@8 B@8 C@3 ~@21 D@8 E@3 ~@22 F@2 G@2 H@2 I@16 J@6 ~@14 K L K L M L M L ~@25
>`.pickRestart({
  A: "[[a#2,a#3] [c3,c4]!2 [a#2,a#3] [c3,c4]!2 [a#2,a#3] [c3,c4]@57]/8", // A# C A# C A# C
  B: "[a#2 ~ c3@2 ~@2 a#2@2 c3@2 ~@2 a#2@2 c3@114, ~@2 c3@2 ~ c3@2 ~@57]/8",
  C: "[a#2 ~ c3@2 ~@2 a#2@2 c3@2 ~@2 a#2@2 c3@20 ~@14, ~@2 c3@2 ~ c3@2 ~@17]/3",
  D: "[a#2 ~ c3@2 ~@2 a#2@2 c3@2 ~@2 a#2@2 ~@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [d3,d4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [f3,f4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2, ~@2 c3@2 ~ c3@2 c3@57]/8", // D F A C
  E: "[[c4,c5]!7 c4@10 ~@7, ~@7 c5 ~@16]/3", F: "a2/2", G: "f3/2", H: "e3/2", I: "[~ a2 f3 e3, g3]/8",
  J: "[g3@41 ~@7]/6", K: "~ [d4,d5] ~ [d4,d5] ~ [d4,d5] ~ [d4,d5]", L: "~ [f4,f5]!7",
  M: "~ [e4,e5] ~ [e4,e5] ~ [e4,e5] ~ [e4,e5]", // E
})).s("gm_overdriven_guitar").gain(0.41)

// chords · electric guitar muted
const electric_guitar_muted = note("<~@36 A ~ B ~ C ~ D@16 E@8 ~@10 A ~ B ~ C ~ F ~@108>".pickRestart({
  A: "[d2,a2]!5 ~@3", B: "[f2,c3]!5 ~@3", C: "[a2,e3]!5 ~@3",
  D: "[[a#2,f3]!5 ~@11 [d2,a2]!5 ~@11 [f2,c3]!5 ~@11 [a2,e3]!5 ~@11, ~@5 [a#2,f3]@59]/8", // A#5 D5 F5 A5 A#5
  E: "[[a#2,f3]!5 [a#2,f3]@59]/8", F: "[a#2,f3] [a#2,f3]@4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  ~@20 A B A B A B A C A B A B A B A C D C D C D C D E D C D C D C D E D C D C D C D E A B A B A B A F@2 B A B A B A F D
  C D C D C D E D C D C D C D E A B A B A B A F@2 B A B A B A F@2 ~ F ~ F ~ F ~ C ~ C ~ C ~ C G C ~ C ~ C ~ C ~ H I H I
  H I H I ~@2 A B A B A B A F@2 B A B A B A F A J A J A J A F@2 ~@24
>`.pickRestart({
  A: "x ~ x ~@3 x!2", B: "x!2 ~ x", C: "x!2 ~@2", D: "x ~ x ~@4 x", E: "x ~@2 x ~@2 x!2", F: "x", G: "~ x ~@2",
  H: "x ~ x!2 ~ x ~@2", I: "x ~@2 x ~ x ~@2", J: "~ x ~ x",
})).gain(0.41)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@115 [~ x!3 ~ x!3 ~ x!3 ~ x!3] ~@75>").gain(0.26)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@36 A ~ A ~ A ~ A B A ~ A ~ A ~ A B A ~ A ~ A ~ A B ~@16 A ~ A ~ A ~ A B A ~ A ~ A ~ A B ~@99
>`.pickRestart({
  A: "x!8", B: "~@3 x",
})).gain(0.41)

// drums · hihat
const hihat = s("hh").struct("<~@109 A ~ A ~ A ~@18 B@7 ~@52>".pickRestart({
  A: "x!2", B: "x!4",
})).gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@37 A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~@17 A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~@99
>`.pickRestart({
  A: "x ~@6 x", B: "x ~@2 x ~@4",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@116 [x!4]!7 ~ [x!4]!8 ~@7 [x!4] ~@51>").gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~@7 A ~@31 A ~@7 B ~@23 A ~@7 B ~@7 A ~ A ~ A ~ A ~@25 A ~ A ~@7 B ~@7 A ~@7 A ~@24
>`.pickRestart({
  A: "x", B: "x!2",
})).gain(0.41)

// drums · high tom
const high_tom = s("ht").struct("<~@123 [~@6 x!2] ~@67>").gain(0.41)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@20 A B@6 C A B@6 C ~@24 A B@6 D ~ B@6 ~@17 A B@6 D ~ B@6 ~@35 A B@6 D ~ B@6 ~ A B@6 D ~@25
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~@2", D: "x",
})).gain(0.41)

stack(
  distortion_guitar, bass, overdriven_guitar, overdriven_guitar_2, electric_guitar_muted, kick, snare, snare_soft,
  low_tom, hihat, mid_tom, open_hat, crash, high_tom, ride_bell
)

More by Papa Roach