Are there any mathematical transforms which can offset a select band of frequencies across the spectrum? (For sampled digital audio)

enter image description here

(crappy illustration)

  • $\begingroup$ You don't really need a transform for that. Just replace the values in the destination FFT bins with the values in the select band bins. $\endgroup$ – dsp_user Nov 29 '17 at 7:11
  • $\begingroup$ Can I please ask what sort of application are you dealing with? The same thing can be achieved by a number of techniques (including, via a transform) but not all of them are suitable for all kinds of "frequency translation" $\endgroup$ – A_A Nov 29 '17 at 9:31
  • $\begingroup$ Can I please ask if this question has been resolved? $\endgroup$ – A_A Dec 7 '17 at 10:26
  • $\begingroup$ I will use FFT bins to do this. Yes. $\endgroup$ – bobiscool Dec 8 '17 at 0:24

What you are describing refers to Pitch Shifting.

A naive approach to pitch shifting is based on the shifting property of the Fourier Transform (and more formally here). According to the shifting property, multiplying a signal with a sinusoid in the time domain results in shifting in the frequency domain.

But, convincing pitch shifting takes a little bit more effort than that because it does not only matter to shift the frequencies of part of the spectrum to a new range, it is also necessary to preserve their relative phase for the sound to be recognisable. If you are trying to pitch shift musical instruments (or vocals), then it gets a little bit more challenging, because of the way pitch is working. In that case, you not only have to shift the components in the frequency domain but also preserve their intervals. In other words, it is not only enough to shift those formants that you show in your illustration, you also need to make sure that the new frequencies they end up into, have the same "distances" between them as the ones they are being pitch shifted from. This is not as straightforward as it...sounds.

Pitch shifting in this way implies a linear pitch scale. But the pitch scale is non-linear and going up in pitch (higher octaves) does not result in equally proportional frequencies.

Because of these reasons, more complex pitch shifting algorithms contain a "processing stage" between analysing and resynthesizing the pitch shifted version of the signal in their input. This processing stage attempts to take into account these relationships between the components of the spectrum according to some approach. For example, directly working out these relationships to the new range as the phase vocoder does, or attempting to fit a model to the spectrum and use it to reproduce it at a different range as spectral modelling does.

Hope this helps.

  • $\begingroup$ No, I am not trying to pitch shift, I am trying to perform an FFT-like operation that shifts a band of frequencies downwards and interpolates what would happen to them as a result. $\endgroup$ – bobiscool Dec 2 '17 at 3:47
  • $\begingroup$ Then the shift property of the FFT answers the question (?) $\endgroup$ – A_A Dec 2 '17 at 7:49
  • $\begingroup$ Multiplication by a sine wave best fits the illustration, and "moving bins" is better for warping the spectrum. Thanks for the answer! $\endgroup$ – bobiscool Dec 23 '20 at 23:47

Bandpass filter then multiply by exponential and filter again?

Im not sure offhand how you will synchronize the shifted signal with the other parts in the time domain again. I think you will need to run the whole system through a proper delay.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.