Strudelify

All I Want

The Offspring

KeyA majorTempo172 bpm
0:00/0:00
// All I Want — The Offspring
// 172 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "New Midi" distortion guitar (copy of ch 1 "New" distortion guitar)
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(172/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 · "New"
const distortion_guitar = note(`<
  ~ A B A C D ~ E C D ~ E C F G H I F G H I J G H I J G H I A B A C D ~ E C D ~ E C F G H I F G H I J G H I J G H I K L
  M N O P Q F G H I F G H I J G H I J G H R S
>`.pickRestart({
  A: "[f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]!2 [f#3,b3,e4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@4 [f#3,c#4,f#4]@2", // F#5 Esus2 F#5
  B: "[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]!2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4]!2", // D5 E5
  C: "[d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]!2 [a3,e4,a4]@4 [e3,b3,e4]@4", // D5 A5 E5
  D: "[f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]!2 e2@2 [f#2,c#3]@2 [f#2,c#3]@4 ~@2", // F#5
  E: "[f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]!2 e2@2 [f#2,c#3]@2 [f#2,c#3]@4 [e2,a2] ~", // F#5 A5
  F: "[f#3,c#4,f#4] [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4] [f#3,c#4,f#4]@2", // F#5
  G: "[d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2", // D5
  H: "[a2,e3,a3] [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3] [a2,e3,a3]@2", // A5
  I: "[e3,b3,e4] [e3,b3,e4]@2 [e3,b3,e4]@2 [e3,b3,e4] [e3,b3,e4]@2", // E5
  J: "[f#3,c#4,f#4] [f#3,c#4,f#4]@2 [f#3,c#4,f#4]@2 [f#3,c#4,f#4]!3", // F#5
  K: "[d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [e3,b3,e4]@2 ~@2", // D5 E5
  L: "[f#3,c#4,f#4] [f#3,c#4,f#4]@2 [f#3,c#4,f#4] [e3,b3,e4]@2 ~@2", // F#5 E5
  M: "[d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [e3,b3,e4]@2 [e3,b3,e4]@2", N: "[d3,a3,d4]@2 [d3,a3]!6",
  O: "[d3,a3]!6 [d3,a3,d4] [c#3,g#3,c#4]", P: "[c#3,g#3,c#4]@2 [c#3,g#3]!6", Q: "[c#3,g#3]!2 [c#3,g#3,c#4]!6",
  R: "[e3,b3,e4] [e3,b3,e4]@2 [e3,b3,e4] [e3,b3,e4]@2 [e3,b3,e4]@2", S: "[f#3,c#4,f#4] ~@3",
})).s("gm_distortion_guitar").gain(0.55).pan(0.7)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A B A C A B A C A B A C D E F G D E F G H E F G H E F G A B A C A B A C A B A C D E F G D E F G H E F G H E F G I J
  K L M N O D E F G D E F G H E F G H E F P Q
>`.pickRestart({
  A: "f#2!3 e2 f#2!4", B: "d2!4 e2!4", C: "d2!4 a2@2 e2@2", D: "f#2 f#2@2 f#2@2 f#2 f#2@2", E: "d2 d2@2 d2@2 d2 d2@2",
  F: "a1 a1@2 a1@2 a1 a1@2", G: "e2 e2@2 e2@2 e2 e2@2", H: "f#2 f#2@2 f#2@2 f#2!3", I: "d2 d2@2 d2 e2@2 ~@2",
  J: "f#2 f#2@2 f#2 e2@2 ~@2", K: "d2 d2@2 d2 e2@2 e2@2", L: "d2@2 d2!6", M: "d2!7 c#2", N: "c#2@2 c#2!6", O: "c#2!8",
  P: "e2 e2@2 e2 e2@2 e2@2", Q: "f#1 ~@3",
})).s("gm_electric_bass_finger").gain(0.6)

// other · bandoneon · "Voc2B"
const bandoneon = note("<~@5 A B ~@2 A B ~@22 A B ~@2 A B ~@42>".pickRestart({
  A: "~@3 e5", B: "d5 d5@2 c#5!2 b4 ~@2",
})).s("gm_bandoneon").gain(0.4).pan(0.6)

// other · harmonica · "Voc2"
const harmonica = note("<~@20 A B@2 C D E@2 F@2 ~@19 A B@2 C D E@2 F@2 ~@14 A E@2 G H I@2 J K L>".pickRestart({
  A: "~@2 g#5 a5", B: "[a5@5 ~ g#5 a5]/2", C: "a5", D: "g#5 ~ e5 f#5", E: "[f#5@5 ~ e5 f#5]/2", F: "[e5@5 ~@3]/2",
  G: "f#5 e5", H: "d5 ~ e5 f#5", I: "f#5/2", J: "e5@3 ~", K: "a5 g#5 f#5 e5", L: "f#5 ~@3",
})).s("gm_harmonica").gain(0.32).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B A B C@16 A B A B A B A B A B A B C@16 ~@2 D E@3 ~ C@15 ~@2
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@2 x ~", D: "~@6 x!2", E: "x!8",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~
  [~ x ~ x ~ x ~ x]!56
  [x!2 ~ x!2 ~@3]!3
  [x!8]!3
  [x!16]
  [~ x ~ x ~ x ~ x]!15
  [x!2 ~ x!2 ~ x ~]
  x
>`).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@57 [x!2 ~ x!2 ~@3]!3 ~@21>").gain(0.4)

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

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

// drums · ride
const ride = s("rd").struct("<~@13 A@4 B A@3 ~@20 A@4 B A@3 ~@15 A@4 B A@3 ~@9>".pickRestart({
  A: "x!8", B: "~ x!7",
})).gain(0.35)

stack(distortion_guitar, bass, bandoneon, harmonica, kick, snare, low_tom, open_hat, crash, ride)

More by The Offspring