Strudelify

Don't Pick It Up

The Offspring

KeyB majorTempo175 bpm
0:00/0:00
// Don't Pick It Up — The Offspring
// 175 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 3 "Guit1B" overdriven guitar (copy of ch 4 "Guit1" electric guitar clean); ch 5 "Guit2B" overdriven guitar (copy of ch 4 "Guit1" electric guitar clean); ch 4 "Guit1" electric guitar clean (copy of ch 6 "Guit2" electric guitar clean); ch 7 "Guit3B" overdriven guitar (copy of ch 8 "Guit3" electric guitar clean)
// note: Full arrangement: all 81 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): Guit3.
setcpm(175/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.

// other · lead 3 calliope · "Voc2"
const lead_3_calliope = note(`<
  ~@7 A ~@9 B ~ B C B C D E F G F G ~@4 B ~ B C B C D E F G F G ~@4 H ~@11 I ~ B ~ B C B C D E F G F G ~@6
>`.pickRestart({
  A: "c#6@2 c#6!2 c#6@2 c#6@2", B: "b4!3 ~", C: "~@7 b4", D: "b4!3 d#5", E: "c#5 ~", F: "~@3 d#5", G: "f#5@2 e5 ~",
  H: "~@2 f#5!3 ~ f#5!3 ~ f#5!3 ~@3", I: "b5@7 ~",
})).s("gm_lead_3_calliope").gain(0.4).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  A@8 B C D C D C D C D C D C D C D C E F E F E F G H D C D C D C D C E F E F E F G H ~@4 D C D C D C A@4 D C D C D C D
  C E F E F E F I@5
>`.pickRestart({
  A: "f#2!4", B: "f#2@3 c#2 e2@2 d#2@2", C: "b1@3 b1 c#2@2 d#2@2", D: "f#2@3 b1 e2@2 d#2@2", E: "f#1!2 e1!2",
  F: "b1!2 d#2 e2", G: "f#2 e2", H: "b1!4", I: "[f#2@10 e2@10 b1@7 b1@8 b1@38 ~@7]/5",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · electric guitar clean · "Guit2"
const electric_guitar_clean = note(`<
  A@7 B C D C D C D C D E F E F E F E F C D C D C D G H E F E F E F E F C D C D C D G H ~@4 C D C D C D A@3 B E F E F E
  F E F C D C D C D I@5
>`.pickRestart({
  A: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]!2", // F#5
  B: "[f#2,c#3,f#3]!8", // F#5
  C: "[f#2,c#4,f#4] ~ [f#2,c#3,f#3,a#3,c#4,f#4]@2 [f#2,c#4,f#4] ~ [f#2,c#3,f#3,a#3,c#4,f#4]@2 [e2,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]@2 [e2,b3,e4] ~ [e2,b2,e3,g#3,b3,e4]@2", // F#5 F# F#5 F# E5 E E5 E
  D: "[b2,b3,d#4] ~ [b2,f#3,b3,d#4]@2 [b2,b3,d#4] ~ [b2,f#3,b3,d#4]@2 [b2,b3,d#4] ~ [b2,f#3,b3,d#4]@2 [b2,b3,d#4] ~ [b2,f#3,b3,d#4]@2", // B
  E: "[f#3,f#4] ~ [f#3,c#4,f#4]@2 [f#3,f#4] ~ [f#3,c#4,f#4]@2 [e3,e4] ~ [e3,b3,e4]@2 [e3,e4] ~ [e3,b3,e4]@2", // F# F#5 F# F#5 E E5 E E5
  F: "[b2,b3] ~ [b2,f#3,b3]@2 [b2,b3] ~ [b2,f#3,b3]@2 [b2,b3] ~ [b2,f#3,b3]@2 [b2,b3] ~ [b2,f#3,b3]@2", // B B5 B B5 B B5 B B5
  G: "[f#2,c#3,f#3,a#3,c#4,f#4] [e2,b2,e3,g#3,b3,e4]", H: "[b2,f#3,b3,d#4]!4",
  I: "[[f#2,c#3,f#3,a#3,c#4,f#4]@10 [e2,b2,e3,g#3,b3,e4]@10 [b2,f#3,b3,d#4]@7 [b2,f#3,b3,d#4]@8 [b2,f#3,b3,d#4]@39 ~@6]/5", // F# E B
})).s("gm_electric_guitar_clean").gain(0.4).pan(1)

// chords · electric guitar clean · "Guit3"
const electric_guitar_clean_2 = note("<~@13 A ~ A ~@37 A ~ A ~ A ~@23>".pickRestart({
  A: "~ e3 ~@2",
})).s("gm_electric_guitar_clean").gain(0.7)

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

// drums · rim
const rim = s("rim").struct("<~@15 A ~@15 B ~@15 C ~@2 D E ~@29>".pickRestart({
  A: "~@8 x ~ x!3 ~ x ~", B: "~@4 x ~ x!3 ~ x!3 ~ x ~", C: "~@4 x ~ x!3 ~ x!3 ~@3", D: "x!3 ~ x ~ x ~ x ~@3 x ~@3",
  E: "x ~@3 x!3 ~ x ~ x ~ x ~@3",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<A@5 ~@3 B@7 C B@14 ~@2 B@14 ~ A D@2 ~@2 B@6 A ~@3 B@14 ~@5>".pickRestart({
  A: "~@14 x!2", B: "~ x ~ x", C: "~ x ~@2", D: "~@2 x!2 ~@2 x ~",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A@3 B A@3 C A B A B A B A B A B A B A B ~@2 A B A B A B A B A B A B A B ~@6 D A@5 ~@4 A B A B A B A B A B A B A B
  ~@5
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!4 ~@4", D: "~ x!7",
})).gain(0.38)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 [~@7 x] ~@15 [~@7 x] ~@49>").gain(0.38)

// drums · high tom
const high_tom = s("ht").struct("<~@15 A ~@15 B ~@15 B ~@2 C D ~@29>".pickRestart({
  A: "~@8 x ~ x!3 ~@3", B: "~@4 x ~ x!3 ~ x!3 ~@3", C: "x!3 ~ x ~ x ~ x ~@3 x ~@3", D: "x ~@3 x!3 ~ x ~ x ~ x ~@3",
})).gain(0.38)

// drums · crash
const crash = s("cr").struct("<A@6 ~@24 B A ~@14 B A ~@4 A ~@5 A@2 ~@16 C D E ~@2>".pickRestart({
  A: "x", B: "x!2", C: "x ~@4 x ~@2", D: "~@4 x ~@6 x ~@4", E: "~@3 x ~@12",
})).gain(0.38)

stack(
  lead_3_calliope, bass, electric_guitar_clean, electric_guitar_clean_2, kick, rim, snare, hihat, open_hat, mid_tom,
  high_tom, crash
)

More by The Offspring