I'm making a complex music visualizer as a personal project. I've already determined that I will be using a series of modified Goertzel algorithms for frequency detection to place the frequencies on a spiraling piano scale without losing all detail in the bass or calculating unnecessary harmonics.

I'm now looking for analysis for the post-processing effects. I'm looking to estimate the warmth/brilliance (or liveness), and 'grittiness' of the sound as I go. A good example of what I mean by grit is "Dark, Darker, Yet Darker."

How should I approach this problem? I don't have a large, supervised dataset and I only have access to a laptop at the moment, so training a neural net is pretty much out of the question for me. For the record, I'm using Processing (java-based) as my coding environment.


1 Answer 1


Listening to that 'gritty' track you posted, two qualities stood out to me: firstly the bitcrushing / 8-bit effect, and secondly the overdriven quality of the guitar. Overall the effect sounded like there was all this 'noise' in the background, and the pitches of the instruments were competing with this.

Some thoughts based on that observation:

  • If you're already doing frequency detection, maybe you could you measure the proportion of energy at/near these frequencies, as a proportion of the total energy. This is almost like an estimate of SNR. So based on that, you could say that a higher 'SNR' is gritty sounding.
  • Alternatively, you could do some sort of frequency domain correlation with an ideal noise spectrum of some sort, e.g. white or pink noise.
  • Based on this page, both bitcrushing and overdrive create square waves in the waveform. So you could try and measure how square the waves are, perhaps by correlating the waveform with a superposition of square waves at your detected frequencies.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.