jueves, 19 de abril de 2018

¿Cómo emulo un módulo Roland MT-32 para las aventuras gráficas que corren bajo ScummVM en Ubuntu?


A través de sus famosas cintas magnetofónicas, Juan Perón exhortaba a la resistencia contra una Dictadura cuyas pocas y malas ideas tendían a la proscripción del Movimiento. En una de ellas de 1964, explica a la Juventud cómo plantear la lucha emulando un módulo Roland MT-32 para los juegos clásicos en Ubuntu.

¡Argentinos!

La canallesca maniobra de los traidores de siempre es la que han llevado al Pueblo a sufrir una economía desmadreada, la ocupación de ideas extrañas y sobre todo, la enajenación de los activos de la Patria.
Estos elementos no vienen solos, se han coaligado con el Impearialismo Yanqui en pos de un destino inconfesable, que no es otro que el sometimiento del Pueblo Argentino.

Por fortuna contamos con las mayores herramientas de lucha, que es la conciencia Libre de los jóvenes. Y no solo la nuestra Juventud, sino la del mundo entero es la que se ha unido a la Doctrina del Justicialismo.
Esto es así porque no sólo presentamos la Libertad como horizonte de nuestro Movmiento, sino que además nos permitimos adornar nuestro ludismo electrónico con la más maravillosa música. Como Conductor, ya he explicado cómo instalar el emulador ScummVM a fin de simular el entorno de programación para aventuras gráficas de Lucasfilm, y poder jugar así los clásicos producidos por LucasFilm/LucasArts, Sierra entre otras productoras que aprovecharon este versátil lenguaje de programación.

Ahora bien, el emulador ScummVM se ocupa en principio de realizar una reproducción fiel y a través de software del chip de sonido por síntesis FM OPL2 y su derivado, OPL3. Este se encontraba en la placa de sonido AdLib, y naturalmente en las extendidas SoundBlaster, de Creative Labs. Esto es así pues la mayoría de las piezas musicales de estos juegos clásicos fueron compuestas en torno a estas populares placas de sonido, destinadas a superar al estridente parlante integral de la PC, un adminiculo de circunstancias, apenas monoaural monofónico y en consecuencia monótono.

Sin embargo, también existió otro estándar que - por su elevado precio - no logró la popularidad esperada, a pesar de que muchas de estos mismos jueegos podían utilizarlo y de hecho, sonaban hermoseados con él. Se trata del módulo de sonido MIDI Roland MT-32, y sus continuadores.
Vean señores, el Roland MT-32 era un módulo de sonido lanzado en 1987 por dicha fabricante de instrumentos musicales. Podía conectarse a cualquier dispositivo electrónico que dispusiera de interfaz MIDI. El sentido original de este módulo sin embargo era el de proveer el sonido realista de instrumentos sintetizados polifónicamente a computadoras personales y sintetizadores. Podía utilizar unos 5 canales independientes MIDI programables en el mismo aparato, mas otros tres controlables en forma indirecta a través de otro dispositivo. Asimismo podía contar con un canal multitímbrico especial para la percusión (usando entonces 9 canales de los 16 que llegaría a permitir la norma serial General MIDI). A través de una interfaz MIDI  - como la plaqueta MPU-401 de Roland, u otras genéricas como la salida de Joystick/UART incluida en las SoundBlaster Pro y superiores - podía presentar 128 instrumentos a través de la síntesis PCM de aritmética lineal, mucho más realistas y profundos que la síntesis FM original.

Nuestro Justicialismo se ha presentado como objetivo alcanzar a todos los Argentinos con los beneficios que antes sólo podía permitirse una minoría oligárquica sin patria ni bandera. Como Conductor, no he hecho más que hacer realidad los anhelos de mi Pueblo, y uno de ellos es el de contar con un Roland MT-32 para todos.

En vista de esto, os enseñaré cómo nutriros del sonido más avanzado disponible en a principios de los 90s, gracias al software libre y sin gastar una chirola. Tal es el quehacer de los verdaderos Apóstoles del Software Libre.

Pues bien, para esta realización necesitaremos utilizar un emulador por software, y que mejor que el Fluidsynth, el sintetizador virtual capacitado para usar Soundfonts, librerías instrumentales propias. Nos haremos también con alguna librería de instrumentos (Soundfont) compatible con la norma Roland GS. Podremos utilizar también alguno con la norma GM (General MIDI), aunque tengamos en cuenta que es preferible para este caso uno que emplee el estándar Roland GS.

FluidSynth trae soundfonts libres llamados FluidR3_GS.sf2 y FluidR3_GM.sf2, que serán adecuados y bastante fieles a los incorporados en la memoria ROM histórica del módulo MT-32, pero para los juegos Monkey Island y otros, podremos encontrar resultados sorprendentes también a través del Soundfont "Timbres of Heaven" de Don Allen. Lo encontamos aquí (252mb).

Una vez descargado el fichero comprimido en formato 7z del Soundfont, podremos descomprimirlo e instalarlo desde nuestra terminal Linux. Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente bloque de comandos:

sudo apt update ;
sudo apt install dtrx rar scummvm fluidsynth fluid-soundfont-g* ;
cd ~/Descargas/ ;
dtrx Timbres\ Of\ Heaven\ GM_GS_XG_SFX\ V\ 3.4\ Final.7z ;
cd Timbres\ Of\ Heaven\ GM_GS_XG_SFX\ V\ 3.4\ Final/ ;
sudo mv 'Timbres Of Heaven GM_GS_XG_SFX V 3.4 Final.sf2' /usr/share/sounds/sf2/ ;
cd~/Descargas/ ;
rm -r Timbres\ Of\ Heaven\ GM_GS_XG_SFX\ V\ 3.4\ Final/ ;

Lanzamos el emulador ScummVM desde Aplicaciones / Juegos / ScummVM. Como ya he explicado, debemos cargarle los juegos que querramos utilizar. Para configurar el módulo MT-32 virtual, debemos presionar el botón "Opciones..."
...a continuación se nos presentarán una serie de solapas. Presionamos la solapa Sonidos. Hacemos clic en el campo Dispositivo Preferido y se desplegará una lista con varias opciones de sintetizadores. Elegimos el sintetizador virtual FluidSynth. Finalmente hacemos clic sobre la solapà MIDI.
En la solapa MIDI debemos indicarle cuál es el dispositivo que queremos utilizar como sintetizador para la norma General MIDI. Para ello hacemos clic en el campo "Dispositivo GM", y elegimos nuevamente al sintetizador virtual FuidSynth. También podremos hacer clic en la opción "Modo AdLib/MIDI", a fin de lograr un modo de audio combinado, en el cual los efectos de sonido serán emitidos a través de una placa AdLib sintetizada emulada, y la salida musical saldrá través de la Roland MT-32 virtualizada por medio de FluidSynth.

Acto seguido habremos de escoger qué Soundfont (biblioteca de instrumentos), queremos que use nuestro sintetizador virtual FluidSynth. Para ello presionamos el botón naranja Soundfont.

Presionamos varias veces el botón Arriba para ir a la raíz de nuestro árbol de directorios. Luego debemos dirigirnos específicamente a la carpeta de sistema que contiene los Soundfonts. Esta es /usr/share/sounds/sf2/. Para ello, en la lista de directorios, hacemos doble clic con el ratón sobre el directorio usr/, luego doble clic sobre share/, luego doble clic en sounds/, y finalmente entramos con doble clic en sf2/. Entonces se nos presentará una lista de los Soundfonts instalados en nuestro sistema GNU con Linux. Para usar el excelente Timbres of Heaven, seleccionamos "Timbres Of Heaven GM_GS_XG_SFX V3.4 final.sf2" y presionamos Aceptar. Opcionalmente podríamos usar el soundfont libre "FluidR3_GM.sf2", que también funciona adecuadamente y viene por defecto con el sintetizador virtual, aunque tiene menor calidad que el Timbres of Heaven.

Para que ScummVM reciba el Soundfont debemos presionar Aceptar.

Finalmente en la solapa MT-32 nos aseguramos que el Dispositivo MT-32 esté configurado como FluidSynth. En el caso del sintetizador virtual FluidSynth, que es compatible con la norma GS, debemos tildar la opción Dispositivo Roland GS (activar la conversión MT-32). Esto convertirá los canales percusivos en los enviados para la MT32 real en voces aceptables para el sintetizador.
En el caso de no hacer esto de los Soundfonts puramente GM y el algunos de los GS no compatibles, podríamos encontrarnos con diferencias en la instrumentación del juego, especialmente cuando el mismo hace uso de efectos de sonido a través del sintetizador MIDI (vientos, explosiones, piñas, etc). Podrían sonar flautas en lugar de pianos, etc...

Ahora bien, para que ScummVM acepte todas las nuevas configuraciones que le hicimos, y haga efectivo los cambios debemos presionar el botón Aceptar y reiniciar ScummVM. Para ello presionamos el botón Salir. Una vez que el emulador se apague, volvemos a ejecutarlo, y ya podremos jugar un juego con el sintetizador virtual Fluidsynth cumpliendo el rol de una Roland MT-32.

Conectar ScummVM a un módulo Roland MT-32 real


En el caso de contar con un módulo Roland MT-32 real, o alguna de sus derivadas simplificadas como la CM-32L, o posteriores como la Roland SC-55, SC-88, etc, el procedimiento de configuración será naturalmente diferente al sintetizador emulado.

En primer lugar debemos conectar el módulo Roland MT-32 a nuestro sistema GNU con Linux empleando un adaptador MIDI-USB. En mi caso empleo uno genérico:
Para ello debemos conectar el cable MIDI-Out del adaptador USB-MIDI a la entrada IN que se encuentra en la parte trasera del módulo Roland MT-32. También debemos conectar el cable MIDI-In del adaptador USB-MIDI a la salida OUT que se encuentra en la parte trasera de la Roland MT.-32.



Finalmente, conectamos las salidas de audio normalizadas de 6,35mm Output R y Output L de la Roland MT-32 (una para cada canal) a dos altavoces (derecho e Izquierdo respectivamente).

En revisiones más modernas del módulo MT-32 cuentan con una salida estéreo adicional para auriculares de 6,35mm, denominada PHONO, que al usarla enmudece las salidas individuales, pero la mía no dispone de la misma. Acto seguido conectamos el transformador de 9v y 650 miliamperes a la red eléctrica y encendemos el módulo MT-32 por medio del interruptor trasero. Una vez que diga ON y *READY* en el display frontal (tras unos 3 segundos), conectamos el cable USB del adaptador MIDI a un puerto USB de nuestra PC.

Hasta aquí tendremos cumplidos los pasos obvios de puesta a punto, y esto hará hará que nuestro sistema GNU con Linux pueda enviarle datos MIDI a la MT-32 y podremos usarla, si lo deseamos, con cualquier programa que haga uso de MIDI (como el LMSS, por ejemplo).

Para hacerla funcionar con el emulador ScummVM, lo abrimos, y nuevamente presionamos el botón Opciones... En la solapa MIDI debemos elegir para este caso, el dispositivo GM "MIDI Throug (ALSA)".
En la solapa MT-32 también debemos elegir el Dispositivo MT-32 "MIDI Through (ALSA). En la parte inferior debemos tildar la opción "Roland MT-32 Auténtica (desactivar emulación GM". Esto hará que el módulo MT-32 acepte los instrumentos del viejo estándar Roland MT-32, y no los convertidos desde la norma General MIDI. Sólo de esta manera el módulo Roland MT-32 real funcionará con los instrumentos musicales correctos, caso contrario la percusión sonaría a través de un piano en el canal 9, o el bajo sonarían erróneamente como como un piano o campanas...
Debemos tener en cuenta que si en lugar del MT-32 real, tenemos un módulo de sonido más moderno que sigue la norma GS o XG (por ejemplo, el módulo Roland SC-88, los modernos Edirol), o Soundfonts de tipo GS/XG en el sintetizador virtual FuidSynth, debemos activar la opción "Dispositivo Roland GS (activar la conversión MT-32)".

Nuevamente, para que los cambios surtan efecto en el hardware real, debemos presionar el botón Aceptar, y finalmente reiniciar el emulador ScummVM.

Una vez reiniciado y cargado un juego compatible con MT-32, el emulador lo configurará de la manera correcta, y los datos MIDI de su música serán enviados pos ScummVM al software servidor de sonido estándar de Linux (el ALSA), y éste a su vez los reenvíe al adaptador USB-MIDI por hardware.
Desde este adaptador llegarán las órdenes MIDI a la MT-32 a través de los puertos MIDI universales. Será entonces la MT-32 la que genere el sonido a través de su sintetizador multitímbrico y polifónico incorporado, sonido que saldrá a través de los altavoces conectados.

No hay comentarios:

Publicar un comentario