lunes, 14 de septiembre de 2009

Latencia... ¡ohhhh!


No es magia negra; ai promis.
Tal vez hayan visto en alguna de las fotos que tengo por ahí un teclado MIDI. Bueno, resulta que ese teclado no tiene sonidos propios, así que hay que usarlo en conjunción con un sintetizador (en mi caso la PC) para que suene. Algún día hablaré un poco más largo y tendido de él, pero a los efectos del artículo actual me basta con esta somera explicación. Resulta que llegué a casa con la caja nueva y todo motivado, y cuando enchufé el aparato y toqué la primer tecla me llevé flor de chasco: los sonidos emanaban de la PC visiblemente (o audiblemente) retrasados. Cuestión que se hace imposible tocar... Tres consultas de google, y descubrí la palabrita mágica que tanto repetiré en este artículo: latencia.

¿Qué es la latencia?

Es el retardo producido en el sonido por la conversión analógico-digital. Algo así como el principio de incertidumbre de Heisenberg aplicado a la ingeniería de sonido, si se me permite el nerdismo.
Parafraseando a mi amigo Pablo, uno sabe que entiende un tema cuando se lo puede explicar a alguien que no conoce nada de él, así que voy a intentar explicar lo anterior (no se preocupen, ni de casualidad me meto con Heisenberg...).
Paso a explicar: cuando (por ejemplo) toco la guitarra, las cuerdas vibran. Esa vibración hace mover el aire y nuestros oídos perciben el movimiento del aire, y generan impulsos eléctricos que llegan al cerebro y por eso escuchamos sonar la guitarra. Es importante notar que el sonido está "en el movimiento", es decir en el tiempo. No hay sonido en un instante congelado.
Un micrófono funciona parecido a nuestros oídos, pero los impulsos eléctricos van (en mi caso) a la placa de sonido de la PC, en vez de al cerebro de naides. La placa de sonido "escucha" el impulso eléctrico -y por lo tanto pierde un tiempito- que llega para poder convertirlo al dominio digital que es lo que la computadora "entiende".
Ese tiempito que la placa de sonido se toma para convertir, forma parte de la latencia. No es el único tipo de latencia que existe, pero ilustra el concepto.
Resulta que la pila de drivers que windows (DirectSound, Direct X Audio) usa para adquirir y reproducir sonidos no está precisamente preparada para la captura y reproducción de sonido en tiempo real, por lo que la latencia es alta.

¿Cómo evitar la latencia?

No se puede... ¡CHAN!

No, efectivamente no se puede, pero sí se la puede reducir hasta un nivel que no resulte perceptible, y por lo tanto no perjudique la ejecución ni la reproducción de sonido a través de la pc.
Existe un protocolo llamado ASIO (Audio Stream Input/Output ~= Flujo de Entrada Salida de Audio) que es bastante más eficiente, por lo menos en lo que a latencia se refiere, que el estándar de windows. El hardware profesional de audio digital suele traer drivers ASIO propios, pero para los mortales que no tenemos acceso precisamente a "hardware profesional" (yo tengo un horrible chip de sonido on-board) existe ASIO4ALL. Gracias a un ñato llamado Michael Tippach podemos contar con ASIO para nuestras placas de sonido tercermundistas.

Básicamente, usar ASIO es como conectar una autopista doble mano entre la placa de sonido y el micro.

En estos días, para diluir un poco el cariz técnico de este post, espero llegar a subir mi primer intento de multi-track (viene con flavor indie).
'sta luego.


1 comentario:

Anónimo dijo...

grosisima info man te agredezco muchisimo no tenia ni la mas perra idea de q existiera una compatibilidad asio con placas pedorras on board thanks a lot!