Pitch shifting rig

Started by tuliorubim, January 19, 2006, 11:57:56 AM

Previous topic - Next topic

tuliorubim

I am trying to build a pitch shifting equipment and I have an idea for doing it, but I don't know if it really works. The idea is using a DSP chip to process the guitar signal in time domain as the following:
At each 1,000 or 2,000 samples stored in the memory, I wanna calculate the polynomial p(t) that interpolates those samples. Then p(at) is calculated to change the frequency (where a is a constant that multiplies t) and the new samples are computed and converted to an analog signal. My questions are:
Does this work?
If so, what is the best polynomial interpolating method in order to keep the sound quality and not taking a long processing time?
If not, what is the best way to shift the pitch of a guitar signal keeping the sound quality?
Leaving behind the questions above, any help on pitch shifting methods is welcome! Thanks!

George Giblet

The method can work.  Fitting polynomials of that order just isn't going to do it.    What you would do is have a delay buffer at the sample rate.  You index into that delay buffer to position 'at'.  In general 'at' won't be an integer number of samples.  What you then use is what iscalled a 'fractional delay interpolator' to interpolate between the samples.   Also, in a short time 'at' willl grow larger than your buffer, what is usually done is you loop back over the data in the buffer.  When the wrap occurs you get a glitch and what you have to do is blend some of the data at the end with some at the beginning over a span of samples to make a smooth transition.   You will have to read up on the finer details because there's far too many points and paths to choose - none are ideal.  Consider also using pitch shifting methods which are based on FFT's.   Start googling and reading!




tuliorubim

Thank you very much, George, but I have some doubts and aferwards I will make you some questions.

George Giblet

#3
> I have some doubts and aferwards

If the buffer is long that method will probably sound "delayed".   You would be better off checking out the methods that use "granules", similar in principle but far better.