miércoles, 8 de diciembre de 2010

Script para lanzar Jack con varias aplicaciones compatibles

Hay cosas que me gustan de Jack: su baja latencia, su estabilidad, y su arquitectura modular. Pero también hay una cosa que no me gusta de Jack: su arquitectura modular... Tenéis razón, voy a explicar un poco mejor qué quiero decir con ésto.

Lo que me gusta de su sistema modular es que puedes conectar de muchas maneras diferentes aplicaciones compatibles, tanto audio...

...Como MIDI:

Pero es una lata tener que conectar todo cada vez que abres un proyecto. Al menos si lo comparamos con abrir un proyecto de una DAW en Windows o en Mac -tipo Cubase, Sonar, Samplitude, Logic, etc-, en el que todo, plugins, teclado controlador, tarjeta de sonido y demás dispositivos hard y soft ya se almacenan conectados entre sí, bien en el mismo proyecto, bien en el archivo de configuración del mismo programa, según de lo que se trate.

Hace tiempo probé una distribución GNU/Linux llamada Musix. Está orientada a músicos fundamentalmente. No la llegué a instalar por problemas con mi vieja Sound Blaster Live! USB, que no la reconocía, nunca sabré por qué. El caso es que vi algo que me gustó mucho: unos lanzadores de menú que enlazaban a scripts que ponían en marcha Jack con algunas aplicaciones concretas. Había varias combinaciones. En la captura algunos ejemplos se pueden ver:

Pues bien, hace poco me dio por analizar el código que hacía posible el "milagro" que buscaba. Tuve que tirar de VirtualBox, porque, por el motivo que sea, ya no me arranca el live CD de Musix en el amd64. Me llevó un buen rato, pero conseguí analizar uno de los lanzadores. Y Pablo, hace ya un tiempo me comentó cómo podía ser y dio en el clavo: son unos simples scripts que realizan, básicamente, las siguientes operaciones:

  1. Arranca Jack.
  2. Pausa (para dar tiempo a que arranque el servidor de audio).
  3. Arranca sinte o efectos deseados.
  4. Pausa (para dar tiempo a que se integren con Jack).
  5. Arranca secuenciador.

Así que para realizar en Ubuntu, tuve que hacer los siguientes pasos:

  1. En Jack Control, en el botón Setup, pestaña Otras, marcar la casilla Iniciar el servidor JACK al arrancar qjackctl.
  2. Damos por supuesto que Jack lo tenemos bien configurado para funcionar. Pablo os lo explica mucho mejor en su blog.
  3. Creamos un nuevo archivo, con extensión sh o sin ella. Le damos permiso de ejecución, que gráficamente se consigue en [botón derecho sobre el icono del archivo] Propiedades - Permisos - Permitir ejecutar el archivo como un programa -es una casilla para marcar-. Le damos un nombre descriptivo. En mi ejemplo quiero abrir Jack+ZynAddSubFx+Rosegarden.
  4. Abrimos el archivo con un editor de textos, por ejemplo gedit, y escribimos un código como el siguiente:
    #estas líneas cierran las aplicaciones en caso de que estén abiertas para evitar conflictos
    killall qjackctl &
    killall rosegarden &
    killall zynaddsubfx &

    qjackctl -s &

    #pausa para dar tiempo a que arranque Jack Control
    sleep 5s

    zynaddsubfx -L ruta_del_sonido_de_zynaddsubfx.xiz &

    #pausa para dar tiempo a que arranque ZynAddSubFx para que Rosegarden lo encuentre y se conecte a él
    sleep 5s

    rosegarden ruta_del_proyecto
  5. Guardamos.
  6. Hacemos doble clic sobre él, y seleccionamos Ejecutar en un Terminal para comprobar qué sucede en cada momento.
  7. En pocos segundos ya debería estar abierto Jack, con el servidor de audio en marcha, conectando ZynAddSubFx con Rosegarden y el teclado controlador.

Un detalle a tener en cuenta: en ninguna parte del script dice qué se conecta a qué ni a qué salidas. Es Rosegarden el que memoriza en su proyecto esa información. Por eso el orden es importante. Primero debe arrancar Jack, después los sintetizadores, efectos o samplers que necesitemos y por último el programa de secuenciación, para que lo encuentre todo en su sitio y poder así conectarse en condiciones.

Otro detalle es que, para sacar el máximo partido de estos scripts, hay que crear uno para cada proyecto que tengamos en marcha, con la ruta correspondiente. En mi caso tengo el archivo de las partituras que estoy haciendo con Rosegarden en un pendrive, y me sirve en ambos ordenadores. Y para asegurarme el sonido adecuado en ZynAddSubFx, navegué hasta el preset deseado, hice los retoques que precisé en el sonido y guardé, también en el pendrive, el archivo generado por el sintetizador, de extensión xiz.

No hay comentarios:

Publicar un comentario en la entrada

No hay normas especiales para publicar comentarios en este blog. Sólo las básicas: respeta, no insultes, y no hagas SPAM descaradamente. Tampoco se admitirán comentarios que vulneren la Ley. Cualquier aportación, consulta y crítica es bienvenida, a condición de cumplir estas normas básicas.

Si lo que quieres es ponerte en contacto directamente conmigo, dispones para ello de un formulario de contacto.