Strudelify

Session

The Offspring

KeyF majorTempo150 bpm
0:00/0:00
// Session — The Offspring
// 150 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@4 A B A B C D E F C D E F G H I J G H I J K@3 L K@3 M N O@2 C D E F C D E F G H I J G H I J K@3 L K@3 M N O@2 P ~@3
  Q R Q R Q R S@2 G H I J G H I J K@3 L K@3 M N O@2 P
>`.pickRestart({
  A: "[d3,a3,d4]@2 [d3,a3,d4]@2 d3!2 [d3,a3,d4]@2 [f3,c4,f4]@2 [f3,c4,f4]@2 f3!2 [f3,c4,f4]@2", // D5 F5
  B: "[c3,g3,c4]@2 [c3,g3,c4]@2 c3!2 [c3,g3,c4]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 g2!2 [g2,d3,g3]@2", // C5 G5
  C: "[d3,a3,d4]!2 ~@5 [d3,a3,d4]", D: "[f3,c4,f4]!2 ~@5 [f3,c4,f4]", E: "[c3,g3,c4]!2 ~@5 [c3,g3,c4]",
  F: "[g2,d3,g3]!2 ~@5 [g2,d3,g3]", G: "[d3,a3,d4]@2 [d3,a3,d4]@2 d3!2 d3@2 d3!2 d3@2 d3!2 [d3,a3,d4]@2",
  H: "[f3,c4,f4]@2 [f3,c4,f4]@2 f3!2 f3@2 f3!2 f3@2 f3!2 [f3,c4,f4]@2", // F5
  I: "[c3,g3,c4]@2 [c3,g3,c4]@2 c3!2 c3@2 c3!2 c3@2 c3!2 [c3,g3,c4]@2", // C5
  J: "[g2,d3,g3]@2 [g2,d3,g3]@2 g2!2 g2@2 g2!2 g2@2 g2!2 [g2,d3,g3]@2", K: "[d3,a3,d4]!4 [e3,b3,e4]!2 [f3,c4,f4]!2",
  L: "[c3,g3,c4]!4 [g2,d3,g3]!4", M: "[c3,g3,c4]!8", N: "[g2,d3,g3]!8",
  O: "[d3,a3,d4]@2 [d3,a3,d4]!2 [c3,g3,c4]@2 [db3,ab3,db4]@2 [d3,a3,d4]@2 [d3,a3,d4]!2 [c3,g3,c4]@2 [db3,ab3,db4]@2", // D5 C5 Db5 D5 C5 Db5
  P: "[d3,a3,d4]!2 ~@6", Q: "[d3,a3,d4]@2 [d3,a3,d4]!4 [d3,a3,d4]@2 ~@2 [c3,g3,c4]@2 [c3,g3,c4]@2 ~@2",
  R: "[f3,c4,f4]@2 [f3,c4,f4]!4 [f3,c4,f4]@2 ~@2 [c3,g3,c4]@2 [c3,g3,c4]@2 ~@2", // F5 C5
  S: "[[bb2,f3,bb3]@13 [c3,g3,c4] [g2,d3,g3]!2]/2", // Bb5 C5 G5
})).s("gm_overdriven_guitar").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  [x ~@2 x ~ x ~ x!3 ~ x ~ x ~ x]!72
  [x ~@2 x ~@3 x!2 ~@2 x ~@4]
  ~
  [x ~@2 x ~ x ~ x!3 ~ x ~ x ~ x]!19
  ~
>`).gain(0.41)

// drums · snare
const snare = s("sd").struct(`<
  [~ x ~ x ~ x ~ x]!72
  [~@2 x ~@3 x!2]
  [~@2 x ~@3 x ~@7 x!2]
  [~ x ~ x ~ x ~ x]!19
  [x!2 ~@6]
>`).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct("<~@73 [x!2 ~@2 x ~@5 x!4 ~@2] ~@20>").gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~@73 [~@8 x!2 ~@6] ~@20>").gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<[x!8]!72 ~@2 [~ x!7] [x!8]!18 ~>").gain(0.41)

// drums · crash
const crash = s("cr").struct("<~@74 x ~@18 [x!2 ~@6]>").gain(0.41)

stack(overdriven_guitar, kick, snare, low_tom, mid_tom, open_hat, crash)

More by The Offspring