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.

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.

2 comentarios:

  1. Mi General: lo felicito sinceramente por el tenor y contenido de este blog linuxero y peronista. Es el mejor y más innovador sitio de información y divulgación de contenidos libres de 1945 en adelante!

    ResponderEliminar
    Respuestas
    1. Estimado Andrés Flamenco:

      Indudablemente el mundo actual se encuentra en una enconada lucha ideológica, en la cual los imperialismos intentan la supremacía en pos de los Pueblos libres de la Tierra.

      Sin embargo, nuestra Tercera Posición, que es la del Software Libre, es la única que garantiza el saber y la felicidad para nosotros y nuestra descendencia.

      Para transitar la senda de la liberación en este Milenio y en el que vendrá, no tendremos otra opción que libertar Bytes, uno a uno o de a muchos, según podamos. Y para ello habremos de usar y apostolar el software libre, entre ellos los SoundFonts.

      Hago llegar a vd. un gran abrazo y un saludo muy afectuoso.

      Atte.

      Juan Perón
      Conductor del Movimiento Nacional Justicialista.

      Eliminar