Friday 19 September 2014

Simple Harmonic Exciter

Harmonic Excitation is a technique to add harmonics which are missing or generally give more depth and energy to a top end - here is a patch I having quite a bit of success with:

def excite(sig_,mix,power):
    def exciteInner():
        sig=sig_
        m=sf.Magnitude(+sig)
        sigh=sf.BesselHighPass(+sig,500,2)
        mh=sf.Magnitude(+sigh)
        sigh=sf.Power(sigh,power)
        sigh=sf.BesselHighPass(sigh,1000,2)
        nh=sf.Magnitude(+sigh)
        sigh=sf.NumericVolume(sigh,mh/nh)
        sig=sf.Mix(sf.NumericVolume(sigh,mix),sf.NumericVolume(sig,1.0-mix))
        n=sf.Magnitude(+sig)
        return sf.Realise(sf.NumericVolume(sig,m/n))

    return sf_do(exciteInner)

The trick is to separate the top end using Bessel filters to avoid too much phase distortion. Then I use the 'power' filter which takes the signal and raises its instantaneous magnitude to a power. This adds distortion which add harmonics and strengthens the existing ones. The result is mixed back into the original after a second filter helps remove some of the original signal so we here a boost to the new harmonics.

I use Magnitude to make the effect not change the over all magnitude of the signal and to over come the volume reducing effect of power to the low magnitude filtered signal.

Simple - but it works nicely as part of the reverberation post processing for this track:

Bach Contrapunctus III

No comments:

Post a Comment