Strudelify
KeyB majorTempo144 bpm
0:00/0:00
// 16 — Green Day
// 144 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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 · "Billie Joe - Elec. Guitar"
const distortion_guitar = note(`<
  A B C B A B C B D E D E D E D E D E D E D E D F G H G H G H G H A B C B D E D E D E D E D E D E D E D F G H G H G H G
  H ~@9 I G H G H G H G H D E D E D E D E D E D E D E D F G H G H G H G H G H G H G H G H A J@8 ~
>`.pickRestart({
  A: "b2 ~ b2 ~ f#3@2 b2@2 a2 ~ a2 ~ e3@2 a2@2, ~ [b3,d#4] ~ [a3,c#4]", // B A
  B: "e2 ~ e3@2 d#3@2 b2@4 b2@2 d#3@2 b2@2, ~ [b3,e4]@2 [f#3,d#4]@3 [f#3,b3]@2", // E5 D#m B5
  C: "[b2,f#3,d#4]@4 [b2,f#3,d#4] ~ [b2,f#3]@2 a2 [a2,e3,c#4]@3 a2@2 e2@2, ~@3 [e3,c#4]", // B B5 A C#m
  D: "b2 ~ b2 ~ [b2,f#3,d#4]@2 [b2,f#3]@2 a2 ~ a2 ~ [a2,e3,c#4]@2 [a2,e3]@2", // B B5 A A5
  E: "e2 ~ e3@2 d#3@2 b2@4 b2 ~ [b2,f#3,b3]@2 b2@2, ~ [b3,e4]@2 [f#3,d#4]@3 ~@2", // B5 E5 D#m
  F: "e2 ~ e3@2 d#3@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2, ~ [b3,e4]@2 d#4@3 ~@2", // B5 E5
  G: "[c3,g3,c4]!4 [d3,a3,d4]!4", H: "[b2,f#3,b3]!8",
  I: "b2 ~ b2 ~ [b2,f#3] ~ [b2,f#3,b3] ~ [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2", // B5
  J: "[e2 ~ e3@2 d#3@2 [b2,f#3,d#4]@122, ~ [b3,e4]@2 ~@61]/8", // B E5
})).s("gm_distortion_guitar").gain(0.25)

// bass · electric bass pick · "Mike - Bass Guitar"
const bass = note(`<
  ~@3 A B C D C E C E C E C E C E C E C E C E F G H G H G H G I B C D C E C E C E C E C E C E C E C E F G H G H G H G I
  J K L M N O P@2 Q R G H G H G H G I E C E C E C E C E C E C E C E F G H G H G H G I G H G H G H G I B S@8 ~
>`.pickRestart({
  A: "~@9 b2 a2 f#2 f2 e2 d2 a1", B: "b1 ~ b1 ~ b1@2 b1@2 a1 ~ a1 ~ a1@2 a1@2",
  C: "e1 ~ e2@2 d#2@2 b1@4 b1@2 a1@2 f#1@2", D: "b1@4 b1 ~ f#1@2 a1@4 a1@2 f#1@2",
  E: "b1 ~ b1 ~ b1@2 f#1@2 a1 ~ a1 ~ a1@2 f#1@2", F: "e1 ~ e2@2 d#2@2 b1@4 b1@2 b1@2 b1@2", G: "c2!4 d2!3 c2",
  H: "b1!4 c2 b1 a1 b1", I: "b1!5 a1 f#1 a1", J: "b1@2 b2 b1 a2 b2 b1 a2@2 f#2 e2 d2 b1 a1 f#1 a1",
  K: "b1@2 b2 d3@2 b2 d3 e3@2 d3 b2 d3 b2 a2 f#2 d2", L: "b1 d2 ~ d#2 ~ e2 ~ f#2 ~ a2 ~ b2 ~ d3 ~ f#3",
  M: "f3!2 f#3 f3!2 f#3 f3!2 f#3 f3!2 f#3 f3 e3 d#3 d3", N: "b1 b2@2 b1 b3@2 b1 b2@2 b1 b3@2 b1 b2 d3 c#3",
  O: "c#3 c3 b2 a#2 a2 g#2 g2 f#2 f2 e2 d#2 d2 c#2 c2 b1 a#1",
  P: "[f3@3 f3@3 f3@2 f#3 e3 d3@2 b2 a2 f#2 b2@2 b2 d3 b2 b3 b2 b1 d3@2 b2 a2 b2@2 b2 f#2 d2, f#3 ~@2 f#3 ~@2 f#3 ~@25]/2",
  Q: "d3@2 b2@2 a2 f#2 e2 d2", R: "b1!8", S: "[e1 ~ e2@2 d#2@2 b1@122]/8",
})).s("gm_electric_bass_pick").gain(0.3)

// chords · distortion guitar · "Billie Joe - Elec. Guitar" · D#dim B7
const distortion_guitar_2 = note(`<
  ~@60
  [b2!4 [d#4,f#4,a4]!2 b2 [d#4,f#4,a4] b2 [d#4,f#4,a4] b2!2 [d#4,f#4,a4] b2!3]!8
  [b2!4 [d#4,f#4,a4]!2 b2 [d#4,f#4,a4] b2 [d#4,f#4,a4] b2!2 [d#4,f#4,a4] b2 [b2,d#4,f#4,a4] b2]
  ~@51
>`).s("gm_distortion_guitar").gain(0.25)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@11 x ~@4] ~@107 [~@5 x ~@10] ~@8>").gain(0.25)

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

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

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

// drums · high tom
const high_tom = s("ht").struct("<~@7 A ~@15 B ~@11 A ~@15 B ~@41 B ~@26>".pickRestart({
  A: "~@13 x ~@2", B: "~@14 x!2",
})).gain(0.25)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@24 A B A B A B A C ~@20 A B A B A B A C ~@10 A B A B A B A C ~@16 A B A B A B A C A B A B A B A C ~@10
>`.pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!6 ~@2",
})).gain(0.25)

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

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

More by Green Day