La latencia no se produce al introducir datos MIDI por una interfase MIDI, sino al procesar la placa de audio dichos datos


Escrito por Lisandro   
Viernes, 12 de Agosto de 2011 13:35


Podemos definir a la latencia como el tiempo que tarda en ser procesada una señal que ingresamos a nuestro sistema a través de un dispositivo de E/S, en nuestro caso la señal será de audio y el dispositivo de E/S la placa de audio. Este tiempo de procesamiento de la señal se traduce, si es muy elevado, en una diferencia temporal entre lo que tocamos en un instrumento, o ingresamos por un micrófono, y lo que escuchamos a través de nuestro sistema de monitoreo de la salida de la placa de audio. Hoy en día la mayoría de las placas profesionales, como Juli@ESU1808AudioFire 12, etc. solucionaron este inconveniente mediante la implementación de una tecnología de driver denominada ASIO (Audio Stream input Output). Antes de explicar el funcionamiento de este driver hay que aclarar que siempre vamos a tener latencia, es decir, siempre va existir un retardo entre la señal de entrada y la de salida, aún cuando se hable de latencia cero, la cuestión es que ésta sea imperceptible, lo cual comienza a serlo a partir de los 12/ms de retardo aproximadamente, las placas de audio que enuncian tener latencia cero en realidad poseen un periodo de latencia de 2 a 3ms la cual es despreciable desde el punto de vista de la ejecución y se puede trabajar tranquilamente sin ningún tipo de inconvenientes. Me ha tocado en varias oportunidades asesorar a profesionales, en cuanto a este punto, sobre el manejo de datos MIDI, muchos de ellos se quejaban que su interfase MIDI producía dicho retardo y les era imposible secuenciar… he aquí un aspecto importante, la latencia no se produce al introducir datos MIDI por una interfase MIDI, sino al procesar la placa de audio dichos datos  y  transformarlos  en  señal  de  audio  audible,  es  decir,  la  latencia  está relacionada directamente con la placa de audio y la respuesta de la misma, no con la interfase MIDI.
La firma Steinberg (creadores de Cubase y Nuendo entre otros) desarrolló hace algunos años los drivers ASIO, diseñados para comunicar directamente sus aplicaciones de audio con determinadas placas de audio, veamos a grandes rasgos como trabaja un driver ASIO: la mayor parte de las placas de audio trabajan  con  drivers  que  pasan  por  el  sistema  operativo  para  operar  con  el hardware, una de las principales funciones de un driver es procesar todas las operaciones de entrada y salida solicitadas por un proceso relacionado con el hardware en cuestión. Cuando un driver pasa a través del sistema operativo el tiempo de comunicación entre la aplicación de audio y el hardware asociado aumenta. Lo que hacen los drivers ASIO es omitir el pasaje por el sistema operativo comunicándose directamente con el hardware, con lo cual disminuye el tiempo de gestión del proceso entre el hardware y la aplicación. Al trabajar con audio digital (o datos MIDI transformados posteriormente en señal de audio) el paquete de datos a procesar es de un tamaño considerable y aún más si a ese procesamiento se le agrega algún efecto en tiempo real, en este caso si contamos con una placa de audio que no trabaje con drivers ASIO, como placas OnBoard, placas de computadoras tipo Laptop o SounBlaster en todas sus versiones nos será imposible trabajar, independientemente de la interfase MIDI que estemos utilizando. La latencia percibida al ingresar datos MIDI es notoria al trabajar con los denominados sintetizadores virtuales, como GigaStudio, Plugins VST, Dxi, etc.es en estos casos donde se le suele “echar la culpa” al controlador o a la interfase MIDI; pero en realidad el problema reside en que la placa de audio no es compatible con drivers ASIO, condición necesaria para reducir el periodo de latencia. Un ejemplo de distribución válida para sortear el problema de la latencia puede ser el uso de una placa de audio como Juli@, en este caso la placa de audio nos da la posibilidad de trabajar con drivers ASIO produciendo un tiempo de latencia del orden de los 3/ms (totalmente imperceptible) al transformar los datos MIDI en audio a la salida de la placa.
Resumiendo, por más que tengamos la última interfase MIDI USB lanzada al mercado, la M4U de Esi-Pro por citar un ejemplo, si nuestra salida de audio estará a cargo de una placa de audio genérica (o una placa contenida en el motherboard: Sound OnBoard) y queremos utilizar sintetizadores MIDI virtuales, la latencia será inevitable, la única solución es agregar a nuestro sistema una placa de audio ASIO compatible para poder trabajar de forma cómoda y confiable.



Articulo auspiciado por: http://www.facebook.com/marcelo.deartier