I have been working on this for a long time (years) and only just recently stumbled upon a simple solution (for abox), so I thought I'd share.
A
frequency shifter, unlike a pitch shifter, shifts all frequency
components of a signal linearly. So if your signal is composed of two
sines at 440 and 880 Hz respectively, shifting it by 100Hz will give a
signal of 540Hz and 880Hz. This is useful for adding (un)harmonic
clusters to drum sounds among other things. (It's also known as sideband
modulation in old school radio tech.)
To do it
you need to do a Hilbert Transform, which is a mind-fuck of theory
involving imaginary numbers. There is however a way of achieving /
approximating the function by using all-pass filter cascades that I have
known about for some time, but never been able to port to abox until
today.
If you wanna dive into the theory, have a bunch of links: