Wednesday, May 13, 2009

#dBFS calculator

Here is a simple dBFS calculator:

You can download it in Flash SWF format or as a C source / Win32 binary (binary compiled with the DJGPP online-compiler).





The summing of decibel values is a bit of a confusing subject, i believe because decibels are units with no dimension (ratio like %) and also that they are logarithmic.

You can read this whole article for more information:
http://www.homeandprojectstudio.com/features/feature001.html

...Using dB FS (full-scale) in digital audio means that a change of +6 dB FS is the same as +10 dB spl (sound pressure level); in other words, twice as loud. How can this be? We know that each bit in a digital audio system increases the sampling resolution by approximately 6 dB. In essence, each bit represents an exponential increase in the sampling resolution, doubling the value with each bit. That’s why in a digital audio system, +6 dB FS, and not +10 dB spl, represents a doubling in sound levels. Not coincidentally, this corroborates the earlier statement that an increase of 6 dB is really a doubling of sound pressure, although not the perceived doubling of sound pressure. This is true for both analog and digital measurements.
The important bit here is to learn to distinguish different types of measurement (decibels). What you are seeing on the meters in your audio program is dbFS originally designed for ADCs (analog-to-digital converters) and assimilated by modern audio tools. dbFS is the reverse of dbSPL.

The above article explains an easy way to sum dbSPL values and also provides a table to convert dbSPL to dbFS (16bit only):

If you have 80dbSPL + 80dbSPL the result would be approx 83dbSPL (80+3), because the difference between the two is 0 units - from the "rule of thumb".

--------

a dbSPL calculator works with the following equation:

result = 10*(log(10^(input1/10)+10^(input2/10))/log(10)
where "input1" and "input2" are the dbSPL (!!) values you want to sum. 80db+80db=83db

--------

to sum two sinewaves in your audio program (with dbFS measures):

result = 20*(log(10^(input1/20)+10^(input2/20))/log(10)
But why 20*? Here is a explanation quote from wikipedia:

20 log rule, and similarly the formula for ratios of powers is the 10 log rule, and similarly for other factors. The factor of 20 is explained as: 10 is because it is in decibels (10ths of bels), and 2 is because it is a ratio of powers (squares of amplitudes): the product is 20.
So result for the sum of -9dbFS and -9dbFS, would be -2.97940008672037 for equal input/output impedance.

Lubomir

5 comments:

  • Anonymous

    Thanks. This was exactly what I was looking for. Unfortunately the article (and website) that you reference has gone away. So if you have any info on how to derive the dbFS forumlas from the dbSPL forumla, I would appreciate your posting that also.

  • Lubomir

    the article in question pretty much only gave isolated examples based on the "rule of thumb".
    there isn't a real conversation between the two units dBFS and dBSPL (also between dBFS and dBu fo example). dBSPL depends on a lot of physical factors (room, measurement distance, speaker levels etc..) in fact, it is quite difficult to measure it "correctly". dBFS on the other hand is a unit related to maximum peak and has a negative sign.

    you can however, calibrate sound levels to mean something when dBFS and dBSPL values are involved:

    http://www.bnoack.com/index.html?http&&&www.bnoack.com/audio/k-system.html

    --

  • Lubomir

    this site has a good example, with formulas of a dBSPL calculator:
    http://www.sengpielaudio.com/calculator-leveladding.htm

    --

  • Unknown

    Hi, I'm in the middle of a mix here. I had to cancel a track that was duplicating another. It was feeding the mix in -5.5dBfs. How much should I increase in the original tracks volume to keep it at the same level that it was before with the duplicate one? Thanks!

  • Lubomir

    if i understand the question correctly - doubling a track will increases it's mix level by 6dbFS, therefore find the original peak level of said track and add 6dbFS instead of doubling it.