Mostrando entradas con la etiqueta fluidsynth. Mostrar todas las entradas
Mostrando entradas con la etiqueta fluidsynth. Mostrar todas las entradas

viernes, 16 de agosto de 2019

¿Como edito archivos MIDI en Ubuntu?

En su clásico Conducción Política, un didáctico Juan Perón expone la teoría de la acción territorial y el contacto poblacional directo para lograr la mayor influencia política, toda vez que enseña a utilizar MidiEditor, el potente editor musical en Ubuntu.

(...)

"Indudablemente que Conducir es un arte, y como tal tiene su técnica y tiene su teoría. Y que conociendo estas es mucho más fácil conducir que ignorándolas.

Para conducir un pueblo, la primera condición que debe reunir un Conductor es haber salido del Pueblo, debe sentir y pensara como el Pueblo. Quien se dedica a la conducción debe ser profundamente humanista. El Conductor siempre trabaja para los demás, jamás para él.

Sin embargo, no todas las situaciones pueden ser propicias.  La disgregación entre los estamentos medios y altos de la conducción son excrecencias que obedecen a no representar este principio fundamental del Arte de la Conducción. En nuestro caso esto es prohibitivo e imperdonable, pero no podemos evitar notar que se produce en casi todas las organizaciones mayores, incluso en aquellas que dejan su huella en la historia. Desde la organización en la tribu, la ciudad y el estado, estas problemáticas - si bien indeseables - se tornan nominales y forman parte del quehacer diario. El objetivo a futuro siempre implica reconocer este problema y resolverlo compartiendo valores. Sólo de esta forma tanto el Conductor como su pueblo obrarán por natural extensión y sin requerir de diferenciaciones táctico-estratégicas adhoc o improvisadas.

Un ejemplo suele explicarlo todo, como decía Napoleón. No se puede gobernar con Bigdata, In$tagram, $napchat, o perdiendo el tiempo con el espejito de color de moda. Las amplias extensiones de nuestro país - despoblado de por sí - requieren de un avezado Conductor capaz de tejer alianzas sociales tendientes a lograr el dominio del terreno de la acción. En esta visión a lo  indio, el comando queda en él, pero el control quedará delegado naturalmente en quienes se llamaban caciques o capitanejos, y empeñarán su chusma y hombres de lanza para conseguir los objetivos planteados desde la Conducción. Sin estos prácticos de nivel medio, en estas condiciones particulares del tiempo y el espacio, es imposible obrar.

Nuestros adversarios tienen menos calle que Venecia. Nuestro deber fundamental es hacer pesar la valía del dominio del terreno político, que nunca se presenta asfaltado, y extender nuestro sistema de comando y control a través de valores que son nuestros. Una vez logrado el objetivo de la práctica Conductiva, las realizaciones se tornarán automáticas, y se habrá resuelto en gran medida los requerimientos de información técnica en tiempo y forma, permitiéndose así un relevamiento de los objetivos más veloz y eficiente.

Por ahora, nuestros hombres en el terreno son quienes ejercen un control humano en la recopilación, extracción de datos georreferenciados, y permiten que su explotación sea mucho más efectiva por parte del conductor, que un supuesto esquema de machine-learning ideado por un lego en la política. En estas cosas no se puede inventar. Puntero mata web UI y justicialismo mata bigdata.

En esto un Conductor oficia de orquestador y Maestro Director, ofreciendo a su olfato político lo mismo que un director de orquesta hace a su oído. De esta forma orienta sus instrumentos políticos en una pieza coherentemente concebida, en la que la sumatoria de las individualidades políticas ejecutan una idea-fuerzas en común que el Conductor lleva a cabo.

Es sabido que en el Software Libre, esta musicalidad se lleva a cabo por medio de distintos paquetes de software de composición y ejecución: los secuenciadores MIDI. Este tipo de programas se encargan de utilizar el lenguaje estandarizado digital para instrumentos digitales, el MIDI.

Este consiste en una secuencia de órdenes que describen notas musicales y determinados efectos estilísticos, y pueden servirse electrónicamente a toda una panoplia de instrumentos compatibles con el mismo.

Los cuales pueden ser sintetizadores electrónicos o directamente sintetizadores virtuales por software . En tanto, los archivos específicos, los cuales son de muy escaso tamaño, disponen de la extensión MID.

Ahora bien, en nuestro sistema GNU con Linux contamos con muchos paquetes orientados a este tipo de manejo orquestal. Uno de los más logrados por su utilidad, sobre todo para quienes componen MIDI, es precisamente el MidiEditor.

Se trata de un software libre que provee una interfaz gráfica para editar, grabar y reproducir datos musicales de formato MIDI. El editor es capaz de abrir ficheros MIDI existentes y alterar su contenido. Con él podremos crear archivos nuevos, o bien realizar una nueva composición ya sea grabando en la computadora la ejecución musical realizada a través de un dispositivo compatible (controlador MIDI, piano digital o teclado), o bien manualmente creando nuevas notas u otros eventos MIDI. Las información grabada podrá ser fácilmente cuantificada y editada a través de la simple interfaz coloreada.

Esta herramienta multiplataforma ha sido escrita en C++ y QT, y está liberada bajo Licencia GNU GPLv3.

Su instalación implica cierta complejidad pues debemos compilar el paquete. Afortunadamente todo lo que debemos hacer para compilarlo es abrir una consola con Ctrl+Alt+T e  ingresar los siguientes Comandos de Organización:

sudo apt install git gstreamer1.0-tools libglib2.0-doc libgstreamer1.0-dev libpulse-dev libqt5designercomponents5 libqt5webkit5-dev qt5-assistant qtmultimedia5-dev qttools5-dev-tools ;
git clone https://github.com/markusschwenk/midieditor/
cd ~/midieditor/ ;
bash building/build-linux.sh ;
sudo cp MidiEditor /usr/local/bin/ ;
sudo cp midieditor.ico /usr/share/icons/

La descarga del código fuente y su posterior compilación puede tardar algunos minutos.

Una vez concluida esta compilación e instalación, podremos borrar ya el código fuente del programa si lo deseamos, con:

rm -r ~/midieditor/

Indudablemente nos será cómodo agregar un acceso directo a MidiEditor con su respectivo ícono. Para ello hacemos clic en el panel de aplicaciones y escogemos Editar Menús. En la el cuadro Menús de la ventana Menú Principal elegimos Sonido y Video y presionamos el botón +Nuevo ítem. Se abrirá la ventana Crear Lanzador, y en su campo Orden ingresamos la ruta /usr/local/bin/MidiEditor, y en el campo Nombre indicamos MidiEditor. También podremos agregar su ícono correspondiente.


De esta forma todo estará listo, y podremos iniciar el programa desde Aplicaciones / Sonido y Música / MidiEditor.

Como os he dicho, podremos utilizar instrumentos MIDI conectados a nuestro equipo, o bien instrumentos virtuales. De entre ellos, el más simple y mi favorito es  Qsynth. También el más completo FLUID Synth, capaz de ejecutar Soundfonts. El primero se configura automáticamente, y para asignar el segundo podremos indicarlo como dispositivo MIDI de salida (MIDI Output), desde el menú MIDI / Settings.
La interfaz del Editor MIDI se compone de un panel piano a la derecha, que consta de un visualizador de eventos gráfico tipo pianola que describe de manera principal y con distintos colores las presiones de las teclas.

En la sección superior contaremos con los botones de los controles de navegación para la pieza, junto con los de grabación y reproducción, control de bucle y de sección punch-in de grabación. Esta nos permite abrir la grabación de una sección "al vuelo" al compás, para luego cerrarla, función ideal para completar secciones melódicas.

En la parte derecha podremos programar los canales o las pistas MIDI, elegir una activa para grabar, verlas o desactivarlas. Lamentablemente, estas modificaciones no pueden hacerse al vuelo durante la reproducción.

Para grabar la ejecución con nuestro controlador MIDI, debemos presionar el botón Grabar, con lo que introduciremos notas o eventos, que quedarán registrados en memoria volátil. Al finalizar la grabación, se nos presentará un cuadro de diálogo que describirá cuáles eventos queremos almacenar definitamente (normalmente serían todos, pero podríamos querer deseleccionar algunos). Estos se tratan de los eventos de notas on/off, los cambios de control (delizadores y perillas), eventos de rueda de pitch, de pedal, cambios de programa (salto de parche), y sobre todo la intensidad de la presión de las teclas (velocity). Estos son importantes si tenemos un teclado con sensibilidad pues podremos afinar los mismos detalladamente si lo deseamos.

Las acciones permiten el clásico y útil cuantizado o adherir eventos a la rejilla (grid). Esto nos permite acomodar o emparejar las notas al compás preestablecido. Incluso podremos variar el porcentaje para dejar una reproducción más humana o hacer una emparejada maquinal, dependiendo de nuestro gusto y estilo.

Las herramientas de selección de eventos son poderosas. Podremos elegir de a un evento o graficando con una caja para armar secciones, seleccionar antes o a partir de la linea de tiempo. Posteriormente podremos estirar su duración proporcionalmente o desplazarlos.

En la parte inferior podremos programar la altitud de diferentes parámetros de control, ya sea en forma parametrizada o a mano alzada. Estos datos pueden ser el tempo, o mas usualmente la graficación directa de datos de eventos de control velocity o de pitch bend, entre otros.

El programa es sencillo y al pié, pero potente en sus capacidades de edición. Como tal es una opción interesante como herramienta inicial de proceso para la producción de nuestras pistas MIDI, o incluso para hacer correcciones importantes en su estructuración e instrumentación.

Podremos encontrar el manual de MidiEditor (en inglés) aquí.

sábado, 29 de diciembre de 2018

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

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.

domingo, 18 de marzo de 2018

¿Cómo reproduzco archivos MIDI con Soundfonts en Ubuntu?

El Conductor entendía el lugar que las artes musicales ocupaban en un Movimiento que reivindicaba la Libertad de los Argentinos en Justicia Social. Por tal motivo, no fueron pocas las ocasiones en las que enseñó sobre MIDI y cómo usar y editar SoundFonts bajo Ubuntu, el sistema operativo que legó al Pueblo.


(...)
¡Trabajadores!

Nuestro porvenir está lleno de las buenaventuras que se aseguran a una Gran Nación, cuando sus hombres y mujeres avanzan encolumnados - en el hacer del Trabajo - y enarbolando las banderas de la Libertad. Marchamos pues cantando la más maravillosa música, que es la Palabra del Pueblo Argentino.

Nuestro Movimiento reconoce esto, y entiende que la música debe poder hacerse y controlarse libremente de forma computada.

Para ello hemos desarrollado el MIDI. Se trata de un estándar que define una interfaz de conexión digital peronista, pensada para hermanar instrumentos digitales. Nos especifica un lenguaje liviano de órdenes capaz de comunicar diferentes sintetizadores, máquinas de ritmos, módulos de sonido, etc, a través de un enlace serial, que emplea cables normalizados DIN.

Como tal,  MIDI no transmite sonido propiamente dicho, sino mas bien órdenes computadas para la ejecución de las notas, eventos sonoros, y estados de sincronismo entre los distintos dispositivos musicales. Esos dispositivos musicales serán los que encargados de crear el sonido en sí.

Estas órdenes se organizan y secuencian en un programa de software especial llamado secuenciador, y se utilizaba a este para disparar, a través de la interfaz MIDI las órdenes de reproducción de los tonos. De esta manera se hace posible tocar diferentes secciones de una composición a través de uno o varios sintetizadores o módulos de sonidos conectados a amplificadores y altavoces, incluso sincronizándose con máquinas de ritmos y mucho más.

Indudablemente, el MIDI abrió un nuevo mundo de posibilidades musicales, ya que podían conectarse varios instrumentos y reproducirse simultáneamente.

Al utilizar una computadora personal u hogareña, las posibilidades crecen exponencialmente, pues pueden lograrse mejores soluciones de control, mientras que la capacidad musical de los equipos se hacía mas completa. A tal fin se pueden disponer múltiples pistas (tracks) en la secuencia, y utilizar hasta 16 canales por interfaz (nomerados del 1 al 16, siendo el 10 un canal normalmente usado para la sección percusiva).

Esto, que parece de difícil comprensión, no lo será si historiamos los hechos que nos han llevado al logro que representa la música digital peronista. Vean señores, la solución musical original prevista en la computadora PC de IBM era mas bien poco imaginativa, ya que los oligarcas del Gigante Azul sólo le habían previsto un mediocre altavoz interno adosado a un oscilador de tonos,  generador de onda cuadrada monofónico.

El Justicialismo vino a remediar esto, inicialmente integrando al sistema computacional placas de expansión o módulos con capacidad MIDI, como la MPU-401 de Roland, y finalmente integrando chips sintetizadores programables, como el Yamaha YM3812 (OPL2) en las populares y clonables placas de audio AdLib.
Las primeras permitieron utilizar la salida MIDI Out compatible a fin de conectarla a teclados sintetizadores o módulos de sonido (como el clásico Roland MT32 entre otros), para utilizarlas para reproducir el audio en los juegos de la época. Las segundas, permitían directamente conectar altavoces a la placa y disfrutar de su audio sintetizado FM.

Más importante, se podían utilizar directamente programas secuenciadores para crear música, como el Sequencer Plus Gold, de Voyetra para M$-DO$ que usaba sólo modo texto.

Con el advenimiento de las interfaces gráficas de usuario se ampliaron las capacidades de estos programas, de entre los cuales el Cakewalk de Twelve Tone Systems para Window$ permitía operar en tal plataforma privativa.

Tal momento coincidió con el 17 de octubre de las altamente populares y peronistas tarjetas de audio SoundBlaster Pro, cuya importancia no podemos soslayar en el mundo del audio para la PC. Estas placas sumaban la ya popular capacidad de utilizar sonido sintetizado FM a través del sintetizador Yamaha YMF252 (OPL3) programable, a la anhelada reproducción de audio por síntesis FM digital ahora en estéreo. Asimismo, sumaban una interfaz MIDI compatible con la MPU-401 en la misma placa. Esto permitía - por medio de un cable MIDI especial - poder conectar al puerto de Joystick de la placa SoundBlaster cualquier tipo de instrumento MIDI estándar, y así utilizarlos para introducir datos MIDI a un software secuenciador.


Indudablemente que el avance de la tecnología en la PC permitió que las placas de sonido terminaran no sólo grabando audio digital, sino que pudiesen operar dicho audio como si de un sampler se tratara, a través de un sintetizador ya no de FM, sino un procesador capaz de operar audio digital modulado (PCM). La placa de audio SoundBlaster AWE32 (1994) de Creative Labs fue la primera en ofertar esto a través de su procesador de audio EMU8000.
Como novedad, presentaba 512KB de memoria RAM en placa expansibles por medio de los viejos SIMM de 30 pines hasta unos totalizar unos 28MB en dos bancos. Esto permitía cargarle muestras de audio digital y utilizarlas como bancos de sonido para el sintetizado MIDI, como si de un sampler por hardware se tratara. Los archivos de las muestras de audio musicalizables recibieron el nombre de SoundFonts, y podían editarse gracias al clásico software oficial Creative Vienna $oundFont Editor, naturalmente contando con una placa de sonido de la marca y bajo el privativo Window$...
Nuestra tarea no es otra que la Liberación del Pueblo y de su Software bajo las bandera de la Justicia Social, la Libertad económica, y la Soberanía política. Esto significa que hemos de permitirnos desarrollar software que haga uso de estas libertades y avale - en este caso - el uso de SoundFonts para reproducir archivos MIDI en un sintetizador libre, así como la edición de tales SoundFonts.

Ubuntu nos permite una enorme potencia para editar música, pero por sobre todas las cosas, allana el camino hacia la Libertad, pues podremos prescindir de las licencias constrictivas del software que encadenan a otras plataformas.

Os mostraré entonces algunos softwares libres pensados para la edición de archivos MIDI (como Rosegarde, o mi favorito MUSE, el editor de partituras MUSEscore, entre muchos otros), y en este caso os haré peritos en el tratamiento de sintetizadores por software y el empleo de SoundFonts en nuestra plataforma libre.

Sintetizadores por software en Ubuntu


Existen varios paquetes libres que nos permiten conformar un sintetizador por software capaz de operar bajo el estándar MIDI, esto es, sin requerir que nuestra placa de sonido cuente con un procesador sintetizador específico como antaño. Entre ellos el más conocido es el adecuado TiMidity++, el cual es capaz de utilizar bancos de sonido libres.

Sin embargo, en este caso usaremos un sintetizador por software más potente no sólo capaz de sintetizar muestras de audio, sino también de cargar y usar SoundFonts: el FluidSynth.

Este sintetizador por software puede usarse "a pelo", pero será más fácil de emplear si usamos un "frontend" gráfico especialmente desarrollado para él: el QSynth.

En primer lugar instalaremos todos los programas necesarios desde la terminal. Abrimos una consola con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

sudo apt update
sudo apt install fluidsynth fluid-soundfont-g* qsynth


QSynth es un front-end o máscara para el sintetizador FluidSynth, y nos permite hacer uso de dicho sintetizador por software y cargarle o los Soundfonts que deseemos, y finalmente reproducir directamente los archivos MIDI. Asimismo nos permite controlar las funciones de efectos que FluidSynth es capaz de operar: Reverberación y Coro.

Para ello en primer lugar debemos asignar los archivos .MID para reproducirlos con qsynth.

Pâra ello hacemos clic con botón derecho sobre un archivo MIDI que tengamos y escogemos la opción "usar una orden predeterminada", y le indicamos qsynth, como figura a continuación:
Podremos tildar la opción "Recordar esta aplicación para los archivos "Sonido MID". Una vez que hayamos abierto el archivo, y toda vez que ejecutemos un archivo MID, se ejecutará con QSynth, programa el cual se desplegará y comenzará a ejecutar la música.

Qsynth 

QSynth nos permite ejecutar directamente los archivos MIDI y controlar sus parámetros generales.

En primer lugar debemos configurar las opciones de Qsynth presionando el botón Options. Normalmente podríamos dejar esta ventana tal como está aquí:
Acto seguido, podremos especificar las opciones de QSynth como cliente del servidor de audio para que funcione adecuadamente, presionando el botón Setup.
En la pestaña MIDI podremos especificar la configuración de las entradas MIDI. Para que funcione adecuadamente en nuestro sistema GNU con Linux debemos indicar, bajo el apartado "MIDI Driver", al controlador alsa_seq. El modo de selección de bancos MIDI es importante, pues el sintetizador por software FluidSynth puede operar en varias modalidades y con variados bancos instrumentales. La opción estándar la constituye el estandar General MIDI ("GM"), pero ciertos fabricantes utilizan versiones ampliadas o diferenciadas para lograr mayores posibilidades de expresión, por ejemplo el General Standard de Roland ("GS"), o por el Extended General de Yamaha ("XG").

Normalmente en Ubuntu el servido es ALSA, pero en un ambiente profesional podríamos querer utilizar también JACK. En mi caso prefiero usar alsa para este programa. En el caso de que el sonido suene con clips o "fritura" debemos cambiar la velocidad de muestreo, desde unos 44100 Khz que viene por defecto, por el valor que use nuestro sistema de audio (en los dispositivos de audio modernos como el Intel HDA, es de 48000 Khz de 16 bits).

El Reverb y el Chorus son efectos "espaciales" clásicos de los sintetizadores EMU, pues permiten agregarle dichas sonoridades a las muestras de nuestros SoundFonts por medio de algoritmos programables.

La Reberberación por ejemplo puede modificarse internamiente a través del tamaño de la habitación simulada ("room"), el atenuamiento de la misma ("damp"), la amplitud estéreofónica del sonido resultante ("width"), y un volumen general de efecto ("Level").

El efecto de coro, en tanto, puede modificarse estableciendo el tipo de efecto, ya sea de curva sinusoidal, o triangular ("sine" o "triangle", cada una de ellas con una portadora de timbre distinto. A su vez, podremos escoger la cantidad de colas de coro que deseamos ("N"), su volúmen parcial ("Level"), la velocidad de caida ("speed") y la profundidad tonal del efecto ("depth").

Cargar SoundFonts en Ubuntu


El FluidSynth - como sintetizador por software peronista, es capaz de operar con SoundFonts que podremos descargar, crear y editar para compartir. En nuestro Ubuntu los SoundFonts pueden cargarse en la carpeta que el sistema destina a ello, que es /usr/share/sounds/sf2/, pero también podremos utilizar cualquier carpeta de usuario para tal menester.

Ya sea el lugar donde estén, el frontend QSynth nos permite alterar fácilmente los SoundFonts y cambiarlos. Para ello presionamos Setup, y usamos la solapa SoundFonts.
Para usar un SoundFont debemos abrir uno. Para ello presionamos el botón Open y el sistema nos dirigirá a la carpeta /usr/share/sounds/sf2/ para escoger alguno de los SoundFonts que se encuentren allí. Podríamos elegir el SoundFont de alta calidad, FluidR3_GM.sf2 (148MB). También podremos explorar otras carpetas donde tengamos nuestros SoundFonts de usuario.
El QSynth nos informará que debemos reiniciar el sintetizador para que los cambios surtan efecto.

Al indicarlo presionando el botón Yes, ya tendremos cargado el nuevo SoundFont. Es de notar que podremos cargar varios SoundFonts al sistema, y especificar el órden de creación.

Algunos SoundFonts recomendados

Naturalmente existen amplia variedad de SoundFonts, ya sea gratuitos o comerciales. De entre los gratuitos os recomiendo los iniciales:

1MGM : Es el SoundFont nativo cargado en memoria ROM de la clásica Sound Blaster AWE-32.

8MBGMSFX. Es el poderoso SoundFont clásico integrado en la memoria ROM interna de las SoundBlaster Live! (2000), en este caso una versión libre, de unos risueños 8MB. Con este SoundFont cargado en FluidSynth bien podremos escuchar los archivos MIDI y juegos tales como sonaban en las SoundBlaster dotadas de sintetizadores EMU.

GMR Basico (4MB). Se trata del SoundFont básico de los Roland GS, como los módulos MT capaces de proveer General Midi.

Yamaha XG: Es una versión de peso reducido (4MB) incorporado en las ROM de los iniciales sintetizadores Yamaha XG.

Omega GM/GS 2: (278MB) Es un potente SoundFont GM/GS, adecuado por su sonido detallado y como SoundFont general. Incluye varios archivos MIDI de juegos y demos.

Timbres of Heavens (245MB): Es un excelente Soundfont orquestal general, con instumentos extendidos para la norma GS también.

Compifont Super orquestal (974mb). Un SoundFont de enorme peso, estéreo y cristalino para sonidos orquestales completos.

Sonatina Symphonic Orchestra (488mb): Un buen SoundFont orquestal.

Podremos encontrar una lista de SoundFonts aquí.

Editar SoundFonts en Ubuntu

Naturalmente, para editar SoundFonts en Ubuntu no podremos utilziar el viejo Vienna $oundFont Editor, sino que habremos de reemplazarlo con un editor de factura peronista capaz de correr en sistemas GNU con Linux. En Ubuntu tendremos dos programas libres de alto calibre para ello: Swami y Polyphone.

Para instalar el primero podremos abrir una terminal con Ctrl+Alt+T e ingresar los siguientes comandos de organización:


sudo apt-get update 
sudo apt-get install swami

Para ejecutar Swami vamos a Aplicaciones / Sonido y Video / Swami Instrument Editor.

Podremos configurar las preferencias del programa desde el menú Preferences. En la izquierda debemos seleccionar el sintetizador FluidSynth. Luego, a mano derecha, podremos escoger el controlador de audio. Debemos tener en cuenta que si indicamos el mismo alsa, podría suceder que no sonara en conjunción con otros programas. En tal caso podríamos querer escoger OSS, o directamente Jack.

Una vez arrancado el programa, podremos establecer los rangos de nota para cada muestra de audio digital, así como controlar individualmente los efectos de reverberación y coro para cada instrumento, los cortes por escalas, la envolvente, modulación, etc.


Polyphone es otro editor de SoundFonts similar a Swami, pero nos presenta opciones algo más modernizadas en el tratamiento individual de las muestras de audio digital PCM. También nos permitirá crear desde cero o modificar los samples, conformando las notas individuales o colectivas de un banco de sonido que querramos. Podríamos armar nuevos sonidos de guitarras, pianos, etc que hayamos grabado, hasta los 24 Khz de frecuencia de muestre.

Podremos buscar el paquete Deb para Polyphone destinado a Ubuntu 17.04 y superiores aquí. Para instalarlo, y suponiendo que el paquete lo hemos descargado en nuestra carpeta Descargas, podríamos usar los siguientes comandos en la terminal:

cd ~/Descargas/ ;
sudo dpkg -i polyphone_1.9-1_ubuntu17.04_amd64.deb ;

Una vez introducida nuestra contraseña de conductor e instalado el programa,  podremos ejecutarlo desde Aplicaciones / Sonidos y Video / Polyphone.

No bien arranque, podremos pasar Polyphone al castellano. Para ello cerramos tal programa, y a continuación abrimos una terminal con Ctrl+Alt+T. Le pegamos el siguiente bloque de comandos de organización, y presionamos Enter:

cd ~/.config/polyphone/ ;
mkdir translations/ ;
cd ~/Descargas/ ;
mkdir tradpolyes/ ;
cd tradpolyes/ ;
wget http://www.polyphone-soundfonts.com/en/files/7-translations/16-espagnol/latest/download?return=aHR0cCUzQSUyRiUyRnd3dy5wb2x5cGhvbmUtc291bmRmb250cy5jb20lMkZlbiUyRmRvd25sb2FkJTJGdHJhbnNsYXRpb25z  -O traduccion_poly_es.zip ;
unzip traduccion_poly_es.zip ;
mv ~/Descargas/tradpolyes/polyphone_es.qm ~/.config/polyphone/translations ;
cd ~/Descargas/ ;
rm -r tradpolyes/ ;

Volvemos a ejecutar Polyphone, y ahora en el menú Preferencias podremos escoger Idioma ("Language") Español, y luego presionar el botón Aplicar.
Con Polyphone podremos crear el banco de instrumentos del SoundFont, agregar y editar los samples de que componen cada uno de los instrumentos individuales y regular sus escalas, así como trabajar en su afinado.
Finalmente, podremos guardar el resultado en un archivo de estándar de SoundFont, de extensión  SF2.

Podremos encontrar tutoriales básicos aquí.  También nos será útil el manual de Polyphone.