Perdonad la excesiva simplificación y el ramalazo didáctico de maestrillo escuela (
mea culpa, deformación profesional), pero es sólo para intentar llegar a un acuerdo de mínimos...
Al grano, yo lo que he podido entender de estas cosas del audio digital es que:
1) Respecto al nº de bits (lo que en el imperio llaman
Bit Depth)
Para evitar confusiones que quede claro que estoy hablando de nº de bits que ocupa en disco cada muestra a la hora de almacenar una grabación de audio digital. Esto no tiene nada que ver con sistemas operativos,
DAWs y
plug-ins con arquitectura de 32 ó 64 bits. Eso es otra guerra distinta...
Para grabar, almacenar y reproducir sonido digital...
- Con 8 bits: pichí, pichá... saborcillo
retro Lo-Fi
- Con 16 bits; vamos bien...
- Con 24 bits: vamos sobraos...
- Con 32, 48 ó 64 bits...
2) Respecto al tipo de datos utilizados a la hora de procesar el sonido
(
AKA Data Types and DSP: Digital Signal Processing)
Al programar una aplicación de audio se puede elegir qué tipo de datos se va a utilizar, es decir cómo se van a representar en memoria esos valores a la hora de procesarlos. Hay dos tipos de procesado: aritmética de punto fijo y aritmética de punto flotante.
Si se elige "punto fijo" estas son las opciones disponibles:
-
byte (
8 bits): no vale pa ná
-
short (
16 bits): ande vas, picha corta...
-
int (
32 bits): justito, aunque podría valer para algunas cosas.
-
long (
64 bits): bien, bien...
Si se elige "flotante" hay dos opciones:
-
float (
32 bits): ya nos valdría para según qué cosas
-
double (
64 bits): con este vamos sobraos
En resumen, las opciones posibles son entero (de 32 ó 64 bits) y flotante (de 32 ó 64 bits).
Insisto, esto es el número de bits que ocupa cada muestra de audio digital en memoria, no tiene nada que ver con
DAWs o
plugins con arquitecturas de 32 ó 64 bits. Los datos
float de 32 y 64 bits ya se usaban habitualmente cuando los procesadores eran de 8 bits.
3) Respecto a las conversiones del tipo de datos
El audio está grabado en disco como enteros de 16 ó 24 bits.
En memoria puede representarse como enteros o floats de 32 ó 64 bits.
La elección de un tipo de datos u otro dependerá del proceso concreto que se vaya a realizar.
Unos son mejores para un tipo de algoritmos y otros para otros.
Esto implica que el software debe efectuar frecuentes conversiones de datos.
- Si se aumenta el número de bits no hay ningún problema, se añaden ceros y ya está solucionado.
- Si se reduce el número de bits la cosa se complica y pueden empezar los problemas.
4) Respecto al Dithering
Si reducimos el número de bits de una señal de audio se produce una pérdida de resolución.
Esta pérdida de resolución puede implicar el deterioro y degradación de la señal y la aparición de artefactos audibles por efecto de los errores de cuantización. Para minimizar esta degradación se usa una técnica llamada
Dithering, que paradójicamente, consiste en añadir ruido a la señal para evitar su degradación.
5) Respecto al truncamiento de datos Float.
harpocrates escribió:
Es lo mismo, números con decimales, pues numero que van a tener que ser redondeados a enteros, y para que se redondean? para calzar en un intervalo de cuantización, en definitiva ruido de cuantización, es lo mismo.
Yo me había hecho la idea de que la reducción del número de bits en el caso de datos
float no suponía ningún problema, ya que basta con truncar o eliminar los bits menos significativos, que son despreciables una vez finalizado el procesamiento.
De hecho he leído artículos de un ingeniero especializado en DSP y programación de audio digital, un tal Nika Aldrich, que me ha parecido entender que van en esa misma dirección cuando afirma:
Alguien escribió:
For these reasons it is simply impossible to adequately dither a floating-point system such that quantization error becomes exclusively quantization noise, such as can be accomplished in a fixed-point system.
Aquí entiendo que al reducir la tasa de bits en datos
float no es posible aplicar
dithering, ya que en este caso los errores de cuantización se traducen exclusivamente en ruido de fondo. (Y no tiene sentido añadir ruido para prevenir la aparición de ruido)
En el caso de la reducción de la tasa de bits en datos enteros los errores de cuantización provocan la aparición de distorsión que puede llegar a ser audible. Por eso en este caso es necesario añadir ruido de fondo para evitar esa distorsión.
Si estoy equivocado corregidme, por favor, que soy un simple aprendiz y de esto sé lo básico, y de inglés lo justito...
Para quien quiera profundizar más en aspectos técnicos:
Nika Aldrich.
Dither Explained.
http://www.users.qwest.net/~volt42/cadenzarecording/DitherExplained.pdf
Nika Aldrich.
Exploring Dither in Floating-Point Systems
http://thewelltemperedcomputer.com/Lib/floatingdither.pdf