Strudelify

Nitro (Youth Energy)

The Offspring

KeyF minorTempo165 bpm
0:00/0:00
// Nitro (Youth Energy) — The Offspring
// 165 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(165/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 · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@4 A B A B C D C E C D F G C D C D H I J K A B A B C D C E C D F G H I J K L M L N H I J K O I J P O I J K A B A B C
  D C E C D F G H I J K H I J K Q@8 ~
>`.pickRestart({
  A: "[f3,c4,f4]!3 [ab3,eb4,ab4]@2 [f3,c4,f4] [eb3,bb3,eb4] [f3,c4,f4]", B: "[ab2,eb3,ab3] [eb3,bb3,eb4]",
  C: "[f3,c4,f4]!8", D: "[ab2,eb3,ab3]!4 [eb3,bb3,eb4]!4", E: "[ab2,eb3,ab3]!4 [eb3,bb3,eb4] ~ [eb3,bb3,eb4] ~",
  F: "[db3,ab3,db4]!8", G: "[eb3,bb3,eb4]!8",
  H: "[f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]@2 [f2,c3,f3]@2", // F5
  I: "[ab2,eb3,ab3]@2 [ab2,eb3,ab3]!2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@2", // Ab5
  J: "[bb2,f3,bb3]@2 [bb2,f3,bb3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2", // Bb5
  K: "[db3,ab3,db4]!4 [eb3,bb3,eb4]!4", L: "[f3,c4,f4]!2 ~@6", M: "[ab2,eb3,ab3]!2 ~@2 [eb3,bb3,eb4]!2 ~@2",
  N: "[ab2,eb3,ab3]!2 ~@2 [eb3,bb3,eb4] ~ [eb3,bb3,eb4] ~", // Ab5 Eb5
  O: "[c3,g3,c4]@2 [c3,g3,c4]!2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2", // C5
  P: "[f2,c3,f3]@2 [f2,c3,f3]!2 [f2,c3,f3]@2 [eb3,ab3]@4 [c3,f3]@2 [bb2,eb3]@2 [c3,f3]@2", // F5 Ab5 F5 Eb5 F5
  Q: "[ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@6 ab4@5 f4@35, [c3,f3,ab3], f2@11 ~@53, c4@11 c4@11 c4@11 c4@11 c4@11 c4@11 c4@11 c4@11 c4@40]/8", // Fm
})).s("gm_overdriven_guitar").gain(0.31)

// bass · electric bass pick · "Greg Kriesel"
const bass = note(`<
  ~@4 A B A B C B C D C B E F C B C B G H I J A B A B C B C D C B E F G H I J K L K M G H I J N H I O N H I J A B A B C
  B C D C B E F G H I J G H I J P@8 ~
>`.pickRestart({
  A: "f2!3 ab2@2 f2 eb2 f2", B: "ab1!4 eb2!4", C: "f2!8", D: "ab1!4 eb2 ~ eb2 ~", E: "db2!8", F: "eb2!8",
  G: "f1@2 f1!2 f1@2 f1@2 f1@2 f1@2 f1@2 f1@2", H: "ab1@2 ab1!2 ab1@2 ab1@2 ab1@2 ab1@2 ab1@2 ab1@2",
  I: "bb1@2 bb1!2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2", J: "db2!4 eb2!4", K: "f2!2 ~@6", L: "ab1!2 ~@2 eb2!2 ~@2",
  M: "ab1!2 ~@2 eb2 ~ eb2 ~", N: "c2@2 c2!2 c2@2 c2@2 c2@2 c2@2 c2@2 c2@2", O: "f1@2 f1!2 f1@2 ab2@4 f2@2 eb2@2 f2@2",
  P: "f1/8",
})).s("gm_electric_bass_pick").gain(0.41)

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

// drums · snare
const snare = s("sd").struct(`<
  [x!16]!4
  [~ x ~ x ~ x ~ x]!36
  [x!2 ~@6]
  [x!2 ~@2 x!2 ~@2]
  [x!2 ~@6]
  [x!2 ~@2 x ~ x ~]
  [~ x ~ x ~ x ~ x]!32
  ~@9
>`).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [x!8]!36 ~@4 [x!8]!32 ~@9>").gain(0.56)

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

stack(overdriven_guitar, bass, kick, snare, open_hat, crash)

More by The Offspring