Sintetizadores

SysEx (II): de vuelta al control

08/03/2013 por Pablo Fernández-Cid Actualizado el 11/03/2013

En esta segunda parte de los tutoriales sobre SysEx estudiamos el control a través de mensajes SysEx con ejemplos basados en sintes de los 80s (MKS-50 y TX81Z), sencillos en su arquitectura y que muestran el ‘estilo’ de los SysEx en los primeros años de MIDI. Aunque esos modelos no te interesen por sí mismos, se trata de aprender SysEx y será más fácil con ellos, así que ¡a hincar los codos!.

Lo aprendido en esta entrega nos servirá como base para tratar otros equipos más complejos y recientes en la tercera parte, pero nos capacitará ya para ir empezando a programar nuestros propios controles. Dejaremos para otra entrega (por su mayor dificultad) abordar un sistema multitímbrico, que exige entender un mapa de memoria algo más complejo, así como la cuestión de los ‘checksum’ (habituales en varios fabricantes) y otros detalles que posponemos para entonces a fin de no complicar en exceso esta entrega, ya densa de por sí.

Fanáticos del control

[Índice]

El poder de los sintes y efectos no reside exclusivamente en el propio motor, sus técnicas y algoritmos, sino muy especialmente en el uso que hagamos de ellos, tanto al diseñar programaciones (‘patches’, ‘multis’, etc.) como sobre todo al ‘moverlas’ en vivo o al automatizarlas al grabar. Igual que una forma de onda en un sinte no es nada sin el movimiento que le dan las envolventes y LFOs, nosotros no queremos vernos limitados a la interpretación de notas, sino que buscamos moldear el sonido, el timbre. Mimarlo en cada nota, en cada momento, hacerlo evolucionar y plegarse, extraer mayor expresividad y matices.

En sus orígenes, los equipos de síntesis facilitaban ese tipo de control detallado: un potenciómetro para cada parámetro, paneles enormes, y los teclistas echando de menos los ocho brazos de los pulpos para poder mover simultáneamente todo aquello.

Con los efectos y sintes para ordenador (como los ‘plug-ins’) este grado de control es factible. Las funciones de automatización están presentes para cualquier parámetro que podamos mover en pantalla, y si deseamos usar botones, pots y faders físicos (en lugar de tanto ratón) podemos aplicar las funciones de aprendizaje (‘learn’) para mover los parámetros de la pantalla desde nuestros controles físicos preferidos. Pero no todo es ‘plug-ins’ en este mundo.

Hay equipos hardware cuyo sonido nos gusta (aunque sean espartanos en sus controles disponibles), y hay también quienes prefieren evitar la presencia de ordenadores en un directo. Para estas y otras situaciones, SysEx permite el control en tiempo real (o su automatización) sobre cualquier parámetro de un equipo, aunque carezca de controles físicos propios. Configurando controles que envíen SysEx podremos gobernar en vivo nuestros equipos, y podremos también registrar y editar los ajustes y variaciones de parámetros en un secuenciador MIDI (llevando así esas facilidades de los ‘plug-ins’ hacia el mundo hardware).

Si os gusta una unidad de delay o una reverb hardware y tiene MIDI ¿por qué no gobernarla y automatizarla para usarla en una mezcla con toda la versatilidad que asociamos normalmente a los ‘plugs’?

¿Es realmente el panorama tan desolador (desde el punto de vista de la capacidad de control flexible) como puede sugerir esta figura (un sinte MKS50 Roland)?

Afortunadamente no: tenemos hoy infinidad de superficies de control que podemos programar a nuestro. Pensad por ejemplo en un NovationRemote, un Behringer BCR-2000, un teclado controlador tipo Roland A800Pro, un iPad con un software como TB MIDI Stuff,… Esos son algunos de los sistemas que uso personalmente (podéis pensar en otros). Y son todos ellos riquísimos en su capacidad de personalización puesto que permiten configurar mensajes SysEx. Veremos hoy alguno de ellos aplicados primero a controlar un MKS-50 y comenzaremos así a andar el proceso que nos permite entender la especificación SysEx de un sinte y consecuentemente poder programar los controladores a nuestro antojo.

Nuestro primer ejemplo: el MKS-50

[Índice]

El Roland MKS-50, de mitad de la década de 1980, ofrece en una unidad de rack, y sin apenas controles externos, un sintetizador polifónico a seis voces. Aprovecha la capacidad de MIDI para permitir una edición y control detallados, usando mensajes de SysEx (como hacen también muchísimos, por no decir todos, los de la época). Se trata del clásico sinte sustractivo con oscilador (DCO), filtro paso alto (HPF) y paso bajo (LPF), amplificador controlable (VCA), una envolvente (ENV), y un oscilador de bajas frecuencias (LFO).

Cualquier sinte de hoy tiene una arquitectura bastante más compleja, pero esta simplicidad será muy de agradecer para que podamos concentrarnos en aprender el manejo de SysEx sin navegar por páginas y páginas. Un sonido (o ‘Tone’) del MKS-50 tiene sólo 36 parámetros, y se ve acompañado de una decena más que forman un ‘Patch’. Gracias a ello la especificación MIDI completa del MKS50 se detalla en sólo 5 hojas del manual (mientras que para un SonicCell cualquier sinte General MIDI son decenas).

Mapa de memoria en un sinte

[Índice]

Esencialmente para poder entender cómo está organizado internamente un sinte (a los efectos de programar controles mediante SysEx) necesitamos conocer:

- Los parámetros editables que configuran un sonido: el detalle de cómo está representado cada sonido, parámetro a parámetro, dentro de la memoria del sinte. Será una lista de los parámetros que definen un timbre, sus posibles valores y significado de los mismos, etc. El MKS50 nos permitirá ilustrar este aspecto.

- El mapa de memoria del sintetizador: dónde están guardados los diferentes ajustes que corresponden a cada memoria de un sonido. Desde hace ya muchos años cualquier sinte cuenta con varios programas o sonidos, normalmente organizados en bancos, etc. Es necesario conocer esa organización, que en algunos casos (no tanto en el MKS50) llega a ser compleja (especialmente con sintes multitímbricos y que además cuenten con diversas unidades de efecto, etc.). Esto lo veremos mejor en los ejemplos con sintes más avanzados de la próxima entrega.

Todo ello viene descrito en la parte del manual en la que se describe la especificación MIDI detallada (o bien en un manual específico sobre SysEx.

El caso del MKS50 es particularmente sencillo. Los ajustes de los 36 parámetros del sintetizador definen un ‘Tone’ o sonido (de los que hay 128). Cuenta además con memoria interna para alojar 128 ‘Patches’, que son una referencia a un ‘Tone’ más unos pocos parámetros de ejecución (ajustes de volumen, afinación, portamento, rango de notas, etc.). Son los ‘Patches’ lo que el usuario reclama mediante mensajes ‘program change’ (aunque al hacerlo implica también invocar un determinado ‘Tone’ que es llamado desde el ‘Patch’). Estos detalles son específicos (‘exclusivos’) del MKS50, pero conceptos parecidos aparecen en otros sintes de diferentes marcas.
Adicionalmente, el MKS50 cuenta con una función de ‘Chord’ que permite hacer que la pulsación de una sola nota haga sonar varias formando un acorde de hasta 6 notas que el usuario puede especificar.

Todas esas cuestiones (tones, patches, chords) aparecen reflejadas en la documentación del MKS50 y se pueden variar a través de mensajes de tipo exclusivo. De igual forma, todos y cada uno de los elementos de un sintetizador, de una unidad de efecto o de cualquier equipo, acostumbran a estar alcanzables con mensajes SysEx.

Revisamos la documentación SysEx del MKS50 en este vídeo (así nos acostumbramos al aspecto que suele presentar este tipo de documentación):

‘Bulk’ total / volcado de un sonido / ajuste de un parámetro

[Índice]

En la documentación completa encontramos varios tipos de mensajes. Ya veíamos en el vídeo (y destaco y comento ahora) la presencia de mensajes Bulk / All Parameters / Individual Parameter. Aunque con otros nombres, esos mismos conceptos existen en otros equipos.

Los mensajes Bulk realizan un volcado completo de toda la memoria de Patches/Tones hacia un equipo exterior. Por tanto transfieren el lote completo de 128 Patches/Tones, y tienen utilidad para guardar e intercambiar bancos de sonidos con los 128 timbres en una única operación. La transferencia se realiza en este caso con la memoria de sonidos del sintetizador, con el almacén en el que están conservadas las descripciones de los 128 sonidos en forma no volátil (no desaparecen al apagar el equipo).

Los otros dos mensajes sin embargo actúan en relación con el Patch/Tone ‘en uso’. Cada vez que desde el panel frontal del MKS50 o con un mensaje de cambio de programa, reclamamos uno de los 128 sonidos, su definición se extrae de esa memoria no volátil y se copia a un espacio ‘de trabajo’ que es desde el que esos valores llegan a actuar sobre los módulos DCO, HPF, LPF, etc.

Los mensajes All Parameters (a menudo los veréis en otros equipos como ‘Program Dump’ o algo parecido) transfieren en grupo todos los parámetros de ese Patch/Tone ‘en uso’ o ‘de trabajo’. Si pedimos al MKS50 (tiene opciones para ello en sus menús) que genere un mensaje de ‘all parameter’, transferiremos todos los detalles del sonido que en ese momento está usando el sintetizador (y que quizá hayamos modificado ya sea desde el panel del equipo o vía mensajes MIDI). Podremos por ejemplo grabar en el secuenciador en el arranque de cualquier canción, para que el sonido se recupere automáticamente sin necesidad siquiera de tenerlo guardado dentro del propio MKS50).

Pero en donde nos hemos parado más en el vídeo anterior (porque es lo que nos interesa más aquí) es en los mensajes Individual Parameter referidos a retocar un único parámetro del Patch/Tone ‘en uso’. Son esos mensajes los que debemos llevar a los pulsadores, pots y faders de nuestros controladores para ejercer el control manual sobre el sonido.

Programemos nuestros controladores: A800Pro

[Índice]

El siguiente vídeo muestra cómo llevamos la teoría desde la documentación (la especificación SysEx del MKS50) a un controlador Roland A800Pro (con otros controladores habrá procedimientos parecidos a través de los que configuraremos en el control deseado la cadena de bytes adecuada para componer el mensaje SysEx oportuno).
Aunque el A800Pro permite ajustar los controles desde su propio display y menús, es más cómodo y lo veréis mejor si uso el editor que existe para realizar los ajustes cómodamente desde un ordenador. Es lo que os muestro en este otro vídeo:

Programemos nuestros controladores: Remote

[Índice]

Si queréis descagaros una plantilla ya preparada para Remote que controla todos los parámetros de Patch/Tone en el MKS50 podéis acudir a la web de Novation. La he dejado allí para libre disposición por quien la desee usar. Id a ‘community’ -> ‘libraries’ -> ‘MIDI templates’ y podréis encontrar el enlace para la descarga (que además de la plantilla incluye un documento que comenta cómo está estructurada): http://old.novationmusic.com/global/community/libraries/download/1987976996

Un Remote en el que carguéis esta plantilla sustituye al PG-300 que Roland vendía como controlador físico para los MKS50. De hecho supera al propio PG-300 puesto que esa plantilla recoge algunos parámetros ausentes en el PG-300 y además ofrece acceso más veloz a los bancos de sonidos con varios botones dedicados.

Como ilustración aquí tenéis la distribución de los controles que apliqué en la plantilla.


Es siempre recomendable realizar un prediseño (como en la figura) sobre cómo queremos disponer los controles. Reflexionando sobre cuáles parámetros necesitamos (puesto que no siempre vamos a necesitar manejar todos los parámetros –especialmente con sintes más complejos en los que puede haber cientos definiendo un único sonido-), intentando una distribución razonable y fácil de memorizar y usar.

Estudio de otro manual sysex: TX81Z

[Índice]

Para que podáis contrastar con otro equipo (también de la misma época) he preparado este vídeo mostrando por encima cómo se forman los mensajes SysEx del TX81Z.

En el próximo capítulo

[Índice]

Ahora ya le véis las orejas al lobo. Si no os arredra lo que hemos visto hasta ahora y no habéis decidido mirar para otro lado, os espero en una semana para continuar. Pese a lo mucho que hayamos podido aprender hasta ahora, aún faltan algunas herramientas para programar SysEx en equipos avanzados. Podremos ya con equipos simples, pero los sintetizadores de hoy en día tienen arquitecturas más complejas y nos obligarán a dedicar esa nueva entrega. Mientras llega, aseguraos de entender esta.

Si queréis consultar los manuales del MKS50 y del TX81Z los tenéis disponibles en Internet (en multitud de sitios, entre otros en las secciones de soporte de los propios Roland y Yamaha). Podéis igualmente estudiar algún otro de la época como cualquier DX de primera generación (monotímbrico), o el JX8P o el Juno-106, los DW de Korg, etc. La lista es amplia sin salir de aquellos primeros años de MIDI. Y en lo que pueda intentaré aclararos las dudas que os surjan en esas lecturas.

Te puede interesar