Strudelify

Amazed

The Offspring

KeyA minorTempo142 bpm
0:00/0:00
// Amazed — The Offspring
// 142 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 150 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): Guit2, Guit3.
setcpm(142/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 · distortion guitar · "Guit1"
const distortion_guitar = note(`<
  ~@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@4 ~@12 D@8 E@2 F@2 G@2 H@2 E@2 F@2 G@2 I@2 A@2 B@2 A@2 B@2 C@4 ~@12 D@8 E@2 F@2
  G@2 H@2 E@2 F@2 G@2 I@2 A@2 B@2 A@2 B@2 C@4 J K L M E@2 F@2 G@2 H@2 E@2 F@2 G@2 I@2 A@2 B@2 A@2 B@2 C@4
>`.pickRestart({
  A: "[[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]!3 [g2,d3,g3]@2 [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3]!2 [d3,a3,d4]]/2", // A5 G5 D5
  B: "[[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]!3 [c3,g3,c4]@2 [c3,g3,c4]!2 [c3,g3,c4]@2 [c3,g3,c4]!2 [a2,e3,a3]]/2", // D5 C5 A5
  C: "[a2,e3]/4", // A5
  D: "[[a2,a3]@3 [b2,b3]@2 [c3,c4]@2 [a2,a3]@4 [b2,b3]@2 [c3,c4]@2 [a2,a3]@4 [b2,b3]@2 [c3,c4]@2 [d3,d4]@2 [c3,c4]@2 [b2,b3]@2 [g2,g3]@2 [a2,a3]@4 [b2,b3]@2 [c3,c4]@2 [a2,a3]@4 [b2,b3]@2 [c3,c4]@2 [a2,a3]@4 [b2,b3]@2 [c3,c4]@2 [d3,d4]@2 [c3,c4]@2 [b2,b3]@2 [g2,g3]@3]/8", // A B C A B C A B …
  E: "[[a2,e3,a3]@4 [a2,e3,a3]@4 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4] ~ [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4]@6 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4] ~]/2", // A5 C5 E5
  F: "[[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4]!2 [d3,a3,d4]@2]/2", // G5 D5
  G: "[[a2,e3,a3]@4 [a2,e3,a3]@4 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4] ~ [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4]@4 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4] ~]/2", // A5 C5 E5
  H: "[[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]!3 [e2,b2] [e2,b2] [e2,b2,e3] [e2,b2,e3]@2 [e2,b2,e3] [g2,d3,g3] [g2,d3,g3]@2, ~@7 e3@2 ~@7]/2", // G5 E5 G5
  I: "[[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]!3 [e2,b2,e3]@2 [e2,b2,e3] [e2,b2,e3]@2 [e2,b2,e3] [g2,d3,g3] [g2,d3,g3]@2]/2", // G5 E5 G5
  J: "[a2,e3]!7 [g2,d3]", K: "[g2,d3]!6 [g2,d3]@2", L: "[d3,a3]!4 [d3,a3,d4]!3 [e3,b3,e4]",
  M: "[e3,b3,e4]!5 [g3,d4,g4]!3", // E5 G5
})).s("gm_distortion_guitar").gain(0.48).pan(0.3)

// chords · distortion guitar · "Guit2"
const distortion_guitar_2 = note("<~@5 A ~@3 A ~@3 A ~@3 A ~@43 A ~@3 A ~@43 A ~@3 A ~@27 A ~@3 A ~@4>".pickRestart({
  A: "~@14 [c3,g3,c4] ~", // C5
})).s("gm_distortion_guitar").gain(0.19).pan(0.7)

// bass · electric bass finger
const bass = note(`<
  ~@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D@2 C@2 E@2 C@2 D@2 C@2 E@2
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D@2 C@2 E@2 C@2 D@2 C@2 E@2 A@2 B@2 A@2 B@2 A@2
  B@2 F G H I C@2 D@2 C@2 E@2 C@2 D@2 C@2 E@2 A@2 B@2 A@2 B@2 J@4
>`.pickRestart({
  A: "[a1@2 a1@2 a1!3 g1@2 g1!2 g1@2 g1!3]/2", B: "[d2@2 d2@2 d2!3 c2@2 c2!2 c2@2 c2!3]/2",
  C: "[a1@2 a1@2 c2!3 e2@2 e2 e2@3 e2!3]/2", D: "[g1@2 g1@2 g1 g1@2 d2@2 d2 d2@2 d2!2 d2@2]/2",
  E: "[g1@2 g1@2 g1!3 e1@2 e1 e1@2 e1 g1 g1@2]/2", F: "a1!7 g1", G: "g1!6 g1@2", H: "d2!7 e2", I: "e2!5 g2!3",
  J: "a1/4",
})).s("gm_electric_bass_finger").gain(0.55)

// chords · distortion guitar · "Guit3"
const distortion_guitar_3 = note("<~@10 A@8 ~@40 A@8 ~@40 A@8 ~@24 A@8 ~@4>".pickRestart({
  A: "[~@3 [e4,b4]@2 c5@2 [e4,a4]@4 [e4,b4]@2 [e4,c5]@2 e4@4 [e4,b4]@2 [e4,c5]@2 [e4,d5]@2 e4@2 [e4,b4]@2 e4@2 ~]/4", // E5 A5 E5 C E5 C E7 E5
})).s("gm_distortion_guitar").gain(0.6)

// other · lead 3 calliope · "Voc2"
const lead_3_calliope = note(`<
  ~@34 A@3 ~ B@3 ~ C D@3 C E@3 C F@4 G@4 ~@23 A@3 ~ B@3 ~ C D@3 C E@3 C F@4 G@4 ~@15 C D@3 C E@3 C F@4 G@4 ~@11
>`.pickRestart({
  A: "a4/3", B: "e5/3", C: "a5@3 b5@2 a5@2 g#5", D: "[e5 e5@2 f5@2 e5 g5 g5@3 ~@2 g5 g5@2 a5@2 a5@2 g5@2 a5@2 ~]/3",
  E: "[e5 e5@2 f5@2 e5 g5 g5@3 ~@2 d5 d5@2 a5@2 a5@2 g#5@2 a5 g5 ~]/3",
  F: "[e5 e5@2 f5@2 e5 g5 g5@3 ~@2 g5 g5@2 a5@2 a5@2 g5@2 a5@2 a5@3 ~@6]/4",
  G: "[~ e5@2 f5@2 e5 d5 d5@3 ~@2 d5 d5@2 d5@2 d5@2 c5@2 b4 a4 a4@3 ~@6]/4",
})).s("gm_lead_3_calliope").gain(0.44).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  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 B C D C D C D C E 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 B C D C D C D C E C D C D C D C D C D C D C D C D C D C D
  C D ~ B C D C D C D C E C D C D C D C D C D C D C D C D F ~@3
>`.pickRestart({
  A: "x!8", B: "x ~@2 x ~@2 x ~", C: "x ~@3 x!2 ~ x", D: "~ x ~@2 x!2 ~@2", E: "~ x ~ x ~ x ~ x", F: "x",
})).gain(0.4)

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

// drums · low tom
const low_tom = s("lt").struct("<A B ~@39 B ~@47 B ~@24 C@6 ~ B ~@28>".pickRestart({
  A: "x!4", B: "~@3 x!2 ~@4 x!2 ~@5", C: "x!8",
})).gain(0.35)

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

// drums · crash
const crash = s("cr").struct(`<
  ~ A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@17 C ~ C ~ C ~ C A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@17 C ~ C ~ C ~
  C A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@8 A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ C ~@3
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~", B: "x ~@6 x", C: "x",
})).gain(0.4)

stack(
  distortion_guitar, distortion_guitar_2, bass, distortion_guitar_3, lead_3_calliope, kick, snare, low_tom, open_hat,
  crash
)

More by The Offspring