I'm working on a spectral processing plugin that's predicated on allowing the user to manipulate per-bin values in an STFT algorithm. I normalize the bin amplitudes by diving them by $N$ (number of samples used in the DFT), but the resulting numbers often inhabit a range that is difficult to work with directly, e.g. it is very difficulty to precisely gate/limit an amplitude value that is often well below 0.1.
Obviously, once normalized, each DFT bin has an absolute amplitude range of 0-1, but what I'd like to do is scale them somehow so they tend to span that entire range, factoring in things specific to audio signals like the bass content often being much greater than the treble. My first instinct is to either apply some logarithmic curve, or maybe even use a table of values derived from the Fletcher-Munson curve, but I wanted to ask here and see if I couldn't go about it in a smarter way. Thank you!
EDIT: I believe I might not have explained my intentions well enough! The normalization I'm planning on doing is going to be temporary, so that the user can easily set values without needing to work with tiny decimal places. E.G., the user can set a "gate" level of 0.3, and then all bins with a "normalized" amplitude under 0.3 would be muted. What I'd like is for a single gate value to work reasonably well for all frequencies, even though lower-frequency bins tend to have a much amplitude in most musical signals.