Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I have been experimenting with a new waveform visualization that uses the spectral centroid https://en.wikipedia.org/wiki/Spectral_centroid , mapped to hue, and the spectral flatness https://en.wikipedia.org/wiki/Spectral_flatness , mapped to saturation.
The spectral centroid indicates where the center of mass of the spectrum is located, where 0 is in the low frequency band, 0.5 in the mid, and 1 in the high. Normally much more bands are used (typically an FFT) to calculate the spectral centroid. This implementation simply uses the information at hand: the filtered low,mid and high amplitudes (as mapped to R G B color components for the RGB waveform type).
By mapping the spectral centroid to hue, we get a color on a continuous color scale (red - yellow - green - cyan - blue).
Furthermore, I calculate the spectral flatness, which gives an indication of how "strong" the spectral centroid is. By inverse mapping the spectral flatness to saturation, the color is more pronounced for a strong spectral centroid, while it goes towards grey for a flatter spectrum.
Some comparisons between RGB (top) and Centroid (bottom). For example this kick-drum hi-hat sequence:
RGB:
Centroid:
RGB:
Centroid:
RGB:
Centroid: