Strudelify

Why Don't You Get a Job?

The Offspring

KeyF majorTempo107 bpm
0:00/0:00
// Why Don't You Get a Job? — The Offspring
// 107 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar, guitar.
setcpm(107/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.

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~@46
  [~@2 d3@2 d3@2 d3@2 d3!2 d3@2 d3!2 d3@2]
  [d3 ~@7]
  ~@23
  [~@2 d3@2 d3@2 d3@2 d3!2 d3@2 d3!2 d3@2]
  [d3 ~@7]
  ~
>`).s("gm_acoustic_guitar_steel").gain(0.57)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel_2 = note(`<
  ~@8 A B C D E B F E G B F E G B F E G B C D E B F E G B F E G B F E B H C G B H I J E B C D E B F E G B F E G B F E G
  B F E G B F K J L
>`.pickRestart({
  A: "~@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2", // F
  B: "[a3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2", // F Bb
  C: "[bb3,d4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2", // Bb F
  D: "[a3,c4,f4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2", // F C
  E: "[g3,c4,e4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2", // C F
  F: "[bb3,d4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2", // Bb F C
  G: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2", // F
  H: "[bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2", // Bb
  I: "[bb3,d4,f4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2", // Bb G
  J: "[g3,b3,g4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g3,c4,e4]@2", // G C
  K: "[g3,c4,e4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2", // C G
  L: "[g3,c4,e4] [a3,c4,f4]@7", // C F
})).s("gm_acoustic_guitar_steel").gain(0.57)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@8 A B C D E B F E G H I J K H I J E B C D E B F E G H I J K H I J L M N O P M Q R S B C D E B F E G H I J K H I J K
  H I J K H T U V W
>`.pickRestart({
  A: "~ f2!7", B: "f2 bb1!7", C: "bb1 f2!7", D: "f2 c2!7", E: "c2 f2!7", F: "bb1 f2!4 c2!3", G: "f2!3 d2 c2 d2 f2 d2",
  H: "c2 bb1!2 b1 c2 d2 f2 g2", I: "f2!3 d2 c2!3 d2", J: "e2 f2!2 d2 c2 d2 f2 d2", K: "c2 f2!2 d2 c2 d2 f2 d2",
  L: "c2 bb1!7", M: "bb1!8", N: "bb1 f1!7", O: "f1!8", P: "f1 bb1!7", Q: "bb1 g1!7", R: "g1 c3!2 bb2!2 a2!2 g2",
  S: "g2 f2!7", T: "f2!3 d2 c2!3 bb1", U: "a1 g1!7", V: "g1 c2!7", W: "c2 f1@7",
})).s("gm_electric_bass_finger").gain(0.68)

// other · brass section · "trumpet"
const brass_section = note("<~@43 A B ~ C@3 ~@22 D@2 E>".pickRestart({
  A: "~@2 f4 ~ f4@2 e4 ~ e4@2 d4 ~ d4@2 c4 ~", B: "c4 bb3@7", C: "[~ b4@6 b4@2 c5@8 ~@7, ~ g4@16 ~@7]/3",
  D: "[~@2 [d4,g4]@16 c4@8 [c4,c5] ~ [bb3,bb4] ~ [a3,a4] ~]/2", E: "[g3,g4] ~ f4@10 ~@4",
})).s("gm_brass_section").gain(0.57)

// other · steel drums
const steel_drums = note(`<
  ~@15 A B C D E B C D F ~@7 A B C D E B C D F G H I J K H L M N ~@6 A B C D E B C D E B C D E B C D O@2 P
>`.pickRestart({
  A: "~@6 f5 g5", B: "a5 ~ f5 g5 a5 ~ a5 ~", C: "a5 bb5 a5 g5 a5 ~@3", D: "a5 ~ a5 g5 f5 g5 a5 g5", E: "f5 ~@5 f5 g5",
  F: "f5 ~@7", G: "~ bb4!4 f5 g5 f5", H: "g5 bb4!4 f5 g5 f5", I: "g5 f4!4 c5 d5 c5", J: "d5 f5!2 e5!2 d5!2 c5",
  K: "c5 bb4!4 f5 g5 f5", L: "g5 b4!7", M: "b4 c5!7", N: "c5 ~@7", O: "[~ g5@8 c5@4 c6 bb5 a5]/2", P: "g5 f5@7",
})).s("gm_steel_drums").gain(0.8)

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

// drums · rim
const rim = s("rim").struct("<~@2 [~ x] [x!2]!13 x ~@57>").gain(0.68)

// drums · snare
const snare = s("sd").struct("<~@2 [~@3 x ~@3 x]!71 [~ x ~@6]>").gain(0.68)

// drums · hihat
const hihat = s("hh").struct("<~@16 [~ x!7] [x!8]!56 [x!2 ~@6]>").gain(0.68)

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 [~@3 x ~@3 x]!71 ~>").gain(0.68)

// drums · open hat
const open_hat = s("oh").struct("<~@73 [~ x ~@6]>").gain(0.68)

// drums · crash
const crash = s("cr").struct("<~@73 [~ x ~@6]>").gain(0.68)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@24
  [~@2 x ~ x ~ x ~ x!3 ~ x ~ x ~]
  [x!3 ~ x ~ x ~ x!3 ~ x ~ x ~]!48
  [x!2 ~@14]
>`).gain(3.44)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct("<~@32 [~ x ~ x ~ x ~ x]!41 [~ x ~@6]>").gain(2.35)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, brass_section, steel_drums, kick, rim, snare, hihat, mid_tom,
  open_hat, crash, cabasa, jingle_bells
)

More by The Offspring