2010-03-17 8 views

Respuesta

17

El rango es de -160 dB a 0 dB. Probablemente desee mostrarlo en un medidor que va desde -90 dB a 0 dB. Mostrarlo como decibelios es en realidad más útil que como un nivel de audio lineal, porque los decibelios son una escala logarítmica, lo que significa que se aproxima más a la intensidad con la que percibimos un sonido.

Dicho esto, se puede usar esto para convertir de decibelios a lineal:

linear = pow (10, decibels/20);

y lo contrario:

decibels = log10 (linear) * 20;

El rango para los decibelios por encima es infinito hasta cero, y para lineal es 0.0 a 1.0. Cuando el valor lineal es 0.0, eso es -inf dB; lineal a 1.0 es 0 dB.

+10

¿Qué es exactamente '20' aquí? –

+0

Al medir la intensidad del sonido en el aire, el valor de referencia es por convención una presión sonora de 20 micropascales (μPa), el valor del libro de texto para el sonido promedio más bajo que puede escuchar un ser humano joven y sano (a una frecuencia de 1000 Hz) https: //www.researchgate.net/post/Is_there_any_relationship_between_dB_decibel_and_dBA_how_to_convert_dB_to_dBA –

4

Apple también implementó una clase de conversión de amplitud lineal de dB a MeterTable.cpp y MeterTable.h Búsquelo en el ejemplo de la aplicación SpeakHere.

Usted puede utilizar su función en línea que calcula el valor "sobre la marcha"

inline double DbToAmp(double inDb); 

O

crear una instancia MeterTable utilizar tabla de búsqueda calculada de antemano. Esto almacena los valores de conversión en la memoria para que su aplicación pueda reducir la cantidad de cálculos.

float ValueAt(float inDecibels); 

NOTA: tabla de búsqueda es probablemente necesario si usted tiene una gran cantidad de otros cálculos pasando al mismo tiempo, o si necesita procesamiento muy rápido.

+1

Enlace de ejemplo de la aplicación SpeakHere -> http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html –

+0

Y la función DbToAmp devuelve: ' pow (10., 0.05 * inDb); ' – CharlesA

+0

También https://github.com/warrenburton/MeterTableOC si no desea la ligera molestia de los archivos C++ en su proyecto –

Cuestiones relacionadas