For some non-stationary 1D signals, containing sudden changes, or a lot of noise, wavelets can have a close to optimal performance. Here, by wavelets I mean short oscillating shapes spanning several frequency ranges or scales.
Wavelets are somehow better than Fourier to that respect, as they can deal with peicewise regular + jumping signals.
However, this covers a huge range of possibilities for continuous and discrete tools.
Hence, I am confused with your "Haar Wavelets vs STFT" title. Haar wavelets can be orthogonal, STFT very redundant. So one cannot compare them directly in terms of sparsity and quality of approximation.
I will thus hypothesize that you performed a Hamming window of some audio signal frame of length $L$. Then applied either an FFT or an orthogonal Haar discrete wavelet transform on the result. Then performed a nonlinear approximation by keeping the $N$th largest coefficients, with $L \ll N$.
The result you evoke is a bit surprising to me, and I am a wavelet supporter: it seems a little too good for Haar wavelets. Haar wavelets are often not the best fit for audio, and few audio coders use wavelets. What makes me wondering about your results is:
- the length of your frame, or is the signal sufficiently nonstationary to win by KO on Fourier?
- "starting from low to high energies": I have problem understanding what it means with wavelets. Are you performing a fair treatment on Fourier ?
- magnitude and complex symmetry: Fourier coefficients are usually "doubled" on real signals. Did you take that into account? Are you sure you have reconstructed Fourier coefficient fully, and not from magnitude only?
All in all, a sketch of your code could help us deciphering the results.