Strudelify

Reject

Green Day

KeyB majorTempo186 bpm
0:00/0:00
// Reject — Green Day
// 186 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
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.

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~ A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E@2 F G E@2 H@2 I@2 J@2 K@2 L@2 M N M N A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E@2 F G E@2
  H@2 I@2 J@2 K@2 L@2 M N M N M N M N O P Q@2 O P Q@2 O P Q@2 P@2 R@4 S@4 T U
>`.pickRestart({
  A: "[b1@2 b1@2 b1!3 b1@2 b1 b1@2 b1!3 f#2]/2", B: "[g#1@2 g#1@2 g#1!3 g#1@2 g#1 g#1@2 g#1!3 b1]/2",
  C: "[c#2@2 c#2@2 c#2!3 c#2@2 g#2 c#2 f#2 c#2 d#2 c#2 a1]/2", D: "[f#1@2 f#1@2 f#1!3 f#1@2 f#1 f#1@2 f#1!3 a1]/2",
  E: "[e1@2 e1@2 e1!3 g1@2 g1 g1@2 g1!4]/2", F: "b1@2 b1!2 b1@2 b1 f#2", G: "~ e2 ~ f#2 ~ b1!3",
  H: "[b1@2 b1!2 b1@2 b1 b1@2 b1!7]/2", I: "[e1@2 e1@2 e1@2 e1@2 ~@2 b1 ~ b1 ~ b1@4 b1@2 b1@2 b1@4 b1@2 b1@2 b1@2]/2",
  J: "[e1@2 e1@2 e1@2 e1@2 ~@2 g#1 ~ c#2 ~ g#1@4 g#1@2 g#1@2 g#1@4 g#1@2 g#1@2 g#1@2]/2",
  K: "[g1@2 g1@2 g1!3 g1@2 g1!6 g#1]/2", L: "[f#1@2 f#1@2 f#1!3 f#1@2 f#1!7]/2", M: "b1!4 b1@2 e2@2",
  N: "b1!4 b1@2 a1@2", O: "b1 e2 b1 e2 b1 e2 b1 e2", P: "d2 g2 d2 g2 d2 g2 d2 g2", Q: "f#2 b2 f#2 b2 f#2 b2 f#2 b2",
  R: "c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2",
  S: "[c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2 c#2 f#2, ~@2 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@4 c#3@3 c#3@2 ~]/4",
  T: "e1@2 e2 g1@2 g2 b1@2", U: "b1!4 ~@4",
})).s("gm_electric_bass_pick").gain(0.54)

// chords · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  ~ A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E@2 F@2 E@2 F@2 G@2 H@2 I@2 J@2 K L K L A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 E@2 F@2 E@2
  F@2 G@2 H@2 I@2 J@2 K L K L K L K L M N O@2 M N O P Q R S T I@2 J@8 U V
>`.pickRestart({
  A: "[[b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]!3 [b2,f#3,b3]@2 [b2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]!4]/2", // B5
  B: "[[g#2,d#3,g#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]!3 [g#2,d#3,g#3]@2 [g#2,d#3,g#3] [g#2,d#3,g#3]@2 [g#2,d#3,g#3]!4]/2", // G#5
  C: "[[c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]!3 [c#3,g#3,c#4]@2 [c#3,g#3,c#4] [c#3,g#3,c#4]@2 [c#3,g#3,c#4]!4]/2", // C#5
  D: "[[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!3 [f#2,c#3,f#3]@2 [f#2,c#3,f#3] [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!4]/2", // F#5
  E: "[[e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]!3 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]!4]/2", // E5 G5
  F: "[[b2,f#3,b3]@2 [b2,f#3,b3]!2 [b2,f#3,b3]@2 [b2,f#3,b3] [b2,f#3,b3]@2 [b2,f#3,b3]!7]/2", // B5
  G: "[[e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 ~@2 [e2,b2,d3,f#3,b3] ~ [e2,b2,d3,f#3,b3] ~ [b2,f#3,b3]@4 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@4 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2]/2", // E5 Bm B5
  H: "[[e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 [e2,b2,e3]@2 ~@2 [g#2,d#3,g#3] ~ [g#2,d#3,g#3] ~ [g#2,d#3,g#3]@4 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@4 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@2 [g#2,d#3,g#3]@2]/2", // E5 G#5
  I: "[[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]!3 [g2,d3,g3]@2 [g2,d3,g3]!7]/2", // G5
  J: "[[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!3 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!7]/2", // F#5
  K: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 [e3,b3,e4]@2", L: "[b2,f#3,b3]!4 [b2,f#3,b3]@2 [a2,e3,a3]@2", M: "[e2,b2,e3]!2 ~@6",
  N: "[g2,d3,g3]!2 ~@6", O: "[b2,f#3,b3]!2 ~@6",
  P: "[b2,f#3,b3]@2 [b2,f#3,b3]@2 [f#3,b3]@4 [f3,f#3] [d#3,e3] [c3,c#3,d3] [a#2,b2] a2@4", // B5 F#maj7 Emaj7 Bmaj7
  Q: "[e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~", // E5
  R: "[g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  S: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~", // B5
  T: "[b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3]@2 [b2,f#3,b3]@2", // B5
  U: "[e2,b2,e3]@2 [e2,b2,e3] [g2,d3,g3]@2 [g2,d3,g3] [b2,f#3,b3]@2", V: "[b2,f#3,b3]!4 ~@4",
})).s("gm_distortion_guitar").gain(0.54)

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

// drums · snare
const snare = s("sd").struct("<A B@15 C B@8 D B E B@24 C B@8 D B E B@13 F@8 B@14 G H>".pickRestart({
  A: "x!4", B: "~ x ~ x", C: "~@4 x ~@7 x!4", D: "x!3 ~@4 x", E: "x ~ x ~@4 x", F: "x!2 ~@6", G: "~@2 x ~@2 x ~@2",
  H: "x ~ x!2 ~@4",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct("<~@77 [x!2 ~@6]!8 [x ~ x ~@4 x!2 ~ x ~@3 x ~]!2 [x ~ x ~@4 x!2 ~ x ~@4 x]!2 ~@12>")
  .gain(0.54)

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

// drums · mid tom
const mid_tom = s("mt").struct("<[x!4] ~@84 [~@3 x ~@4]!2 [~@3 x ~@3 x]!2 ~@12>").gain(0.54)

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

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@17 A B A C A B D E ~@28 A B A C A B D E ~@25 F G H ~@12>".pickRestart({
  A: "~ x!6 ~", B: "x!8", C: "~@5 x!2 ~", D: "~ x!7", E: "x!7 ~", F: "~@3 x", G: "~ x ~ x", H: "~ x ~@2",
})).gain(0.54)

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

More by Green Day