Can you transform an audio file to fit within a predefined frequency range?

What I am trying to do is to take a song, any song, and transform it to fit within a specified upper and lower frequency range - I don’t want to filter it, but rather “shrink” its octave range to fit within G2-G4 (roughly 100-400 Hz). Think of squeezing all of the content into that range without losing the runs and riffs. Not sure how this can be done, but I figured this is the place to ask.

Thanks for any help you can provide.

I don’t know of any existing effect that can do that. Usually we want to preserve the relationship between notes. i.e. We sometimes “transpose” by shifting up or down a few notes, or a full octave. And some people change from A=440Hz tuning to 423Hz tuning. But one octave is still a frequency-factor of two.

It could be done with FFT, but I wouldn’t want to listen to it. (And I’m not a DSP programmer so I don’t know how to do it.)

The free FFT plugin DtBlkFx can squish (and stretch) a spectrum …
resize

[ No I don’t know why there are manta-rays].

DtBlkFx only works in 32-bit Audacity.