Strudelify

Chump

Green Day

KeyB♭ majorTempo176 bpm
0:00/0:00
// Chump — Green Day
// 176 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 126 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): BJ-3.
setcpm(176/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 · distortion guitar · "Billie Joe Armstrong"
const distortion_guitar = note(`<
  ~ A B A B A B A B A C D@2 A B A B A C D@2 E@6 F G A B A B A B A B A C D@2 A B A B A C D@2 E@6 F G A B A B A B A H@7
  ~@9 I J@8 K@4 L@4 M N M O P@2 Q@15 R S@5 ~@2
>`.pickRestart({
  A: "[bb2,f3,bb3,d4]@3 ~ [bb2,f3,bb3,d4]@3 ~ [ab2,eb3,ab3,c4]@2 [f2,c3]@4 [eb2,bb2,eb3,g3]@2", // Bb Ab F5 Eb
  B: "~@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@5 ~ [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [bb2,f3,bb3]!2", // Eb5 Bb5
  C: "~@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@5 ~ [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [f2,c3,f3]!2", // Eb5 F5
  D: "[[f2,c3,f3,a3]@3 ~ [f2,c3,f3,a3]@3 ~ [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@4 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@3 ~ [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2 [f2,c3,f3,a3]@2 [eb2,bb2]@2]/2", // F Eb5
  E: "[[ab2,eb3,ab3]@3 ~ [ab2,eb3,ab3]@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@4 [bb2,f3,bb3]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [ab2,eb3,ab3]@2]/2", // Ab5 Eb5 Bb5 Ab5
  F: "[eb2,bb2,eb3]@7 [eb2,bb2,eb3]", G: "[eb2,bb2,eb3]@7 ~ [eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3]@3 ~",
  H: "[~@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@5 ~ [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [f2,c3,f3]@96 f3@2]/7", // Eb5 F5
  I: "~@14 [f3,c4,f4]!2", J: "[f3@126 [f3,c4,f4]!2]/8", K: "[[f3,c4,f4]@62 [f3,c4,f4]!2]/4",
  L: "[[f3,c4,f4]@30 [f3,c4,f4]!2]/2", M: "[f3,c4,f4]@14 [eb3,bb3,eb4]!2", N: "[eb3,bb3,eb4]@14 [f3,c4,f4]!2",
  O: "[eb3,bb3,eb4]@14 [f2,c3,f3]!2", P: "[f2,c3,f3]@5 ~ [eb2,bb2,eb3]!2 [eb2,bb2,eb3]@5 ~ [f2,c3,f3]!2",
  Q: "[f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]!2", // F5
  R: "[f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]!4 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]!2", // F5
  S: "[[f2,c3,f3]@9 ~ [f2,c3,f3]@19 [f2,c3,f3]@47 ~@4]/5", // F5
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar · "BJ-2"
const distortion_guitar_2 = note(`<
  ~@2 A ~ A ~ A ~ A ~ A B@2 ~ A ~ A ~ A B@2 C@6 ~@3 A ~ A ~ A ~ A ~ A B@2 ~ A ~ A ~ A B@2 C@6 ~@3 A ~ A ~ A ~ D@3 ~@14
  E@6 ~@13 F G@2 H@15 I ~@7
>`.pickRestart({
  A: "~@6 [bb3,eb4]@5 ~@5", // Eb5
  B: "[[c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [c4,f4]@4 [c4,f4]@2 [c4,f4]@3 ~ [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 [bb3,eb4]@2]/2", // F5 Eb5
  C: "[c4@3 ~ c4@2 g3@2 g3@2 g3@4 d4@4 d4@2 d4@2 d4@4 d4@2 d4@2 c4@2]/2", D: "[~@6 [bb3,eb4]@5 ~@3 a3@33 ~]/3",
  E: "[c4@95 ~]/6", F: "~@12 [eb4,f4] [c4,d4] a3!2", G: "a3@5 ~ g3!2 g3@5 ~ a3!2",
  H: "a3@2 a3!2 a3@2 a3!2 a3@2 a3!2 a3@2 a3!2", I: "a3@2 a3!2 a3@2 a3!4 a3@2 a3@3 ~",
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar · "BJ-3"
const distortion_guitar_3 = note("<~@12 A ~@7 A ~@19 A ~@7 A ~@77>".pickRestart({
  A: "~@7 ab3",
})).s("gm_distortion_guitar").gain(0.72)

// other · distortion guitar · "BJ-4"
const distortion_guitar_4 = note("<~@12 A ~@7 A ~@19 A ~@7 A ~@56 B@11 ~@10>".pickRestart({
  A: "~@7 f3", B: "bb5!16",
})).s("gm_distortion_guitar").gain(0.72)

// bass · electric bass pick · "Mike Dirnt"
const bass = note(`<
  ~ A@8 B@2 C@2 A@4 B@2 C@2 D@6 E F A@8 B@2 C@2 A@4 B@2 C@2 D@6 E F A@6 B@2 G H G H G H G H G H G H G H G I G H G H G H
  G I G H G I G I G I G I G I J@2 K@16 L@5 ~@2
>`.pickRestart({
  A: "[bb1@3 ~ bb1@3 ~ ab1@2 f1@4 eb1@4 eb1@2 eb1@2 eb2@4 eb1@2 eb1@2 ab1@2]/2",
  B: "[bb1@3 ~ bb1@3 ~ ab1@2 f1@4 eb1@4 eb1@2 eb1@2 eb2@4 eb1@2 eb1@2 f1@2]/2",
  C: "[f1@3 ~ f1@3 ~ f1@2 f1@2 f1@2 f1@4 f1@2 f1@3 ~ f1@2 f1@2 f1@2 eb1@2]/2",
  D: "[ab1@3 ~ ab1@2 eb2@2 eb2@2 eb2@4 bb1@4 bb1@2 bb1@2 bb1@4 bb1@2 bb1@2 ab1@2]/2", E: "eb2@15 ~",
  F: "eb2@7 ~ eb2@3 ~ eb2@3 ~", G: "f1!2 f2 f1!3 f2 f1", H: "eb1!2 eb2 eb1!2 eb2 bb1 g1",
  I: "eb1@2 eb1@2 eb2@2 eb1@2 eb1@2 eb2@2 bb1@2 f1!2", J: "f1@5 ~ eb1!2 eb1@5 ~ f1!2", K: "f1!16",
  L: "[f1@9 ~ f1@19 f1@47 ~@4]/5",
})).s("gm_electric_bass_pick").gain(0.72)

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

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

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

// drums · hihat
const hihat = s("hh").struct("<~@65 A ~@7 A ~@46 B C D E C F>".pickRestart({
  A: "x", B: "~@5 x ~ x", C: "~@3 x ~@4 x ~@4 x ~@2", D: "~@2 x ~@3 x ~@4 x ~@4", E: "x ~@4 x ~@4 x ~@3 x ~",
  F: "~ x ~@6",
})).gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@117 A ~ B ~ C D E F ~>".pickRestart({
  A: "~@15 x", B: "x", C: "~@2 x ~@2 x ~@5 x ~@4", D: "~@5 x ~@2 x ~@5 x ~", E: "~@8 x ~@2 x ~@4",
  F: "~@2 x ~@8 x ~@2 x ~",
})).gain(0.72)

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

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

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

// drums · ride
const ride = s("rd").struct("<~@103 [~ x ~@2] ~ [~ x ~@2]!11 ~@10>").gain(0.72)

stack(
  distortion_guitar, distortion_guitar_2, distortion_guitar_3, distortion_guitar_4, bass, kick, snare, low_tom, hihat,
  mid_tom, open_hat, high_tom, crash, ride
)

More by Green Day