How Can I Find the Latest Version of a File Using a Linux Shell Script? One way this can be done is to use a sinc filter.  A sinc filter is a type of low-pass filter that can be implemented as a finite impulse response (FIR) filter.  An ideal sinc filter will exactly pass frequencies lower than the cutoff and entirely remove frequencies above the cutoff.  For sample rate conversion, the filter is usually implemented as a window function and the frequency response will not be ideal, but if enough coefficients are used it can be close enough.

When doing audio rate conversions, there are two directions to go: the sample rate can be increased (up-convert) or decreased (down-convert).  Increasing the sample rate requires adding new samples and determining their value, while decreasing the sample rate requires removing samples.  In both cases, the lower sample rate will determine the cutoff frequency for the sinc filter.  It should be the Nyquist frequency, or half the sample rate because the lower sample rate audio can’t contain frequencies above this.

When up-converting, the higher rate audio should contain the same frequency spectrum as the lower rate audio.  When down-converting, the frequency spectrum of the lower rate audio should be the same as the corresponding frequencies in the higher rate audio, with the higher frequencies cut off.  A sinc filter is useful for both of these cases.  To up-convert, arbitrary sample values can be added between the existing samples.  This will introduce high-frequency noise in the signal which can be filtered out.  To down-covert, the samples can be decimated which will remove some number of samples from the high rate audio.  High-frequency noise can interfere with this process, so the higher frequencies should be filtered out before decimating.

Sample Rate Conversion block diagram