Strudelify
When I Come Around cover art

1994 · Dookie

When I Come Around

Green Day

KeyF♯ majorTempo98 bpm
0:00/0:00
// When I Come Around — Green Day
// 98 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(98/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 · "DISTORTION"
const distortion_guitar = note(`<
  A B C D C B E B E B E B E B E B E B E B E B F G H G I D C B E B E B E B E B E B E B E B E B F G H G I D C D C D C D C
  G H G I D C D C D C D J@2
>`.pickRestart({
  A: "~@14 [a#2,f3,a#3] [g#2,d#3,g#3]", // A#5 G#5
  B: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]!2", // F#5 C#5
  C: "[d#3,a#3,d#4]@2 [d#3,a#3,d#4]@2 ~@2 [b2,f#3,b3]@8 [a#2,f3,a#3] [g#2,d#3,g#3]", // D#5 B5 A#5 G#5
  D: "[f#2,c#3,f#3]@4 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]@2 [c#3,g#3,c#4]!2", // F#5 C#5
  E: "[d#3,a#3,d#4]@2 [d#3,a#3,d#4]@2 ~@2 [b2,f#3,b3]@6 [b2,f#3,b3]@2 [a#2,f3,a#3] [g#2,d#3,g#3]", // D#5 B5 A#5 G#5
  F: "[d#3,a#3,d#4]!2 ~ [b2,f#3,b3]@3 [b2,f#3,b3]@2", G: "[g#2,d#3,g#3]!8", H: "[b2,f#3,b3]!8", I: "[b2,f#3,b3]!5 ~@3",
  J: "[[d#3,a#3,d#4]!2 ~ [b2,f#3,b3]@9 ~@4]/2", // D#5 B5
})).s("gm_distortion_guitar").gain(0.36)

// other · distortion guitar · "DISTORTTIN"
const distortion_guitar_2 = note(`<
  ~@55
  [f#4 c#4 g#4 c#4 g#4!2 f#4 c#4]
  [f#4@2 f#4@2 f#4@2 g#4@4 f#4@2 c#4@2 c#4!2]
  [f#4@2 c#4!2 g#4@2 c#4 g#4 g#4@2 c#4@2 c#4@2 c#4!2]
  [d#4!3 d#4@2 d#4 d#4@2]
  ~@13
>`).s("gm_distortion_guitar").gain(0.22)

// bass · fretless bass · "FRETLBASS"
const bass = note(`<
  ~@2 A B C B D B C B D B C B D B C B D B C B C E F E G B C B D B C B D B C B D B C B D B C B C E F E G B C B C B C B C
  E F E G B C B C B C B H@2
>`.pickRestart({
  A: "~@10 f#2!2 a#2 b2 a#2 g#2", B: "f#2@2 f#2!2 a#2 b2 a#2 g#2 c#2@2 c#2!2 f2 f#2 f2 d#2", C: "d#2!2 f#2 b2@3 ~@2",
  D: "d#2@2 d#2@2 f#2 a#2 b2@6 ~@4", E: "g#2!8", F: "b2!8", G: "b2@2 b2@2 b2@2 b2@2 b2@2 ~ b2 a#2@4",
  H: "[d#2!2 f#2 b2@9 ~@4]/2",
})).s("gm_fretless_bass").gain(0.36)

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

// drums · rim
const rim = s("rim").struct("<~@2 A B@19 C B D B E B@19 C B D B E B@3 F B@3 C B D B E B@7 G ~>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@3 x!8", D: "~@4 x ~@2 x ~@4 x ~ x!2", E: "x!9 ~@7", F: "~ x!3",
  G: "x!6 ~@10",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<~@22 A ~@3 B ~@19 A ~@3 B ~@11 B ~@7 C ~>".pickRestart({
  A: "~@12 x!4", B: "~@4 x!4 ~@8", C: "~@4 x!2 ~@10",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@23 A B A ~@21 A B A ~@9 A B A ~@8 C ~>".pickRestart({
  A: "x!8", B: "x!3 ~ x ~@3", C: "~@3 x ~@4",
})).gain(0.4)

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

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

// drums · ride
const ride = s("rd").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~ A B A ~ A ~ A ~ A ~ A C ~@2 A ~ A ~ A ~ A ~ A ~ A B A ~ A ~ A ~ A ~ A C ~@2 A ~ A ~ A ~ A ~ A
  C ~@2 A ~ A ~ A ~ A D ~
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x", D: "~@3 x ~@4",
})).gain(0.4)

stack(distortion_guitar, distortion_guitar_2, bass, kick, rim, snare, low_tom, hihat, open_hat, crash, ride)

More by Green Day