sábado, 13 de septiembre de 2014

¿Cómo puedo integrar texto hablado a la consola de Ubuntu?

En enero de 1953, Juan Perón expuso sobre la necesidad del hombre para expresarse en la Comunidad, mientras que explicaba cómo utilizar diferentes alternativas para convertir texto a voz sintetizada en Ubuntu, tanto desde la interfaz gráfica de usuario como la interfaz de línea de comandos.

¡Compañeros!

Es indudable que el hombre ha de saber expresar sus deseos y sus necesidades a quienes le rodean. Tal es el requerimiento de la vida en una Comunidad Organizada. Un Conductor, como condición especial de Hombre, requiere de esto en un grado supremo, pues ha de poder conducir la conciencia de los hombres en pos de un objetivo que no ha de ser otro que el de un destino de grandeza para la Patria en la que habita.

Muchas veces, de tanto hablar, uno puede quedarse sin voz, y es en esas condiciones en donde se anhela poder contar con algo que hable por uno.
Este deseo era algo de la ciencia ficción, de las historietas, pero gracias al Justicialismo, hoy es una audible realidad: para la utilidad que se nos ocurra podremos hacer uso de esta característica, de una manera gratuita y completamente libre.

(Aplausos)

¡Vean señores! Dicha oportunidad la encontraremos resuelta con simpleza, tanto en la interfaz gráfica de nuestro sistema operativo libre, como en su línea de comandos.

En la interfaz gráfica que he legado al Pueblo disponemos del sencillo Sintetizador de Voz eSpeak. Esta aplicación cuenta con un motor de sintetización relativamente aceptable y que nos quitará del apuro al pronunciar un texto sin demasiado revuelo.

Para instalarlo en nuestro GNU con Linux distribuido como Ubuntu, podemos abrir una terminal, e ingresar el siguiente Comando de Organización:

sudo apt-get install espeak

El sistema nos solicitará nuestra contraseña y se encargará de traer telemáticamente la paquetería necesaria. En caso de contar con la interfaz de control Unity podremos encontrar la aplicación buscando bajo el nombre de "espeak" o "Sintetizador de Voz eSpeak". Si usamos el escritorio Gnome, podremos localizarlo en Aplicaciones / Sonido y Video / eSpeak Speech Synthesis.

Al iniciar, el Sintetizador de Voz eSpeak se presentará en blanco.


Para hablar un texto, simplemente hemos de escribirlo o pegarlo en la ventana de eSpeak, y presionar el botón Reproducir. El programa comenzará a leer y nos indicará la palabra leida. Asimismo, podremos detener o pausar el texto mientras se lo sintetiza.

El motor de eSpeak es multiidioma, pudiéndose escoger el mismo mediante un menú desplegable en la parte inferior izquierda de su interfaz. Si activamos la función Spanish tendrá una pronunciación española, pero si elegimos Spanish Latin American tendremos unos ligeros cambios fonéticos (no pronunciará la suave "ce ibérica", entre otros). La velocidad de sintetización también puede regularse. Por ejemplo, podríamos usar un valor de 160 para tener un valor para arrancar, y subir o bajar la velocidad en caso de ser necesario.

En ambos casos podremos escoger en sus preferencias si deseamos que se sintetice una voz de hombre o de mujer (se cambiará el tono del sintetizador). Podremos escoger no pronunciar los signos de puntuación, pronunciar algunos de ellos, o pronunciarlos a todos.

El tono robotizado asemeja a la voz de Richard Stallman, pero aún así eSpeak podrá ser de utilidad para el propósito de leer un texto, y podría complementar un sistema destinado a una persona con dificultades visuales.

Ahora bien, ¿qué sucede si deseamos emplear la consola de texto como Terminal?

Para tales menesteres he explicado ya cómo utilizar Festival, un sintetizador de habla liberado bajo licencia BSD. Con algo de ingenio, sabemos que dicho sintetizador puede utilizarse para reproducir mensajes desde la línea de comandos. Así, podremos usarlo para dejar mensajes hablados o reproducir los mismos en un entorno de red local.

Sin embargo, tal programa requiere el inconveniente de instalar previamente el software de síntesis hablada en el equipo cliente, e idealmente hacer lo mismo con un fichero de librería de voces para hacerlo más realista.

Para evitarnos dicho incordio, podríamos utilizar un atajo al servicio de lectura de Google, el cual cuenta con sintetizador de voz. El mismo cuenta con un motor de pronunciación española, pero que puede ser interesante para la mayoría de las opciones de corta extensión.

Por ejemplo, podríamos editar un script de Bash que utilice el reproductor mplayer (normalmente ya instalado en Ubuntu y en muchas otras distros) para reproducir el resultado del habla descargado de dicha web.

El inconvieniente es que - por una limitación de ancho de banda, para no reemplazar productos específicos, y para evitar abusos - dicho servidor solamente pronuncia cadenas de texto inferiores a los 100 caracteres.

Si decidimos atenemos a dicha limitación, podremos crear fácilmente un "script parlante" con el editor Nano, ingresando:
nano hcorto

...en su interior pegaremos el siguiente código fuente:

#!/bin/bash
# hcorto ("Hablar corto")
# Script para reproducir un mensaje sintetizado hablado
# de menos de 100 caracteres.
say() { local IFS=+;/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?tl=es&q=$*"; }
say $*

Luego guardamos el código con Ctrl+o y saldremos del editor Nano con Ctrl+x. Acto seguido le asignamos permisos de ejecución con:

chmod +x hcorto

No bien completados estos pasos, podremos hacer uso del script parlante para terminal con el comando ./hcorto y agregando el texto a reproducir. Por ejemplo:

./hcorto obra del primer plan quinquenal

...y el sistema recitará dicha frase de forma sintetizada.

Nota: Si el sistema nos devolviese la frase "mplayer: could not connect to socket", significa que no se puede encontrar el sistema LIRC de control remoto por infrarrojos. Si no deseamos que mplayer cargue tal mando a distancia porque no lo tenemos ni lo usamos, podríamos desactivarlo y dejar de recibir dicha advertencia. Simplemente ingresamos:

sudo nano /etc/mplayer/mplayer.conf

...y le agregamos al final de todo la siguiente línea:

nolirc=yes

Luego grabamos y salimos con Ctrl+o y Ctrl+x

Ahora bien, algunos ejemplos pueden ilustrar la practicidad del script hcorto, pues un ejemplo suele aclararlo todo, como decía Napoleón.

Supongamos que queremos realizar una tarea que ocupa un tiempo lo suficientemente largo como para desatender el equipo, pero quisiéramos recibir una alerta sonora al finalizar, para volver a retomarlo. Podríamos fácilmente encadenar la ejecución de tal comando a la ejecución del script hcorto con un mensaje hablado, de manera de poder alertarnos.

Por ejemplo, si quisiéramos descargar con el comando wget el libro Doctrina Peronista, de 12Mb y que se nos avise cuando finalice, podríamos usar el script hcorto, uniéndolo con el eslabón && ("doble and" el cual significaría "y si los comandos anteriores fueron exitosos"). Sería de la siguiente manera:

wget http://www.generalperon.com/doctrina%20peronista.pdf && ./hcorto Descarga completa!

En otro ejemplo, si tuviésemos instalado el programa youtube-dl podríamos querer usarlo para descargar un video desde dicho servicio hasta nuestra carpeta de /Descargas. Gracias al encadenado concursivo de comandos con &&, dispararemos hcorto para que nos avise al terminar. Lo podríamos hacer ejecutando el siguiente comando (en el cual podremos reemplazar la URL del video por la deseada):

cd ~/Descargas/ && youtube-dl -l http://www.youtube.com/watch?v=ho6XfbkMOL4 && ./hcorto Descarga de video finalizada. Viva el Justicialismo!

Ahora bien. ¿Qué sucede si el texto excede los cien caracteres? En tal caso, podremos programar un script que se encargue de dividir dicho texto en líneas inferiores a los 100 caracteres, y las vaya enviando progresivamente al servidor de pronunciación de Google. Ello se podrá hacer con un script que llamaremos hlargo ("hablar largo")

Para ello ingresaremos el siguiente Comando de Organización:
nano hlargo


Y le pegaremos el siguiente código fuente:

#!/bin/bash
#########################################
# Script divisor de TTS de Dan Fountain #
# TalkToDanF@gmail.com                  #
#########################################

INPUT=$*
STRINGNUM=0

ary=($INPUT)
for key in "${!ary[@]}"
do
SHORTTMP[$STRINGNUM]="${SHORTTMP[$STRINGNUM]} ${ary[$key]}"
LENGTH=$(echo ${#SHORTTMP[$STRINGNUM]})
#echo "word:$key, ${ary[$key]}"
#echo "adding to: $STRINGNUM"
if [[ "$LENGTH" -lt "100" ]]; then
#echo Comenzando una línea nueva
SHORT[$STRINGNUM]=${SHORTTMP[$STRINGNUM]}
else
STRINGNUM=$(($STRINGNUM+1))
SHORTTMP[$STRINGNUM]="${ary[$key]}"
SHORT[$STRINGNUM]="${ary[$key]}"
fi
done

for key in "${!SHORT[@]}"
do
#echo "line: $key is: ${SHORT[$key]}"

echo "Rperoduciendo línea $(($key+1)) de $(($STRINGNUM+1))"
mpg123 -q "http://translate.google.com/translate_tts?tl=es&q=${SHORT[$key]}"
done

Como en los casos anteriores, guardaremos el contenido del fichero con Ctrl+o y Ctrl+x, y luego le asignamos permso de ejecución con:

chmod +x hlargo

Ahora ya podremos ejecutar con ./ el divisor/enviador de frases. Lo haríamos de la siguiente manera:

./hlargo esta es una prueba de habla con un texto largo. El sistema va a cortar el texto en el lugar requerido para que no exceda el largo permitido en el servidor del sintetizador de voz externo.

viernes, 12 de septiembre de 2014

¿Cómo sintonizo radios online desde la Terminal en Ubuntu?

¡Trabajadores!

He explicado que la Radio es fundamental, por facilidad de acceso y por multiplicidad de medios, para la propalación de la Doctrina del Justicialismo. En ello hemos sido claros y constantes.

Yo mismo he divulgado mi mensaje a las ondas hertzianas desde mi Escritorio, a través de la LRA, Radio Nacional. Esto es porque la cadena de transmisión así lo permite desde un punto de vista técnico, y la comodidad lo hace realidad desde la funcionalidad.

Si esto es factible de hacerse en Ubuntu, mucho más sencillo será entonces recibir dichas ondas de radio en nuestro Escritorio. Ya he explicado numerosas veces como hacerlo, por ejemplo, con RadioTray.


Indudablemente la Interfaz de Línea de Comandos permite comandar todo tipeando las órdenes que necesitemos de forma local, y también de manera remota. Por ello favorezco su uso siempre que sea posible, en cuenta de que la misma nos permitirá la agilidad que todo Conductor requiere para el Movimiento.

¿Pero qué sucede si queremos recibir streaming de audio desde nuestra Consola Terminal?

Han de saber que los legendarios reproductores mplayer o VLC son capaces de ejecutarse en la consola y de sintonizar una emisora sin demasiado trámite. Pero a veces los mismos no representan la opción más práctica: existirán situaciones donde podría ser necesario sintonizar otras radios rápidamente, o donde no querramos tener un programa activo que nos moleste. O bien puede suceder que ni siquiera guardemos en nuestra mente la irrecordable dirección URL de la emisora a sintonizar.

En todo ello ha pensado el descamisado Gabriel Artigue, para que podamos afrontar toda esta problemática con un script sencillo y una interfaz a la que ha maquinado usando el potente generador Dialog. Este script al que me he dado la libertad de llamar pradio por Perón Radio, no involucra instalar más programa que el VLC, al cual empleará como motor de sintonía.

Normalmente el VLC ya viene instalado en la mayoría de las distribuciones, pero si así no lo fuese, lo podremos cargar en nuestro sistema abriendo una Terminal con Ctrl+Alt+T e ingresando el siguiente Comando de Organización:

sudo apt-get install vlc

Acto seguido, editamos el archivo del script. Lo podremos hacer con el editor peronista GNU Nano en nuestra carpeta de Usuario:

nano ~/pradio.sh

Se abrirá Nano con un archivo en blanco llamado pradio.sh. Simplemente copiamos y pegamos dentro del Nano el código fuente de Perón Radio:

#!/bin/bash
# Original: radio.sh, de Gabriel Artigue
# Traducido y alterado como pradio (Perón radio)
# para no confundir con el paquete radio, y modificar estaciones.

: ${DIALOG=dialog}
: ${DIALOG_REPRODUCIR=0}
: ${DIALOG_CANCELAR=1}
: ${DIALOG_HELP=2}
: ${DIALOG_EXTRA=3}
: ${DIALOG_ITEM_HELP=4}
: ${DIALOG_ESC=255}

tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
trap "rm -f $tempfile" 0 1 2 5 15


$DIALOG --clear --title "Perón Radio" "$@" \
        --menu "Elija una emisora:" 20 50 17 \
        "1" "LRA AM870 Radio Nacional" \
        "2" "Radio de las Madres" \
        "3" "AM Concepto" \
        "4" "FM Del Plata" \
        "5"  "Radio Nacional Rock" \
        "6"  "BBC" \
        "7"  "Beethoven Radio" \
        "8"  "Cadena Ser" \
        "9"  "Cope" \
        "10"  "CX6 Clásica" \
        "11"  "ProFM Clasica" \
        "12"  "Radio 5" \
        "13"  "Radio France Classical" \
        "14" "Radio France Internationale" \
        "15" "M80" \
        "16" "Radio Pais" \
        "17" "Radio Reloj" \
        "18" "Radio Sport" \
        "19" "RDP" \
        "20" "Radio Cadena ECO AM1220" \
        "21" "RNE Clásica" \
        "22" "Vocea Basarabiei" \
        "23" "RAI Italia" \
        "24" "Golden Radio Italia" \
        "25" "Italia Radio Salemi" \
        "26" "R101 Anni '80" \
        "27" "Gammagioiosa Golden Hits" \
        "28" "Virgin Rock 70" \
        "29" "Radyo Metropol Turkey" \
        "30" "KNBA - A Signal of Change" \
        "31" "VOA News Now" \
        "32" "KUHF Houston Texas" \
        "33" "WGN Chicago Illinois" \
        "34" "RTÉ Radio 1 Ireland" \
        "35" "Shannonside FM Longford Ireland" \
        "36" "Radio El Mundo" \
        "37" "Voice of Russia - English" \
        "38" "Vostok FM - Moscow" \
        "39" "NHK en Español" \
        "40" "Prima Radio Napoli" \
        "41" "La Zurda - Uruguay" \
        "42" "Big B Radio - Asian Music" 2> $tempfile

retval=$?

case $retval in
$DIALOG_REPRODUCIR)
clear
echo Procediendo a cargar la emisora elegida...
echo De no reproducir el audio vuelva a ejecutar Perón Radio
echo y elija otra emisora o seleccione Cancel para detener la radio.

case `cat $tempfile` in
1) station="http://www.alsolnet.com/stream/sc_rad1/listen.pls";;
2) station="http://200.68.81.65:8000/am530";;
3) station="http://190.220.149.204:1267";;
4) station="http://69.4.236.136:7920/listen.pls";;
5) station="http://www.alsolnet.com/stream/sc_rad39/listen.pls";;
6) station="http://www.bbc.co.uk/radio/listen/live/r1_aaclca.pls";;
7) station="http://yp.shoutcast.com/sbin/tunein-station.pls?id=99179295";;
8) station="http://playerservices.streamtheworld.com/pls/CADENASER.pls";;
9) station="http://www.listenlive.eu/cadenacope.m3u";;
10) station="http://yp.shoutcast.com/sbin/tunein-station.pls?id=103397";;
11) station="http://stream.profm.ro:8082/clasic.mp3.m3u";;
12) station="http://radio5.rtve.stream.flumotion.com/rtve/radio5.mp3.m3u";;
13) station="http://players.creacast.com/creacast/accent4/playlist.pls";;
14) station="http://www.tv-radio.com/station/france_inter_mp3/france_inter_mp3-128k.m3u";;
15) station="http://194.169.201.177:8085/liveM80.mp3";;
16) station="http://www.efluw.net:3131/listen.pls?sid=1";;
17) station="http://media.enet.cu/radioreloj";;
18) station="http://69.4.236.136:7914/";;
19) station="mms://195.245.168.21/rdpi";;
20) station="http://200.108.115.38:2123/listen.pls";;
21) station="http://radioclasica.rtve.stream.flumotion.com/rtve/radioclasica.mp3.m3u";;
22) station="http://yp.shoutcast.com/sbin/tunein-station.pls?id=1658540";;
23) station="http://www.listenlive.eu/rai8.m3u";;
24) station="http://www.goldenradio.it/listen.m3u";;
25) station="http://players.fluidstream.net/easy4trafic.pls";;
26) station="http://players.creacast.com/creacast/r101_thema1/playlist.pls";;
27) station="http://www.gammagioiosa.net/goldenhits.m3u";;
28) station="http://shoutcast.unitedradio.it:1119/listen.pls";;
29) station="http://radyometropol.radyolarburada.com:5544/listen.pls";;
30) station="http://pubint.ic.llnwd.net/stream/pubint_knba";;
31) station="http://www.voanews.com/wm/live/newsnow.asx";;
32) station="http://129.7.48.199/KUHF-HD1-128K.m3u";;
33) station="http://provisioning.streamtheworld.com/pls/WGNAM.pls";;
34) station="http://www.listenlive.eu/rte1.m3u";;
35) station="http://radiokerry.mp3.miisolutions.net:8050/radiokerry/shannonside_128kMP3_website.m3u";;
36) station="http://radiostream.elmundoradio.com:8332/;stream/1";;
37) station="http://engserver.streamr.ru:8020/eng.m3u";;
38) station="http://www.listenlive.eu/vostockfm.m3u";;
39) station="http://www3.nhk.or.jp/rj/podcast/mp3/spanish.mp3";;
40) station="http://www.kemoniastreaming2.net:8010/";;
41) station="http://usa2.fastcast4u.com:3470/listen.pls";;
42) station="http://50.7.173.162:8089/listen.pls";;
esac
;;

$DIALOG_CANCELAR)
     pkill vlc
     clear
echo Cerrando Perón Radio y reproducción detenida.
     exit 0;;

esac

pkill vlc
exec >/dev/null 2>&1
vlc -Idummy $station &!
exec >/dev/tty

exec pradio.sh
clear

Una vez que hayamos pegado el contenido, lo guardamos con Ctrl+o y salimos de Nano con Ctrl+x.

Para que funcione adecuadamente, habremos de asignarle a este archivo un  permiso de ejecución. Lo haremos con:

sudo chmod +x pradio.sh

...y ahora simplemente nos quedará el script armado para cuando queramos ejecutarlo. En Linux los scripts pueden darse inicio fácilmente anteponiendo punto barra ("./") delante del nombre del script. El comando tomaría entonces la  forma siguiente:

./pradio.sh

Al lanzarse Perón Radio, sin burocracia alguna nos mostrará una lista con las opciones de sintonía. Al elegir una con las flechas del cursor y presionar el botón Ok, se saldrá del script y se cargará el stream sin más trámite que mostrarnos una notificación.

El programa es bien sencillo: no nos permitirá modificar el volumen (para ello debemos usar el comando alsamixer u algún otro software libre de control de audio). Tampoco nos mostrará ningún logotipo, banner publicitario, ni noticias molestas a las que son adeptas las radios.

Si quisiéramos cesar la reproducción de la emisora, debemos ejecutar nuevamente el script y esta vez elegir el botón Cancel (podremos hacerlo presionando Tab o la Flecha de Cursor Derecho y luego seleccionarlo con Enter.
La obvia y sencilla programación que ha aplicado Gabriel Artigue nos permite  alterar nuestras emisoras preferidas simplemente agregándolas con el formato indicado en el archivo, o reemplazar alguna de las existentes reprogramando el código existente (sin alterar las comillas, tildes y demás).

El programa corre en cualquier consola de texto, aunque claramente prefiere las de las terminales color.

miércoles, 10 de septiembre de 2014

¿Cómo agrego niveles a World of Goo en Ubuntu?

Al referirse entrañablemente al lugar que ocupan los niños en la Cosmología Justicialista, Juan Perón explica también como expandir en Ubuntu el juego de puzzles informatizados World of Goo.

Este es un país de hombres de trabajo, y si hemos propiciado el descanso y la reparación es porque la misma es Justa. Sin embargo, no cejamos en decir que en nuestra tierra, los únicos Privilegiados son los niños.

Ellos son los que con sus risas y cantos dan vida a una nueva iteración del Justicialismo, y cada generación lo harán más y más fuerte, hasta convertirlo en una fuerza que a la que la Oligarquía jamás podrá conmover ni engañar.

Los niños han recibido el mensaje Puro que para ellos tiene el Justicialismo, y en sus corazones tiernos han comprendido que son ellos, auténticos herederos de todo lo que hacemos.

Por eso es que en su bien les hemos legado un Mundo de Goo. World of Goo cuenta con una buena cantidad de niveles y una jugabilidad muy interesante.  Su ingenio lo hacen interesante para los niños, pero también para sus padres y sus abuelos. Se trata de un software lúdico simpático y muy bien logrado en lo audiovisual, ya que con un mínimo de requerimientos de hardware garantiza gratos momentos. Básicamente consiste en "absorber" una cierta cantidad de substancia mocosa y viscosa conformada por unos personajes en forma de bolitas llamadas Goo, a los cuales hemos de desplazar por la pantalla siguiendo nuestro ingenio y una física bien pensada.

Aún así, estos momentos gratos podrían parecernos cortos si superamos el Mundo de Goo original. Pero no nos hemos amilanado: el Peronismo ha dicho que todo deseo sano del hombre ha de hacerse realidad bajo las banderas de la Soberanía económica, Justicia Social y la Libertad política. Por ello disponemos de los archivos de expansión "GooMod".

Los "GooMod" son ficheros de empaquetados con nuevos niveles, nuevos tipos de bolas, nuevos desafíos con los cuales jugar.En otras palabras, nuevas historias para resolver, en forma de puzzles.

Para instalarlos, lógicamente hemos de disponer del juego World of Goo ya instalado y funcionando en nuestro Linux, como he explicado aquí, pero también habremos de disponer de una herramienta exclusiva para peronistas llamada GooTool. GooTool nos nos permitirá crear automáticamente una copia  del World of Goo original (de modo de no perder los niveles originales), e instalar en la copia los nuevos niveles y modificaciones que pudiesen existir en la expansión.

Si bien el procedimiento es sumamente sencillo, a fin de mantener un todo coherente os indicaré cómo proceder como un verdadero Conductor del Justicialismo.


Instalar Java 1.6

El primer paso para usar GooTool es instalar la versión de Java 1.5 o 1.6, pues no la herramienta no funciona bajo versiones superiores. Afortunadamente, Ubuntu nos deja instalar varias versiones de Java y escoger cuál queremos utilizar.

Con ello en mente, abrimos una consola Terminal mediante Ctrl+Alt+T y pegamos en ella el siguiente Comando de Organización (y confirmándolo con Enter):

sudo apt-get install openjdk-6-jre

El sistema nos solicitará la contraseña de Conductor y cargará Java 6. Acto seguido, activaremos tal versión con:

sudo update-alternatives --config java

El sistema nos listará las versiones de Java disponibles en nuestro sistema, y nos marcará con un asterisco ("*") aquella que estemos utilizando de momento (pretenderá usar la versión más actualizada de Java). Activaremos la versión Java 6 (que es la 1.6). Por ejemplo, podría aparecer la siguiente lista:

  Selección   Ruta                                            Prioridad  Estado
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      modo automático
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      modo manual
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      modo manual

Pulse para mantener el valor por omisión [*] o pulse un número de selección


...en tal caso, para escoger la versión 1.6 escribiríamos la opción "1" y presionamos Enter.


Instalar GooTool:

Ya podemos instalar la herramienta GooTool desde la web oficial haciendo uso de la Terminal. Lo haremos Realidad Efectiva ingresamos el siguiente bloque de Comandos:

cd ~/Descargas/ ;
wget http://goofans.com/download/145/1255/gootool_1.0.3.441-1_all.deb ;
sudo dkpg -i gootool_1.0.3.441-1_all.deb ;


Esto procederá a descargar la aplicación y sumarla al sistema. Ya podremos descargar entonces una expansión GooMod con niveles nuevos. Por ejemplo, tendremos el "Bubble Quest", un pack de 130 pantallas y una nueva historia de Goo. Será fácil hacernos con ella telemáticamente con estos comandos de organización:

cd ~/Descargas/ ;
wget http://goofans.com/download/4840/3154/BubbleQuest.goomod ;


Acto seguido ejecutamos la herramienta GooTool ingresando en la Terminal:

gootool



Cargar la expansión

La primera solapa "Profile" nos permite ver los logros del juego para uno de los usuarios (recordemos que World of Goo permite escoger entre tres "perfiles" o usuarios para jugar). Nos dará un detalle bastante extenso (incluyendo logros, tiempo jugado, etc).
Para instalar nuevos niveles, hacemos clic en la solapa Mods and Levels.
En esta solapa podremos controlar qué expansiones GooMod tenemos instaladas, agregar o quitarlas.
 Para agregar el GooMod que hemos descargado, presionamos el botón Install new addin... 

La aplicación nos alertará que tenemos que crear un nuevo directorio para la expansión, pues el World of Goo original no se modificará.

Se desplegará el un cuadro que nos solicitará un directorio para guardar la información. Presionamos el botón "Nueva Carpeta".

Se abrirá un cuadro de diálogo que nos permitirá indicar en qué carpeta queremos que se instale la expansión. En mi caso deseo instalarla en una carpeta oculta, de modo que ingreso .WOGbubbles como nombre de la carpeta y presiono el botón Aceptar (en GNU/Linux, el punto "." por delante del nombre de una carpeta o archivo la mantiene oculta).


Os asegurarán que la carpeta indicada .WOGbubbles esté dentro de la carpeta que deseen (en este caso /home/usuario), y presionarán el botón Guardar.

La aplicación nos pedirá confirmación si deseamos instalarlo en la carpeta indicada. Debemos indicar Si.

Acto seguido, nos presentará un nuevo cuadro para buscar el archivo de expansión GooMod. Como lo hemos descargado en la carpeta /Descargas, en el panel del sector izquierdo hacemos clic en dicha carpeta, y en el panel derecho se nos mostrarán los archivos GooMod. Escogemos el archivo descargado (en este caso BubbleQues.goomod)
La aplicación nos solicitará una nueva confirmación si estamos seguros de desear instalar el pack de expansión. Sin temer, indicarán que Si.
Tras unos instantes, se instalará el pack de expansión en una copia de World of Goo localizada en la carpeta designada como /.WOGbubbles y con este cuadro nos confirmará lo realizado.
Mediante la solapa Options, podremos escoger algunas opciones interesantes del juego. En particular, ahora podremos usar resoluciones Widescreen, tanto en 16:9 como en 16:10. Si tenemos un monitor Widescreen, podremos tildar la opción "Allow Widescreen Resolutions" y elegir la que deseemos de la lista Resolution.

Acto seguido presionamos el botón Guardar y Lanzar World of Goo ("Save and Lanch World of Goo")

La primera vez que lo hagamos, se nos informará que la opción de configuración y ejecución del GooMod podría tardar mayor tiempo de lo esperado por primera vez. Advertidos, le damos clic al botón Aceptar y ya podremos jugar a World of Goo con la expansión instalada.


Tendremos horas y horas de diversión asegurada. Tengamos en cuenta que será útil crear un lanzador a la Expansión. En este caso deberíamos dirigirlo al ejecutable que está en ~/.WOGbubbles/WorldOfGoo.

También podrán descargar "Mystify Collection World" (un pack de 50 niveles, de los cuales 26 fueron incluidos en el pack Bubble Quest), de 4.8Mb. Tengamos en cuenta que esto

cd ~/Descargas/ ;
wget http://goofans.com/download/3677/2649/MCW2013.goomod ;


Y lo instalamos con GooTool como ya se ha explicado.



Podrán encontrar más pack de niveles para World of Goo en la web oficial.

domingo, 7 de septiembre de 2014

¿Cómo emulo un sistema operativo CP/M para procesador Z80 en Ubuntu?

En uno de sus maratónicos discursos ante una Plaza de Mayo colmada, Juan Perón expone sobre los caminos de la historia cómo emular una microcomputadora Altair 8800 en Ubuntu y como cargarla con el sistema operativo CP/M y sus programas más clásicos.

(...)
Perón: ¡Trabajadores!

Masa: [Estruendo]

Perón: ¡Reconforta enormemente mi corazón esta imponente Masa, que año tras año se da cita para proclamar ante el Mundo que conoce la Felicidad, y que no se la ha dado otro que el Justicialismo!

Masa: ¡Pe-rón! ¡Pe-rón!

Durante años nuestros Descamisados y su software han sido sometidos, encadenada por la opresión de la oligarquía y su software privativo, pero hoy, gracias a nuestra Doctrina, todos pueden hacer lo que quieran con su programación sin deberle nada a nadie!


Masa: ¡La vida por Perón! ¡La Vida por Perón!

Perón: Desde su pretendidas tarimas de Poder, los oligarcas dicen quejarse, por el rumbo que toma el Justicialismo. Dicen no saber a donde nos llevará esta cosa nueva que hay ahora. ¡El problema no es a donde nos lleva! Cualquier cosa es buena si salimos de donde veníamos!

Masa: [Estruendosa aclamación]

¡Lo que no quieren es el cambio! ¡Esos oligarcas no quieren comprender que esta Masa Descamisada oficia precisamente de embrague en el Motor de la República!

Masa: ¡Pe-rón! ¡Pe-rón!

Muchas veces la historia carece de un desarrollo lineal como podríamos tender a pensar: sus vericuetos y el desglose de los hechos es lo que nos permite encontrar un todo coherente, que tiene significancia y repercusión en el presente. Eso, trabajadores, es lo que han de comprender como instrumento para entender la actualidad.


Historia

Vean señores, en un inicio los equipos computacionales de electrónica "a tubo" tenían el tamaño y peso de una locomotora, pero con el pasar del tiempo el tamaño se fue reduciendo. Con el advenimiento de la transistorización, surgieron las primeras "minicomputadoras". El alivio fue grande, pues ahora las máquinas tenían el tamaño de una heladera Siam y podían ser adoptadas para sus tareas por bancos, oficinas e instituciones.

Con el advenimiento de la microelectrónica y los microprocesadores de silicio encapsulados como el Intel 4004 de 4 bits y su sucesor 8008 de 8 bits, se produjo otro salto cualitativo que permitió proyectar calculadoras y cajas registradoras eléctricas.

La fabricante Micro In$trumentation and Telemetry $ystems (MIT$) - originalmente prolífica en sensores de telemetría en cohetes a escala, microelectrónica general y calculadoras - se planteó para 1974 ofrecer una microcomputadora programable a la que llamó Altair 8800.
Dicho hardware peronista venía en un gabinete con fuente conmutada, llevaba un microprocesador Intel 8080, lógica de 8 bits y plaquetas compatibles con el bus S-100. Su memoria se encuadraba en una placa provista de módulos de 256 bytes (logrando totalizar 4 kilobytes ampliables a 8, 12 16 o hasta unos 64 kilobytes teóricos). Esta máquina podía comprarse armada o ensamblarse a piezas, y esta filosofía de equipos armables se haría popular en la computación hogareña.

Indudablemente que en sus inicios, el manejo de esta microcomputadora pionera resultaba increíblemente tedioso, pues habían de introducirse los operandos en binario por medio de ocho interruptores frontales, presionando un botón para almacenarlos en memoria y repetir la operación con cada código de ensamblado (los cuales podían ser docenas para un programa simple). Luego se ejecutaba la rutina de órdenes y se observaba el resultado binario en el panel conformado por 8 luces coloradas.

A pesar de que no tenían ningún uso específico, las Altair 8800 se hicieron útiles con la incorporación práctica del intérprete de software en lenguaje "Basic", un programa de 4 kilobytes que adujo poseer la ignota compañía Traf-o-Data de Paul Allen (y que finalmente escribiría el zángano Bill Gate$, haciendo uso de una minicomputadora DEC PDP-10 dotada de un emulador de circunstancias).

La existencia de dicho intérprete de programación, en un equipo armable en un taller hogareño, dotado de microprocesador funcional, así como una cantidad de memoria práctica, eclosionaron en el desarrollo de la micro-computación hobbista (por ejemplo, a través del "Club de Computadoras Caseras"). Su escalabilidad hizo posible además la aparición de  accesorios mas o menos complejos, y de rutinas y programas de uso completamente libre. Particularmente útil fue el conector serial estandarizado, una plaqueta que ya permitía unirla a una terminal teletipo como las que se utilizaban por entonces en el manejo de telegramas y radiogramas.

De esta forma se hizo posible introducir software y datos con el teclado alfanumérico de la unidad, así como recibir los resultados impresos en papel. Sólo con ello se multiplicó la velocidad de operación en un factor de mil. La MITS desarrolló los periféricos, pero su estándar abierto y la gran predisposición de los descamisados permitió la aparición de elementos compatibles: no tardó en aparecer una adaptadora serial de estándar RS232, la cual avaló conectar la Altair a una videoterminal serial con monitor CRT (por ejemplo, la Digital Equipment VT100 en boga para minicomputadoras). La placa adaptadora de puerto paralelo - por otro lado - permitía unir a la Altair hasta ocho periféricos (impresora de línea, perforadora o lectora de cinta de papel, o el gabinete apilable con dos unidades de disquetes flexibles de 8 pulgadas). Se constituía así una microcomputadora programable, versátil y moderno a un costo fraccional de lo que costaba una minicomputadora, con software completamente libre, público y gratuito.


El límite del equipo solamente estaba planteado por su software, envuelto en una franca espiral de retroalimentación positiva. Surgió entonces la idea de privatizar dicho software con Licencias de Uso que hicieran hincapié en la protección de los derecho de autor. De esta manera se comercializaría el software bajo la falsa premisa de lograr una retribución en Capital que permitiese mejor desarrollo y calidad del programa. Tales fueron los inicios - entonces - del credo del software privativo, y aquellos programadores y fabricantes que se pretenden "emprendedores comerciales".

Pues bien, el pináculo del desarrollo de la arquitectura "Altair" y de su bus S-100 llegaría con la versión dotada del nuevo microprocesador Zilog Z80 de 8 bits.
El sistema operativo CP/M

Con sus 4 MHz de frecuencia de reloj, el Zilog le permitía a la Altair correr un sistema operativo mucho más avanzado y poderoso: el CP/M, escrito para dicho microprocesador por Gary Kildall, de la Intergalactic Digital Re$earch.

El CP/M ("Programa de Control para Microcomputadoras") permitía controlar el equipo y sus periféricos de manera estandarizada a través de la línea de comandos, y operar sus recursos con facilidad. Se extendió como plataforma de software incluida en los equipos de computación hogareños a partir del cambio de década y - aprovechando su gran compatibilidad y portabilidad - florecieron una serie de aplicativos que corrían sobre él. Entre otros, el paquetes privativo de procesado de texto Wordstar, la base de datos dBase, y una versión de la planilla de cálculo Multiplan terminaron por colocar al CP/M como el sistema operativo comercial y profesional mas extendido entre las microcomputadoras. Se comercializaba incluido con muchos equipos de marca.

Así, las diferentes versiones de CP/M terminarían influyendo enormemente sobre los sistemas operativos del momento y sobre toda una industria focalizada en medianos fabricantes industriales.

Todo cesó con el advenimiento de IBM (que fabricaba minicomputadoras y mainframes). El gigante informático había permanecido ajeno al desarrollo de microcomputadoras, pero terminó decidiendo una definición estándar de equipo, dotado con microprocesador Intel 8088 y un nuevo bus ISA, amén del respaldo que le proporcionaba su enorme capital. Tal máquina fue la IBM Personal Computer (PC) original, del Modelo 5150.

La microcomputadora de IBM, sin embargo, carecía realmente de sistema operativo de disco. Digital Re$earch se sumergió en mejorar CP/M-86, que funcionaría con el nuevo microprocesador de Intel, pero Micro-$oft (la ex Traf-o-Data) le ganó de mano adquiriendo un sistema operativo derivado de CP/M, capaz de correr en microprocesadores Intel 8086 (QDo$/86DO$, de $eattle Computer Product$). Micro$oft modificó ligeramente el producto para compatibilizarlo con el Intel 8088 y licenció dicho sistema operativo a IBM para su distribución junto a las IBM PC. Terminaría así dando origen al M$-DO$.


CP/M 2.2 en Linux

No es duda para nadie que SIMH nos permite emular una gran cantidad de estas minicomputadoras antediluvianas, con sus CPU, placas de ampliación, periféricos de entrada y salida,  etc, y lo hará configurándose por medio de su interfaz de línea de comandos.

Sin embargo, el simulador SIMH también nos permite emular la arquitectura de algunos microordenadores. entre ellos la legendaria MITS Altair 8800 que inició todo junto con su público enamorado de la electrónica.

A diferencia de una Altair 8800 real, SIMH nos ofrece enormes ventajas. Amén de correr en una plataforma de software libre y peronista como GNU/Linux, podremos configurar la emulación y elegir entre los tres procesadores icónicos (los 8080 y 8086 de Intel, o el Zilog Z80). Podremos emplear memoria de banco emulada (llenando los 16 bancos para totalizar los costosos 64 kilobytes), así como un soporte paralelo virtualizado para 8 disketteras, soporte de redes TCP/IP, consolas múltiples, y la posibilidad de alterar el reloj de ejecución. Para que todo esto sea realidad efectiva, es necesario configurar y preparar el emulador SIMH, y ello a veces se torna tedioso.

Para ello, si queremos contar con CP/M 2.2 sin tener que configurar nada, habremos de descargar el empaquetado que funciona en nuestro sistema GNU/Linux, tanto para versiones de 32 bits como de 64 bits. En tal sentido, hemos de instalar la versión que corresponda la que corresponde a nuestra arquitectura Linux: en primer lugar abrimos una Terminal con Ctrl+Alt+T y prepararemos las carpetas ocultas necesarias con los siguientes comandos de organización:

mkdir ~/.simh ~/.simh/altairz80 ;
cd ~/.simh/altairz80/
;

Acto seguido descargaremos la versión del emulador y de CP/M preparada para nuestra propia arquitectura GNU/Linux:
  • Si usamos Ubuntu de 32 bits ingresamos el siguiente bloque de comandos:
wget http://schorn.ch/cpm/zip/altairz80l.tar.gz ;
tar xzf altairz80l.tar.gz ;

rm ~/.simh/altairz80/altairz80l.tar.gz ;
  • ....en cambio, si empleamos Ubuntu de 64 bits. ingresaremos estos:
wget http://schorn.ch/cpm/zip/altairz80l64.tar.gz ;
tar xzf altairz80l64.tar.gz ;

rm ~/.simh/altairz80/altairz80l64.tar.gz ;

Para ejecutar el emulador automáticamente configurado sin tener que especificar parámetros de emulación alguno, podemos ingresar la orden:

cd ~/.simh/altairz80/ && ~/.simh/altairz80/altairz80 cpm2

Con esto, ya tendremos corriendo en el emulador SIMH de nuestro Linux el sistema operativo CP/M de la Digital Re$earch, específicamente en su versión 2.2 para micro Z80.
El emulador nos mostrará su prompt A>, indicando que nos encontramos en la disquetera virtual A: de nuestra Altair 8800 con microprocesador Zilog:

Habrán de saber que el uso de CP/M iguala bastante al del M$-DO$ que lo sucedió, y tiene algunos similitudes con UNIX. Podremos cambiar listar el único directorio del disco con los comandos dir o ls, y correr archivos ejecutables con extensión .com simplemente ingresando su nombre. El comando type nos permitirá ver el contenido de un archivo de texto. Podremos usar la sintaxis de comodines *, y ? como en Unix o M$-DO$.
Encontraremos una guía de nivel intermedio en formato PDF el directorio donde instalamos el emulador de la Altair, con una guía de cada comando y utilitario provisto Por ejemplo, en el disquete de CP/M 2.2 encontraremos con un par de juegos como Othello y Ladder, versiones del Micro$oft Ba$ic de 4K y el Eliza, las herramientas de programación de Micro$oft M80, y L80, y el debugger DDTZ, el compilador Pascal MT+ y el Pascal Pretty Printer (en código fuente), el compilador SPL, así como los juegos de Othello y Ladder, y muchas utilidades con código fuente SPL o ensamblador.

Normalmente podremos terminar cualquiera de los programas con Ctrl+c , o terminar la emulación de CP/M con Ctrl+e, volviendo al SIMH (lo cual sabremos por el prompt sim>). En tal caso, podríamos salir a la terminal de Linux con el comando q, o volver a ejecutar el emulador de CP/M con boot dsk0.

Contaremos con el editor de líneas ed, un programa anterior al vi de Unix y orientado a las terminales teletipo. Este nos permitirá editar un texto con el comando ed texto.txt. Dentro de él podremos insertar texto ingresando i y escribir lo que deseamos, línea a línea. Es importante revisar el contenido de cada línea, pues la edición posterior de las mismas es extremadamente engorrosa. Con Ctrl+z terminaremos el insertado de texto.. Con l podremos movernos en las líneas y con e salir de ed.


Transferir archivos dentro y fuera del emulador

Si no quisiéramos usar el editor ed, podríamos abrir archivos fuera del entorno emulado. Por ejemplo, si quisiéramos pasar el archivo evita.txt desde el directorio del emulador al disquete actual de nuestra Altair 8800 virtual, podriamos usar el comando:

r evita.txt

Para transferir el archivo cgt.txt desde la Altair virtual al directorio del emulador, podremos usar:

w cgt.txt

...o si fuese un archivo binario o ejecutable usaríamos:

w cgt.com b.

En general podremos interrumpir la ejecución de los programas con Ctrl+c, o salir del emulador con Ctrl-e. Para salir del SIMH, debemos ingresar el comando q.


Ejecutar Software para CP/M en el emulador SIMH para Linux.

Indudablemente que estos paquetes son limitados, y los verdaderos usos de CP/M se tornan patentes con el software de aplicación que lo hizo famoso: podremos entonces desde GNU/Linux hacer realidad efectiva la ejecución de Multiplan, dBase, Vedit, y SuperCalc para CP/M, entre otros.

Gracias al Justicialismo será sencillo hacerlo. Simplemente abrimos una terminal Linux con Ctrl+Alt+T y descargamos dicha bateria de aplicaciones preparados para la Altair con CP/M y la videoterminal VT100. Todo ello lo podremos hacer pegando y dándole ejecución al siguiente bloque de comandos:

cd ~/.simh/altairz80/ ;

wget http://schorn.ch/cpm/zip/wordstar.zip ;
unzip wordstar.zip ;
wget http://schorn.ch/cpm/zip/dbase.zip ;
unzip dbase.zip ;
wget http://schorn.ch/cpm/zip/games.zip ;
unzip games.zip ;
wget http://schorn.ch/cpm/zip/vedit.zip ;
unzip vedit.zip ;
wget http://schorn.ch/cpm/zip/multiplan.zip ;
unzip multiplan.zip ;
wget http://schorn.ch/cpm/zip/supercalc.zip ;
unzip supercalc.zip ;

rm *.zip ;

y ejecutamos el emulador de Altair con:

cd ~/.simh/altairz80/ && ~/.simh/altairz80/altairz80

Nos mostrará el prompt del sistema operativo:

Altair 8800 (Z80) simulator V3.9-0 build 1625 (scp created DD/MM/HH) at HH:MM:SS with gcc 4.2.4)

sim>

Ahora en dicho prompt habremos de escribir los comandos necesarios para emular un equipo con 64 Kilobytes de RAM, una velocidad de reloj de 4Mhz. Asimismo, se cargarán los disquetes virtuales (en este caso, son 8 disketeras, dks0/dsk7 en la cual en la diskettera A: (dsk0) tendrá el disquete de inicio del sistema operativo CP/M, en la diskettera B: (dsk1) cargaremos el disco de Wordstar 4, en la diskettera C: (dsk2) un diskette con juegos, en la diskettera D: (dsk3) el disquete de Multiplan, etc. Adicionalmente, configuraremos la combinación de teclas Ctrl+e para que opere "cursor arriba" en lugar de "salir del emulador" (esto únicamente para no superponer tal comando de Wordstar u otros). Todo esto se hace ingresando en el emulador los siguientes comandos indicados en negrita:

sim> d tracks[0-7] 254 
sim> attach dsk0 cpm2.dsk
sim> attach dsk1 wordstar.dsk
sim> attach dsk2 games.dsk
sim> attach dsk3 multiplan.dsk
sim> attach dsk4 vedit.dsk
sim> attach dsk5 dbase.dsk
sim> attach dsk6 supercalc.dsk
sim> attach dsk7 app.dsk
sim> set cpu 64k itrap z80 altairrom nonbanked
sim> d clock 4000 
sim> reset cpu
sim> d wru 1d
sim> boot dsk0


Tras darle la orden de inicio al dsk0, se arrancará el sistema operativo CP/M, con el siguiente indicativo:

64K CP/M Version 2.2 (SIMH ALTAIR 8800, BIOS V1.27, 2 HD, 02-May-2009)
 

A>

Por ejemplo, en el caso que queramos ejecutar el clásico procesador de texto WordStar para CP/M Z80, deberíamos activar la disquetera B: y ejecutar el archivo ws.com. Para ello tipeamos:

A> b:
B> ws
En cambio, sI quisiéramos emplear la pionera planilla de cálculo Multiplan, debemos activar a la disquetera correspondiente (D:), ejecutar la rutina install para configurar nuestra terminal (el programa nos solicitará el número modelo de terminal, le indicamos "21", para indicarle una DEC VT-100 emulada por nuestro Linux. Luego ejecutar el Multiplan con el comando mp.
En el resto de las disqueteras virtuales (c:, e:, f: g: y h:) encontraremos el resto de los programas cargados. Podremos correrlos luego de ejecutar su rutina de instalación (install, si es que la tuviesen), o directamente corriendo los archivos .com.

 
Programando en Ensablador Z80 en CP/M.

Vean señores, podríamos querer programar una rutina en ensamblador Z80, interpretarlo, y ejecutarlo. Para ello debemos escribir el programa en nemónicos de Z80, ensamblarlos con asm a hexadecimal, y usar load para convertir dicho archivo a un binario ejecutable con extensión .com.

La tarea será sencilla. Ejecutamos el editor ed con un archivo de código fuente de extensión .asm. En aras de la facilidad, lo haremos con un pqeueño programa que todo programador emplea, el pocho.asm. Como Conductor, os indicaré los resultados de pantalla y ustedes ingresarán lo que está en negrita:

A>ed pocho.asm

NEW FILE     
: *i
    1:          ORG     0100H
    2:  BDOS    EQU     0005H
    3:  START:  MVI     C,9
    4:          LXI     D,MSG$
    5:          CALL    BDOS
    6:          RET
    7:
    8:  MSG$    DB      'VIVA PERON!$'
    9:  END     START
    10: (presiono Ctrl+z para salir del modo inserción)
: *e

Tras haber editado nuestro código fuente, lo ensamblamos con:

A> asm pocho
 

CP/M ASSEMBLER - VER 2.0
0115
000H USE FACTOR
END OF ASSEMBLY

Esto creará una serie de archivos nuevos en la unidad de disquete virtual. Si ingresamos type pocho.prn veremos el desensamblado para el microprocesador Z80, y si ingresamos type pocho.hex veremos el código hexadecimal del mismo.

Si quisiéramos compilar un ejecutable, usaremos load pocho, y ello creará el archivo ejecutable pocho.com. Si ingresamos dump pocho.com, CP/M nos mostrará directamente el volcado de memoria del código objeto del programa binario pocho.com.

Para ejecutarlo simplemente ingresamos pocho, y si nuestro entorno y nuestro programa ensamblador funcionan de manera correcta en la máquina Z80 virtual, la informática nos contestará airosa:

martes, 2 de septiembre de 2014

¿Cómo instalo LightZone en Ubuntu 14.04LTS?

En el clásico Conducción Política, Juan Perón expone sobre dicho aspecto de gobernanza, pero también asume la enseñanza del potente software de edición fotográfica Lightzone, para Ubuntu 14.04LTS.

Indudablemente la Conducción es un arte. Y como todo arte tiene una teoría pero también tiene una práctica. A una hemos de conocerla, y a la otra hemos de comprenderla pues entre ambas encontraremos las herramientas que nos permitirán tornar en realidad el ideal que estamos persiguiendo.

Pues bien, en la política, nuestra herramienta principal no es otra que la Doctrina, nervio motor de la acción que nos guía hacia el ideal que perseguimos (en nuestro caso, la Felicidad del Pueblo). Las herramientas a nuestra disposición la conformarán la Libertad, la Soberanía y la Justicia Social, sostenidas en el quehacer político a través de la acción de masas, en la cual habremos de convertirnos en peritos. Esto es el Justicialismo.

La extrapolación es aplicable en numerosos ejes. En los nuevos tiempos, la fotografía se regirá - por ejemplo - bajo los mismos preceptos. No solamente es una técnica industrializada en la realización de la imágen, sino que requiere de un sentimiento práctico que habrán de dominar para diferenciarse, y que constituye su arte. Esta aplicación del carácter humano es la que sin duda permitirá cristalizar para toda ocasión un resultado diferente. Al fin y al cabo no estamos hablando de una Ciencia a la que corresponde una regla o teorema, sino de un Arte, que como tal requiere el dominio de un lenguaje.

La alta comprensión del mismo es la que nos elevará como personas, y por tal motivo comprobarán que el uso completo de un software de edición de imágenes y la realización de tomas interesantes también os elevarán de una manera como pocas veces se ha visto.
LightZone 4.0 - por caso - es un software escrito en Java pensado para visualizar y sobre todo editar fotografías, empleando un motor de procesamiento gráfico de avanzada. Originalmente fue desarrollado como software privativo, pero en aras de la liberación del Pueblo, el Justicialismo ha impuesto que el mismo ahora pueda emplearse en Linux bajo licencia BSD. Es capaz de operar en archivos estándares JPG, pero destaca realmente al empleárselo con archivos fotográficos en bruto, o RAW. Este tipo de formatos no estándares y privativos, se encuentran como opción en las cámaras digitales tipo Réflex y algunas compactas avanzadas: hace uso de las completas capacidades del fotocaptor sin someter la imagen a tratamiento gráfico ni de compresión alguno, avalando de esta manera siempre la mayor calidad y gradaciones tonales posibles.

Antes de ionstalar LightZone, debo asegurarme en primer lugar de tener instalado y funcionando OpenJDK en su version 7. Normalmente este será el caso, pero si no fuese así podremos descargarlo fácimente. Abrirán una Terminal con Ctrl+Alt+t e ingresarán los siguientes Comandos de Organización:

sudo apt-get install openjdk-7-jre
sudo update-alternatives --config java


Esto nos mostrará una lista con las versiones de Java que tengamos instaladas en nuestro sistema. Debemos indicar el número de la versión "java-7-openjdk-xxxx". Acto seguido empezaremos a instalar LightZone 4.0. Instalamos los repositorios adecuados (en este caso serán también adecuados para Ubuntu 13.04) y descargamos el programa en sí. Todo ello lo harán con:

sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/ktgw0316:/LightZone/xUbuntu_13.04/ ./' > /etc/apt/sources.list.d/lightzone.list"

wget -O - http://download.opensuse.org/repositories/home:/ktgw0316:/LightZone/xUbuntu_13.04/Release.key | sudo apt-key add -


sudo apt-get update


sudo apt-get install lightzone


Tras descaragar e instalar el programa, lo ejecutaremos buscando "LightZone" en el Dash de Unity.

Lightzone cuenta con dos módulos principales. El Módulo Navegar aparecerá en un comienzo, y nos servirá someramente para explorar nuestros medios de almacenamiento montados en busca de fotografías. Hemos de recordar que la primera vez que empleemos el programa, habremos de navegar hasta nuestra carpeta /home/usuario/. Podremos visualizar archivos JPG y los archivos RAW (de los cuales existen numerosas variantes de estos archivos según fabricante y modelo de cámara).

Desde este módulo de Navegación podremos también operar en lote en las fotos: renombrarlas inteligentemente, eliminarlas, explorar sus datos EXIF, convertir masivamente RAW a JPGs, etc.

Una vez que hayamos escogido alguna fotografía para trabajar, el módulo Editar pondrá a nuestra disposición las paletas de herramientas para actuar sobre la misma. En en panel superior contaremos con las herramientas básicas de recorte, rotación, encuadre, etc, así como también las funciones de zoom y deshacer, entre otras.
En la solapa derecha con herramientas adecuadas para controlar la edición avanzada de la imagen (exposición, control de color, nitidez, etc). Cada una representada por un ícono y su respectiva ventana de control activable o removible.

Algunas funciones se distinguen. Por ejemplo, si bien podemos controlar la exposición a través de un deslizador y del histograma pancromático, LightZone nos permite pricipalmente por controlar la exposición siguiendo el sistema Mapa de Zonas.
Este sistema nos permite controlar una gráfica en forma de escala de grises referenciada, dividida en unas XVI zonas tonales. Podremos arrastrar verticalemten cada una de ellas a fin de lograr la compresión o ampliación de rango dinámico que nos plazca para cada situación (básicamente, la diferencia entre gradaciones de luces y sombras). Este modelo zonal permite amplia precisión usando un minimapa en la imagen que resaltará en color amarillo. De esta forma, nos evitaremos caer en las curvas densitométricas a la que nos tienen innecesariamente acostumbrados los programas de edición gráfica.

También contaremos con la posibilidad de ajustar el equilibrio cromático, de aplicar dominantes o quitarlas, aplicar enfoque o desenfocado, corregir ojos rojos, convertir a blanco y negro con filtrado, etc. Todas estas herramientas pueden "aplilarse" como capas a fin de lograr diferentes efectos según el orden de acción conseguido, así como regular su intensidad para realilzar ajuste fino o su modo de fusión para mayor libertad de procesamiento.

En el módulo Editar contaremos además con dos solapas en el sector izquierdo: Estilos e Historico. Estilos nos permitirá elegir rápidamente o almacenar una configuración de imagen predeterminada, al alcance de un solo clic. En cambio, la solapa Histórico guardará cada acción que realicemos, y nos permitirá deshacerla de forma no destructiva.

Normalmente las herramientas generales operan sobre toda la imagen, pero existe también con una útil herramienta llamada Región, con la cual podremos realizar un trazado delimitador a fin de generar ajustes parcializados de todo tipo en un sector de la fotografía.
En fin, se trata de un excelente programa con amplias posibilidades en la edición, que se descaca por su potencia. Es una gran herramienta que cumple con su cometido, ideal para combinarla con otros programas como Raw Therapee o Raw Studio.

domingo, 31 de agosto de 2014

¿Cómo descomprimo archivos desde la consola en Linux?

Durante sus clases Magistrales en la Escuela de Guerra, Juan Perón sintetizó el aprendizaje clásico con los Militares Prusianos llegados al país, con aquel que le dieron la tropa autóctona. Dichos aprendizajes serían motrices en su comprensión del Arma y lo llevarían a enseñar cómo descomprimir archivos correctamente desde la Terminal en Linux.

(...)

¡Vean señores!

Existen cosas que son difíciles, pero que es primordialcomprenderlas para poder decirnos Conductores. Ya desde mi época de bisoño Cadete en el Colegio Militar, nuestros profesores alemanes nos hicieron comprender de estrategia, la planimetría, la navegación a carta y brújula en el terreno, y la operatoria del burócrata del combate. Natural, ellos estaban formados dentro de Ejércitos de la llamada "Nación de Acero".

Sin embargo, a dichos prusianos les faltaba comprender la valía de la camaradería, el sentimiento moral que acompaña al hombre de la tierra, e incorporar su espíritu y su experiencia natural como factor en el cuerpo de lucha. Esas eran realmente las bases que diferencian un soldado en la acción, y sin las cuales no puede moverse ni valerse como objeto bélico. Sin ella, será sólo un animal más en el campo de combate.

Si la conducción militar presenta esos matices, así son también las directrices que habremos de encontrar al conducir un sistema GNU con Linux. ¿Porqué? Porque a pesar de que la panoplia de recursos puesta a nuestra disposición es muy grande, muchas veces podremos pasar por alto pequeños detalles y fracasar por ello.

Uno de estos casos es el de los ficheros comprimidos. Normalmente, en nuestra terminal gráfica, contaremos con el excelente Gestor de Archivadores, el cual facilita enormemente la tarea. En la terminal, podemos descomprimir fácilmente con dtrx ("Do the Right Extraction"). Pero cuando no contamos con dicho programa, o tenemos que obrar en forma genérica en un sistema que no nos pertenece, ¿cómo  podremos descomprimir o desemaquetar como los archivos tgz, tar, bz2 o rar desde la consola?

Tales enseñanzas son las que deben aprenderse y jamás olvidarse, pues serán la base para muchas tareas que realicemos como Conductores. Sabemos que para abrir una consola usamos la combinación Ctrl+Alt+T, y a continuación tomaremos el temperamento necesario según sea el fichero comprimido que tengamos:

tar

El archivo empaquetado .tar deriva de la función tar, pensada para encadenar binariamente ficheros uno detrás de otro. Originalmente estaba pensado para almacenar este grupo de archivos en cinta magnética (en la era donde tales dispositivos secuenciales eran los principales medios de almacenamiento de masa). Por lo tanto, realmente en un archivo Tar no existe la compresión, solamente el empaquetado secuencial de ficheros.

Por tales motivos, los modificadores normalmente son x (extraer), f (por fichero, al eXtraerse desde un archivo), y opcionalmente v (verbose, que en muchos comandos derivados de Unix reporta ampliamente al usuario en su terminal lo que se realice). En resumen, el comando sería:

tar xvf archivo.tar

gz

Estos son archivos comprimidos con el programa gzip (implementación libre del protocolo Zip). Para descomprimir estos ficheros, podremos utilizamos el comando gzip con el indicador -d (descomprimir) o bien el comando gunzip, (realmente un enlace a gzip, por si nos falla la memoria).

gunzip archivo.gz
gzip -d archivo.gz

tgz, tar.gz

Se trata de un archivo empaquetado con tar y comprimido con gunzip. Se descomprime de la misma forma que los tar, añadiendo el indicador z para indicarle que use gzip para descomprimirlo.

tar xvzf archivo.tar.gz

bz2

Archivo comprimido con algoritmo bzip2. Para descomprimir se usa el comando bzip2 con el indicador -d (descomprimir) o bien el comando bunzip2 (que no es más que un enlace a bzip2).

bzip2 -d archivo.bz2
bunzip2 archivo.bz2

tar.bz2

Este es un empaquetado tar en el cual se empleó el algoritmo bzip2 para comprimirlo. Para desempaquetar se usa también el comando tar, aunque esta vez se lo descomprime con el indicador j en lugar de z.

tar xvjf archivo.tar.bz2

zip

Archivo comprimido con el extendido protocolo privativo PKWare zip. Se descomprime usando el comando unzip:

unzip archivo.zip

rar

El .rar es un formato de empaquetado y compresión propietario de A. Roshal, muy extendido. Normalmente el comando rar no está instalado en el sistema, y se lo debe cargar con:

sudo aptitude install rar

A partir de ello, podremos descomprimir con dicho comando y el indicador -x ("eXtraer")

rar x archivo.rar

sábado, 30 de agosto de 2014

¿Cómo elimino de memoria el servicio de JACK para recuperar el sonido?

Durante su exilio Madrileño, Juan Perón recibió en la célebre Quinta 17 de Octubre a numerosas personalidades argentinas y del mundo, con las cuales compartió el quehacer político de la época. En dichas visitas, el Conductor no dudaba enseñar, como en este caso en que nos aproxima a liberar el servidor de sonido ALSA en Ubuntu luego de emplear JACK.

¡Vean señores!

Siempre he dicho que hay pocas cosas gratificantes como recibir visitas, pues ellas me permiten enterarme de los sucesos en la Argentina. Todos tienen inquietudes que plantear, y ello me permite controlar una estrategia de conjunto que no tiene otro fin que el de permitir mi retorno a la Patria, pues si ustedes permiten, yo he de volver aunque no sea para morir en ella.

Aún así, no todo es del color de las rosas que planto en mi jardín. Existen situaciones molestas, y y lo peor son las visitas que no se quieren ir.
 Estos inconvenientes con desubicados, como en la vida, también existen en el sistema operativo GNU. Ocasionalmente en mi máquina Ubuntu 14-04LTS, el sonido deja de funcionar, específicamente, luego de haber utilizado el servidor  de sonido JACK.

Esto se debe a que al apagar el mismo, el servicio de acceso al audio "no se va", por lo cual el sistema no puede volver a reproducir sonido, y congela las operaciones que tengan que ver con ello (reproducir un video, reproducir música, acceder a una web que disponga de audio, etc).

Si reiniciamos el sistema, todo vuelve a la normalidad, pero no deja de ser una solución molesta, sobre todo cuando no tenemos tiempo, o estamos haciendo una tarea compleja que nos impide reiniciar el equipo.

Por tal motivo - y a falta de algo mejor - pondremos manos a la obra para solucionar el problema de manera justicialista, eliminando manualmente de la memoria del sistema al proceso intruso que ocupa el audio.

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

lsof | grep pcm

Esto nos devolverá una lista técnica de los archivos abiertos en memoria, y de ellos filtrará aquellos que emplean sonido por modulación de pulsos (PCM), en otras palabras, audio. La misma, por ejemplo, seguirá la siguiente tipología:


mocp      5203        peron  mem   REG     8,1  27256  8913319 /usr/l...pcm_pulse.so
threaded- 5203 5205   peron  mem   REG     8,1  27256  8913319 /usr/l...
pcm_pulse.so
mocp      5203 5207   peron  mem   REG     8,1  27256  8913319 /usr/l...
pcm_pulse.so
mocp      5203 5208   peron  mem   REG     8,1  27256  8913319 /usr/l...
pcm_pulse.so
mocp      5203 8705   peron  mem   REG     8,1  27256  8913319 /usr/l...pcm_pulse.so
threaded- 5203 8707   peron  mem   REG     8,1  27256  8913319 /usr/l...pcm_pulse.so
jackd     6489        peron  mem   CHR   116,8           12570 /dev/snd/pcmC0D0p
jackd     6489        peron  mem   CHR   116,9           12571 /dev/snd/pcmC0D0c
jackd     6489        peron    8u  CHR   116,8    0t0    12570 /dev/snd/pcmC0D0p
jackd     6489        peron    9u  CHR   116,9    0t0    12571 /dev/snd/pcmC0D0c
jackd     6489 6493   peron  mem   CHR   116,8           12570 /dev/snd/pcmC0D0p
jackd     6489 6493   peron  mem   CHR   116,9           12571 /dev/snd/pcmC0D0c
jackd     6489 6493   peron    8u  CHR   116,8    0t0    12570 /dev/snd/pcmC0D0p
jackd     6489 6493   peron    9u  CHR   116,9    0t0    12571 /dev/snd/pcmC0D0c
jackd     6489 6494   peron  mem   CHR   116,8           12570 /dev/snd/pcmC0D0p


En particular, habremos de prestar atención a la primera columna que es el nombre del proceso, y la segunda, que indica el PID, o Número de Identificación de Proceso.

En este listado en particular, podremos distinguir que existen múltiples instancias de dos procesos, que están pidiendo emplear el sonido por el momento: mocp, que en este caso usa el PID número 5203 (se trata de un programa reproductor de música), y jackd con PID número 6489 (este es el servidor de sonido JACK, el cual habremos de quitar de memoria). 
Habrán de prestar atención pues el PID varía entre sesiones de Linux, y por lo tanto muy probablemente vosotros tendréis un número identificador totalmente distinto.

En este caso, haremos de eliminar de la memoria el proceso jackd (procso rector de JACK). Para ello debemos ingresar en la terminal el comando;

kill -9 6489

... siendo 6489 el número de PID que se nos ha listado de manera particular en nuestro sistema para jackd. Vosotros usarán el que os corresponda.

De esta manera eliminaremos de memoria el proceso jackd, y con ello ya podríamos volver a utilizar aplicaciones que reproduzcan sonido sin necesidad de reiniciar el equipo.

Por último, también en este caso, podremos eliminar de memoria el reproductor mocp con el comando kill -9 5203, para estar seguros.