From my days at college I rememeber that LPC splits a signal into a series of slowly changing filter coefficents and an audio-rate residual error signal, such that the original signal gets reproduced when you run the residual signal as "excitation" through a time-varying filter which is controlled by those coefficients.
The cool thing is that you can replace the residual signal by another signal (e.g. a pulse train) and many of the characteristics of the original signal will be preserved. The excitation signal simply does not carry much information (except the pitch) and thus can be replaced.
I find this concept absolutlely intriguing.
I was hoping that this method could be used to sythesize real-world instruments. I could e.g. replace the residual signal of a real Guitar, by one which was created by a Karplus-Strong algorithm. I would have full control over that signal and if I feed it through the filter coefficients taken from a real guitar, this should take aways much of the artificial feel of Karplus-Strong.
The same reasoning led me to believe that one could build a fine vocal pitch correction this way. You pitch corect the residual and most of the unwanted artifacts will get filtered away in the filtering stage.
But all my attempts failed somewhat. For one, there does not seem to be much support for LPC in the open-source community(Luckily "lpanal" is still around). I played with csound and supercollider and I am getting the feeling that I am on the wrong track.
- Does the above make any sense or where did I go wrong?
- Is this idea of separating excitation from filtering widely used in sound synthesis? (I believe there is some audio compression algorithm, which uses LPC)
- Are there other methods which separate excitation from filtering?