Tamaño de Búfer (Buffer Size) y Latencia: ASIO en Windows
En informática, un búfer (del inglés, buffer) es un espacio de memoria (una memoria intermedia), en el que se almacenan datos de manera temporal, normalmente para un único uso (generalmente ocupan un sistema de cola FIFO); su principal función es evitar que el programa o recurso que los requiere, ya sea hardware o software, se quede sin datos durante una transferencia (entrada/salida) de datos irregular o por la velocidad del proceso.
Normalmente los datos se almacenan en un búfer mientras son transferidos desde un dispositivo de entrada (como un ratón o mouse) o justo antes de enviarlos a un dispositivo de salida (por ejemplo: altavoces). También puede utilizarse para transferir datos entre procesos, de una forma parecida a los búferes utilizados en telecomunicaciones. Un ejemplo de esto último ocurre en una comunicación telefónica, en la que al realizar una llamada esta se almacena, se disminuye su calidad y el número de bytes a ser transferidos, y luego se envían estos datos modificados al receptor.
La memoria "buffer" de audio afecta a cómo se envía y recibe la señal de audio desde y hacia la tarjeta de audio. El tamaño de la memoria buffer afecta tanto a la latencia como al rendimiento de audio.
Generalmente, cuanto más pequeño sea el tamaño de la memoria buffer, más baja será la latencia. Por otra parte, trabajar con tamaños pequeños de memoria buffer puede exigir mucho a la computadora. Si la memoria buffer es muy pequeña, puede que oiga clics, crujidos y otros problemas en la reproducción de audio.
Cuanto mayor sea el valor de las muestras (samples), menos probable es que se escuchen cortes de sonido, etc. Cuanto menor sea el valor, menos probable es que se experimenten retrasos en el funcionamiento.
Si se experimenta problemas como cortes de sonido o "clicks" de tipo digital, hay que configurar el tamaño del búfer con un valor más grande, como 512 ó 1024 samples (muestras).
Como la computadora no puede guardar una sonido analógico (voz, sonido de un instrumento) al milímetro, tiene que tomar una cantidad de muestras cada segundo para guardarlo como información digital (discreto, finito). Estas muestras también se llaman samples y, cuantas más "fotos" tomamos por segundo, más fiel será la grabación con respecto a la señal original.
Para volver un poco a las definiciones, las interfaces de audio tienen unas memorias para guardar estas muestras temporalmente hasta que la computadora las toma, llamadas buffers. El tamaño de estas memorias se mide en muestras o samples. Los valores más habituales que nos permite seleccionar la interfaz de audio suelen ser de 16, 32, 48, 64, 96, 128, 256, 512, 1024 muestras, por ejemplo.
Por otra parte, la latencia es un retardo en el procesamiento de audio en tiempo real. Es decir, el tiempo que pasa entre que creamos el sonido y que este sonido está disponible para ser escuchado o grabado. Se suele medir en milisegundos (ms). Esto es debido a que la computadora tiene que procesar el audio de la tarjeta de sonido o interfaz de audio, lo cual le lleva un tiempo determinado.
Esto depende de varios factores, como:
- La potencia del ordenador (CPU, RAM)
- La interfaz que estamos utilizando
- El tipo de conexión al ordenador
- Los canales simultáneos que queremos utilizar (grabar varios instrumentos al mismo tiempo)
Elegir un valor u otro afectará a la latencia, el "crepitar" del audio ("crackling") y las pérdidas o caídas de señal ("dropout"). No hay un valor mejor que otro, dependerá de lo que queramos hacer. Al seleccionar un valor, perderemos en algún aspecto y ganaremos en otro.
Si reducimos el tamaño de su búfer:
- Reduciremos la latencia (el retardo)
- El ordenador tendrá una mayor carga de trabajo
- Podría ocasionar causar fallos en el audio de audio o interrupciones. Por otro lado, la calidad del audio bajará y tendrá menos distorsión.
- Es lo que más nos interesa si queremos monitorear (escuchar en tiempo real) lo que estamos grabando.
Si aumentamos el tamaño de buffer:
- Más información puede ir guardando la interfaz de mientras que el ordenador las va recogiendo
- Tendremos más tiempo para capturar el audio sin distorsión, y la grabación será más precisa.
- El ordenador estará menos estresado
- La latencia (el retardo) aumentará, con lo que el retardo entre lo que grabamos y lo que escuchamos o grabamos aumentará, haciendo a veces imposible tocar y escuchar en tiempo real.
- Si necesitamos grabar más pistas de audio simultáneamente (por ejemplo) guitarra y voz en entradas diferentes, es posible que necesitemos un tamaño de búfer más grande para grabar con precisión la señal sin distorsión y latencia limitada.
El sonido que creamos debe salir a los monitores o auriculares. Por eso en nuestra computadora existe un proceso de conversión de la señal de audio, de analógica a digital y viceversa. Nuestro procesador debe realizar esa tarea y cuando el tiempo necesario para procesar esa información crece nos encontramos ante un problema de retraso. Es por eso que a veces al utilizar muchos plugins nuestro procesador debe hacer muchos cálculos a la vez y esto nos afecta obteniendo como resultado ruidos como "clicks" o pausas en el sonido. Esto es debido a un problema de latencia.
¿Cómo podemos solucionar esto? Ajustando el tamaño del BUFFER.
Nuestra computadora realiza muchas tareas a la vez, entre ellas debe hacer los cálculos para que nuestro audio se reproduzca en tiempo real. Para eso además del microprocesador, usa la memoria RAM. A esas secciones de la memoria RAM en la cual se almacenan temporalmente estos cálculos se la denomina BUFFER. El tamaño del buffer (buffer size) que nosotros seleccionemos será lo que determine la velocidad del audio en tiempo real.
Si vamos a hacer una mezcla o estamos componiendo y necesitamos utilizar plugins para crear efectos debemos entonces aumentar el tamaño del buffer. Esto nos traerá un retraso (problema de latencia) pero liberará al microprocesador lo que ayudará a que los plugins funcionen mas sueltos y que no escuchemos esos clicks (glitch sound) que tanto molestan. Podemos configurar un buffer size de 512, 1024, o si no es suficiente, podemos duplicarlo a 2048.
Si vamos a grabar a un cantante y necesitamos monitoreo en tiempo real, o si queremos programar o tocar a través de un controlador MIDI entonces debemos disminuir el tamaño del buffer. Un buffer de 512 samples no debería proporcionar problemas de latencia durante la grabación, aunque si tenemos una PC con mucha memoria RAM y un buen microprocesador podemos probar con un buffer size de 256 o 128. Tengamos en cuenta que si tenemos muchos plugins cargados en nuestro proyecto debemos desactivarlos o congelar las pistas para que al bajar la latencia no tengamos problemas de glitch sound como los comentados anteriormente.
¿Qué es el famoso ASIO que utilizamos en Windows?
Audio Stream Input/Output (ASIO) es un protocolo para audio digital creado por Steinberg, que maneja la latencia entre el DAW y la interfaz de audio.
Lo que hace es realizar un bypass a la alta latencia del sistema operativo de audio permitiendo una rápida comunicación con la interface. Esto aplica solo para Windows, ya que Mac OSX de Apple o Linux no tienen problemas de mezcla de latencia como estos.
Cada placa de audio tiene sus drivers ASIO. Si tu interface no tiene la opción para cambiar el buffer size, o si directamente no tenés interface, es recomendable instalar el asio4all, un driver gratuito que permite corregir el tamaño del buffer.
Comentarios
Publicar un comentario