35 Hoja informativa sobre MIDI
Además de nuestro trabajo con el motor de audio, Ableton ha puesto un esfuerzo adicional analizando la temporalización MIDI en Live y realizando mejoras donde fuera necesario. Redactamos esta hoja informativa para ayudar a los usuarios a entender los problemas derivados de la creación de un entorno MIDI basado en ordenador fiable y preciso, y para explicar el enfoque de Live en cuanto a la resolución de estos problemas.
Nota: los problemas de temporalización MIDI que se comentan en este informe generalmente no son aplicables a los usuarios con un hardware de audio y MIDI de alta calidad. Si usted ya ha invertido tiempo y dinero en optimizar estos factores en su estudio, y no está experimentando problemas con la temporalización MIDI, probablemente no necesite esta información.
35.1 El comportamiento MIDI ideal
Para comprender cómo funciona el MIDI dentro de una estación de trabajo de audio digital (DAW), ayudará el presentar algunos términos y conceptos comunes. Un DAW debe ser capaz de acoger tres escenarios MIDI definidos:
- Grabación tiene que ver con el envío de notas MIDI e información de controlador desde un dispositivo hardware (como un teclado MIDI) hasta un DAW para su almacenamiento. Un entorno de grabación ideal capturaría esta información entrantes con precisión temporal perfecta en relación a la línea temporal de la canción — con tanta precisión como una grabación de audio.
- Reproducción tiene que ver con dos escenarios relacionados cuando tratamos con secuenciadores. El primero se trata de enviar notas MIDI e información de controlador desde el DAW hasta un dispositivo hardware como un sintetizador. El segundo trata sobre la conversión de información MIDI almacenada en datos de audio dentro del ordenador, como la reproducción por un dispositivo plug-in como el sintetizador Operator. En ambos casos, un entorno de reproducción ideal produciría una perfecta reproducción de la información almacenada.
- Reproducción en todas direcciones trata el envío de notas MIDI e información de controlador desde un dispositivo hardware (como un teclado MIDI) hasta el DAW y luego, en tiempo real, hacia afuera a un sintetizador hardware o dispositivo plug-in dentro del DAW. Un entorno ideal de reproducción en ambas direcciones (o playthrough) debería “sentirse“ tan preciso y receptivo como un instrumento físico como por ejemplo un piano.
35.2 Problemas de temporalización MIDI
La realidad del MIDI basado en ordenador es compleja, y trata tantas variables que los sistemas ideales descritos arriba son imposible de alcanzar. Existen dos problemas fundamentales:
- Latencia hace referencia al retardo inherente y consistente en un sistema. Esto es un problema en particular en un DAW puesto que el audio digital no puede transferirse hasta o desde un interfaz de audio en tiempo real, y debe ser sin embargo pasado por un buffer. Pero incluso los instrumentos acústicos muestran un cierto grado de latencia; en un piano, por ejemplo, hay algo de retardo entre el momento en que se pulsa una tecla y el momento en que el mecanismo del macillo activa de hacho la cuerda. Desde el punto de vista de una interpretación, los tiempos minúsculos de latencia no son generalmente un problema puesto que los intérpretes usualmente pueden adaptar la temporalización de su interpretación para compensar los retardos — siempre que los retardos sean constantes.
- Jitter hace referencia al retardo inconsistente o aleatorio en un sistema. En un DAW, esto puede ser particularmente un problema puesto que diferentes funciones dentro del sistema (e.g., MIDI, audio y el interfaz de usuario) son procesadas por separado. La información, a menudo, es necesario que se transfiera de uno de estos procesos a otro — cuando se convierten datos MIDI en la reproducción de un plug-in, por ejemplo. La temporalización MIDI libre de Jitter requiere una conversión precisa entre diferentes relojes dentro de los componentes del sistema — el interfaz MIDI, el interfaz de audio, y el mismo DAW. La precisión de esta conversión depende de una variedad de factores, incluyendo el sistema operativo y la arquitectura del controlador que se está utilizando. Jitter, mucho más que la latencia, crea la sensación de que la temoralización MIDI es “descuidada“ o “suelta.“
35.3 Las soluciones MIDI de Live
El enfoque de Ableton hacia la temporalización MIDI está basado en dos asunciones clave:
- En todos los casos, la latencia es preferible al jitter. Puesto que la latencia es consistentes y predecible, puede tratarse con mucha mayor facilidad tanto por los ordenadores como por la gente.
- Si está usando ‘playthrough’ mientras graba, querrá grabar lo que escucha — incluso si, por causa de la latencia, esto ocurre ligeramente después de lo que usted toca.
Live trata los problemas inherentes a la grabación, reproducción y ‘playthrough’ para que la temporalización MIDI llegue a ser receptiva, precisa y fiable. Para grabar eventos entrantes en las posiciones correctas en la línea temporal de un Live Set, Live necesita saber exactamente cuando se recibieron esos eventos desde el teclado MIDI. Pero Live no puede recibirlos directamente — primero deben ser procesados por los drivers del interfaz MIDI y del sistema operativo. Para resolver este problema, los drivers del interfaz le colocan a cada evento MIDI un sello temporal a medida que los van recibiendo, y los pasan a Live junto con el evento para que Live sepa exactamente cuando deberian añadirse los eventos al clip.
Durante playthrough, un DAW debe tratar constantemente con eventos que deberían escucharse lo antes posible, pero que inevitablemente ocurrieron en el pasado debido a la latencia inherente y retardos del sistema. Por lo que hay que hacer una elección: ¿deberían reproducirse los eventos en el momento en que se reciben (lo que puede ocasionar jitter si ese momento ocurre justo cuando el sistema está ocupado) o deberían retardarse (lo que añade latencia)? La elección de Ableton es la de añadir latencia, puesto que creemos que es más fácil para los usuarios el ajustar una latencia constante que un jitter aleatorio.
Cuando se activa la monitorización durante la grabación, Live añade un retardo adicional al sello temporal del evento basado en el tamaño del buffer de su hardware de audio. Esta latencia añadida hace que sea posible la grabación de eventos al clip al tiempo que usted los escucha — no al tiempo que usted los toca.
Para la reproducción de dispositivos hardware, Live también genera sellos temporales que intenta comunicar a los drivers del interfaz MIDI gestionar la salida de eventos MIDI. Sin embargo, los drivers Windows MME no pueden procesar sellos temporales y para los dispositivos que usan estos drivers, Live gestiona la salida de eventos de forma interna.
Incluso durante grandes cargas de sistema que causan caidas del audio, Live continuará recibiendo eventos MIDI entrantes. En el caso de caidas del audio, pueden haber errores de temporalización y de distorsión del audio durante ‘playthrough’, pero Live aún así debería grabar correctamente eventos MIDI en los clips. Posteriormente, cuando el sistema se haya recobrado de las caidas, la reproducción de estos eventos grabados debería ser precisa.
35.4 Variables fuera del control de Live
En general, los sellos temporales son un mecanismo extremadamente fiable para tratar la temporalización de eventos MIDI. Pero los sellos temporales sólo son aplicacbles a datos dentro del ordenador en sí. Los datos MIDI fuera del ordenador no pueden hacer uso de esta información, y por lo tanto la información temporal que proviene o que se envía a harware externo es procesada por el hardware tan pronto como llega, en vez de según un horario o programación temporal. Además, los cables MIDI son en serie, lo que significa que sólo pueden enviar un pedazo de información a la vez. En la práctica, esto significa que múltiples notas tocadas simultáneamente no se pueden transmitir simultáneamente a través de cables MIDI, sino que se deben enviar una tras otra. Dependiendo de la densidad de los eventos, esto puede ocasionar problemas de temporalización MIDI.
Otro problema que puede surgir, particularmente cuando se trabaja con sintetizadores hardware de los primeros días del MIDI, es que el tiempo de escaneo del dispositivo puede ocurrir a una frecuencia relativamente lenta. El tiempo de escaneo o ‘Scan time’ hace referencia a la frecuencia con la que el sintetizador comprueba su propio teclado para entrada de datos. Si esta frecuencia es demasiado lenta, se puede introducir jitter.
Por supuesto, cualquiera de estos problemas de temporalización presentes en el nivel del hardware pueden multiplicarse a medida que se añaden dispositivos adicionales a la cadena.
Incluso dentro del ordenador, la precisión de los sellos temporales puede variar ampliamente, dependiendo de la calidad del harware MIDI, errores en la programación del driver, etc. Live debe asumir que todos los sellos temporales incluidos en eventos MIDI entrantes son precisos, y que los eventos salientes serán tratados de forma correcta por cualquier hardware externo. Pero es imposible que Live pueda verificar ambas situaciones.
Pruebas y resultados
Nuestro procedimiento para probar la temporalización de eventos entrantes MIDI se representa en el siguiente diagrama:
La salida de una fuente MIDI (un teclado u otro DAW reproduciendo largas secuencias de eventos MIDI aleatorios) alimenta un hardware MIDI Splitter con latencia cero. Una porción de la salida del ‘splitter’ se graba en un nuevo clip MIDI en Live. La otra porción se dirige a un convertidor MIDI-a-Audio. Este dispositivo convierte la señal eléctrica de la fuente MIDI en un simple ruido de audio. Puesto que el dispositivo no interpreta los datos MIDI, realiza esta conversión con latencia cero. Entonces la salida del convertidor se graba en un nuevo clip de audio en Live. En un sistema ideal, cada evento en el clip MIDI ocurriría de forma simultánea con el correspondiente evento del clip de audio. De esta forma la diferencia en tiempo entre los eventos MIDI y de audio en los dos clips puede medirse para determinar la precisión de Live.
Para poder valorar el rendimiento MIDI bajo una variedad de condiciones, realizamos los tests con tres interfaces combinados audio/MIDI en diferentes niveles de precios, todos de fabricantes muy conocidos. Nos referiremos a estos interfaces como A, B y C. Todos los tests se realizaron con una carga de CPU de aproximadamente 50% tanto en máquinas con macOS como con Windows, a 44.1 y 96 kHz y con tres tamaños diferentes de búfer de audio, hasta un total de 36 diferentes configuraciones de test.
Windows:
- Interfaz A: El máximo jitter fue de +/- 4 ms, con la mayor parte del jitter ocurriendo en +/- 1 ms.
- Interfaz B: Para la mayoría de los tests, el máximo jitter fue de +/- 4 ó 5 ms. A 44.1 kHz y un búfer de 1152 muestras, hubi una distribución bastante uniforme entre los +/- 2 y los 11 ms. En todos los casos, la mayor parte del jitter ocurrió en +/- 1 ms.
- Interfaz C: Para la mayoría de los tests, el máximo jitter fue de +/- 5 ms. A 96 kHz y un búfer de 512 muestras, hubo un pequeño número de eventos con un jitter de entre +/- 6 y 8 ms. A 44.1 kHz y un búfer de 1024 muestras, hubo un pequeño número de eventos con un jitter de hasta +/- 10 ms. En todos los casos, la mayor parte del jitter ocurrió en +/- 1 ms.
macOS:
- Interfaz A: A 44.1 kHz y un búfer de 1152 muestras, el jitter se distribuyó bastante uniformemente entre los +/- 4 y los 11 ms. Para todos los demás tests, el máximo jitter fue de +/- 5 ms. En todos los tests, la mayor parte del jitter ocurrió en los +/- 1 ms.
- Interfaz B: Para la mayoría de los tests, el máximo jitter fue de +/- 3 ó 4 ms. A 44.1 kHz y un búfer de 1152 muestras, hubi una distribución bastante uniforme entre los +/- 2 y los 11 ms. En todos los casos, la mayor parte del jitter ocurrió en +/- 1 ms.
- Interfaz C: En todos los tests, el máximo jitter fue de +/- 1 ms, con la mayor parte de los eventos no produciendo ningún jitter.
También llevamos a cabo un proceso similar para probar la temporalización de eventos MIDI salientes, tal y como se representa en el siguiente diagrama:
En todos los casos, los tests de salida mostraron resultados comparables a los tests de entrada.
35.5 Consejos para conseguir un rendimiento MIDI óptimo
Para ayudar a los usuarios a conseguir un rendimiento MIDI óptimo con Live, hemos proporcionado una lista de prácticas recomendadas y de configuraciones de programa.
- Use los tamaños de búfer más pequeños disponibles en su hardware de audio, manteniendo así la latencia al mínimo. Los controles del búfer de audio se encuentran en la pestaña Audio en las Preferencias de Live, y varían dependiendo del tipo del hardware que esté usando. Para más información, consulte la Lección “Configuración de la E/S de Audio.“
- Use un interfaz MIDI de alta calidad con los drivers más actualizados para asegurar que los sellos temporales MIDI son generados y procesados con la mayor precisión posible.
- No active la monitorización de pista si está grabando MIDI mientras escucha directamente de un dispositivo hardware como un sintetizador externo (en contraposición a escuchar el audio del dispositivo a través de Live vía el dispositivo External Instrument). Del mismo modo, desactive la monitorización de pista cuando grabe datos MIDI que son generados por otro dispositivo MIDI (como una caja de ritmos). Cuando se activa la monitorización, Live añade latencia para compensar el jitter generado en la reproducción. Por lo tanto es importante el activar sólo la monitorización cuando de verdad se está tocando a través del interfaz MIDI.
35.6 Resumen y conclusiones
Ableton redactó este informe para ayudar a los usuarios a comprender una variedad de asuntos relacionados entre sí:
- los problemas inherentes en los sistemas MIDI basados en ordenador;
- nuestro enfoque para resolver estos problemas en Live;
- variables adicionales con las que no podemos contar.
Como ya mencionamos anteriormente, la mejor manera de resolver los problemas relacionados con la temporalización MIDI en su estudio es usar los componentes hardware de la mayor calidad disponibles. Para los usuarios de tales componentes, todos los sistemas MIDI software deberían rendir sin problemas apreciables. Para los usuarios con un hardware por debajo de lo óptimo, no obstante, Live todavía ofrece un grado adicional de precisión al minimizar el jitter, pero a expensas de una pequeña cantidad de latencia adicional.
Le animamos a que consulte este documento si tiene alguna duda sobre el enfoque de Live respecto a la temporización MIDI, pero también le animamos a que se ponga en contacto con nosotros (consulte https://www.ableton.com/help/) si tiene preguntas o dudas adicionales que no hayamos tratado.