¿Cómo emulo una placa de sonido Sound Blaster AWE-32 en DOSbox en
Ubuntu?

En pleno aeropuerto De Gaulle en París, Juan Perón anuncia a los
periodistas allí reunidos sobre su inminente regreso a la Argentina y
explica cómo emular el clásico sonido MIDI de una placa AWE-32 en juegos
MS-DOS emulados bajo DOSbox en Ubuntu.

¡Compañeros!

Indudablemente que un sistema operativo de alcance popular como los es
GNU con Linux - y Ubuntu como su distribución particular - ha de
presentar todas las capacidades que anhelan los hombres. Desde un inicio
nuestro Movimiento se ha concentrado - por tanto - en hacerlo modular y
capaz de afrontar las más elevadas exigencias en pos del bienestar de
los hombres.
Esto es así pues encadenar el uso de herramientas para disímiles usos es
lo que torna a un sistema poderoso. Esto es lo adecuado y también lo
justo.

No quedan dudas para nadie que el emulador DOSbox cuenta con una
emulación sobresaliente del audio Sound Blaster FM de dicha Era, es
cierto que no emula todas las posibilidades de las placas de sonido mas
avanzadas de entonces, en particular, del modelo Sound Blaster AWE-32.
Los juegos de MS-DOS compatibles con la placa de sonido AWE-32
reproducían mejor la música secuenciada MIDI gracias al chip EMU8000,
que no está actualmente emulado nativamente en DOSbox.

La Creative Labs Sound Blaster AWE-32 (1994) - si bien contaba con el
chip sintetizador Yamaha OPL3 para música FM - incorporó por primera vez
un sintetizador EMU8000 específico que utilizaba síntesis por modulación
PCM, y podía aplicar efectos de reverberación y coro para enriquecer la
música. Utilizaba muestras de instrumentos digitalizados y los
resultados eran más realistas que los posibles a través del uso de
síntesis FM. La placa incluía 1MB de memoria ROM con un banco de 128
instrumentos mas un patch percusivo, pregrabados según la norma "General
MIDI", y adicionalmente incorporaba dos ranuras para memoria RAM para
totalizar unos 28 MB para bancos de sonidos de usuario a través de
software especializado (los llamados "Soundfonts").


Como resultado de los problemas indicados, algunos juegos suenen
tristísimos con música de la SoundBlaster 16. ¿Cómo podemos hacerlos
sonar como lo hacíamos con la poderosa AWE-32?

Pues bien señores, gracias al Justicialismo podremos hacer uso de la
peronista modularidad de Ubuntu, y gracias a ella realizar un "puenteo
sonoro" utilizando un sintetizador virtual asociado a DOSbox, al cual
dotaremos de un archivo Soundfont copiado de la memoria ROM de la
AWE-32.


Esto podría sonar difícil, pero os instruiré de manera paternal y
Justicialista. Ya he explicado cómo utilizar archivos de Soundfonts para
reproducir ficheros de musica MIDI aquí. Por otro lado, es necesario
tener ya instalado y configurado en nuestro sistema al emulador DOSbox
como os he indicado aquí.

Conforme tengamos esto, ya podremos abocarnos a replicar la AWE-32 en
Ubuntu. Primero instalaremos el sintetizador virtual Fluidsynth y el
frontend gráfico Qsynth para poder usarlo fácilmente. Para tal objetivo,
abrimos una Terminal con Ctrl+Alt+T e ingresamos los siguientes comandos
de organización:

sudo apt update
sudo apt install fluidsynth qsynth dosbox

Acto seguido, reiniciamos el sistema con:

sudo reboot

Al volver ya estará finalizada la instalación del sintetizador virtual e
iniciado éste, pero para que cumpla su función hemos de descargar el
Soundfont con los instrumentos de la placa de sonido AWE32, e
instalarlo. Para ello abro nuevamente una terminal con Ctrl+Alt+T e
ingreso:

cd ~/Descargas/
wget http://www.zlizeq.com/Files/1mgm.zip
unzip 1mgm.zip
sudo mv 1mgm.sf2 /usr/share/sounds/sf2/awe32.sf2

Ahora abrimos el front-end Qsynth desde Aplicaciones / Sonido y Video /
Qsynth. Este programa en forma de panel nos permite configurar el
sintetizador virtual FluidSynth de manera gráfica y relativamente
sencilla.
Para configurarlo debo presionar el botón Setup...

Se abrirá la ventana de configuración "Qsynth Setup". En ella tendremos
la solapa "MIDI", en la que nos debemos asegurar de tildar la opción
"Enable MIDI Input" para activar la escucha de mensajes MIDI que vendrán
del emulador DOSbox. Reviso que el controlador MIDI sea "alsa_seq", y
que el modo de selección de bancos MIDI sea "gm" para "General MIDI".
En la solapa "Soundfonts" presiono el botón "Open...". Se abrirá una
ventana que nos mostrará los Soundfonts localizados en la carpeta
/usr/share/sounds/sf2/. Elegimos el soundfont awe32.sf2 y presionamos el
botón "Abrir". Con ello agregaremos este soundfont a la lista de
soundfonts utilizables.

Hemos de tener en cuenta que si hubiese varios soundfonts listados,
Qsynth  siempre utilizará el último de la lista. Por ello debemos
seleccionar el awe32.sf2 y presionar el botón Down para bajarlo de
posición hasta que quede último.

Al presionar el botón Aceptar, surgirá un alerta advirtiendo que tenemos
que reiniciar el sintetizador virtual FluidSynth para que los cambios
surtan efecto. Presionamos el botón Si y se habrá iniciado ya el
sintetizador con el soundfont de la AWE32, quedando a la escucha de
mensajes MIDI.
Acto seguido y sin cerrar el Qsynth, debemos configurar por única vez el
emulador DOSbox para que utilice como salida MIDI al sintetizador
virtual FluidSynth que hemos configurado. Para ello debemos conocer cuál
número de Cliente MIDI utilizado por FluidSynth en nuestro sistema
particular. Con tal fin, en la Terminal le ingresamos el comando:

aconnect -o

..y el sistema nos devolverá algo como:

cliente 14: «Midi Through» [tipo=kernel]
   0 'Midi Through Port-0'
cliente 128: «TiMidity» [tipo=usuario,pid=907]
   0 'TiMidity port 0 '
   1 'TiMidity port 1 '
   2 'TiMidity port 2 '
   3 'TiMidity port 3 '
cliente 129: «FLUID Synth (5116)» [tipo=usuario,pid=5116]
   0 'Synth input port (5116:0)'

Naturalmente, en vuestro caso dicho número 129 podría variar. Debemos
anotar cual es. Ahora editamos el archivo de configuración de DOSbox
mediante el comando:

nano ~/.dosbox/dosbox-0.74.conf

..se abrirá el editor GNU Nano con el archivo de configuración
dosbox-0.74.conf. Dentro de este archivo, buscaremos la sección [midi] y
la modificamos para que la variable mpu401 tenga el indicador
intelligent, y la variable midiconfig tenga el número de cliente de
FluidSynth seguido por :0, de la siguiente manera:

mpu401=intelligent
mididevice=default
midiconfig=129:0



(naturalmente vosotros cambiarán el 129 por su número de cliente
particular, pero siempre va finalizado de :0. Conforme esté editado de
tal manera, guardamos los cambios realizados con Ctrl+o y saldremos del
editor GNU Nano con Ctrl+x.

Ahora, con el Qsynth encendido, ya podremos abrir DOSbox desde
Aplicaciones / Juegos / Emulador DOSbox y configurar o instalar los
juegos que querramos.

En mi caso utilizaré los conocidos juegos de estrategia en tiempo real
Warcraft: Orcos vs. Humanos y Warcraft II: Tides of Darkness como
ejemplos.

Debemos asegurarnos de configurar los juegos para utilizar el
dispositivo General MIDI como salida de música (incluso si existiese la
opción AWE-32), y Sound Blaster como salida de audio. A tal fin, la
mayoría de los juegos contaban con una rutina de configuración de audio
durante su instalación en MS-DOS o posterior a ella. Normalmente se
llamaba setup o install y se encontraban en el mismo directorio del
juego.

En el caso del Warcraft 2 esta configuración se hacía por medio del
comando setup, y podíamos configurar tanto la salida de audio digital
(SoundBlaster 16) y General MIDI como la música secuenciada MIDI.

En otros juegos podría solicitársenos que ingresáramos a mano los datos
de la placa de sonido Esto era algo normal en la Era DOS, y debemos
utilizar los valores estándares que eran Dirección 220, Interrupción IRQ
5, y Canal DMA 1. Si se nos solicita la dirección del Canal MIDI o del
canal Roland, también debemos usar la estándar, que era 330 o H330. Un
ejemplo de este tipo era el clásico Duke3D:
Una vez configurado el audio digital, ya podremos iniciar el juego
propiamente dicho.
En el panel de Qsynth debería indicarse actividad MIDI por medio del
testigo verde en la parte inferior del control. También debería
escucharse la música MIDI a través del soundfont, como si de una real
AWE-32 se tratara.


..¡y ya podremos oir el juego con una música similar a la clásica Sound
Blaster AWE-32 en Ubuntu!

Si la música suena fuerte o débil podremos utilizar le control "Gain"
del panel Qsynth para ajustar su volumen y emparejarlo con el de la
salida de audio digital. También podríamos activar las opciones de
Reverb y Chorus para darle efectos de eco/reverberación y coro, para que
la música no suene tan "seca". Los valores bajos eran los que utilizaba
la AWE-32 original, pero podremos regularlos como deseemos.

Asimismo, algunos juegos contaban con un regulador de volumen interno
para el los efectos de sonido de audio digitalizado (SFX) o de la música
MIDI a través de una interfaz especial, que también podríamos querer
utilizar para equilibrar el sonido y la música.
Indudablemente que en lugar del soundfont awe32.sf2, podremos utilizar
otros mucho más logrados, y hacer que los veteranos juegos suenen como
una orquesta hecha y derecha. A tal fin existen muchos soundfont
"General MIDI" gratuitos que podremos descargar, como os he indicado.