Strudelify
Coming Clean cover art

1994 · Dookie

Coming Clean

Green Day

KeyB♭ majorTempo85 bpm
0:00/0:00
// Coming Clean — Green Day
// 85 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 33 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<A B C D E F G H C D C D E F G H C D C D E F G H C D C D E F G H I>".pickRestart({
  A: "[bb2,f3,bb3]", B: "[g2,d3,g3]",
  C: "[bb2,f3,bb3]@3 [bb2,f3,bb3] [bb2,f3,bb3]@3 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]!5", // Bb5
  D: "[g2,d3,g3]@3 [g2,d3,g3] [g2,d3,g3]@3 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]!5", // G5
  E: "[f2,c3,f3]@3 [f2,c3,f3] [f2,c3,f3]@3 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3] [f2,c3,f3]@3 [d2,a2,d3]", // F5 D5
  F: "[eb2,bb2,eb3]@3 [eb2,bb2,eb3]!2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]!5", // Eb5
  G: "[f2,c3,f3]@3 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]!5", // F5
  H: "[eb2,bb2,eb3]@2 [eb2,bb2,eb3]@2 [eb2,bb2,eb3]!12", I: "[bb2,f3,bb3]@5 [bb2,f3,bb3] ~@2",
})).s("gm_electric_guitar_clean").gain(0.41)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@16 A B A C D E F G ~@9>".pickRestart({
  A: "[f3,f4]@3 [d3,d4] [d3,d4]@3 [d3,d4]@2 [c3,c4]@2 [d3,d4]!2 [eb3,eb4] [d3,d4] [a2,a3]", // F D C D Eb D A
  B: "[bb2,bb3]@3 [eb3,eb4] [d3,d4]@3 [d3,d4]@2 [d3,d4]@2 [eb3,eb4] [d3,d4]!4", // Bb Eb D Eb D
  C: "[bb2,bb3]@3 [eb3,eb4] [d3,d4]@3 [d3,d4]@2 [d3,d4]@2 [eb3,eb4] [d3,d4]@2 [bb2,bb3]@2", // Bb Eb D Eb D Bb
  D: "[a2,a3]@3 [bb2,bb3] [bb2,bb3]@3 [c3,c4]@2 [bb2,bb3]@2 [bb2,bb3] [a2,a3] [bb2,bb3]!3", // A Bb C Bb A Bb
  E: "[g2,g3]@3 [bb2,bb3]!2 [bb2,bb3]@2 [eb3,eb4]@2 [d3,d4]@2 [eb3,eb4]@2 [eb3,eb4]!2 [d3,d4]", // G Bb Eb D Eb D
  F: "[a2,a3]@3 [bb2,bb3]!2 [bb2,bb3]@2 [c3,c4]@2 [bb2,bb3]@2 [bb2,bb3] [a2,a3] [bb2,bb3]!3", // A Bb C Bb A Bb
  G: "[g2,g3]@3 [bb2,bb3]!13", // G Bb
})).s("gm_distortion_guitar").gain(0.41)

// bass · fretless bass · "FRETLESS"
const bass = note("<A B C D E F G H C D C D E I G H C D C D E J G H C D C D E I G H K>".pickRestart({
  A: "bb2", B: "g2", C: "bb2@3 bb2 bb2@3 bb2@2 bb2@2 bb2!2 c3 bb2 f2", D: "g2@3 g2 g2@3 g2@2 g2@2 g2!4 d2",
  E: "f2@3 f2 f2@3 f2@2 f2@2 f2 f2@3 d2", F: "eb2@3 eb2!2 eb2@2 eb2@2 eb2@2 eb2!5",
  G: "f2@3 f2!2 f2@2 f2@2 f2@2 f2!4 d2", H: "eb2@2 eb2@2 eb2!12", I: "eb2@3 eb2!2 eb2@2 eb2@2 d2@2 eb2@2 f2@3",
  J: "eb2@3 eb2!2 eb2@2 eb2@2 d2@2 eb2@2 d2@3", K: "bb2@5 bb2 ~@2",
})).s("gm_fretless_bass").gain(0.25)

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

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

// drums · clap
const clap = s("cp").struct("<~@4 A@3 ~@5 A@3 ~@5 A@3 ~@5 A@3 ~@2>".pickRestart({
  A: "~@7 x",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<A B ~@9 C ~@7 D ~@7 D ~@5>".pickRestart({
  A: "~@13 x ~@2", B: "~@15 x", C: "~@13 x ~ x", D: "~@11 x ~ x ~ x",
})).gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<[~@13 x ~@2] ~@10 [~@13 x ~ x] ~@7 [~@10 x ~ x ~ x!2] ~@7 [~@11 x ~ x ~ x] ~@5>")
  .gain(0.41)

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

// drums · ride
const ride = s("rd").struct("<~@2 x!30 [x ~@4 x ~@2]>").gain(0.41)

// drums · splash
const splash = s("cr").struct("<~@2 x!21 [x!2 ~ x ~@4] x!8 [x ~@4 x ~@2]>").gain(0.41)

stack(
  electric_guitar_clean, distortion_guitar, bass, kick, snare, clap, low_tom, hihat, mid_tom, open_hat, ride, splash
)

More by Green Day