Como calcular o dBFS?

11

Eu me perguntei como calcular dBFS (dB em escala completa) a partir de um valor de amostra entre 1 e -1?

e em geral?

JustGoscha
fonte

Respostas:

13

É realmente bastante simples para valores entre 1 e -1:

valueDBFS = 20*log10(abs(value))

Se você tiver valores entre outro intervalo, por exemplo, 16 bits, é:

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

(porque o sinal de 16 bits possui valores entre -32768 e +32767, por exemplo, 2 ^ 15 = 32768)

E assim a fórmula geral é:

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

Os exemplos de código são fornecidos no código MATLAB.

JustGoscha
fonte
1
Isso é tecnicamente correto, mas a maioria dos medidores de dBFS na verdade exibe margem livre; portanto, você geralmente desejará exibir o negativo desses valores.
Bjorn Roche
1
De todos os padrões que li, parece que o dBFS é estritamente uma medição RMS, não uma medição de pico; portanto, isso não seria correto.
Endolith
2

Todos os padrões definem o dBFS como uma medição RMS , relativa ao nível RMS de uma onda senoidal em escala real; portanto, o cálculo é:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • Uma onda senoidal em escala real é de 0 dBFS
  • Uma onda quadrada em escala real é +3 ​​dBFS

A unidade semelhante dBov é definida em relação às relações de potência (portanto, também é uma medição RMS), de modo que a onda contínua ou quadrada de escala completa seja 0 dBov, de modo que o cálculo seja:

value_dBov = 20*log10(rms(signal))
  • Uma onda senoidal em escala real é de -3 dBov
  • Uma onda quadrada em escala real é de 0 dBov
endólito
fonte