¿Cómo emulo un módulo Roland MT-32 en DOSbox en Ubuntu?

¡Trabajadores!

Nuestro Movimiento es uno que hace hincapié en los humildes, pues estos son quienes trazarán el camino de la Liberación. Poco valdría nuestro Movimiento si no nos juntáramos con los negros.
A ellos hemos de darle todo, pues son nuestros grasitas quienes todo lo necesitan. Esto se ha repetido infinidad de veces a lo largo de la historia.

Por ejemplo, es sabido que a principios de los 90s las placas de la línea SoundBlaster de Creative Labs se convirtieron en el estándar de sonido digital en la PC, hubo otros dispositivos especializados en la música que no se quedaron atrás en performance: los módulos Roland MT-32. Se trataba de unidades provistas de un potente sintetizador multitímbrico y polifónico PCM lineal (modulación de pulso), con calidad sonora superior a la que la que permitía la síntesis FM tan en boga en los 80s.
Estos módulos externos, controlables a través del estándar MIDI, permitían reproducir la música de los juegos con una mucho mayor calidad sonora, siempre que estos contaran con el soporte Roland necesario. En particular, fueron las aventuras gráficas de las productoras Sierra y Lucasfilm/LucasArts quienes promovieron estos excelentes módulos MIDI. Pese a su resultado excelentes, indudablemente su talón de aquiles era el elevado precio que contaban, el cual solía duplicar o triplicar el de una placa de sonido convencional. Roland entonces decidió concentrarse en una versión compatible del mismo pero con el form factor de tarjeta de expansión ISA de 8 bits, la LAPĈ-I.
Esta plaqueta contenía el chip sintetizador, la interfaz MIDI programable MPU-401, y las salidas de audio independientes en una única unidad, lo cual la tornaba excelente para música y juegos. Sin embargo, su oligárquica naturaleza la alejó del Pueblo. Los humildes jamás pudieron conseguirla, y por ello estas placas y módulos de sonido quedaron en el recuerdo. Nuestro Movimiento tiene la ineludible misión de corregir esto, y hacer todo lo que se pueda en la visión de que un argentino con una MT-32 - aunque sea virtual y años después de su lanzamiento real - no hace otra cosa que representar el cristiano concepto de Justicia Social...

Pues bien, ya he explicado cómo emular un módulo sintetizador Roland MT-32 a través de un sintetizador virtual con Soundfonts para jugar aventuras gráficas con ScummVM en Ubuntu. Sin embargo, podría suceder que quisiéramos contar con un emulador específico de la Roland MT-32 para otros juegos o programas que no pueden correrse en ScummVM y si lo hacen en DOSbox. Por tal motivo hoy os enseñaré cómo hacer realidad efectiva este complejo cometido. De momento nadie ha osado hacerlo bajo las banderas del Justicialismo y el Software Libre, y como Conductor no podía dejar de deberme a mi Pueblo, aquél que me ha honrado con las palmas y laureles de general de la Nación - pero sobre todas las cosas - con el título que más me enorgullece: el de ser un vínculo de unión entre los hombres que trabajan.

instalar el emulador de Roland MT-32 Munt en Ubuntu

Pondremos manos a la obra. En este caso recurriremos a un emulador de la Roland MT-32 multiplataforma. Específicamente, os instruiré para instalar una versión de 64 bits capaz de operar en Ubuntu 16.04 y superiores. Se trata de un emulador escrito en QT y liberado bajo licencia GPLv3, por lo cual puede hacer una representación gráfica del mismo bajo Ubuntu. Podremos hacer uso del mismo como si de un dispositivo MIDI virtual se tratara. Su nombre es Munt.

Para que Munt opere adecuadamente y entienda cómo poder emular los módulos Roland, debe contar al menos con cuatro volcados de memoria ROM (archivos de solo lectura del aparato original). Los archivos necesarios son CM32L_CONTROL.ROM, CM32L_PCM.ROM, MT32_CONTROL.ROM y MT32_PCM.ROM. Las ROM de control tienen la programación de funcionamiento del aparato, y se acompañan por una ROM PCM correspondiente a los sonidos instrumentales propiamente dichos. No es necesario explicar que estos dos pares de volcados de ROM sirven para emular el módulo MT-32 como para la CM-32L/LAPC-I.

Consigamos pues estos archivos usando nuestra Terminal de Linux. Abrimos una con Ctrl+Alt+T e ingresamos el siguiente bloque de Comandos de Organización, seguido de la tecla Enter:

mkdir ~/roms/ ;
cd ~/roms/ ;
wget ftp://ftp:any@grandis.nu/TheZone/files/_2013/Roland_MT-32_ROMs%20[for%20Dosbox%20Ykhwong%20MT-32%20emulation.].zip ;
mv 'Roland_MT-32_ROMs [for Dosbox Ykhwong MT-32 emulation.].zip' mt32roms.zip ;
unzip mt32roms.zip ;

...esto extraerá las ROMs y las colocará en la carpeta /home/usuario/roms. Acto seguido podremos descargar e instalar el emulador de Roland para Ubuntu: el Munt 2.3.0 de 64 bits. Debemos pegar en la terminal el siguiente bloque de comandos de organización:

sudo apt update ;
sudo apt install  libqt5multimedia5 ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/mt32emu-qt-1.7.1.deb ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/mt32emu-smf2wav-1.5.0.deb ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/libmt32emu-2.3.0.deb ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/libmt32emu-dev-2.3.0.deb ;

sudo dpkg -i libmt32emu-2.3.0.deb
sudo dpkg -i mt32emu-qt-1.7.1.deb
sudo dpkg -i mt32emu-smf2wav-1.5.0.deb
sudo dpkg -i libmt32emu-dev-2.3.0.deb

Será muy útil crear un acceso directo al ejecutable de Munt: el archivo mt32emu-qt. Para ello hacemos clic con el botón derecho del ratón en Aplicaciones en el panel superior, y elegimos Editar Menús. Se abrirá la ventana "menú principal". En su sector izquierdo hacemos clic sobre la categoría Sonido y Video, y luego presionamos el botón Elemento Nuevo. Se abrirá la ventana Crear lanzador. En su campo Nombre: podremos poner Munt Roland. En el campo Comando: debemos ingresar mt32emu-qt, y en el campo Comentario podremos ingresar una descripción del Munt. Cuando tenemos todo completado presionamos el botón Aceptar.
Todas estas tareas debemos realizarlas únicamente la primer vez, y ya nuestro sistema quedará preparado. Ya podremos ejecutar el emulador Munt. Para ello vamos a Aplicaciones / Sonido y Video / Munt Roland. Si deseamos ejecutarlo desde la terminal, debemos ingresar:

mt32emu-qt

La primera vez que arranque, Munt mostrará en su título de ventana el puerto ALSA MIDI. Normalmente este es 128:0, pero en mi caso, como ya cuento con otro sintentizador MIDI (el FluidSynth), el Munt recibe el puerto siguiente, el 129:0. Es importante conocer exactamente cuál es nuestro puerto ALSA MIDI para Munt en nuestro sistema.

Tengamos en cuenta que si no estamos seguros, podremos revisar también esta variable ingresando en la terminal lo siguiente:

aconnect -o

...y al presionar Enter el sistema nos devolverá los puertos de los dispositivos MIDI, por ejemplo:

cliente 14: 'Midi Through' [tipo=kernel]
    0 'Midi Through Port-0'
cliente 128: 'TiMidity' [tipo=usuario]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '
cliente 129: 'Munt MT-32' [tipo=usuario]
    0 'Standard        '

El emulador Munt debería cargar dos ROM automáticamente. Si no lo hace, o quisiéramos cargar las ROM a mano, debemos ir al menú Options / ROM Configuration, y podremos escoger la ruta y los archivos (los hemos puesto en /home/usuario/roms). Una vez agregados a la lista, podremos presionar Refresh y tildar el par que querramos utilizar.


Munt nos presentará con un ícono en el panel superior.
Si hacemos clic sobre él y elegimos Show MIDI Player ("Mostrar reproductor MIDI"), podremos activar un reproductor MIDI stand-alone, capaz de tocar una lista de archivos MIDI a través del Roland MT32 virtual.


Configurar DOSBox para usar el emulador Munt de Roland MT-32
Ya he explicado cómo instalar DOSBox en Ubuntu y asumiré que lo han hecho y que saben utilizar M$-DO$.

En este caso, nuestro anhelo ha de llevarnos más allá del uso simple de DOSbox: no sólo deseamos contar con un sintetizador virtual en Ubuntu, sino que queremos ser capaces de usar este mismo sintetizador emulado con los mejores juegos para M$-DO$ de antaño, usando  DOSbox. Para ello modificar su configuración. Os instruiré para que el éxito nos acompañe.

En primer lugar modificaremos el archivo de configuración de DOSBox. Para ello en la terminal ingresamos:

nano ~/.dosbox/dosbox-0.74.conf

Esto abrirá el editor GNU Nano con el archivo de configuración de DOSBox.

Presionamos Ctrl+w para activar la opción de búsqueda, y buscamos la sección [midi]. En dicha sección nos aseguramos de modificar el modo de compatibilidad de la interfaz virtual Roland mpu401 para que quede en modo "inteligente", y en la variable midiconfig nos aseguramos de ingresar el número de puerto de Munt de nuestro sistema (recordemos que suele ser 128:0, en mi caso es 129:0). De modo que las variables queden así:

mpu401=intelligent
mididevice=default
midiconfig=129:0



Luego guardamos los cambios realizados en el fichero con Ctrl+o y salimos del editor GNU Nano con Ctrl+x.

Una vez hecho estos cambios, debemos recordar iniciar Aplicaciones / Sonido y Video / Munt antes de iniciar DOSbox.

Si ya tenemos Munt iniciado, podremos ejecutar DOSbox, desde Aplicaciones / Juegos / Emulador DOSbox.

Si todo va bien, DOSbox debería conectarse al emulador Munt, y en el caso de que tengamos activadas las notificaciones de Munt, recibiríamos el siguiente mensaje:
Ahora podremos ejecutar los juegos que queramos en el emulador DOSbox.
Configurar los juegos de M$-DOS para usar Roland MT-32
Como buenos peronistas, debemos tener en cuenta que para que los juegos sean capaces de utilizar la Roland MT-32, debemos configurarlos en tal sentido. En la época del DOS existían varios estándares de audio, y no era común que los juegos contaran con rutinas de autodetección del sonido, sino que debíamos configurarlos a mano. Normalmente para tal cometido se utilizaba un programa ejecutable (.exe, .com o .bat) incluido en el directorio del juego. Por ejemplo, podíamos encontrar archivos llamados install.exe, setsound.exe, sound.exe, o setup.exe. Normalmente estas utilidades normalmente se encargaban de escribir un archivo en el directorio del juego que especificaba las opciones de audio preferidas del usuario y la configuración de la/s tarjeta/s de sonido.

Por ejemplo, para activar la Roland en los juegos de Dynamix/Sierra, debíamos usar el programa install.exe, y elegir la opción de audio deseada. Esta rutina tildaba aquellas disponibles para nuestro sistema...

En los juegos más logrados, podíase utilizar la Roland MT-32 en conjunción con la SoundBlaster, a fin de lograr música sintetizado de calidad superior a través de la Roland, junto con audio digitalizado a través de la SoundBlaster.
En las rutinas de configuración del sonido, debíamos especificar el puerto de dirección de la placa de audio. Este normalmente era 330h para la Roland MT-32 y otros dispositivos MIDI, mientras que se empleaba 220h para SoundBlaster. El IRQ de la SoundBlaster suele estar definida en el archivo de configuración dosbox-0.74.conf, y suele ser 5 o 7.
La Roland MT-32 era compatible en gran medida con la CM-32L, un módulo más avanzado técnicamente, pero más simple, y de posterior aparición. También lo era con la placa Roland LAPC-I, por lo que en muchos juegos podemos encontrarlas en una única opción.

Los juegos más tardíos que se ocuparon de estos módulos y placas Roland, a menudo permitían las dos opciones, junto con el estándar General MIDI.


Al iniciar el juego, podremos escuchar música a través de una Roland MT-32 correctamente emulada. En tanto, en la ventana de Munt podremos ver una simulación del display frontal de la MT-32. Esto es así pues el módulo original solía mostrar el nombre de los instrumentos, los canales MIDI en reproducción, y a veces algunos mensajes en broma en algunos juegos.
Si hacemos clic en el ícono de Munt en el panel superior y escogemos "Start Iconized", el emulador quedará residente en la parte superior para cuando necesitemos usarlo, podremos hacer clic en el ícono del panel superior y elegir Show/Hide ("mostrar/ocultar") para mostrar o cultar la ventana.

El Space Quest 3: The Pirates of Pestulon, fue uno de los primeros títulos en hacer uso demencial de la Roland MT-32 para acompañar las aventuras de Roger Wilco.

Además de emular una MT-32 en juegos, el emulador Munt es capaz de grabar los datos MIDI que le llegan, presionando el botón Record en el área Midi input. Esto hará que se inicie el registro de los datos MIDI del juego. Para salvarlos debemos presionar Stop y se presentará una ventana que nos permitirá escribir un nombre para el archivo (y guardarlo en formato MID).

Desde el emulador Munt también podríamos querer guardar el resultado en forma de archivo Wav. Esto nos permite guardar audio digital de la salida del programa. Debemos tener en cuenta que únicamente guarda en audio a través del sintetizador Roland aquellos datos MIDI, y por lo tanto hace caso omiso al audio digitalizado de los juegos.

Si presionamos el botón Properties, se nos presentarán las propiedades actuales del emulador Munt.
Desde esta ventana podríamos corregir los efectos incluidos, reverberación y coro.

No solamente los juegos se verán favorecidos. También podremos utilizar el sintetizador Munt con cualquier programa de creación y reproducción musical. Solamente debemos asegurarnos de usar el dispositivo de salida MIDI MT-32 Munt. Por ejemplo, podríamos usar la Roland MT-32 virtual para reproducir pistas de nuestros archivos MIDI en LMMS, y combinarlos con Soundfonts.
Si bien actualmente los Soundfonts permiten calidad superior a la nativa en la Roland MT-32 de los años 80s, esto no quiere decir que sea inútil esta aplicación. De hecho, los pads y sintetizadores clásicos de la Roland MT-32 pueden aportar muy positivamente en cualquiera de las piezas musicales que creemos. Debemos recordar que los patches (o instrumentos) de la Roland MT-32 no guardan la misma correlación que los del estándar General MIDI. Podremos encontrar la numeración de los patches de la MT-32 aquí.

Uso de Munt en ScummVM en Ubuntu.

También podremos utilizar este potente emulador de sonidos de Roland MT-32 en el emulador para aventuras gráficas ScummVM. Normalmente prefiero sin embargo usar Soundfonts y un sintetizador virtual FluidSynth para este cometido. Pero si deseáramos usar Munt en lugar de Soundfonts (para lograr la reproducción más realista que se pueda sin tener que adquirir una MT-32 real), debemos hacer lo siguiente:

En primer lugar, debemos tener activado Munt. En segundo lugar abrimos ScummVM. En dicho programa debemos presionar el botón Options.
Se abrirá las opciones del Emulador. En la solapa Sonidos, debemos elegir el dispositivo preferido, elegimos Munt MT-32 (ALSA).

En la solapa MIDI también escogemos Munt MT-32 (ALSA).

Finalmente, en la solapa MT-32, elegimos también el sintetizador Munt MT-32 ALSA). Debemos tildar "Roland MT-32 auténtica (desctivar emulación General MIDI)".

Luego presionamos el botón Aceptar, y Salir. Para que los cambios sean efectivos, reiniciamos el emulador ScummVM.
Tendremos ahora el sonido Roland MT-32 en las aventuras gráficas.