Spectrogram C++ library
It would be fairly easy to put together your own spectrogram. The steps are:
- window function (fairly trivial, e.g. Hanning)
- FFT (FFTW would be a good choice but if licensing is an issue then go for Kiss FFT or similar)
- calculate log magnitude of frequency domain components (trivial: log(sqrt(re * re + im * im))
you could use fftw (fftw.org) to calculate the spectrogram, you would still need to plot the data, but that should not be a problem
"How do I create a frequency vs time plot?" lists several libraries, each of which can calculate a spectrogram from a signal.
Copied and pasted from my own answer:
Some source code to generate spectrograms / waterfall plots from audio data:
- SoX - Sound eXchange includes spectrogram source code
- Audacity includes spectrogram source code
- glfer includes waterfall spectrum display spectrum source code
- source code that uses fftw to compute the spectrogram of an audio stream
- more source code that uses OpenAL and fftw to compute the spectrogram for an audio stream
- "Sound Activated Recorder with Spectrogram in C#" by Jeff Morton
- Topographica seems to include spectrogram source code
- SpectroGraph for iTunes
Image to Spectrogram goes in the reverse direction from the above utilities.