¿Cómo cambiar el volumen de un audio firmado PCM de 16 bits?

7

Sé que puedo multiplicar muestras, luego recortar, pero el volumen percibido no es lineal para los humanos.

¿Pueden ayudarme con una fórmula?

apocalipsis
fuente
¿Por qué se rechazó esta pregunta? Es claramente relevante para este foro.
Jim Clay
3
La pregunta no está muy claramente formulada, ni siquiera gramaticalmente. Además de eso, ¿qué tipo de no linealidad desea compensar: solo amplitud o amplitud dependiente de la frecuencia?
heltonbiker
Leí este mini tutorial: ypass.net/blog/2010/01/… Y este tipo usó la función de bronceado para hacer que el volumen no sea lineal, pero dijo que no es la manera perfecta. Así que pensé en ese foro DSP. Entenderán lo que quiero decir, incluso si no está publicado gramaticalmente.
apocalipsis
Creo que esa pregunta es muy concisa y muy clara. Cuando trabajas con audio entiendes instantáneamente lo que significa @zgnilec. Este es un problema de psicoacústica: la percepción del volumen de audio en humanos no es lineal. Entonces la pregunta es: "¿cómo haces un cambio de ganancia de audio que se percibe como lineal?"
sebpiq
Un rango de -48dB a + 6dB genera 54dB de amplitud.
be999

Respuestas:

12

El cambio del volumen de una señal de audio debe realizarse aplicando una ganancia (multiplicación) y, opcionalmente, recorte si su sistema tiene un rango dinámico limitado. Esto es tan simple como eso. La aplicación de una función no lineal a una señal de audio causará distorsión y agregará armónicos, y no desea que esto suceda; desea modificar el volumen de la señal, no su timbre. [Para ser justos, hay procesamientos no lineales diseñados para cambiar el volumen percibido de la señal sin afectar el timbre, dentro de una restricción de rango dinámico dada (por ejemplo, compresión multibanda), pero no parece que esto sea lo que necesita .]

Cuando la no linealidad y las curvas de respuesta sofisticadas entran en juego es cuando se diseña una interfaz de usuario, cuando se decide la relación entre la posición del control (mando o control deslizante, ya sea en una GUI o como hardware físico) y la ganancia aplicada a la señal . Aquí es donde importa la percepción, porque los usuarios esperarán un mapeo entre la posición del control deslizante y su percepción de volumen. Tenga en cuenta que incluso si la relación entre la posición del control de volumen y la ganancia aplicada a la señal no es lineal, el proceso de aplicar la ganancia a la señal es lineal, ¡y la no linealidad no sería deseada allí!

Cuando se trata de controles de volumen físico, por ejemplo, en sistemas de alta fidelidad o reproductores de audio personales, la relación entre la posición de la perilla y la atenuación está más cerca de una curva exponencial, aunque su forma se ha ajustado y está limitada por el proceso de fabricación, a veces es solo dos o tres segmentos lineales. Puede encontrar esas curvas en las hojas de datos de los fabricantes (conicidad "A"). Los faders de la consola de mezclas generalmente tienen su respuesta comprimida de modo que la mitad superior de su recorrido cubre el rango útil de -20 dB ... + 6dB.

En el mundo del software, al menos para la producción musical, es más común tener controles de volumen / ganancia calibrados en dB. Por ejemplo, si tiene un control deslizante de volumen de 100 píxeles de largo graduado de -48dB a + 6dB, la ganancia aplicada a la señal sería .1048+54x10020

pichenettes
fuente
cuando x es 0 = 24, x = 100 da 3. ¿Es esto correcto? Necesito más tiempo para entender esto: <
apocalipsis
10 ** ((-48 + 54 * 0 / 100.0) / 20.0) = 0.004; 10 ** ((-48 + 54 * 100 / 100.0) / 20.0) = 1.995
pichenettes
Este es un exponente, no una multiplicación. 10 ^, no 10 *
pichenettes
¿De dónde viene el 54?
Ansis Māliņš