Using apex:outputLink or URLFOR(target, id, params) is great in Visualforce. But in Apex land I always see people looping through lists using EncodingUtil.urlEncode(param, 'UTF-8').

If System.Url doesn't have a parameter parser or builder, what's the best way to do it?


Question: Chop out frequencies outside human hearing range
Answer: Yes, it is possible to filter out the frequencies that you don't want using FFT's and inverse FFT's as you describe.  However, I do not recommend that you do it that way for a couple of reasons.


It's tempting to just zero out the frequencies that you don't want.  The problem with that is that it introduces strange artifacts when you transform your data back to the time domain.  There is a way to avoid introducing those artifacts, but it is more complicated than just straightforward time-domain filtering.
Unless you FFT the entire sound clip at once, you will have to use either the overlap-save or overlap-add method to avoid distortions at the points where you break the data up into frames.


Long story short, unless you really care about filtering speed, just do it in the time-domain.