I was looking into making a frequency shifting effect (which is slightly different than a pitch shifter).
If you are unfamiliar with the concept, here’s a good video explaining it [FL STUDIO | Introducing Frequency Shifter - YouTube](https://FL Frequency Shifter)
I’m wondering from the DSP side of things what this effect might look like.
Off the top of my head, I imagine it involves something like :
- Preform FFT
- Manipulate coefficients (?)
- Inverse FFT
I’m not really sure what the manipulation in-between would look like however, and I imagine it’s a bit more complex than it seems. Or I might be incorrect and this would need to get factored in when actually calculating the FFT, in which case, this becomes a can of worms as I would be trying to roll my own FFT formula lol. Any thoughts or answers appreciated!
Another term for frequency shifting is single side band modulation (SSB). It’s a technique derived from amplitude modulation (AM), aka ring shifting.
The principle behind AM is that multiplying a signal at the baseband (centered at DC, OHz) by a carrier frequency shifts the spectrum upwards to be centered about the carrier frequency. However, this doubles the bandwidth, since a real-valued signal has bandwidth up to some positive F, and mirrored down to negative F. So you get a signal mirrored at the carrier frequency, Fc, from (Fc - F) to (Fc + F).
The cheap way to implement it is to first modulate the base band signal (your input) by the carrier frequency (the frequency to shift up) and filter out the lower sideband. The downside of this approach is you have to deal with both high and low frequency aliasing.
FFT can be overkill for this. Look up “phase differencing network.” You can implement a Hilbert transformation over a known audio range (say, 15 Hz to 15 kHz) with a 12th order filter and decent accuracy. “Hilbert” is another useful term to search for.
Yepp, definitely use a Hilbert Transform and Single Side Band Modulation. Not only is the FFT overkill, it’s also harder to implement and it doesn’t sound as good because you’d need some sort of Analysis / Resynthesis model.