¿Cómo puedo emular un sintetizador Yamaha DX7 en Ubuntu?

Pocos saben que en mis años de cadete, contaba con una amplia variedad de teclados sintetizadores clásicos, lo que me convirtieron en un ávido programador de música Pop. En aquellos años pocos eran quienes dominaban este arte, pero la libertad de la informática asociada a la música es hoy un logro que ha de otorgarse al Pueblo. Solo así éste podrá dar la lucha con el ritmo de la más maravillosa música que es para mi la programada digitalmente.

Vean señores, en los años que los aparatos musicodigitales aparecieron como alternativa fiable, sucedió lo que siempre pasa cuando se deja al Capital hacer de las suyas: se hicieron elitistas. Pero hubo uno que marcó diferencia por su popularidad y quedó entrañado en esa memoria ROM imborrable que se guarda en el corazón del Pueblo: Se trataba del Yamaha DX7 de 1983, el primer teclado con sintetizador digital programable que logró éxito entre la Masa Popular, que es el verdadero consumo.

Siendo monotímbrico de 76 teclas, su sonido dulzarrón y polifonía de 16 voces se debía a sus seis operadores independientes en forma de de onda oscilada sinusoidal, manejables todos ellos de manera digital. Estos generadores empleaban la técnica de síntesis de frecuencia modulable según 32 "algoritmos" ofrecidos, los que resultaban - en colofón - una plétora de posibilidades armónicas o atonales según la habilidad del sonidista. El usuario podía programar 32 voces propias en memoria interna.

Estos patches "algorítmicos" , si bien se pueden modificar desde el propio teclado, son bastante complejos en sus resultados, poco intuitivos y difíciles de programar, lo que hacía que la mayoría de los músicos optaran simplemente por los sonidos de fábrica. 

Para facilitar las cosas, el aparato ofrecía ya 32 sonidos (patches) preprogramados que se hicieron clásicos, en tanto que Yamaha, ni lerda ni perezosa, se ocupó de vender aparte una colección de cartuchos ROM con nuevos sonidos ya hechos (se insertaban en el la parte trasera del teclado "a la Family Game").

Cada uno de estos cartuchos contaba con 2 bancos de memoria ("A" y "B") con 32 sonidos por banco. Esto significaba hasta unos 128 sonidos distintos que el teclado podía direccionar (32 internos de fábrica, 32 programables de usuario, y 64 en el cartucho removible opcional).

Debemos tener en cuenta que el sintetizador original es una computadora de 1983, y como tal requiere avanzados conocimientos de direccionamiento de memoria y parametrización de envolventes sonoras, necesarios como para ser proficiente en la creación de sonidos. Pues bien, con el correr del tiempo se hizo evidente que - por medio de software especializado y la interfaz MIDI provista en el Yamaha DX7 - podrían hacerse mejores cosas desde una computadora. Hubo entonces mucho software para poder manejar el teclado de una forma más sencilla con los sistemas informáticos del momento.

Indudablemente que GNU con Linux no podía quedarse atrás. Gracias a ello, los técnicos de nuestro Movimiento se han abocado al desarrollo de un software libre que no sólo permitiera programar los patches a través de MIDI - como muchos ya lo hacían - sino que empleara sintetizadores virtuales para emular directamente el sonido del Yamaha DX7, en un sistema Linux.

Todo esto se ha logrado con el el excelente Dexed.

Dexed es un programa y un instrumento virtual multiformato (VST, LV2, AU) multiplataforma y modelado para parecerse al clásico sintetizador Yamaha DX7. Está liberado bajo licencia GPLv3. En GNU con Linux, podremos emplear Dexed solo o como plug-in dentro de cualquier programa que use instrumentos virtuales VST (como por ejemplo, Qtractor, Ardour, etc).

Para instalar Dexed en nuestro Ubuntu, habremos de descargar su código fuente y compilarlo. Esto normalmente sería una tarea imposible para el neófito, pero como Conductor del destino de los Argentinos y paternal asistente de Ubuntu, os indicaré como hacerlo.

En primer lugar abrimos una Terminal con Ctrl+Alt+T, y en ella pegamos y ejecutamos con Enter cada uno de los siguientes comandos de organización:

cd ~ ;
sudo apt update ;

Esto nos solicitará nuestra contraseña de Conductor de sistema. Tras ingresarla "a ciegas" y presionar Enter, continuará con el procedimiento. No bien termine, debemos ingresar el siguiente comando para descargar sus librerías:


sudo apt install git curl freeglut3-dev g++ libasound2-dev libcurl4-openssl-dev libfreetype6-dev libjack-jackd2-dev libx11-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxrandr-dev mesa-common-dev

...y finalmente, descargamos el código fuente, lo compilamos e instalamos mediante los siguientes comandos de organización:

git clone https://github.com/asb2m10/dexed.git ;
cd ~/dexed/ ;
git submodule update --init --recursive ;
cd ~/dexed/ ;
./scripts/get-juce.sh ;
./scripts/projuce-lin.sh ;
./scripts/build-lin.sh ;
sudo cp ~/dexed/Builds/Linux/build/Dexed /usr/local/bin/

Dexed se compilará entonces en dos versiones similares: una consiste en un instrumento virtual VST (que requiere una aplicación de audio huésped para funcionar. La otra es una versión "stand-alone" que puede ejecutarse directamente

Si queremos borrar el directorio de compilación (ya no lo necesitamos), ingresamso:

cd ~ ;
rm -R ~/dexed/ ;

...y si nos preguntas si deseamos eliminar los archivos con protección de escritura, ingresamos "s" ("si"). 

Para la versión stand-alone, podremos ejecutarla directamente tipeando el comando "Dexed" en la terminal, pero es mucho más cómodo crearle a mano un Lanzador o acceso directo para este menester. Os lo explicaré. Hacemos clic con el botón derecho del mouse sobre nuestro el panel superior en el menú Aplicaciones y elegimos "Editar Menú". Al abrirse el cuadro de diálogo Menú Principal, en su sección izquierda hacemos clic en la categoría "Sonido y video". Luego presionamos el botón "+Elemento nuevo"
 ...esto abrirá la ventana Crear lanzador. En el campo "Comando:" Agregamos el comando "Dexed" (con D mayúsculas como se indica). También podremos indicar el nombre Dexed y un ícono y un comentario explicativo opcional. Finalmente presionamos el botón Aceptar.

Ahora podremos ejecutar Dexed desde Aplicaciones / Sonido y Video / Dexed. Naturalmente, también podríamos agregar el instrumento VST "Dexed" a una pista de nuestra DAW, podremos desplegar su panel de control para operarlo.

El amplio panel inicial presenta los controles detallados, con una buena reproducción gráfica que simula el esquema de color del Yamaha DX7. En su parte inferior nos da un teclado activable con el mouse, pero también podremos usar nuestro teclado para tocar líneas simples.

Gracias a ello Dexed puede sintetizar con muy buena fidelidad el sonido, lo suficientemente capaz como para considerarse profesional. El sintetizador integrado nos permite contar con los 144 parámetros del DX7, a los cuales es posible automatizar. En sí contamos con los 6 operadores y los 4 parámetros de envolvente clásicos.

Naturalmente, si tenemos un un teclado controlador MIDI o incluso un Yamaha DX7 real, podremos configurarlo para poder asociarlo, via un adaptador MIDI-USB. Ello lo hacemos en el emulador mediante el botón Options.

En cuanto a la salida de sonido normalmente funciona con ALSA/Pulseaudio,  aunque puede hacerse por medio del servidor de audio JACK si está activo.

Podremos enviar los datos paramétricos y manejar desde la computadora al Yamaha DX7. En el caso de que no tengamos este sintetizador, bien podremos usar Dexed para que opere como un sintetizador paramétrico FM, con un resultado bastante similar al Yamaha DX7, aunque utilizando una emulación del chip sintetizador Yamaha OPL3.


Dexed puede ser configurado para usar algunas de las limitaciones del sintetizador DX7 original. Esto no solo aplica a su conversor digital analógico, sino que también hace a la resolución de bit de las ondas sinusoidales y la manera en la cual su control de amplitud se aplica a cada operador. Esta característica sonora supuestamente ofrece una rendición más auténtica, pero puede variar en el gusto del usuario, por lo cual se ofrecen tres "motores" o sintetizadores distintos que podremos elegir haciendo clic en PARM.

Podremos elegir entre:

    Modern: Se trata de una emulación del sintetizador de 24 bits.
    Mark I: Viene por defecto. Se basa en la serie Yamaha OPL pero emplea una resolución mayor (LDT de 10 bits). De esta manera puede ser más cercano al sonido del DX7 real.
    Serie OPL: Se basa en una experimentación del chip Yamaha OPL de 8 bits.


Indudablemente, comparar el sonido entre de un Yamaha DX7 auténtico y Dexed puede sonar a comparar al Movimiento Peronista Auténtico con el auténtico peronismo. Pero no deja de ser algo útil en ciertos casos.



Gestión de patches

Como vimos, el Yamaha DX7 original cuenta con un banco de 32 memorias de usuario y adicionalmente, contaba con cartuchos. En Dexed estos se representan con volcados de memoria de estos mismos cartuchos (esencialmente, copias digitales de ellos). Son archivos de extensión .sys.

Cualquier archivo .syx que se encuentre en el directorio de cartuchos (normalmente /home/usuario/.local/share/DigitalSuburban/Dexed/Cartridges) estará disponible en la ventana CART del emulador. Podremos cambiar el directorio usando el botón CART del emulador Dexed, y luego presionando el botón SHOW DIR.

Podremos arrastrar y soltar cualquier parche o programa de DX7 que tengamos cargados en Dexed, y que tengamos cargado en el navegador de cartuchos. Al hacer doble clic en un patch, se cargará dicho programa actualmente elegido al emulador.
Dexed ya viene con 32 voces, y podremos agregarles muchas mas que vienen en el directorio SynprezFM. Podremos utilizar el botón derecho del mouse para enviar el programa/cartucho al DX7 o abrir el navegador de archivos para buscar el patch en el directorio de cartucho que deseemos.

Pero no solo eso, podremos encontrar un excelente compilado de programas de DX7 comprimidos en un archivo ZIP aquí. Si deseamos agregarlos desde la terminal hacemos:

cd ~/.local/share/DigitalSuburban/Dexed/Cartridges ;
wget http://hsjp.eu/downloads/Dexed/Dexed_cart_1.0.zip ;
unzip Dexed_cart_1.0.zip ;

...y reiniciamos el programa para poder verlos.


Dexed como un editor de parches para el Yamaha DX7
Si tenemos un Yamaha DX7 original conectado por la interfaz MIDI, bien podremos usar este programa como un editor de patches y administrador de mensajes MIDI extendidos de sistema (SysEx). Es mucho más cómodo que usar la incomodísima interfaz de usuario del DX7.

Ya que los mensajes MIDI extendidos de sistema (SysEx) que usa el Yamaha DX7 son algo problemáticos para enviar con las interfaces MIDI nativa Ubuntu, debemos enviarlos y recibirlos con una interfaz MIDI USB externa. Esto puede configurarse con el panel PARM.
Al configurar una interfaz MIDI "DX7 in / DX7 Out", Dexed recibirá los cambios de programa / cartucho específicos desde el teclado DX7 y los enviará al controlador/programa/cartucho que editemos.

Pre-requisitos
Antes de usar esta interfaz MIDI, el teclado Yamaha DX7 debe estar configurado para enviar y recibir mensajes SysEx. Esto se hace en el teclado Yamaha DX7, presionando FUNCTION y el botón 8
Debemos revisar el canal MIDI. La mayoría de los Yamaha DX7 sólo pueden enviar datos a través de su interfaz MIDI OUT en el canal 1 (si bien pueden recibir en cualquiera de los 16). Debemos presionar 8 nuevamente en el Yamaha DX7, y en su display podremos conmutar entre "SYS INFO AVAIL" (Información de sistema  disponible) o "SYS INFO UNAVAIL" (información de sistema no disponible). Debemos elegir SYS INFO AVAIL para que el Yamaha DX7 pueda transmitir mensajes extendidos de sistema.
También debemos remover la protección de memoria de la memoria interna o la memoria del cartucho para poder recibir un volcado de memoria de las 32 voces disponibles en Dexed. Para ello en el teclado debemos presionar el botón MEMORY PROTECT y luego presionar el botón NO.

Para enviar datos al teclado Yamaha DX7 por MIDI.

Si el puerto MIDI está configurado, cualquier parámetro que cambiemos en el panel de control de Dexed será enviado al teclado DX7. Podremos enviar cualquier programa/cartucho en la ventana CART del emulador usando el menú contextual (haciendo clic con botón derecho sobre la ventana CART).

Para recibir parches desde nuestro teclado al emulador.
El puerto MIDI debe estar configurado.
Enviaremos un programa desde el teclado a Dexed usando el botón MEMORY SELECT del Yamaha DX7 y luego el número de programa que queremos enviarle al emulador Dexed (desde el 1 al 32).
Para recibir un cartucho instalado en el teclado, presionamos FUNCTION y luego presionamos tres veces 8, y debemos ver en el display "MIDI TRANSMIT ?". Si presionamos el botón YES, y el teclado enviará el volcado completo de la memoria del cartucho, el cual debería aparecer en el emulador Dexed.