Automatizando nuestro “Linux Home Studio” mediante un script un tanto guarro

O debería de decir “¿Como lanzar varias aplicaciones simultáneas bajo GNU/Linux?”… Alguno me tachará de sensacionalista por el título escogido, pero veréis, en un futuro, que lanzar todo esto y tener un proyecto por defecto en Qtractor nos puede ser bastante útil cuando grabamos audio bajo GNU/Linux.

Si queremos lanzar varias aplicaciones a la vez desde la terminal, añadiremos el símbolo ‘&’ después de cada una de ellas, indicando con esto que se ejecuten en “segundo plano”:

$ qtractor & hydrogen & guitarix

En este ejemplo, Qtractor e Hydrogen se lanzarían en segundo plano, permitiendo que se ejecuten las otras aplicaciones. Guitarix, al ejecutarse sin el parámetro ‘&’, se ejecutará también pero acaparando la terminal. Esto es, en el momento en el que cerremos la terminal, Gutiarix se cerraría (no así los otros dos programas). Par ver la diferencia, añadid un tercer ‘&’ al final de la línea descrita arriba.

Muy bien, pongámonos ahora en el caso de que yo quiero, con un click, lanzar a la vez las siguientes aplicaciones para grabar un proyecto musical:

  • Qtractor para usarlo de Software DAW Multipistas.
  • Hydrogen para reproducir sus bancos de sonido de baterías.
  • Guitarix para grabar las guitarras y bajos directamente por línea.
  • Qsynth para usarlo como sintetizador software y grabar teclados.
  • JAMin para masterizar mi proyecto.

Pues bien, como no quiero recordar o buscar en el historial una extensa línea de terminal cada vez que arranco el ordenador, vamos a hacer un sucio a la par que sencillo script (léase vulgarmente como una “sucesión de comandos”).

Para el Script crearemos un bonito “archivo de texto” (con Gedit, Nano o el editor que más rabia os de) en el que incluiremos los comandos que se van a lanzar desde la terminal ‘bash’. La primera línea ‘#! /bin/sh’  hace referencia a que el sistema debe ejecutarlo mediante terminal. El parámetro ‘&’ ya sabéis lo que hace, ¿no?

Posteriormente, presento un remiendo para este “sucio” primer Script realizado por el colega GetUpCity!, que es una persona más experimentada y ha aportado un par de buenos consejos.

#!/bin/sh
(aplicacion1) &
(aplicacion2) &
(aplicacion3)

Un Script de este tipo se salva con terminación .sh y, finalmente, se lanza desde terminal mediante:

$ sh nombredelscript.sh

Ahora paso a explicaros como ha quedado mi script. Si no conocéis el tema del Audio bajo GNU/Linux no os preocupéis por lo que no entendáis, es lógico.😀

1. Mi primer Script

Como me ayudo de Qjackctl para lanzar y gestionar JACK, me encargo de darle tiempo (incluyendo una pausa de 5s en el script) antes de lanzar los otros programas con el parámetro ‘sleep’. Qtractor necesita que todos los programas estén en ejecución para realizar la autoconexión de los buses de nuestro proyecto por defecto, así que indicaré otra pausa antes de su arranque.

El comando ‘echo’ hace que el Script devuelva un texto. En este caso he incluído varias líneas ‘echo’ para que el Script nos muestre todos los pasos a medida que se ejecuta en la terminal.

Finalmente, y dado que uso varios programas en versión de desarrollo que muestran diversos mensajes de advertencia si se ejecutan desde una terminal, incluyo el parámetro ‘2> /dev/null’, que indica al sistema que los mensajes de error estándar de este programa (en mi caso: Qtractor y JAMin) se envían a un dispositivo “no existente”, por lo que no aparecerían en la terminal. Son mensajes de advertencia, no impiden la ejecución del programa, pero por un mero fin estético no quiero verlos delante.

Encontraréis también un ‘1> /dev/null’. 1> indica toda la salida estándar del programa, para que Hydrogen no diga nada de nada. Así podéis comparar la primera imagen con esta nueva captura, en la que cambié el 2> inicial por el 1>:

#!/bin/sh
echo Nuevo proyecto de Audio
echo "Cargando TODO el Software de Audio!!"
echo 1.Servidor JACK para Audio de Baja Latencia
qjackctl &
sleep 5s
echo 2.Guitarix - Modelado de Amplificadores
guitarix &
echo 3.Hydrogen - Batería
hydrogen 1> /dev/null &
echo 4.Qsynth - Sintetizador
qsynth &
echo 5.JAMin - Software de Masterización
jamin 2> /dev/null  &
sleep 5s
echo 6.Qtractor - DAW Multipistas
qtractor 2> /dev/null &
echo "DALE!"

2. Revisión del Script

(Por GetUpCity!)

  • Es interesante comenzar el script con ‘#!/bin/bash’ en vez de ‘#!/bin/sh’. Esto es porque #!/bin/sh lanzará los comandos en la shell por defecto: si la shell que utiliza el usuario no es bash por defecto, el script no funcionará aunque el sistema tenga la shell bash instalada.
  • Cuando utilizamos “&” al final de un comando lo que hacemos es ejecutar ese proceso en segundo plano, lo que nos permite seguir utilizando la misma terminal para introducir otros comandos, pero no desvincula el proceso de la terminal (al cerrar la terminal se mata el proceso de todas formas). Para desvincularlo de la terminal se puede usar el comando “nohup” antes del nombre del proceso a ejecutar.
    • Para que funcione dentro del script correctamente habría que utilizar tanto “nohup” como “&”, así ejecutaríamos los procesos en segundo plano de forma que el script pueda seguir lanzando comandos en la terminal y además se podría cerrar esa terminal sin que mate ningún proceso. Todo esto suponiendo que no queramos tener la terminal abierta para nada.
    • También comentar que, de esta manera, nos podemos ahorrar el mapear las salidas a /dev/null, ya que no habrá terminal alguna abierta, o bien mapear la salida de errores a un archivo para tener un registro de errores por si pasa algo, ej: “2>/home/errores.txt” creará el archivo con los errores, si queremos que los errores de otros programas se añadan al mismo archivo usamos “2>>/home/errores.txt” en todos menos en el primero, que llevará “2>/home/errores.txt”.
  • Por último, si finalizamos el script con un ‘read x’, una vez que finaliza el script y pulsamos ‘intro’ se cierra la terminal. Esto es muy cómodo si hacemos el script de forma que se desvinculen los procesos de la terminal.
#!/bin/bash
echo Nuevo proyecto de Audio
echo "Cargando TODO el Software de Audio!!"
echo 1.Servidor JACK para Audio de Baja Latencia
nohup qjackctl 2> /home/errores.txt &
sleep 5s
echo 2.Guitarix - Modelado de Amplificadores
nohup guitarix 2>> /home/errores.txt &
echo 3.Hydrogen - Batería
nohup hydrogen 1> /dev/null 2>> /home/errores.txt &
echo 4.Qsynth - Sintetizador
nohup qsynth 2>> /home/errores.txt &
echo 5.JAMin - Software de Masterización
nohup jamin 2> /dev/null &
sleep 5s
echo 6.Qtractor - DAW Multipistas
nohup qtractor 2> /dev/null &
echo "DALE!"
echo Pulsa ENTER para cerrar la terminal
read x

Lanzador para el Script

Por otra parte, si queréis crear un lanzador para este script ya entramos en el terreno de vuestro entorno gráfico. No es muy difícil, normalmente hacer el archivo .sh ejecutable (Click derecho>propiedades>permisos) y crear un lanzador que apunte a él. En escritorios nuevos como Unity y Gnome 3 os podéis volver locos para algo tan simple, también en LXDE… De todas formas, si hacéis doble click en el archivo .sh una vez es ejecutable, obtendréis el siguiente menú, y supongo sabréis como seguir.


Tengo pendiente hablaros de un simple script creado por un colega (que sí que sabe de esto de verdad…) para incrustar subtítulos en vídeos. De momento tendréis que conformaros con esto, que a mí me resulta útil por la cantidad ingente de programas a lanzar si queremos trabajar con audio.

P.D: Yo he “escondido” (mediante /dev/null) los mensajes de salida de esos programas porque se donde me meto. Si no tenéis confianza en su funcionamiento, dejad que las letras fluyan y fluyan para cuando queráis encontrar el error, que para eso está la terminal😉

Acerca de Gaius Baltar
Aficionado a la tecnología informática desde que un MSX pasó por casa y apasionado defensor del Software Libre como religión para unir a los pueblos. Es Gaius Baltar al fin y al cabo, y tiene derecho a equivocarse. Cuando se aburre, redacta y gestiona los contenidos en diversos blogs subculturales.

4 Responses to Automatizando nuestro “Linux Home Studio” mediante un script un tanto guarro

  1. kiko dice:

    Interesante y muy útil. Algunas cosas las sabía, pero otras no tenía ni idea. Me recordó un script que tenía en teleco para compilar y lanzar unos procesos. El script se llamaba “amor”😀

  2. Pingback: Producción Musical con Software Libre: Recapitulación « El chalé de Gaius Baltar

  3. Pingback: “Usando JACK Audio Connection Kit”, de Glen MacArthur « El chalé de Gaius Baltar

  4. hectorlopez dice:

    Reblogged this on My personal Blog.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: