Strudelify

Gone Away

The Offspring

KeyF minorTempo110 bpm
0:00/0:00
// Gone Away — The Offspring
// 110 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 6 "Noodles backup" electric guitar jazz (copy of ch 5 "Noodles - Lead Guitar" distortion guitar); ch 12 "Noodles - Lead Guitar" distortion guitar (copy of ch 6 "Noodles backup" distortion guitar)
// note: Full arrangement: all 126 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): Dexter - Elec. Guitar, Dexter backup, Noodles backup, Dexter backup 2.
setcpm(110/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 · "Dexter - Elec. Guitar"
const overdriven_guitar = note("<~@12 A@8 ~@106>".pickRestart({
  A: "[f2,c3,f3]/8", // F5
})).s("gm_overdriven_guitar").gain(0.2)

// bass · electric bass finger · "Greg - Bass Guitar"
const bass = note(`<
  ~@4 A B C D A B C D E B F D E B F D E B F D A B C D A B C D A B C D A B C D E B F D E B F D E B F D E B F D A B C D A
  B C D A B C D A B C D E G H D E G H D@2 A B C D A B C D ~@37
>`.pickRestart({
  A: "f2!8", B: "ab1!8", C: "eb2!8", D: "bb1!8", E: "f1!7 g1", F: "eb1!8", G: "ab1!7 bb1", H: "eb1!7 ab1",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · distortion guitar · "Noodles - Lead Guitar"
const distortion_guitar = note(`<
  ~@4 A B C D E F G H I J K L M@8 A B C D A B C D E F G H E F G H N@8 O P Q@2 O P Q@2 A B C D A B C D E F G H E F G H
  R@4 I@2 S T@2 A B C D A B C D ~@37
>`.pickRestart({
  A: "[f3,c4,f4]!8", B: "[ab2,eb3,ab3]!8", C: "[eb3,bb3,eb4]!8", D: "[bb2,f3,bb3]!8", E: "[f3,c4,c5]!8",
  F: "[ab2,c5,eb5]!8", G: "[eb3,g4,bb4]!8", H: "[bb2,f4,bb4]!8", I: "bb3 c4 f3 f4@5", J: "g3 ab3 eb3 eb4@5",
  K: "f3 g3 eb3 eb4@2 eb4 f4@2", L: "d4@3 bb3@3 d4@2", M: "c4/8", N: "[f2,c3,f3]/8", O: "~@3 f5@5, ~ f4@7, ~ c5@3",
  P: "~@3 eb5@5, ~ eb4@7, ~ ab4@3", Q: "[~@3 eb5@6 ~@2 ab4@2 g4 f4@2, ~ eb4@7 ~ bb3@7, ~@2 bb4@7 ~ f4@4 ~@2]/2",
  R: "[f2,c3,f3]/4", S: "g3 ab3 eb3 eb4@2 eb4 f4@2",
  T: "[[bb2,f3]@2 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~, bb3, c4 ~@31]/2", // Bb5
})).s("gm_distortion_guitar").gain(0.23)

// chords · electric guitar jazz · "Dexter - Elec. Guitar"
const electric_guitar_jazz = note("<~@89 A B C@2 A B C@2 D E F G H E F G I J K L I J K L I J K M N O@8>".pickRestart({
  A: "~@3 f5@5, ~ f4@7, ~ c5@3", B: "~@3 eb5@5, ~ eb4@7, ~ ab4@3",
  C: "[~@3 eb5@6 ~@2 ab4@2 g4 f4@2, ~ eb4@7 ~ bb3@7, ~@2 bb4@7 ~ f4@4 ~@2]/2", D: "[f3,c4,f4]!7 [f3,b3,c4,f4]",
  E: "[ab2,eb3,ab3]!8", F: "[eb3,bb3,eb4]!8", G: "[bb2,f3,bb3]!8", H: "[f3,c4,f4]!8", I: "[f3,c4,f4,c5]!8",
  J: "[ab2,eb3,ab3,c5,eb5]!8", K: "[eb3,bb3,eb4,g4,bb4]!8", L: "[bb2,f3,bb3,f4,bb4]!8", M: "[bb2,f3,bb3] [bb2,f3]!7",
  N: "[bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~", O: "[f2,c3,f3]/8",
})).s("gm_electric_guitar_jazz").gain(0.13)

// bass · electric bass pick · "Greg - Bass Guitar"
const bass_2 = note("<~@89 A B C D A B C D E B F D E B F D E B F D E B F D E B F G H I@8>".pickRestart({
  A: "f1!7 g1", B: "ab1!8", C: "eb1!8", D: "bb1!8", E: "f2!8", F: "eb2!8",
  G: "bb1@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", H: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", I: "f2/8",
})).s("gm_electric_bass_pick").gain(0.4)

// other · melodic tom · "Tom Drums"
const melodic_tom = note("<A@3 ~@9 B@11 ~@17 C@8 ~@31 D ~@36 E ~@9>".pickRestart({
  A: "a2@3 ~@9 d2@3 ~", B: "~@4 db2@3 ~@5 db2@3 ~", C: "~@4 db2@3 ~@9", D: "~@8 db2 ~ db2 ~ db2 ~ db2 ~",
  E: "~@4 db2 ~ db2 ~ db2 ~ db2 ~@5",
})).s("gm_melodic_tom").gain(0.36)

// chords · electric guitar clean · "Noodles - Lead Guitar(elect cle" · Ab Eb Bb Fm Ab Eb
const electric_guitar_clean = note(`<
  ~@73
  [[ab3,c4,eb4]]
  [[eb3,g3,bb3]]
  [[bb3,d4,f4]]
  [[f3,ab3,c4]]
  [[ab3,c4,eb4]]
  [[eb3,g3,bb3]]
  ~@47
>`).s("gm_electric_guitar_clean").gain(0.24)

// drums · kick
const kick = s("bd").struct("<A@3 B A@7 C A@11 B A@15 C A@7 C A@7 B A@15 C A@7 D E A@15 B A@19 D F@2 ~@7>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x!2 ~@2", C: "x ~@3 x!2 ~ x", D: "x!8", E: "x!4 ~@4", F: "x",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<A@3 ~@9 B@11 ~@17 C@8 ~@31 D ~@36 E ~ F ~@7>".pickRestart({
  A: "x ~@3 x!3 ~", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x!4", E: "~@2 x!4 ~@2", F: "x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A B A B A C D E@10 ~ A B A B A B A B A B A B A B A C D E@6 F A B@2 G A B H I A B A B A B A B A B A B A B A C J
  K@6 L ~ A B A B A B A B A B@2 G A B H I A B A B A B A B A B A B A B A B A B A ~@10
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~@2", D: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", E: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2",
  F: "x ~ x!3 ~ x!3 ~ x!2 ~@4", G: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x", H: "x!7 ~", I: "x",
  J: "~@2 x!2 ~@2 x!3 ~ x!2 ~@2 x!2", K: "x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2", L: "x!2 ~@6",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@4 x ~@2 x ~ x ~@6] [~@4 x ~@2 x ~@8] [~@4 x ~@2 x ~ x ~@6] ~@123>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A B A B A B A C ~@12 A B A B A B A B A B A B A B A C ~@8 D E@2 F D E@2 ~ A B A B A B A B A B A B A B A C G@7 H ~ A
  B A B A B A B D E@2 F D E@2 ~ A B A B A B A B A B A B A B A B A B A ~@2 H ~@7
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!6 ~@2", D: "~ x!3", E: "x!4", F: "x ~@3 x ~@3 x ~@3 x ~@2 x", G: "~ x ~ x", H: "x",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@11 [~@3 x] ~@27 [~@3 x] ~@31 [~@3 x] ~@54>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  A@3 ~ B ~ B ~ B ~ B ~ B ~@11 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@7 B ~@3 B ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~@3 B ~@8 B ~
  B ~ B ~ B ~ B ~@3 B ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@2 ~ B ~@7
>`.pickRestart({
  A: "x!8", B: "x",
})).gain(0.32)

stack(
  overdriven_guitar, bass, distortion_guitar, electric_guitar_jazz, bass_2, melodic_tom, electric_guitar_clean, kick,
  snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash
)

More by The Offspring