¿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.