11
$\begingroup$

I asked myself how to compute dBFS (dB full scale) from a value of sample between 1 and -1?

and in general?

$\endgroup$
13
$\begingroup$

It is really quite simple for values between 1 and -1:

valueDBFS = 20*log10(abs(value))

If you have values between another range, for example 16bit, then it's:

valueDBFS = 20*log10(abs(value)/32768)

(because 16bit signed has values between -32768 and +32767, e.g. 2^15=32768)

And so the general formula is:

valueDBFS = 20*log10(abs(value)/maxValue)

The code examples are given in MATLAB code.

$\endgroup$
  • 1
    $\begingroup$ This is technically correct, but most dBFS meters actually display headroom, so you will often want to display the negative of these values. $\endgroup$ – Bjorn Roche Apr 22 '13 at 14:41
  • 1
    $\begingroup$ From all the standards I've read, it seems that dBFS is strictly an RMS measurement, not a peak measurement, so this would not be correct. $\endgroup$ – endolith Aug 1 '18 at 16:27
2
$\begingroup$

All the standards define dBFS as an RMS measurement, relative to the RMS level of a full-scale sine wave, so the calculation is:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • A full-scale sine wave is 0 dBFS
  • A full-scale square wave is +3 dBFS

The similar unit dBov is defined in relation to power ratios (so it's also an RMS measurement), such that full-scale DC or square wave is 0 dBov, so that calculation is:

value_dBov = 20*log10(rms(signal))
  • A full-scale sine wave is −3 dBov
  • A full-scale square wave is 0 dBov
$\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.