0
$\begingroup$

To represent a 16 bits temporal spectrum, it's "easy" : my scale is going from -32000 to +32000. But What's the scale for a frequency spectrum ?

I made that try : I calculated a pure single frequency sine signal and calculated it's energy for a period. So, I supposed that any signal generated on such a period - without saturation, of course - could have more energy. So, I considered the ratio

20.log10 (signal_energy/maximum_theorical_energy)

as my 0 dbFS.

Then, I made few experimentations, generating signals for different kind of frequencies and, when I had a single sine, each time, I reached the 0dbFS.

But, of course, a music have thousands of frequencies. So, when I represent a spectrum of a "music sound" signal, I rarely reach more than -30 db and my signal is more or less around -60 db for each frequency. It seems very low.

So, my question is : is it correct to represent a signal with such a measurement ? If not, how do represent the "values" for each frequencies on the graph ? With which scale ?

Thank you for all your answers.

$\endgroup$
1
$\begingroup$

FFT scaling for audio signals is indeed difficult. Sometimes the energy is distributed over many frequencies, sometimes the energy is only at few or just one frequency. This can result in a very high "crest factor". i.e the ratio of the peak value to the average power (RMS) value.

This mainly depends on the the length of the FFT: the longer the FFT, the larger the crest factor will get.

The best ways to deal with this is:

  1. Use floating point representation and math if any possible
  2. Choose an FFT length that is optimal for your application and not longer than you really need

Other than that, the differences that you see are real. FFT is a metric of "spectral density", and for pure sine waves this approaches infinity, while it is quite low for noise-like signals.

$\endgroup$

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.