Strudelify

Gotta Get Away

The Offspring

Tempo128 bpm
0:00/0:00
// Gotta Get Away — The Offspring
// 128 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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.

// bass · electric bass pick · "Greg K"
const bass = note(`<
  ~@4 A B C B C B C B C B C B C B C B D E F D@2 E F D@2 G H D@2 G H D@2 G H D@2 G H D I J I J I J I J D E F D@2 E F D@2
  G H D@2 G H D@2 G H D@2 G H D I J I J I J I J D E F D@2 E F D C B C B C B C B D E F D@2 E F D I J I J I J I J I J I J
  I J I J K
>`.pickRestart({
  A: "d2 ~ d#2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", B: "f1 ~ e2 ~ f2 ~ f1 ~ f1 ~ f2 ~ f2 ~ f1 ~",
  C: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", D: "f1 ~ f1 ~ e2 ~ e2 ~ f1 ~ f1 ~ e2 ~ e2 ~",
  E: "f1 ~ f1 ~ a2 ~ a2 ~ f1 ~ f1 ~ a2 ~ a2 ~", F: "f1 ~ f1 ~ b2 ~ b2 ~ f1 ~ f1 ~ b2 ~ b2 ~",
  G: "f1 ~ f1 ~ f2 ~ f2 ~ f1 ~ f1 ~ f2 ~ f2 ~", H: "f1 ~ f1 ~ a2 ~ a2 ~ f1 ~ f1 ~ b2 ~ b2 ~",
  I: "f2 ~ f2 ~ f2 ~ d2 ~ e2 ~ e2 ~ e2 ~ e2 ~", J: "b1 ~ b1 ~ b1 ~ b1 ~ e2 ~ e2 ~ e2 ~ e2 ~", K: "e2@11 ~@5",
})).s("gm_electric_bass_pick").gain(0.51)

// chords · distortion guitar · "Dexter Holland"
const distortion_guitar = note("<~@12 A@2 B@2 A@2 B@2 ~@72 A@2 B@2 A@2 B@2 ~@25>".pickRestart({
  A: "[d6 ~ d6 ~ [d5,g5]@3 ~ [d5,g5] ~ [c#5,g5]@3 ~ [b4,e5]@11 ~@7]/2", // G5 C#dim E5
  B: "[d6 ~ d6 ~ [d5,g5]@3 ~ [d5,g5] ~ [d5,a5]@3 ~ [b4,e5]@11 ~@7]/2", // G5 D5 E5
})).s("gm_distortion_guitar").gain(0.46)

// chords · distortion guitar · "Noodles"
const distortion_guitar_2 = note(`<
  ~@20 A B C D A B C D E F G D E F G D E F G D E F G D H I H I H I H I A B C D A B C D E F G D E F G D E F G D E F G D H
  I H I H I H I A B C D A B C D ~@8 A B C D A B C D H I H I H I H I H I H I H I H I J
>`.pickRestart({
  A: "[f2,c3,f3] ~ [f2,c3,f3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~", // F5 E5 F5 E5
  B: "[f2,c3,f3] ~ [f2,c3,f3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // F5 A5 F5 A5
  C: "[f2,c3,f3] ~ [f2,c3,f3] ~ [b2,f3,b3] ~ [b2,f3,b3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [b2,f3,b3] ~ [b2,f3,b3] ~", // F5 Bdim F5 Bdim
  D: "[f2,c3,f3]@3 ~ [g2,d#3,g3]!2 [f2,c3,f3] ~ [g2,d#3,g3] ~ [f2,c3,f3]@3 ~@3", // F5 Cm F5 Cm F5
  E: "~@4 [e2,b2,e3] ~ [e2,b2,e3] ~@5 [e2,b2,e3] ~ [e2,b2,e3] ~", // E5
  F: "~@4 [f2,c3,f3] ~ [f2,c3,f3] ~@5 [f2,c3,f3] ~ [f2,c3,f3] ~", G: "~@4 [a2,e3,a3] ~ [a2,e3,a3] ~@5 [b2,f3,b3]@3 ~",
  H: "[f2,c3,f3] ~ [f2,c3,f3] ~ [f2,c3,f3] ~ [d2,a#2,d3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~", // F5 Gm E5
  I: "[b1,f2,b2] ~ [b1,f2,b2] ~ [b1,f2,b2] ~ [b1,f2,b2] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~ [e2,b2,e3] ~", // Bdim E5
  J: "[e2,b2,e3]@11 ~@5", // E5
})).s("gm_distortion_guitar").gain(0.51)

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

// drums · snare
const snare = s("sd").struct(`<
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3
  B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~
>`.pickRestart({
  A: "~@2 x!2 ~@2 x!2", B: "~@4 x ~@2 x ~@4 x ~@3",
})).gain(0.51)

// drums · ride bell
const ride_bell = s("rd").struct("<~@20 [x!8]!72 ~@8 [x!8]!24 ~>").gain(0.51)

stack(bass, distortion_guitar, distortion_guitar_2, kick, snare, ride_bell)

More by The Offspring