Comment calculer dBFS?

11

Je me suis demandé comment calculer dBFS (dB pleine échelle) à partir d'une valeur d'échantillon entre 1 et -1?

et en général?

JustGoscha
la source

Réponses:

13

C'est vraiment assez simple pour des valeurs entre 1 et -1:

valueDBFS = 20*log10(abs(value))

Si vous avez des valeurs entre une autre plage, par exemple 16 bits, alors c'est:

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

(car 16 bits signés ont des valeurs comprises entre -32768 et +32767, par exemple 2 ^ 15 = 32768)

Et donc la formule générale est:

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

Les exemples de code sont donnés dans le code MATLAB.

JustGoscha
la source
1
C'est techniquement correct, mais la plupart des compteurs dBFS affichent en fait une marge, donc vous voudrez souvent afficher le négatif de ces valeurs.
Bjorn Roche
1
De toutes les normes que j'ai lues, il semble que dBFS soit strictement une mesure RMS, pas une mesure de crête, donc ce ne serait pas correct.
endolith
2

Toutes les normes définissent dBFS comme une mesure RMS , par rapport au niveau RMS d'une onde sinusoïdale pleine échelle, le calcul est donc:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • Une onde sinusoïdale pleine échelle est de 0 dBFS
  • Une onde carrée pleine échelle est de +3 dBFS

L'unité similaire dBov est définie par rapport aux rapports de puissance (il s'agit donc également d'une mesure RMS), de telle sorte que l'onde CC ou carrée pleine échelle est de 0 dBov, de sorte que le calcul est:

value_dBov = 20*log10(rms(signal))
  • Une onde sinusoïdale pleine échelle est de -3 dBov
  • Une onde carrée pleine échelle est de 0 dBov
endolith
la source