La era de los sintes plugin y su automatización y autocorrección
máximas hace que a veces olvidemos cuestiones que vuelven a hacerse
presentes cuando introducimos hardware. Es el caso de la consulta que me
llegó recientemente sobre la aparición de una latencia/jitter al
reproducir un patrón simple de bombo a negras desde un DAW hacia un
sampler externo hardware.
Hoy contamos de dónde surgen algunos problemas de ‘timing’ con
secuencias MIDI y cómo intentar paliarlos para obtener bases más
sólidas. Si tienes prisa, el recetario de consejos está en el último
apartado.
El problema
Hacía tiempo tenía en la cabeza hablar sobre esta cuestión, y la
espoleta ha sido el mensaje de un hispasónico, del que os reproduzco
parte:
"
Tengo que usar un akai s1000HD con el que
sonará una pista de bombo a negras con un sonido grabado de la 909. En
Cubase SX3 lleno 2 compases cada uno con 4 bombos (8 en total) y hago bucle para escuchar el resultado. Lo que ocurre es que el primer bombo de cada 4, o sea el 1 y el 5, parece como que se desacompasa del ritmo en unos milisegundos y no es agradable, y enfatizan un poquitín en su volumen. Es un patrón constante. Se nota que no es perfecto y el oído lo percibe en la mezcla. Tengo que hacer la grabación de aquí a poco.
Esto lo he notado con el sample del bombo que es
el que mejor marca el ritmo, claro. Pero pasa cuando disparo otro o
varios samples independientes junto al bombo. Si sólo escribo el bombo
en el cubase parece q el ritmo ya es constante. Como que sólo trabajando
con un sample el ritmo es normal."
Conocer con cierto detalle el origen del problema, desmitificar
algunas falsas creencias, y ofrecer vías de solución (a las que podréis
añadir las de vuestra propia cosecha) es el objetivo de este tutorial.
Es información que os ayudará a buscar las mejores soluciones cuando os
aparezca, como en el ejemplo mencionado, algún fantasma.
Verdades: MIDI y sus 31250 baudios
Todos los mensajes MIDI se componen de bytes en mayor o menor
cantidad según el tipo de mensaje. Para transmitir estos bytes se emplea
un formato seriado: sus 8 bits se envían uno tras otro, precedidos de
un bit de arranque, y sucedidos por un bit de stop (sin paridad) a una
velocidad de 31250 baudios. Da lugar a que cada byte dure aproximadamente 320 microsegundos.
El formato de los mensajes MIDI más habituales consta de 3 bytes
sucesivos. Hay excepciones a esto como los mensajes de tiempo real y de
sistema exclusivo, pero tanto los mensajes de nota, como los de pitch
bend y los de cambio de controlador son de 3 bytes, mientras los de
cambio de programa o aftertouch de canal son de dos.
En definitiva, como
los mensajes más frecuentes son de 3 bytes, implican aprox.
un mensaje por milisegundo.
Es un importante dato para entender los problemas de latencia/jitter en
determinados cuellos de botella que podemos formar al crear tinglados
MIDI. Cuando enviamos varias notas pretendidamente simultáneas en
realidad están abiertas en sus ataques, tanto más cuantas más notas
haya. Quizá no se note con un sonido de tipo colchón suave, pero sí con
elementos de percusión, por ejemplo ese bombo a negras de nuestro
compañero.
Es además un retraso que no es fijo, dependerá de la actividad que exista en el cable MIDI, y por eso,
más que llamarlo latencia, lo trataría como una inestabilidad o jitter.
Una inestabilidad que para colmo varía a medida que la canción va
tomando cuerpo y se llena de notas y otros mensajes. El patrón perfecto
de bombo con el que comenzamos comienza a desdibujarse cuando vamos
sumando pistas en el secuenciador y aunque cueste oírlo, se siente esa
pérdida de definición y cuadratura de los elementos que más marcadamente
señalan obsesivamente el pulso.
La norma tiene previsto un mecanismo (running status) para conseguir
pequeña mejora pero no nos aleja suficientemente del riesgo planteado.
Con lo cual, la conclusión de este apartado es que
cuanto más llenemos de actividad un cable MIDI más nos arriesgamos a inestabilidades de tiempo.
Y por tanto la vía de defensa para reducir el riesgo es igualmente
clara: intentar reducir la actividad, la densidad de mensajes, que tiene
que soportar un cable MIDI. Más adelante concretamos el recetario, pero
vamos a aprovechar para eliminar algún que otro un mito.
Mentiras: ¿Quién teme al MIDI Thru?
Además del IN y el OUT, la norma MIDI prevé la existencia de un
conector MIDI THRU. Es opcional y simplemente constituye una copia de
los datos recibidos en la entrada "MIDI IN" que permite encadenar varios
instrumentos formando una sucesión (daisy-chain) para circular los
mensajes por todos ellos.
No se recomiendan oficialmente (así lo dice la norma) cadenas de más
de tres instrumentos. Inadecuadamente, algunos han considerado que ese
encadenamiento de varios MIDI Thru no se recomienda porque añade tiempo
en cada paso y retrasa la producción de las notas en el último equipo de
forma que pueda ser perceptible.
No es cierto. La conexión THRU es un eco de lo que llega por IN, y es
cierto que es un eco ‘activo’, no es sólo cableado. La señal se
regenera eléctricamente antes de salir por la conexión THRU. Pero esa
regeneración opera a un nivel muy elemental de electrónica que
típicamente implica un par de microsegundos. Es por tanto totalmente
despreciable, respecto al milisegundo que ya gasta de por sí enviar un
mensaje de nota vía MIDI.
Podríamos enganchar cadenas de decenas de instrumentos sin que esta pueda ser señalada como la causa de
ningún retardo apreciable, porque lo que domina es el tiempo que consume en sí la transmisión de un mensaje MIDI elemental.
La topología ‘daisy-chain’ es una conexión muy sencilla y útil. La
razón real de que la norma no aconseje enganchar muchos equipos en esta
forma es que puede mover un poco los flancos de los bits individuales de
sitio, pero salvo en casos extremos, con cables larguísimos y de pésima
calidad, no llegará a tal deformación que pueda provocar errores. Estad
tranquilos: podéis enganchar mucho más allá de esos 3 equipos en una
sucesión de MIDI THRU sin ningún tipo de degradación ni retardo. Pero
este mito ha ayudado a vender MIDI Thru Boxes.
MIDI THRU boxes no son la solución
Para evitar cadenas largas, los fabricantes idearon los MIDI THRU
Box, dotados de un MIDI IN que se replica hacia varios MIDI THRU a la
vez. Ciertamente si la conexión MIDI THRU no es el origen del problema
de los retardos, tampoco un MIDI THRU Box es ninguna solución. Pero lo
que quiero recalcar en este apartado es cómo a veces un
mal uso de un MIDI THRU Box puede agravar las cosas frente a otras posibilidades que nos resultan hoy incluso más baratas.
El problema, común al encadenamiento sucesivo (daysi-chain) y al tipo
estrella (con MIDI THRU Box), es que cuando tenemos muchos equipos
colgando de una única conexión, en el ejemplo la salida única desde el
ordenador, es más fácil llegar a congestionar ese único cable MIDI.
Pensadlo un momento. Arranque del tiempo 1 de un compás. Suenan bombo,
hat y otros 3 o 4 elementos de percusión en el canal 10, un bajo en el
canal 2, un pad de 6 voces en el 4, un acorde de piano con 5 notas en el
6, … Combinad el resultado y tenéis más de 15 notas peleando por salir
hacia el único Out del DAW.
Pero tienen que salir ordenaditas, una detrás de otra: no olvidéis
que es transmisión en serie. A razón de un milisegundo cada nota, ese
‘tutti’ sincronizado se ha convertido en una dispersión de ataques
distribuida a lo largo de más de 15 milisegundos. Aquello que me
contaban de que “
se nota que no es perfecto y el oído lo percibe en la mezcla”.
Ese problema no se reduce por el uso de MIDI THRU Box, incluso se
agrava, porque tenemos tendencia a enganchar todo al THRU BOX, en vez de
pensar en otras formas de conexión. Es tan bonito tener todos los
cables concentrados ahí, y de paso justificar el desembolso de la compra
del MIDI THRU Box. Pero haciéndolo estamos entrando en arenas
movedizas: las notas se nos podrán mover y desalinear respecto a la
pretendida rejilla de tiempo.
Entonces ¿MIDI Patchbays?
Ya puestos a gastar, en vez de un MIDI THRU Box, mejor un MIDI Patch
bay, con varios IN y varios OUT, y que permita establecer caminos,
rutas, filtrado de mensajes, etc. Si es más caro (mucho más) será mejor,
¿no?. De nuevo
podremos ahorrar algo de dinero y algún disgusto, sin matar moscas a cañonazos. Hay ocasiones que requieren un MIDI PatchBay, pero otras muchas a día de hoy ya no.
Un MIDI Patchbay es un elemento que permite configurar las conexiones
entre entradas y salidas que se desee. Hay algunos Patch Bays MIDI muy
simples que sólo permiten decidir qué entrada queremos llevar a cada
salida (como el Kawai MAV-8). Algunos son Patchbays a nivel físico, que
conectan unas entradas con unas salidas mediante electrónica, sin
analizar para nada los mensajes. Pero muchos son inteligentes y permiten
analizar los mensajes y tomar decisiones a la hora de rutar. Por
ejemplo pueden permitir eliminar algunos tipos de mensajes hacia ciertas
salidas, enviar ciertos canales por una salida o no, o combinar señales
de dos entradas para entregarlas a una salida (MIDI Merge), y cosas de
ese tipo. Por ejemplo el Roland A-800 o el Akai ME-30-P.
Algunos más avanzados incluso permiten remapear controladores y
mensajes de cambios de programa (crear una tabla para cada salida en la
que se especifican cosas como que si por la entrada llega el cambio al
programa 8 en cierta salida se sustituya por cambio al programa 37).
Los patchbays inteligentes son útiles sin duda, pero como
deben analizar mensajes completos (la mayoría multi-byte) necesitan
almacenar y procesar los bytes que van llegando. Sólo cuando han llegado
los 3 bytes de una nota puede analizarse esta y tomar la decisión de a
qué salidas llevarla o cómo transformarla. Eso
implica una latencia algo mayor.
Generalmente no estaremos nunca enganchando toda una sucesión de
elementos inteligentes, sino que a lo sumo estaremos usando un único
patchbay hacia cada equipo final. Pero como veis, salvo que sea
imprescindible usar su inteligencia, nos añadirá al menos un milisegundo
más de retraso. Y realmente con la cantidad de inteligencia que tienen
ya nuestros equipos pocas veces hace falta suplementarla con patchbays
inteligentes. Mejor programa las capas en el sinte y no las crees por
medio de canales: evita el uso de un patchbay para duplicar notas hacia
otro canal. De igual manera, si necesitáis filtrar determinados mensajes
o controladores, mirad primero si podéis hacerlo en el sinte, y no
acudáis sólo por esa causa a intercalar un patchbay/procesador MIDI
inteligente. Usad la inteligencia de vuestros equipos sin renunciar a la
vuestra propia.
Con elementos que sean críticos en cuanto a su ‘timing’, quizá debamos pensar en
esquivar en lo posible el paso por un patchbay,
especialmente si es uno inteligente que realiza procesamiento de los
mensajes. El instrumento que hará el papel de bombo, mejor conectado
directamente, sin intermediarios.
No significa que debamos desterrar el uso de MIDI Patchbays,
pero yo los reservo para situaciones en las que es necesario con
frecuencia cambiar conexionado y no queremos estar liados con toqueteos
de cables. O también para situaciones en las que requerimos funciones
MIDI Merge. Asumiendo el que eso nos dará al menos 1 milisegundo de
retraso adicional, que al fin y al cabo no es tanto. Pero a la vez
vigilando siempre que las combinaciones que haga no sobrecarguen los
puertos MIDI con acumulación de muchos mensajes.
La regla: divide y vencerás
Y es que esa debe ser nuestra regla de oro:
llegar a distribuir en puertos MIDI diferentes
(no canales, sino puertos, conexiones) todo lo que podamos. Y la
segunda sería: mejor cuanto más cerca, no en cuanto a la longitud de los
cables, sino a evitar el paso por elementos intermediarios inteligentes
como son MIDI Patchbays, MIDI Mergers, etc.
Para los propósitos que estamos tratando, es infinitamente mejor
tener un puerto MIDI para cada sinte o equipo (si hace falta comprando
otro interfaz MIDI para el ordenador) que combinar varios equipos MIDI
separados por canales y usando un único interfaz/cable (más la consabida
cadena MIDI Thru o un ThruBox). Piensa si la compra que te interesa,
más que la de un THRU Box, puede ser la de interfaces MIDI para poder
ligar cada equipo al DAW con cableado dedicado. No son caros a día de
hoy y son la solución ideal porque te ofrecen la independencia de
conexión física que es la única que puede reducir los cuellos de
botella.
Sólo de esa forma evitaremos en la medida de lo posible la congestión del puerto MIDI por exceso de tráfico de mensajes.
Entendiendo USB-MIDI
Hablar de comprar interfaces MIDI a día de hoy nos lleva a pensar en
USB-MIDI, a propósito del cual conviene conocer varias cuestiones.
La primera, aunque sorprende a muchos, es que la velocidad a la que opera
la transmisión de mensajes MIDI en estos sistemas es la misma que en MIDI tradicional.
Es cierto que USB funciona físicamente a velocidades de varios mega
bits por segundo (decenas e incluso centenas), pero los mensajes en USB
MIDI no aprovechan esa mayor capacidad.
Excepciones hay. Por ejemplo Elektron en algunas de sus máquinas
permite configurar un modo no estándar que aplica USB MIDI a velocidad
x10. Es útil para que sus máquinas dialoguen más velozmente con el
ordenador y se agradece por ejemplo al realizar volcados de muestras
hacia Rytm, dado que usa el MIDI SDS (Sample Dump Standar) que es todo
un prodigio de lentitud. Pero, salvo estos casos atípicos, los
interfaces USB MIDI rinden en cuanto a la transmisión de los mensajes
MIDI a la misma velocidad útil que los tradicionales DIN5P.
Otra cuestión importante en relación con USB-MIDI es el hecho de que pese a que sea un solo cable,
permite reunir varios puertos. La norma USB-MIDI permite que
por un único cable USB se gestionen 8 puertos MIDI totalmente independientes,
cada uno con sus 16 canales In y sus 16 canales Out. Un interfaz
USB-MIDI multipuerto puede tratarlos con autonomía, sin añadir
congestiones innecesarias. Pero, eso sí, recordad que son los puertos
los que son independientes. Si usáis varios canales de un mismo puerto,
sí entran en el tipo de conflicto que estamos tratando, porque la
velocidad final de cada puerto es en realidad la de los tradicionales
DIN5P.
Hay también algunos sistemas USB-MIDI que aplican el envío de
mensajes desde el DAW ‘anticipado’. Los mensajes llegan al interfaz
junto con una marca de tiempo que dice cuándo hay que hacerlos sonar (un
‘time-stamp’), pero soy poco favorable a esta cuestión: al final si los
mensajes tienen que llegar a un sistema externo (ya sea vía USB-MIDI o
MIDI DIN5P) la velocidad es la que es, y tendremos que seguir siendo
nosotros quienes diseñemos una planificación adecuada de las conexiones
para evitar las sobrecargas de mensajes.
Quiero más y más (o quizá ya lo tienes)
Demos otro paso para
seguir ahorrando un poco.
La solución muchas de las veces no pasa por comprar otro interfaz MIDI
para cada nuevo equipo. En realidad, a día de hoy muchos de los sistemas
que usamos tienen conexión USB-MIDI y pueden unirse directamente con
un enlace físico propio (su propia conexión USB) a un DAW. Con ello
garantizamos de inmediato que cada uno de ellos reciba sus notas y sólo
sus notas (así como el resto de mensajes). No hay necesidad de combinar
los mensajes para todos los equipos y que se peleen por el uso de un
único cable. No abuses de cadenas MIDI Thru cuando puedes ligar cada
instrumento al ordenador con su propio cable USB. Si queda más feo el
lío de cables, cierra los ojos y disfruta con las orejas.
Pero además muchos de esos
equipos dotados de USB-MIDI tienen a la vez el par In/Out MIDI en
el clásico DIN 5 puntas y pueden configurarse para usar
independientemente ese par. Me refiero a que muchísimos equipos que
cuentan con una conexión USB-MIDI montan a través de ella varios pares
In/Out (aprovechando eso de que pueden albergar hasta 8 puertos lógicos
que usan un único cable USB físico). Uno quizá dirigido hacia las tripas
del propio equipo (su teclado y su generador de sonido en el caso de un
sinte) y otro quizá para esos clásicos In/Out DIN5P. USB-MIDI permite
esa magia de que un solo cable actúe en realidad como vía para montar
varios puertos independientes.
Sucede en muchísimos controladores, teclados y equipos de todo tipo.
Sólo citaré dos casos. Los Novation Remote a través de USB hacen
aparecer varios puertos MIDI en el ordenador. Uno se refiere a sus
propios controles (pulsadores, faders, encoders, etc.) y los mensajes
que generan, y otro se refiere a las conexiones MIDI en DIN5P. Es decir,
cuando conectas un Remote a un ordenador, además de servirte sus
propias funciones como controlador en un puerto, puede aportar esas
conexiones In/Out en otro puerto: sin tráfico de mensajes del propio
Remote, y actuando como mero puente para conectar un dispositivo MIDI
externo al ordenador. Hay muchísimos (más de los que sospecháis) equipos
que permiten ese tipo de uso, en el que el sistema además de sus
propias funciones, nos actúa como interfaz MIDI para que conectemos
alguna otra cosa a su través, pero manteniendo la independencia de
puertos.
El otro caso que quería comentaros es el de uno de los teclados que
tengo (el MOXF de Yamaha). Conectado por USB-MIDI aparece en el
ordenador como nada menos que 5 puertos MIDI. Uno es el referido a su
uso como teclado/sintetizador, otro es el que se refiere al uso de sus
botones para controlar DAWs (buena idea que vaya ese control en otro
puerto para simplificar las cosas), un tercero es tal cual una réplica
de las conexiones In/Out que lleva en DIN de 5 puntas (y permite
enganchar un sistema MIDI externo que se hace visible en el ordenador
mediante ese puerto dedicado), los otros dos son ya cosas muy
específicas del MOXF: los usa Yamaha para llevar por vía independiente
toda la información que se intercambia con el software de edición de
sonidos y parámetros del MXOF (magnífico: aunque usemos el editor no
compite con las notas que el DAW envía al sinte).
Seguramente algún interfaz audio USB que ya tenéis cuenta con también
con conectores MIDI In/Out que no usáis y que admiten este juego. En
definitiva, con toda esa variedad de puertos que posiblemente ya tenéis,
un rato de reflexión, manuales, y esbozos en papel puede haceros llegar
a una
configuración de interconexión de vuestros sistemas
que aproveche al máximo la inversión que ya tenéis sin tener que
comprar más interfaces, pero que a la vez os permita hacer que cada
sinte y equipo MIDI tenga su propia conexión (su propio puerto) dedicado
con el ordenador / DAW.
El recetario de consejos
Hay que tener claro el verdadero problema de la mal llamada latencia
en MIDI, que más precisamente sería un jitter: el que lleguemos a
acumular tantos mensajes que se note el cuello de botella mientras
esperan a ser despachados. Tenemos que pensar en la congestión de cada
puerto (es un problema que sucede en relación con cada puerto de forma
autónoma) y buscar formas de reducirla.
- Lo principal: intenta si puedes usar un interfaz/puerto MIDI dedicado para cada equipo,
sin ocupar los canales MIDI sobrantes para otras cosas. De esa forma lo
que consigues es que ese por ese cable/puerto MIDI sólo vayan las notas
que realmente ha de ejecutar un único sistema. Lo que tengan que tocar
otros instrumentos, mejor por otros interfaces, para descongestionar
cada conexión. En el caso de sistemas centrados en un ordenador es
sencillo. Bastaría tener interfaces MIDI multipuerto, o bien varios
interfaces MIDI. Sin olvidar lo mencionado: muchos sistemas USB-MIDI nos
regalan la posibilidad de usar independientemente sus conexiones MIDI
DIN5P y actúan como interfaces MIDI adicionales.
- Desde luego intenta evitar la abundancia innecesaria de mensajes como
pitchbend, controladores, etc. que estén reclamando ocupar el bus MIDI.
Opta por capas en el sinte y no por duplicar notas en varios canales,
etc. Especialmente esos momentos críticos como inicios de tiempos
fuertes (no sólo ese instante, también un poco antes) y especialmente en
equipos de percusión o que generen sonidos con transitorios muy
marcados.
- Los propios secuenciadores y DAWs llevan a menudo rutinas para ‘adelgazar’ la cantidad de mensajes de controlador y pitch bend. Conócelas y aplícalas cuando encuentres problemas, como mal menor.
- Intenta estudiar en el manual cómo trata tu DAW/secuenciador las diferentes pistas en cuanto a prioridad.
P.ej. algunas DAW dan prioridad a los mensajes de nota que están en las
primeras pistas (altas en pantalla) respecto a las últimas (las más
bajas). Así que cosas como bombo, etc. deberían ir a esas pistas
privilegiadas.
- Retrasa un poco las notas o pistas de los instrumentos MIDI menos críticos.
Por ejemplo un pad con ataque lento no sufre por que lo desplaces un
poco, y así evitas que sus notas compitan en ese momento estrella de los
arranques de tiempo, para dejar así que las notas del bombo y demás
vayan solas por la autopista y lleguen más rápido. Muchos secuenciadores
permiten configurar un ‘retardo’ MIDI en cada pista. Sácale partido,
retrasando a propósito las pistas de sonidos suaves.
- Otra cuestión también interesante, aunque no siempre factible es pensar si podemos usar el secuenciador interno de alguno de los sintetizadores, especialmente en el caso de cajas de ritmo.
En lugar de volcar al DAW o secuenciador principal la información que
corresponde a las partes que han de ejecutar esos sintes / cajas de
ritmo, limitarnos a sincronizarlos con el DAW / secuenciador principal y
realizar en ellos mismos la programación. Pero las más de las veces
esto puede suponer un impacto demasiado grave a la hora de definir la
forma de trabajo (las posibilidades de esos secuenciadores hardware a
menudo palidecen frente a los sistemas software, y pocos querrán tener
un tema desmembrado en tres o cuatro máquinas diferentes en vez de
concentrado en un único entorno DAW). No pocas veces he usado las bases
programadas en una caja de ritmo y he disparado sonidos adicionales,
rellenos y adornos desde una pista en un secuenciador.
- Evita el paso por patchbays, mergers, etc. cuando no sea estrictamente necesario. Cuanto más directa sea la conexión menos tiempo se gastará.
- Una posibilidad si las cosas pintan mal, mal de verdad,
pasaría por grabar una a una las pistas MIDI en audio, evitando que las
demás pistas que compitan por el uso del puerto MIDI estén metiendo sus
mensajes (haciendo mute de ellas para que no salgan vía MIDI), como
forma de conseguir la mejor toma posible de cada pista que lo necesite.
- Aunque es una contribución mínima de un tercio de milisegundo aprox., los mensajes MIDI real-time (MIDI
Clock, Play, Stop, etc.) se pueden colar en medio de otros, tienen
permitido en la norma insertarse incluso a mitad de otros mensajes. Si
no necesitas enviar esos mensajes hacia un módulo determinado, evítalo
en la configuración de sincronización en tu DAW: puedes impedir que se
envíen esos mensajes por el interfaz MIDI que alcanza a esa fuente de
sonido.
Y por supuesto, todo lo anterior debe considerarse bajo la
referencia de que hablamos de alcanzar vía MIDI a sistemas hardware. Si
lo que tenemos son sintes soft (plugins, etc) trabajando internamente en
un entorno DAW, estas cuestiones desaparecen, porque los mensajes no
viajan vía MIDI sino que se entregan al instante y además los sistemas
de automáticos de compensación de latencia intervienen también para
ayudar durante la reproducción anulando incluso el efecto del tiempo de
cálculo del propio plugin.