Strudelify
2,000 Light Years Away cover art

2,000 Light Years Away

Green Day

KeyB♭ majorTempo192 bpm
0:00/0:00
// 2,000 Light Years Away — Green Day
// 192 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(192/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 · "Mike D."
const bass = note(`<
  ~ A B A B A B A B C B C B C B C D E F G H I J K L E F G H I J A B A B A B A B C B C B C B C D M@2 N@2 I J K L M@2 N@2
  I J A B A B A B A B O B O B O B O B O B O B O B C D E F G H I J K L E F G H I J A B A B A B A B P
>`.pickRestart({
  A: "bb2@3 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ f3 ~ g2 ~", B: "~@2 f2@3 ~ f2 ~ f2 ~ g2 ~ bb2 ~ c3 ~",
  C: "bb2@3 ~ bb2@3 ~ bb2 ~ bb2 ~ bb2 ~ g2 ~", D: "~@2 f2@3 ~ f2 ~ f2 ~ g2 ~ bb2 ~ g2 ~",
  E: "g2@3 ~ g2@3 ~ g2 ~ g2 ~ a2 ~ bb2@2", F: "bb2@3 ~ bb2@3 ~ bb2 ~ bb2 ~ c3 ~ d3 ~", G: "g2 ~@3 g2 ~@9 f2@2",
  H: "f2@3 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", I: "eb2@3 ~ eb2 ~ eb2@3 ~ eb2 ~ eb2 ~ f2 ~",
  J: "f2@3 ~ f2 ~ f2@3 ~ f2 ~ f2@3 ~", K: "a2 ~ bb2 ~ bb2 ~ bb2 ~ a2 ~ bb2 ~ bb2 ~ bb2 ~",
  L: "a2 ~ bb2 ~ bb2 ~ bb2 ~ a2 ~ bb2 ~ bb2 ~ f2 ~",
  M: "[g2@3 ~ g2@3 ~ g2 ~ g2 ~ a2 ~ bb2@5 ~ bb2@3 ~ bb2 ~ bb2 ~ c3 ~ d3 ~]/2",
  N: "[g2 ~@3 g2 ~@9 f2@5 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~]/2", O: "bb2@3 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ g2 ~",
  P: "bb2@11 ~@5",
})).s("gm_electric_bass_pick").gain(0.51).pan(0.7)

// chords · overdriven guitar · "Billy Joe A."
const overdriven_guitar = note(`<
  ~ A B A B A B A B C@8 D@2 E@2 F G H I D@2 E@2 F G A B A B A B A B C@8 D@2 E@2 F G H I D@2 E@2 F G A B A B A B A B J
  ~@5 K@2 ~@6 L M D@2 E@2 N G H I D@2 E@2 N G A B A B A B A B O
>`.pickRestart({
  A: "[bb2,f3,bb3]@3 ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [f3,bb3] ~ [f2,c3,f3] ~@3 [g2,d3,g3] ~, ~@4 bb2 ~@3", // Bb5 F5 G5
  B: "~@2 [f2,c3,f3]@3 ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~", // F5
  C: "[[bb2,f3,bb3]@3 ~ [bb2,f3,bb3]@3 ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [f2,c3,f3]@5 ~ [f2,c3,f3]@3 ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~]/2", // Bb5 F5
  D: "[[g2,d3,g3]@3 ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [a2,eb3,a3] ~ [bb2,f3,bb3]@5 ~ [bb2,f3,bb3]@3 ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [c3,g3,c4] ~ [d3,a3,d4] ~]/2", // G5 Adim Bb5 C5 D5
  E: "[[g2,d3,g3] ~@3 [g2,d3,g3] ~@9 [f2,c3,f3]@5 ~ [f2,c3,f3]@3 ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~]/2", // G5 F5
  F: "[eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3] ~ [eb2,bb2,eb3]@3 ~ [eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~ [f2,c3,f3] ~", // Eb5 F5
  G: "[f2,c3,f3]@3 ~ [f2,c3,f3] ~ [f2,c3,f3]@3 ~ [f2,c3,f3] ~ [f2,c3,f3]@3 ~", // F5
  H: "[a2,eb3,a3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [a2,eb3,a3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~", // Adim Bb5 Adim Bb5
  I: "[a2,eb3,a3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [a2,eb3,a3] ~ [bb2,f3,bb3] ~ [bb2,f3,bb3] ~ [f2,c3,f3] ~", // Adim Bb5 Adim Bb5 F5
  J: "[bb2,f3,bb3]", K: "[~@14 f4@5 ~ bb4 ~ f4 ~ f4 ~ d4 ~ eb4 ~ bb3 ~]/2", L: "c6!4 a5!2 ab5!2 f5!2 e5!2 d5!2 c5!2",
  M: "b4!2 c5!2 d5!2 e5!2 f5!4 a5 c6 e6 c6",
  N: "[bb2,eb3]@3 ~ [bb2,eb3] ~ [bb2,eb3]@3 ~ [bb2,eb3] ~ [bb2,eb3] ~ [f2,c3,f3] ~", O: "[bb2,f3,bb3]@11 ~@5",
})).s("gm_overdriven_guitar").gain(0.41).pan(0.3)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@19 A ~@7 A ~@21 A ~@7 A ~@10 B ~@18 A ~@7 A ~@12>".pickRestart({
  A: "~ x ~@6", B: "~@14 x!2",
})).gain(0.51)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A B A B A B C ~ A D A D A D C ~@15 A B A B A B C ~ A D A D A D C ~@23 A D A D A D A D A D A D A D C ~@15 A B A B A B
  ~@3
>`.pickRestart({
  A: "~@2 x!6", B: "x!6 ~@2", C: "~@2 x!3 ~ x ~", D: "x!8",
})).gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct("<~@18 A B ~@6 A B ~@20 A B ~@6 A B ~@10 C ~@17 A B ~@6 A B ~@12>".pickRestart({
  A: "~@14 x!2", B: "x", C: "~@12 x!2 ~@2",
})).gain(0.51)

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

// drums · high tom
const high_tom = s("ht").struct("<~@68 [~@10 x!2 ~@4] ~@39>").gain(0.51)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@17 A B ~@6 A B ~@20 A B ~@6 A B ~@28 A B ~@6 A B ~@13>".pickRestart({
  A: "~@2 x!6", B: "x!7 ~",
})).gain(0.51)

stack(bass, overdriven_guitar, kick, snare, low_tom, pedal_hat, mid_tom, open_hat, high_tom, crash, ride_bell)

More by Green Day