Yes, many people have worked on time-frequency analysis.
The approach of "slice my data into chunks, perform the FFT on each chunk" is a good idea.
Applying a "window function" on each chunk, just before performing the FFT,
helps avoid many artifacts.
Allowing chunks to overlap also helps.
After those tweaks, you end up with the Gabor transform, which seems to be the most popular short-time Fourier transform (STFT).
As you've already pointed out, and as the Wikipedia article points out, all short-time Fourier transform techniques have a tradeoff:
- when you cut the time-series into very short pieces, you get highly precise time information as to exactly when a tone starts and stops, but the frequency information is very blurry.
- When you cut the time-series into very long pieces, you get highly precise frequency information as to the exact frequency of a tone, but the exact time it starts and stops is blurry.
This is a famous problem, but alas, not only has it not been solved, it's been proven that the uncertainty between the two is inevitable -- the Gabor limit, the Heisenberg–Gabor limit, the uncertainty principle, etc.
If I were you, I would start with one of the many off-the-shelf libraries to calculate the Gabor transform,
and experiment with cutting the time series into various lengths.
There's a pretty good chance you'll be lucky and you will end up with
some length that gives adequate time localization and adequate frequency discrimination.
If that doesn't work for this application, then I would move on to other approaches to time–frequency representation and time-frequency analysis --
wavelet transforms, chirplet transforms, fractional Fourier transform (FRFT), etc.
EDIT:
Some source code to generate spectrograms / waterfall plots from audio data:
Image to Spectrogram goes in the reverse direction from the above utilities.