The AudioPitchShift example shows how to apply a octave shift (/2) on the entire spectrum. I would like to do the shifting by bands so that, for instance, 0 to 3000 is unaffected, 3000-6000 gets /2, 6000 to 12000 gets /4, and 12000- gets /8 to map all high frequencies into a hearable range for someone with high frequency hearing loss.
I've considered using HighPass and AudioPitchShift pairs to separate the bands and apply the shifts, and recombine the results, but that seems inefficient. I do not see how to work on the raw spectrum to do this mathematically and the code for, say, AudioPitchShift is not (obviously) available.
The rest of the problem seems fairly obvious with AudioStream, etc.