Si conocemos la velocidad a la que tomamos muestras (frecuencia de muestreo)
y el número de bits que utilizamos, es fácil estimar la cantidad de datos
aproximada que necesita nuestra señal de audio digital para su
almacenamiento o transmisión.
Supongamos una canción extraída de un CD, esto es, 2 canales (L y R) con
frecuencia de muestreo de 44.1kHz y 16 bits de resolución:
Una muestra de 16 bits son 2 bytes (8 bits = 1Byte)
Frecuencia de muestreo x número de Bytes (44110 x 2 = 88200 bytes/segundo)
Cada segundo: 88200 / 1024 = 86,13kB (2 x 86kB,13 = 172,26kB en estéreo)
Cada minuto: 86,13kB x 60 / 1024 = 5,05MB (2 x 5,05MB = 10,1MB en estéreo)
Una canción estéreo de 5 minutos de duración: 5 x 10,1MB = 50,5MB
Formatos de archivos de audio sin compresión
Los formatos de archivo sin compresión más utilizados en la programación
de videojuegos son WAV y AIFF. Ambos son similares aunque tienen ciertas
diferencias de encapsulado, derivadas de sus orígenes de Microsoft y
Apple, respectivamente.
Existen otros formatos sin compresión o sin pérdidas como AU, LAME, FLAC,
etc. que no se utilizan en la programación de videojuegos por la necesidad
de implementar codecs adicionales.
Técnicas de reducción de datos
La reducción de datos parte de la necesidad de optimizar la capacidad de
almacenamiento y transmisión de señales de audio digital, y consiste en reducir
la tasa binaria eliminado la información redundante o irrelevante.
A partir de esta premisa, la figura 7 plantea dos modelos de reducción de datos:
con pérdidas o sin ellas.
Figura 7. Modelos de reducción de datos
De este modo, es posible comprimir archivos de audio sin pérdidas a un 50% o
a un 25% de su tamaño original, como en el caso de los ficheros LAME o FLAC
comentados anteriormente.
No obstante, si queremos tasas de compresión más altas al 10% de la señal original,
como en el caso del MP3 o AAC) debemos utilizar otro tipo de técnicas que
"sacrificarán" en parte la calidad para ajustar más el tamaño.
Para ello, se utilizan diferentes técnicas, tales como:
reducción de la frecuencia de muestreo
filtrado en altas y bajas frecuencias
reducción de la resolución de cuantificación (número de bits)
eliminación de datos redundantes e irrelevantes
modelos perceptuales y psicoacústicos
análisis de enmascaramiento
análisis por bandas de frecuencia
codificación por predicción
Formatos de archivos de audio sin compresión
El formato de archivo con compresión más utilizado en la programación de
videojuegos es el MP3, que utiliza todas las técnicas comentadas anteriormente
para conseguir ratios de reducción de hasta 1:12 (ver tabla 2). Igual que en el
caso anterior tanto Apple (AAC) como Microsoft (WMA) ofrecen sus versiones
en teoría mejoradas al estándar MP3, si bien en el mundo de la programación
para videojuegos no se suelen usar por falta de compatibilidad.
Birate
Ratio
Tamaño/min.
Demo
1378kbps
1:1
10,1MB
PLAY
320kbps
1:4,3
2,3MB
PLAY
192kbps
1:7,2
1,4MB
PLAY
128kbps
1:10,8
954kB
PLAY
64kbps
1:21,5
470kB
PLAY
16kbps
1:86,1
117kB
PLAY
Tabla 3. Comparativa de ratios de compresión mp3 para un archivo
estéreo en WAV de 1 minuto (10,1MB)
A la hora de utilizar archivos de audio, dependiendo del juego, del motor,
del hardware disponible, se utilizarán diferentes técnicas de reducción de datos,
ya que si bien el procesado de estas señales será mayor, con la potencia de los
procesadores de hoy en día prevalece la capacidad de espacio (en RAM y buffers, a
la hora de cargar el juego) frente a la necesidad de procesado.
Adicionalmente, los motores de juegos actuales permiten trabajar simultáneamente
con diferentes formatos de archivo, tasas binarias, frecuencias de muestreo y
profundidad de bits simultáneamente, e incluso pueden adaptar esos parámetros en
tiempo real si es necesario para adaptarse a los requisitos.