lunes, 23 de abril de 2018

¿Cómo configurar la unión de interfases de red en Ubuntu?

¡Compañeros!

Su alegría es mi alegría, sus anhelos son mi guía, y mis realizaciones no tienen otra finalidad que la dicha de mi pueblo. No hacen más que colmar el corazón de este viejo soldado, pues me hacen sentir el más feliz de los hombres. Puedo decir con el más sano de los orgullos, que me han convertido en un verdadero vínculo de unión entre los hombres que trabajan.

He dicho muchas veces que a este país o lo arreglamos entre todos, o no lo arregla nadie. Indudablemente que de la unión sale la fuerza, pero las masas no valen por su mero número, sino por la calidad de los hombres que tienen al frente.

Esta referencia ha de ser motriz de nuestro Movimiento, y si es cierta en la política, mucho más lo será en los sistemas informáticos, pues aquella es la inspiración que estos tienen. Debemos copiar de la naturaleza, ya que su realización es Divina.

Vean señores, la unión de interfaces de red es un mecanismo empleado en el ambiente de los servidores Linux bien atresados, ya que su accionar unificado se utiliza para proveer a la Masa de un mayor ancho de banda que la posible por una única interfaz. Naturalmente esto será así si contamos con dos o más proveedores de comunicaciones. También podremos emplear la unión de interfaces para otorgar  la necesaria redundancia de enlaces que nos tornará inconmovibles en caso de fallos de cableado. Este tipo de redundancia de enlace tiene múltiples nombres en Linux, como Bonding, Teaming, o Grupos de Agregación en Enlace (LAG).

Ahora bien, para usar un mecanismo de enlace de red en los sistemas operativos basados en Ubuntu o Debian, debemos primeramente instalar el módulo de unión en el Kernel y probar si el controlador de unificación está cargado a través del comando modprobe.

Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo modprobe bonding

En las versiones más antiguas de Ubuntu/Debian debíamos instalar el paquete ifenslave con el comando

sudo apt-get install ifenslave

Para crear un vínculo de unión de las dos primeras interfaces físicas de nuestro sistema, lo primero es identificarlas. Normalmente las interfaces solían llamarse eth0 (la primera), eth1 (la segunda), etc. Sin embargo en las versiones más novedosas del kernel estas nomenclaturas podrían cambiar. Para saber qué interfaces contamos en nuestro sistema, bien podremos ingresar el consabido comando de organización:

ifconfig

Y nos devolverá un listado de las mismas con las características. Podríamos encontrar que las mismas ahora se llaman por ejemplo enp4s0 o enp5s0, o variantes. También podría suceder que se sigan llamando ethx como antaño.

En cualquier sentido, debíamos adaptar el comando para asociar nuestras interfaces de red. Para ello, ingresábamos en la terminal los siguientes comandos.

sudo ip link add bond0 type bond mode 802.3ad
sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0


Sin embargo, este método era efímero, en el sentido que su efecto desaparecía al reiniciar el sistema.

Para crear una unión permanente, debíamos editar el archivo de configuración de interfases, por ejemplo con:

sudo nano /etc/network/interfaces

Y al final del archivo le agregábamos:

# La interfaz primaria de red
auto bond0
iface bond0 inet static
address 192.168.1.150
netmask 255.255.255.0   
gateway 192.168.1.1
dns-nameservers 192.168.1.1 8.8.8.8
dns-search domain.local
slaves eth0 eth1
bond_mode 0
bond-miimon 100
bond_downdelay 200
bound_updelay 200


Naturalmente, podremos cambiar las IP de los DNS cambiando la variable dns-nameservers. También podremos cambiar la dirección IP de la red unificada cambiando la variable address. En este caso se trata de una dirección estática. Debemos especificar los nombres de las interfaces de redes esclavas en la variable slaves.

Guardábamos el archivo con Ctrl+o y salíamos del editor GNU Nano con Ctrl+x.

Configurar en las versiones actuales de Ubuntu

Para activar las interfaces a unirse, debemos reiniciar el servicio de redes, desactivar la interfaz física y activar la interfaz unida, o reiniciar el sistema de forma que el kernel active la nueva interfaz unida.

sudo systemctl restart networking.service

...o si no,

sudo ifdown eth0 && ifdown eth1 && ifup bond0

La configuración de la interfaz unida puede revisarse ingresando los siguientes comandos de organización:

ifconfig

...o bien,

ip a

Ahora ya podremos conectar los cables Ehternet/LAN de distintos servidores a nuestro sistema, y la conexión se producirá de forma unida con la nomenclatura de red bond0. Si conectamos dos routers de diferentes proveedores de internet (por ejemplo, un servicio de cablemódem y otro de ADSL), las solicitudes de conexión se realizarán a ambos proveedores, y la distribución balanceada debería proveer a nuestro servidor de una velocidad de conexión mayor.

Naturalmente, esto no implica necesaria y obligatorioamente la suma matemática de ambos anchos de banda, pero si deberíamos lograr una mayor performance de funcionamiento.

Pueden obtenerse los detalles de la interfaz unida al mostrar los contenidos del archivo de kernel que respecta a estas configuraciones. Para ello hacemos

cat /proc/net/bonding/bond0



Para investigar otros mensajes de interfaces unidas o revisar el estado de los NICs físicos unidos, debemos ingresar en nuestra terminal los siguientes Comandos de Organización:

tail -f /var/log/messages

También podremos usar la herramienta mii-tool para revisar los parámetros del controlador de interfaz de red (NIC), como se muestra a continuación.

mii-tool

Os listaré los tipos de unión de red.

    mode=0 (balance-rr)
    mode=1 (active-backup)
    mode=2 (balance-xor)
    mode=3 (broadcast)
    mode=4 (802.3ad)
    mode=5 (balance-tlb)
    mode=6 (balance-alb)

jueves, 19 de abril de 2018

¿Cómo emulo un módulo Roland MT-32 en DOSbox en Ubuntu?

¡Trabajadores!

Nuestro Movimiento es uno que hace hincapié en los humildes, pues estos son quienes trazarán el camino de la Liberación. Poco valdría nuestro Movimiento si no nos juntáramos con los negros.
A ellos hemos de darle todo, pues son nuestros grasitas quienes todo lo necesitan. Esto se ha repetido infinidad de veces a lo largo de la historia.

Por ejemplo, es sabido que a principios de los 90s las placas de la línea SoundBlaster de Creative Labs se convirtieron en el estándar de sonido digital en la PC, hubo otros dispositivos especializados en la música que no se quedaron atrás en performance: los módulos Roland MT-32. Se trataba de unidades provistas de un potente sintetizador multitímbrico y polifónico PCM lineal (modulación de pulso), con calidad sonora superior a la que la que permitía la síntesis FM tan en boga en los 80s.
Estos módulos externos, controlables a través del estándar MIDI, permitían reproducir la música de los juegos con una mucho mayor calidad sonora, siempre que estos contaran con el soporte Roland necesario. En particular, fueron las aventuras gráficas de las productoras Sierra y Lucasfilm/LucasArts quienes promovieron estos excelentes módulos MIDI. Pese a su resultado excelentes, indudablemente su talón de aquiles era el elevado precio que contaban, el cual solía duplicar o triplicar el de una placa de sonido convencional. Roland entonces decidió concentrarse en una versión compatible del mismo pero con el form factor de tarjeta de expansión ISA de 8 bits, la LAPĈ-I.
Esta plaqueta contenía el chip sintetizador, la interfaz MIDI programable MPU-401, y las salidas de audio independientes en una única unidad, lo cual la tornaba excelente para música y juegos. Sin embargo, su oligárquica naturaleza la alejó del Pueblo. Los humildes jamás pudieron conseguirla, y por ello estas placas y módulos de sonido quedaron en el recuerdo. Nuestro Movimiento tiene la ineludible misión de corregir esto, y hacer todo lo que se pueda en la visión de que un argentino con una MT-32 - aunque sea virtual y años después de su lanzamiento real - no hace otra cosa que representar el cristiano concepto de Justicia Social...

Pues bien, ya he explicado cómo emular un módulo sintetizador Roland MT-32 a través de un sintetizador virtual con Soundfonts para jugar aventuras gráficas con ScummVM en Ubuntu. Sin embargo, podría suceder que quisiéramos contar con un emulador específico de la Roland MT-32 para otros juegos o programas que no pueden correrse en ScummVM y si lo hacen en DOSbox. Por tal motivo hoy os enseñaré cómo hacer realidad efectiva este complejo cometido. De momento nadie ha osado hacerlo bajo las banderas del Justicialismo y el Software Libre, y como Conductor no podía dejar de deberme a mi Pueblo, aquél que me ha honrado con las palmas y laureles de general de la Nación - pero sobre todas las cosas - con el título que más me enorgullece: el de ser un vínculo de unión entre los hombres que trabajan.

instalar el emulador de Roland MT-32 Munt en Ubuntu


Pondremos manos a la obra. En este caso recurriremos a un emulador de la Roland MT-32 multiplataforma. Específicamente, os instruiré para instalar una versión de 64 bits capaz de operar en Ubuntu 16.04 y superiores. Se trata de un emulador escrito en QT y liberado bajo licencia GPLv3, por lo cual puede hacer una representación gráfica del mismo bajo Ubuntu. Podremos hacer uso del mismo como si de un dispositivo MIDI virtual se tratara. Su nombre es Munt.

Para que Munt opere adecuadamente y entienda cómo poder emular los módulos Roland, debe contar al menos con cuatro volcados de memoria ROM (archivos de solo lectura del aparato original). Los archivos necesarios son CM32L_CONTROL.ROM, CM32L_PCM.ROM, MT32_CONTROL.ROM y MT32_PCM.ROM. Las ROM de control tienen la programación de funcionamiento del aparato, y se acompañan por una ROM PCM correspondiente a los sonidos instrumentales propiamente dichos. No es necesario explicar que estos dos pares de volcados de ROM sirven para emular el módulo MT-32 como para la CM-32L/LAPC-I.

Consigamos pues estos archivos usando nuestra Terminal de Linux. Abrimos una con Ctrl+Alt+T e ingresamos el siguiente bloque de Comandos de Organización, seguido de la tecla Enter:

mkdir ~/roms/ ;
cd ~/roms/ ;
wget ftp://ftp:any@grandis.nu/TheZone/files/_2013/Roland_MT-32_ROMs%20[for%20Dosbox%20Ykhwong%20MT-32%20emulation.].zip ;
mv 'Roland_MT-32_ROMs [for Dosbox Ykhwong MT-32 emulation.].zip' mt32roms.zip ;
unzip mt32roms.zip ;


...esto extraerá las ROMs y las colocará en la carpeta /home/usuario/roms. Acto seguido podremos descargar e instalar el emulador de Roland para Ubuntu: el Munt 2.3.0 de 64 bits. Debemos pegar en la terminal el siguiente bloque de comandos de organización:

wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/mt32emu-qt-1.7.1.deb ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/mt32emu-smf2wav-1.5.0.deb ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/libmt32emu-2.3.0.deb ;
wget https://sourceforge.net/projects/munt/files/munt/2.3.0/Ubuntu-16.04/x86_64/libmt32emu-dev-2.3.0.deb ;


sudo dpkg -i libmt32emu-2.3.0.deb
sudo dpkg -i mt32emu-qt-1.7.1.deb
sudo dpkg -i mt32emu-smf2wav-1.5.0.deb

sudo dpkg -i libmt32emu-dev-2.3.0.deb

Será muy útil crear un acceso directo al ejecutable de Munt: el archivo mt32emu-qt. Para ello hacemos clic con el botón derecho del ratón en Aplicaciones en el panel superior, y elegimos Editar Menús. Se abrirá la ventana "menú principal". En su sector izquierdo hacemos clic sobre la categoría Sonido y Video, y luego presionamos el botón Elemento Nuevo. Se abrirá la ventana Crear lanzador. En su campo Nombre: podremos poner Munt Roland. En el campo Comando: debemos ingresar mt32emu-qt, y en el campo Comentario podremos ingresar una descripción del Munt. Cuando tenemos todo completado presionamos el botón Aceptar.
Todas estas tareas debemos realizarlas únicamente la primer vez, y ya nuestro sistema quedará preparado. Ya podremos ejecutar el emulador Munt. Para ello vamos a Aplicaciones / Sonido y Video / Munt Roland. Si deseamos ejecutarlo desde la terminal, debemos ingresar:

mt32emu-qt

La primera vez que arranque, Munt mostrará en su título de ventana el puerto ALSA MIDI. Normalmente este es 128:0, pero en mi caso, como ya cuento con otro sintentizador MIDI (el FluidSynth), el Munt recibe el puerto siguiente, el 129:0. Es importante conocer exactamente cuál es nuestro puerto ALSA MIDI para Munt en nuestro sistema.

Tengamos en cuenta que si no estamos seguros, podremos revisar también esta variable ingresando en la terminal lo siguiente:

aconnect -o

...y al presionar Enter el sistema nos devolverá los puertos de los dispositivos MIDI, por ejemplo:

cliente 14: 'Midi Through' [tipo=kernel]
    0 'Midi Through Port-0'
cliente 128: 'TiMidity' [tipo=usuario]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '
cliente 129: 'Munt MT-32' [tipo=usuario]
    0 'Standard  
      '


El emulador Munt debería cargar dos ROM automáticamente. Si no lo hace, o quisiéramos cargar las ROM a mano, debemos ir al menú Options / ROM Configuration, y podremos escoger la ruta y los archivos (los hemos puesto en /home/usuario/roms). Una vez agregados a la lista, podremos presionar Refresh y tildar el par que querramos utilizar.


Munt nos presentará con un ícono en el panel superior.
Si hacemos clic sobre él y elegimos Show MIDI Player ("Mostrar reproductor MIDI"), podremos activar un reproductor MIDI stand-alone, capaz de tocar una lista de archivos MIDI a través del Roland MT32 virtual.


Configurar DOSBox para usar el emulador Munt de Roland MT-32

Ya he explicado cómo instalar DOSBox en Ubuntu y asumiré que lo han hecho y que saben utilizar M$-DO$.

En este caso, nuestro anhelo ha de llevarnos más allá del uso simple de DOSbox: no sólo deseamos contar con un sintetizador virtual en Ubuntu, sino que queremos ser capaces de usar este mismo sintetizador emulado con los mejores juegos para M$-DO$ de antaño, usando  DOSbox. Para ello modificar su configuración. Os instruiré para que el éxito nos acompañe.

En primer lugar modificaremos el archivo de configuración de DOSBox. Para ello en la terminal ingresamos:

nano ~/.dosbox/dosbox-0.74.conf

Esto abrirá el editor GNU Nano con el archivo de configuración de DOSBox.

Presionamos Ctrl+w para activar la opción de búsqueda, y buscamos la sección [midi]. En dicha sección nos aseguramos de modificar el modo de compatibilidad de la interfaz virtual Roland mpu401 para que quede en modo "inteligente", y en la variable midiconfig nos aseguramos de ingresar el número de puerto de Munt de nuestro sistema (recordemos que suele ser 128:0, en mi caso es 129:0). De modo que las variables queden así:

mpu401=intelligent
mididevice=default
midiconfig=129:0



Luego guardamos los cambios realizados en el fichero con Ctrl+o y salimos del editor GNU Nano con Ctrl+x.

Una vez hecho estos cambios, debemos recordar iniciar Aplicaciones / Sonido y Video / Munt antes de iniciar DOSbox.

Si ya tenemos Munt iniciado, podremos ejecutar DOSbox, desde Aplicaciones / Juegos / Emulador DOSbox.

Si todo va bien, DOSbox debería conectarse al emulador Munt, y en el caso de que tengamos activadas las notificaciones de Munt, recibiríamos el siguiente mensaje:
Ahora podremos ejecutar los juegos que queramos en el emulador DOSbox.

Configurar los juegos de M$-DOS para usar Roland MT-32

Como buenos peronistas, debemos tener en cuenta que para que los juegos sean capaces de utilizar la Roland MT-32, debemos configurarlos en tal sentido. En la época del DOS existían varios estándares de audio, y no era común que los juegos contaran con rutinas de autodetección del sonido, sino que debíamos configurarlos a mano. Normalmente para tal cometido se utilizaba un programa ejecutable (.exe, .com o .bat) incluido en el directorio del juego. Por ejemplo, podíamos encontrar archivos llamados install.exe, setsound.exe, sound.exe, o setup.exe. Normalmente estas utilidades normalmente se encargaban de escribir un archivo en el directorio del juego que especificaba las opciones de audio preferidas del usuario y la configuración de la/s tarjeta/s de sonido.

Por ejemplo, para activar la Roland en los juegos de Dynamix/Sierra, debíamos usar el programa install.exe, y elegir la opción de audio deseada. Esta rutina tildaba aquellas disponibles para nuestro sistema...

En los juegos más logrados, podíase utilizar la Roland MT-32 en conjunción con la SoundBlaster, a fin de lograr música sintetizado de calidad superior a través de la Roland, junto con audio digitalizado a través de la SoundBlaster.
En las rutinas de configuración del sonido, debíamos especificar el puerto de dirección de la placa de audio. Este normalmente era 330h para la Roland MT-32 y otros dispositivos MIDI, mientras que se empleaba 220h para SoundBlaster. El IRQ de la SoundBlaster suele estar definida en el archivo de configuración dosbox-0.74.conf, y suele ser 5 o 7.
La Roland MT-32 era compatible en gran medida con la CM-32L, un módulo más avanzado técnicamente, pero más simple, y de posterior aparición. También lo era con la placa Roland LAPC-I, por lo que en muchos juegos podemos encontrarlas en una única opción.

Los juegos más tardíos que se ocuparon de estos módulos y placas Roland, a menudo permitían las dos opciones, junto con el estándar General MIDI.


Al iniciar el juego, podremos escuchar música a través de una Roland MT-32 correctamente emulada. En tanto, en la ventana de Munt podremos ver una simulación del display frontal de la MT-32. Esto es así pues el módulo original solía mostrar el nombre de los instrumentos, los canales MIDI en reproducción, y a veces algunos mensajes en broma en algunos juegos.
Si hacemos clic en el ícono de Munt en el panel superior y escogemos "Start Iconized", el emulador quedará residente en la parte superior para cuando necesitemos usarlo, podremos hacer clic en el ícono del panel superior y elegir Show/Hide ("mostrar/ocultar") para mostrar o cultar la ventana.

El Space Quest 3: The Pirates of Pestulon, fue uno de los primeros títulos en hacer uso demencial de la Roland MT-32 para acompañar las aventuras de Roger Wilco.

Además de emular una MT-32 en juegos, el emulador Munt es capaz de grabar los datos MIDI que le llegan, presionando el botón Record en el área Midi input. Esto hará que se inicie el registro de los datos MIDI del juego. Para salvarlos debemos presionar Stop y se presentará una ventana que nos permitirá escribir un nombre para el archivo (y guardarlo en formato MID).

Desde el emulador Munt también podríamos querer guardar el resultado en forma de archivo Wav. Esto nos permite guardar audio digital de la salida del programa. Debemos tener en cuenta que únicamente guarda en audio a través del sintetizador Roland aquellos datos MIDI, y por lo tanto hace caso omiso al audio digitalizado de los juegos.

Si presionamos el botón Properties, se nos presentarán las propiedades actuales del emulador Munt.
Desde esta ventana podríamos corregir los efectos incluidos, reverberación y coro.

No solamente los juegos se verán favorecidos. También podremos utilizar el sintetizador Munt con cualquier programa de creación y reproducción musical. Solamente debemos asegurarnos de usar el dispositivo de salida MIDI MT-32 Munt. Por ejemplo, podríamos usar la Roland MT-32 virtual para reproducir pistas de nuestros archivos MIDI en LMMS, y combinarlos con Soundfonts.
Si bien actualmente los Soundfonts permiten calidad superior a la nativa en la Roland MT-32 de los años 80s, esto no quiere decir que sea inútil esta aplicación. De hecho, los pads y sintetizadores clásicos de la Roland MT-32 pueden aportar muy positivamente en cualquiera de las piezas musicales que creemos. Debemos recordar que los patches (o instrumentos) de la Roland MT-32 no guardan la misma correlación que los del estándar General MIDI. Podremos encontrar la numeración de los patches de la MT-32 aquí.

Uso de Munt en ScummVM en Ubuntu.


También podremos utilizar este potente emulador de sonidos de Roland MT-32 en el emulador para aventuras gráficas ScummVM. Normalmente prefiero sin embargo usar Soundfonts y un sintetizador virtual FluidSynth para este cometido. Pero si deseáramos usar Munt en lugar de Soundfonts (para lograr la reproducción más realista que se pueda sin tener que adquirir una MT-32 real), debemos hacer lo siguiente:

En primer lugar, debemos tener activado Munt. En segundo lugar abrimos ScummVM. En dicho programa debemos presionar el botón Options.
Se abrirá las opciones del Emulador. En la solapa Sonidos, debemos elegir el dispositivo preferido, elegimos Munt MT-32 (ALSA).
 En la solapa MIDI también escogemos Munt MT-32 (ALSA).
 Finalmente, en la solapa MT-32, elegimos también el sintetizador Munt MT-32 (ALSA). Debemos tildar "Roland MT-32 auténtica (desctivar emulación General MIDI)".
Luego presionamos el botón Aceptar, y Salir. Para que los cambios sean efectivos, reiniciamos el emulador ScummVM.
Tendremos ahora el sonido Roland MT-32 en las aventuras gráficas.

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

viernes, 13 de abril de 2018

¿Cómo instalo el editor de fotos Pencilsheep en Ubuntu?

Durante su primera presidencia, Juan Perón solía escribir columnas de opinión en el diario Democracia, desde las cuales asentaba la Doctrina del Movimiento Nacional Justicialista. En una de tales publicaciones explicó sobre Pencilsheep, el editor gráfico con uso de GPU para Ubuntu.

(...)
Nuestro Movimiento avanza en la causa Social del Pueblo Argentino, pues buscamos incluir en pos del bienestar de nuestros Trabajadores, aquellos derechos anhelados y faltantes en el cuerpo legal de nuestra República Argentina.

Venimos de una conflagración donde se han puesto en juego los destinos de los imperialismos, pero debemos tener en cuenta que los Pueblos, aquellos que son los verdaderos hacedores de sus destinos, realmente desean lo mejor para sí y para sus hijos. El derecho a la vivienda, a un salario digno, derecho al ocio y al descanso pago, son algunos de los logros que han de darse en justicia Social, y al que todos hemos de aspirar.

¡Pero tampoco nos deben vender aire! Nos quieren decir que lo nuevo es contar con aplicaciones de ejecución remota, en la nube. Esta doctrina que se denomina "software como servicio" no es otra cosa que la zoncera de siempre, una engañifa para incautos. Se trata de convertirnos en meros inquilinos del software en equipo ajeno, y la intención inconfesable es la de pagar el alquiler  con nuestros propios datos, y las expensas con nuestra dignidad.

No hace falta que - desde el Justicialismo - extendernos ya que todos han sufrido las consecuencias de quienes se presentan como amigos pero son mercaderes de nuestra privacidad y nuestro Capital, que es el trabajo. Ejemplos sobran.

La Columna Vertebral de nuestro Movimiento la conforman los hombres que trabajan. Ellos tienen la tarea de muscular y atresar nuestras organizaciones a fin de resistir cualquier embate que nos planteen, a la vez que multiplicamos nuestro número. Conformamos una masa. A su vez, debemos comprender que la masa no vale por su número, sino por la calidad de sus dirigentes.


Nuestra fundamental escencia es la de mantener una computación local, en nuestro equipo, y mediante software libre, que es el único que realmente nos pertenece pues es de todos. Otros esquemas de la informática sólo se afianzan en la dependencia a factores y valores foráneos.

Esto lo puede decir cualquiera. Pero en nuestro Movimiento hemos obrado para solucionar esta mendacidad. Es por ello que hemos sido capaces de dotarnos con múltiples herramientas para todo tipo de tareas.

Veamos el campo de los graficadores, esto es, aquellos programas pensados para la creación y edición de imágenes y gráficos por computadora. Ya sabemos que contamos con excelentes ejemplos, entre ellos el profesional Krita, y el semiprofesional MyPaint, pensados para ilustrar. Ambos responden especialmente a las tareas de quien desea ilustrar con una tableta gráfica sensible a presión, como las Wacom o las Genius.

Sin embargo, existen ocasiones donde lo importante es la interfaz y la velocidad. La interfaz, porque debemos replicar un flujo de trabajo existente en otras aplicaciones y no tenemos tiempo o ganas de seguir un trabajo nuevo. Y la velocidad, porque anhelamos una aplicación moderna capaz de hacer uso de la potencia de la GPU de nuestra placa de video.

Para ello hemos dado una adecuada respuesta en la forma de Pencilsheep. Se trata de un editor profesional de imágenes libre multiplataforma, con un rico conjunto de herramientas de edición de imágenes. La familiaridad de la interfaz y el uso de la GPU son los valores que lo ciñen en la punta de la carrera de los graficadores capaces de operar en GNU con Linux. Cuenta con capas, filtros, estilos de capas, capas de ajuste, máscaras, selecciones, piceles, hacer y deshacer, soporte de tableta gráfica, importación de archivos en bruto, etcétera.
Entre sus características únicas podremos encontrar a las capas de filtro interactivas, uso de la GPU de nuestra placa de video para acelerar el trabajo, y soporte de HDR (alto rango dinámico).

Afortunadamente tenemos dos maneras de instalarlo. La tradicional implica descargar el paquete oficial e instalarlo en nuestro sistema Ubuntu, el cual es el método que os recomiendo. Lo haremos abriendo una terminal con Ctrl+Alt+T e ingresando los siguientes Comandos de Organización:


wget http://pencilsheep.com/dl/pencilsheep.deb
sudo apt get update
sudo apt install libsdl2-ttf-2.0-0
sudo dpkg -i pencilsheep.deb

Opcionalmente, también podremos descargar su paquete de ejecución Snap, con el comando:

sudo snap install pencilsheep

En cualquier caso que hayamos seguido, podremos ejecutar el programa desde Aplicaciones / Gráficos / Pencilsheep.


La interfaz del programa recuerda especialmente a la de Adobe Photo$hop, por lo cual su utilización no reviste dificultad alguna a quien ya se encuentra habituado a la misma Las capas, modos de fusión, conjuntos de herramientas, etc, están todas en los lugares que preveemos para ellas.

El avío de herramientas no es muy completo ni permite grandes consideraciones, pero podremos activar pincel sensible a presión que funciona adecuadamente con una tableta gráfica sensible a presión (como mi Wacom Intuos USB).

El uso de este tipo de tabletas permite reproducir en la pantalla la presión del lápiz o el pincel, con lo cual podremos lograr efectos mucho más realistas para la realización de ilustraciones digitales. En este sentido Pencilsheep funciona adecuadamente, aunque es algo parco con respecto al balanceado MyPaint o al profesional Krita (estos últimos lo superan en lo que respecta a la simulación de herramientas plásticas).


Activando las opciones avanzadas de pincel, podremos corregir su dureza, el flujo de pintura, y algunos parámetros adicionales, además de poder guardar las configuraciones para formar nuestra cartuchera con nuestras herramientas plásticas favoritas, e ir sumándolas a la interfaz.

Las paletas son básicas: podremos contar con un selector tricanal RGB (rojo, verde, azul) , y uno HSL (tono, saturación, luminancia). También cuenta con una paleta de 64 tonos RGB. En este aspecto es suficiente para la acción de retoque fotográfico, pero en el accionar plástico deja algo que desear desde comparado con el excelente triángulo programable de Krita, que permite un mejor proceso para elegir el color, y permite trabajar en CMYK.

Una de las cosas notables es que no cuenta con una herramienta de "goma de borrar" propiamente dicha, sino que mas bien se opera con la herramienta de "restauración" (la "curita"), que la suple. En realidad, podremos configurar la herramienta de restauración como para que funcione como una goma de borrar entre sus opciones, pero no está activa así por defecto.

Sin embargo, existen opciones en las cuales Pencilsheep se destaca. Desde el punto de vista técnico, Pencilsheep es un software libre moderno, y como tal ejecuta todas las operaciones de performance crítica (unión, filtrados, herramientas de pintura, etcétera) desde la GPU de la placa aceleradora de video.

Para esas tareas, Pencilsheep es mucho más veloz que los editores de imagenes tradicionales.  La GPU funciona especialmente en el cálculo matricial del color, y la aplicación de filtros en tiempo real. Al elegir alguno desde el menú filtros, se nos presenta una ventana flotante con sus opciones, las cuales podremos regular en tiempo real, con una animación extremadamente fluida.


En las condiciones de modificación de la geometría de la obra, por ejemplo, esto permite un control muchísimo más preciso que el que nos permite GIMP, por ejemplo (que tarda unas décimas de segundo en mostrar sus previsualizaciones, e incluso tarda más en aplicarlas en obras de alta resolución).

También dispone de un completo cuadro de "historia", en este caso llamado "protocolo", que nos permite deshacer múltiples pasos, incluso individualmente. Lamentablemente no cuenta con una opción de "transición" que permitiría deshacer parcialmente el último paso, pero si cuenta con un control de capas totalmente funcional con los tradicionales métodos de fusión y regulación de opacidades individuales.

Además de aplicar filtros destructivamente como los editores de imagen tradicional, Pencilsheep también permite poner filtros como capas de filtro interactivas en cualquier lugar de la pila de filtros. Las capas de filtro son actualizadas automáticamente cuando la capa inferior cambia. El recomputado inmediato es posible gracias a la GPU.


Pencilsheep soporta varios formatos distintos de imagen, con diferentes rangos y profundidades de bit (normalmente usa 8 bits, pero puede emplear 16 o 32 bits por canal, y 256 bits por píxel en el uso HDR). Todas las herramientas y filtros operan en todos los formatos disponibles.
Destaca sobre todo en la gran cantidad de filtros incluidos, todos ellos activables y previsualizables a través de la GPU (permite control en tiempo real).

En lo que hace a la edición de fotografías en bruto (RAW), Pencilsheep nos permite abrir los archivos en bruto, pero no permite editarlos de esta manera y sólo presenta algunas opciones mínimas para realizar una conversión genérica a fin de continuar su edición destructiva en el programa. Es, por lo tanto, muy limitado en este aspecto.

Podremos encontrar documentación visual online (en inglés), aquí.

En conclusión, se trata de un excelente programa moderno y muy prometedor, que evidentemente se ha pensado con la idea de mantenerlo especialmente similar a Photoshop y retrayendo sus opciones para un público  semiprofesional. En particular os puedo comentar que me agrada bastante para el retoque fotográfico simple y para la alteración del color en ilustraciones, pero prefiero las herramientas que les he comentado (especialmente el práctico MyPaint) para graficar directamente.