Jak obliczyć dBFS?

11

Zadałem sobie pytanie, jak obliczyć dBFS (pełna skala dB) z wartości próbki między 1 a -1?

i na ogół?

JustGoscha
źródło

Odpowiedzi:

13

To jest naprawdę bardzo proste dla wartości od 1 do -1:

valueDBFS = 20*log10(abs(value))

Jeśli masz wartości z innego zakresu, na przykład 16bit, to jest to:

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

(ponieważ podpisany 16-bit ma wartości od -32768 do +32767, np. 2 ^ 15 = 32768)

Tak więc ogólna formuła jest następująca:

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

Przykłady kodu podano w kodzie MATLAB.

JustGoscha
źródło
1
Jest to technicznie poprawne, ale większość mierników dBFS faktycznie wyświetla nadmiar, więc często będziesz chciał wyświetlać minus tych wartości.
Bjorn Roche
1
Ze wszystkich standardów, które przeczytałem, wydaje się, że dBFS jest ściśle pomiarem RMS, a nie pomiarem szczytowym, więc nie byłoby to poprawne.
endolith,
2

Wszystkie standardy definiują dBFS jako pomiar RMS w odniesieniu do poziomu RMS pełnej fali sinusoidalnej, więc obliczenia są następujące:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • Pełnoskalowa fala sinusoidalna wynosi 0 dBFS
  • Fala kwadratowa w pełnej skali wynosi +3 dBFS

Podobna jednostka dBov jest zdefiniowana w stosunku do współczynników mocy (więc jest to również pomiar RMS), tak że pełnozakresowy prąd stały lub prostokątny wynosi 0 dBov, więc obliczenia są następujące:

value_dBov = 20*log10(rms(signal))
  • Pełnoskalowa fala sinusoidalna wynosi −3 dBov
  • Fala kwadratowa w pełnej skali wynosi 0 dBov
endolit
źródło