I’m trying to build a very basic resampling pitch shifter which reads samples from disk. I only want to change -+6 semitones without keeping the original sample length. I already have all the classes for upsampling, downsampling, FIR and interpolation. What I don’t understand is the order in which I need to use any of them because I can’t get rid of aliasing. I would appreciate if someone could fill in the blanks in terms of instructions and parameters.
My starting point: I am working with a constant buffer size of 480 samples. So if I want to change +1 semitone I can simply grab 509 samples from disk and squeeze them into the buffer using truncation. This gives me the correct pitch shift along with aliasing zipper sound. I used interpolation instead of truncation and it reduced the noise but not completely.
Where and when should I now implement up/down sampling and FIR? And what parameters are reasonable to use considering the not-so-far target pitch?