Strudelify
The Kids Aren't Alright cover art

The Kids Aren't Alright

The Offspring

KeyD♭ majorTempo99 bpm
0:00/0:00
// The Kids Aren't Alright — The Offspring
// 99 bpm, 4/4, key C# 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.
setcpm(99/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 · "Staff-2"
const distortion_guitar = note(`<
  A B C D A B C D E F G H E F G H I J K L I J K L E F M H E F M H E F G H E F G H I J K L I J K L E F M H E F M H E F G
  H E F G H E F M H E F M H N@2
>`.pickRestart({
  A: "bb3!2 [bb3,db4] bb3 [bb3,db4] bb3!2 [bb3,c4] bb3 [bb3,c4]!4 [bb3,db4] ~@2", // Bbm Bbsus2 Bbm
  B: "gb3!2 [gb3,bb3,db4] gb3 [gb3,bb3,db4] gb3!2 [gb3,bb3,c4] gb3 [gb3,bb3,c4]!4 [gb3,bb3,db4] ~@2", // Gb Cm7b5 Gb
  C: "ab3!2 [ab3,db4,f4] ab3 [ab3,db4,f4] ab3!2 [ab3,c4,eb4] ab3 [ab3,c4,eb4]!4 [ab3,db4,f4] ~@2", // Db Ab Db
  D: "[ab3,db4,f4] [ab3,eb4,ab4]!3 [ab3,db4,f4]@2 [ab3,db4,f4] [ab3,c4,eb4]@2 [ab3,c4,eb4]!4 [ab3,db4,f4] ~@2", // Db Ab5 Db Ab Db
  E: "[bb2,f3]@15 ~", F: "[gb2,db3]@15 ~", G: "[ab2,db3]@15 ~", H: "[ab2,eb3]@15 ~", I: "[bb2,f3]!16",
  J: "[gb2,db3]!16", K: "[db3,ab3]!16", L: "[ab2,eb3]!16", M: "[db3,ab3]@15 ~", N: "[[bb2,f3]@23 ~ [bb2,f3]@2 ~@6]/2",
})).s("gm_distortion_guitar").gain(0.72)

// bass · electric bass finger · "Staff-5"
const bass = note("<~@8 A B C D A B C D ~@16 A B C D A B C D ~@16 E F G ~@15>".pickRestart({
  A: "bb2@7 ~ c3@3 ~ db3@3 ~", B: "gb2@7 ~ c3@3 ~ db3@3 ~", C: "ab2@3 ~ bb2@3 ~ c3@3 ~ db3@3 ~",
  D: "eb3@3 ~ db3@3 ~ c3@3 ~ db3@3 ~", E: "bb2@7 ~ c3@7 ~", F: "db3@7 ~ eb3@3 ~ f3@3 ~", G: "ab2@7 ~@9",
})).s("gm_electric_bass_finger").gain(0.72)

// other · distortion guitar · "Staff-6"
const distortion_guitar_2 = note("<~@58 A B C D E F ~@2 G@2 ~@2 G@3 H>".pickRestart({
  A: "ab4@3 ~ bb4@3 ~ db5@3 ~ eb5@3 ~", B: "f5@3 ~ ab5@3 ~ f5@2 eb5@4 db5@2", C: "f5@11 ~ f5 eb5 db5 bb4",
  D: "eb5@2 db5@2 ~@2 ab4 ab4@2 gb4@3 ~@4", E: "ab4 db5@10 ~ ab4@2 db5@2", F: "f5@3 ~ eb5@2 db5@2 f5@2 eb5@3 ~@3",
  G: "bb4 ab4 bb4 ab4 bb4 ab4 bb4 ab4", H: "bb4 ab4 bb4 ab4 bb4 ~@3",
})).s("gm_distortion_guitar").gain(0.72)

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

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@6 A B C@3 D C@3 E ~@8 C@3 F C@3 G C@3 D C@3 E ~@7 H C@3 F C@3 G ~@16 I J
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~", B: "~@2 x!2 ~@2 x ~ x!8", C: "~ x ~ x ~ x ~ x", D: "~@2 x ~@3 x ~@3 x ~ x!4",
  E: "~@2 x ~@3 x ~@3 x!6", F: "~@2 x ~@3 x ~@3 x ~ x ~ x!2", G: "~@2 x ~@3 x ~ x!8", H: "~@8 x!8",
  I: "x ~@3 x!2 ~@2 x ~@3 x!2 ~@2", J: "x!3 ~",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A B@2 ~@2 B@16 ~@8 B@16 ~@16 B@8 ~@2>".pickRestart({
  A: "~@14 x!2", B: "x!8",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@5
>`.pickRestart({
  A: "x",
})).gain(0.72)

// drums · ride
const ride = s("rd").struct("<~@56 [x!16]!8 ~@10>").gain(0.72)

// drums · shaker
const shaker = s("sh").struct("<~@24 [x!16]!8 ~@16 [x!16]!8 ~@18>").gain(0.72)

stack(distortion_guitar, bass, distortion_guitar_2, kick, snare, mid_tom, open_hat, crash, ride, shaker)

More by The Offspring