I wrote audio spectrum analyzer that has logarithmic frequency division with musical scales. The algorithm is similar to constant Q transform (CQT).
It is available as html5 page on ShowCQTBar Audio Spectrum Visualization (https://mfcc64.github.io/html5-showcqtbar/)
Summary of the algorithm:
- Do pre-processing, e.g attenuate bass.
- Perform asymmetric windowing on future samples. This is done mainly to reduce latency. But it also makes the transform similar to gamma tone filter. It uses 33 ms half Nuttall window.
- Perform FFT on samples (N = 16384 when sample rate is 48000 Hz).
- Do post-processing with CQT kernel similar to Brown-Puckette algorithm but the kernel is specified directly in frequency domain (using Nuttall window), and also it is actually not constant Q at low frequency.
- Plot it (Bar graph is linear amplitude, while waterfall is square root of amplitude).
Previously, it was available as ffmpeg/mpv 'showcqt' filter, here is the screenshot:
The default settings on your page make for a very beautiful visualization. Your screenshot doesn't do it justice.
The image is from https://github.com/mfcc64/mpv-scripts (https://github.com/mfcc64/mpv-scripts)
It is similar to html5 version with waterfall enabled, but with different axis image.