Strudelify

Rest

Green Day

KeyG majorTempo96 bpm
0:00/0:00
// Rest — Green Day
// 96 bpm, 12/8, key G 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 (3/8 at bar 1, 12/8 at bar 2) are rendered on a constant 12/8 grid of one bar per cycle
// note: Full arrangement: all 50 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/6)

// 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.

// other · overdriven guitar · "BJ-guitar"
const overdriven_guitar = note(`<
  A B C B C B@2 D B@3 D B E B C F@2 G H D B I@2 D B E B@2 J@2 K L M B@2 D B@3 D B E B@2 N@5
>`.pickRestart({
  A: "~@9 [f2,c3] g3 d3", B: "g2 d3 g2 g3 d3!2 g2 d3 g2 g3 d3!2", C: "g2 d3 g2 g3 d3!2 [f2,c3] g3 d3 [f2,c3] g3 d3",
  D: "f2 d3 f2 g3 d3!2 f2 d3 f2 g3 d3!2", E: "a#2 d3 a#2 g3 d3!2 a2 g3 d3 [f2,c3] g3 d3",
  F: "[[g2,d3]@39 ~@3 [f2,c3]@5 ~]/2", G: "[g2,d3]@19 ~ [g2,d3]@3 ~",
  H: "[g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]!2 g3@2 d3@2 d3@2", // G5
  I: "[[g2,d3]@41 ~ g3@2 d3@2 d3@2]/2", J: "a#2 d3 a#2 g3 d3!2 a2 d3 a2 g3 d3!2",
  K: "a#2 d3 a#2 g3 d3!2 c3 d3 c3 g3 d3!2", L: "d3!3 g3 d3!5 g3 d3!2", M: "d3!3 g3 d3!2 [f2,c3] g3 d3 [f2,c3] g3 d3",
  N: "[a#2@2 d3@2 a#2@2 g3@2 ~ d3@2 d3@2 a2@2 g3@2 d3@2 [f2,c3]@2 g3@2 d3@2 ~ [g2,d3]@76 ~@18]/5", // F5 G5
})).s("gm_overdriven_guitar").gain(0.72)

// bass · electric bass finger · "MD-bass"
const bass = note(`<
  A B C B C B@2 D B@3 D E F B C G@2 H@2 D B H@2 D E F B E I@2 J K L B@2 D B@3 D E F B E M N@2 ~@2
>`.pickRestart({
  A: "~@18 f1@5 ~", B: "g1@11 ~ g1@11 ~", C: "g1@11 ~ f1@5 ~ f1@5 ~", D: "f1@11 ~ f1@11 ~",
  E: "g1@11 ~ g1@7 ~ g1@2 a1@2", F: "a#1@7 ~ a#1@2 a#1@2 a1@5 ~ f1@5 ~", G: "[g1@35 ~@7 f1@5 ~]/2", H: "[g1@47 ~]/2",
  I: "a#1@7 ~ a#1@2 a#1@2 a1@7 ~ a1@2 a1@2", J: "a#1@7 ~ a#1@2 a#1@2 c2@7 ~ c2@2 c2@2", K: "d2@11 ~ d2@11 ~",
  L: "d2@11 ~ f1@5 ~ f1@5 ~", M: "a#1@7 ~@2 a#1@2 a#1@2 a1@6 f1@5", N: "[~@2 g1@25 ~@21]/2",
})).s("gm_electric_bass_finger").gain(0.72)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@16
  [~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x!2]
  ~
  [~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x!2]
  ~@3
  [~@4 x!2 ~@4 x!2 ~@4 x!2 ~@4 x!2]
  ~@27
>`).gain(0.46)

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

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

// drums · ride bell
const ride_bell = s("rd").struct("<A B@15 ~@4 B@2 ~@2 B@21 C D E ~@2>".pickRestart({
  A: "~@9 x!3", B: "x!12", C: "x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  D: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x ~ x ~ x", E: "~ x ~@22",
})).gain(0.46)

// drums · tambourine
const tambourine = s("tb").struct("<~ A B A B A@8 B A B A B A C A@3 C A@2 B A@6 B A@8 B A@2 B ~@4>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x ~@5 x!2 ~",
})).gain(0.46)

stack(overdriven_guitar, bass, kick, rim, snare, crash, ride_bell, tambourine)

More by Green Day