jueves, 15 de octubre de 2009

Creando canciones de tempo variable y sincronizando con hydrogen y ardour

###################################
Notas de revisiones:
Revisión 0: 15 octubre 2009. Publicado
Revisión 1: 17 octubre 2009. Completado, menos video.
Revisión 2: 19 octubre 2009. Completado con video demo.
###################################

En este tutorial mostramos:
"""""""""""""""""""""""""""""""""""
1) Uso básico de klick, un increíble metrónomo de línea de comandos, y gtklick, su interfaz gráfica.

2) Uso de mapas de tempo para reflejar estructuras de canciones de una forma práctica, sencilla y comprensible para klick y para ardour.

3) Sincronización de klick, hydrogen y ardour en canciones de tempo variable, incluyendo rampas y cambios de compás.

Doy por hecho:
"""""""""""""""""""
Jack funciona estable.

__________________________________________________________
INDICE DE CONTENIDOS:
__________________________________________________________
0. INTRODUCCION
0.1 ¿Qué es un mapa de tempo?
0.2 Presentación de Gtklick

1. INSTALACION DE SOFTWARE
1.1 klick
1.2 klick2ardour
1.3 pyliblo
1.4 Gtklick
1.5 Hydrogen 0.9.4
1.6 Ardour

2. TUTORIALES
2.1 Uso básico de klick y gtklick
2.2 Uso de klick con un mapa de tempo
2.3 Sincronizar hydrogen con un mapa de tempo
2.4 Exportar un mapa de tempo a Ardour

3. CRÉDITOS Y PARA SABER MAS
___________________________________________________________

0. INTRODUCCION
"""""""""""""""""

0.1. ¿Qué es un mapa de tempo?
""""""""""""""""""""""""""""""""""""""""
Es un archivo de texto sencillo con la información de la estructura musical de una canción. Cada línea representa una parte. La canción puede tener tantas partes como queramos. El formato básico, comprensible por klick es:

parte1: nºcompases nomenclatura tempo #comentarios
parte2: nºcompases nomenclatura tempo #comentarios
.
.
.

Ejemplo:

##############################
# MAPA DE TEMPO NÚMERO 1 #
##############################
entrada: 1 4/4 120 #Un compás 4/4 para avisar el comienzo
estrofa: 4 4/4 120 #12 compases de 4/4 a bpm 120 en la primera estrofa
acelerando: 4 4/4 120-130 #8 compases acelerando gradualmente desde 120 hasta 130 bpm
estribillo: 8 4/4 130 #estribillo de 12 compases a 130 bpm
estrofa: 4 4/4 120 #segunda estrofa
acelerando: 4 4/4 120-130 #aceleramos
estribillo: 8 4/4 130 #estribillo
puente: 8 4/4 90 #puente
estribillo: 8 4/4 130 #estribillo
final: 1 1/4 130 #click final en el primer beat
#total compases 4/4:1 entrada + 48 + 1 final


Todas las líneas que llevan almohadilla delante son comentarios, podemos escribir lo que nos plazca que para klick es como si no estuviera.
Si no especificamos la nomenclatura, el compás será 4/4. Por lo que en este caso podríamos simplificar a:

entrada: 1 120
estrofa: 4 120
#etcétera

0.2. Presentación de Gtklick
"""""""""""""""""""""""""""""""""""""
gtklick es un sencillo e intuitivo metrónomo con una amigable interfaz gráfica GTK.
Características:

* Soporte nativo para JACK.
* Diferentes sonidos para elegir.
* Flexibilidad total para establecer medidas y patrones.
* Práctica de velocidad (cada vez más rápido).
* Perfiles de metrónomo que se pueden guardar y cargar posteriormente.
* Disponible en español (a partir de la versión 0.6.3)

gtklick
______________________________________________________________________

1. INSTALACION DE SOFTWARE
"""""""""""""""""""""""""""""

klick >= 0.12.2; gtklick >= 0.6.2; hydrogen >= 0.9.4 (ver nota 1); Ardour >=2.7.1 (>=2.8.2. recomendado).

Ver nota 2.

1.1. klick
""""""""""""""""""""""""""
Compilar/instalar desde el código fuente:

Primero instalaremos las herramientas de compilación y algunas dependencias de klick. Los podemos buscar e instalar desde synaptic (u otro gestor de paquetes de software) o bien desde terminal con nuestra herramienta de instalación de paquetes preferida. En distribuciones basadas en Debian son (con ellos se instalarán automáticamente varios otros):

build-essential
scons
libboost-dev
jackd
libjack-dev
libsamplerate-dev
libsndfile1-dev
liblo0-dev

Ahora descargamos las fuentes desde: http://das.nasophon.de/klick/
Esto es, el archivo klick-0.12.2.tar.gz (o una versión posterior, si está disponible).
Extraemos (botón derecho, extraer aquí). Se creará una carpeta en el escritorio (por razones de orden, es recomendable crear una carpeta para guardar los programas en código fuente que descarguemos desde internet, por ejemplo /home/usuario/fuentes. Esto no influye en el proceso de compilación / instalación del programa).

Ahora vamos a la carpeta con las fuentes de klick y abrimos una terminal en esa ubicación, con botón derecho (si el botón derecho no da la opción de abrir termianl es porque no está instalada esa utilidad, En gnome/nautilus hace falta instalar el paquete 'nautilus-open-terminal' y reiniciar al menos el entorno gráfico). En el terminal debe aparecer:

pablo@pablo-desktop:~/Fuentes/klick-0.12.2$

o similar, según cada caso. Ahora, para compilar escribimos en la terminal:
scons
Y para instalar, como administrador (con sudo delante, por ejemplo):
scons install (sudo scons install)

Si todo ha ido bien no habrá ningún mensaje de error (puede haber algún warning al que no haremos caso). Escribimos en una terminal "klick" y nos debe salir su lista de opciones. Hasta aquí todo bien.

Instalar un paquete precompilado:
Dependerá de cada distribución.

1.2. klick2ardour
""""""""""""""""""""""""""""""""""""
Desde la misma página, abrimos el enlace a klick2ardour.py
Creamos un nuevo documento con botón derecho (archivo de texto)
que nombramos klick2ardour.py y copiamos todo el código de esa página a este archivo.
Supongamos que lo guardamos en /home/usuario/
Esto es un script en python. Debe tener permiso de ejecución, para lo cual abriremos sus propiedades con botón derecho y en la pestaña de permisos lo habilitaremos.

1.3. Pyliblo
""""""""""""""""""""""""""""""""""
Pyliblo es una librería necesaria para gtklick. Si estamos en ubuntu jaunty o posterior, podemos instalar el paquete 'python-liblo' y ya está.

Si queremos compilar, primero comprobaremos cuál es nuestra versión de liblo. (En ubuntu, miramos la versión de liblo0-dev). Si es la 0.23, necesitamos pyliblo-0.7.2.tar.gz.
Lo bajamos desde http://das.nasophon.de/pyliblo/
Una vez descomprimido abrimos una terminal en la carpeta creada y hacemos:
Para compilar:
./setup.py build
Para instalar, como administrador (con sudo delante por ejemplo):
./setup.py install

1.4. Gtklik
""""""""""""""""""""""""""""""""""
Compilar/instalar desde el código fuente:

Primero terminamos de instalar las dependencias de gtklick desde nuestro instalador de paquetes de software. Nos hace falta el paquete 'gettext'. Parece ser que en Fedora también hace falta python-devel (¡gracias cato!).

Después descargamos las fuentes desde: http://das.nasophon.de/gtklick/
Esto es, el archivo gtklick-0.6.2.tar.gz (o una versión posterior, si está disponible).
Una vez descomprimido abrimos una terminal en la carpeta creada y hacemos:
Para compilar:
./setup.py build
Para instalar, como administrador (con sudo delante por ejemplo):
./setup.py install

Debería aparecer en el menú de 'Sonido y Video'.

Instalar un paquete precompilado:

Depende de cada distribución.

1.5. Hydrogen 0.9.4
""""""""""""""""""""""""
Para ubuntu, descargar el binario desde el enlace correspondiente de los que Comix apunta aquí:
http://www.hydrogen-music.org/forum/?action=show_thread&thread=1120&fid=9&page=1
E instalarlo con botón derecho (Gdebi).

1.6. Ardour
"""""""""""""""
ubuntu jaunty tiene el 2.7.1. Mucho mejor, instalar una versión posterior. Para ubuntu, se puede conseguir en get.deb. Para usuarios avanzados, mejor compilar desde las fuentes la última versión que conseguiremos en www.ardour.org
_________________________________________________________________

2. TUTORIAL
"""""""""""""""""""

2.1. Uso básico de klick y gtklick
"""""""""""""""""""""""""""""""""""""""
Primero lanzamos Jack Control.
klick es un metrónomo de línea de comandos. Por ejemplo, podemos hacer:
Code: klick 120
Ir a las conexiones de jack y conectar su salida a los system:playbacks. Paramos con Ctrl + C.
Pero mejor si hacemos:
Code: klick -P 120
Y así se autoconectará a los system:playbacks y lo tendremos sonando desde el principio, a 120 bpm.
Bueno, para hacer esto, mejor usamos gtklick.

El caso es que klick tiene algunas opciones que no podemos llevar a cabo con su interfaz gráfica. Si escribimos 'klick' sin ningún parámetro nos dará toda la lista de opciones. Una de las más útiles es que podemos cargar mapas de tempo en modo texto. Veamos cómo.

2.2. Uso de klick con un mapa de tempo
""""""""""""""""""""""""""""""""""""""""""""""""""
Vamos a copiar el archivo de tempo que escribimos en la introducción a un archivo de texto. Por ejemplo, podemos crear una carpeta en /home/usuario/ llamada /mapas-tempo y crear un archivo de texto vacío dentro de ella, al que copiamos lo de arriba y lo guardamos como, por ejemplo, /home/pablo/mapas-tempo/mapa1
Ahora lanzamos:
Code: klick -P -f /home/pablo/mapas-tempo/mapa1
Y sonará el metrónomo para nuestra canción.
También podemos hacer:
Code: klick -f /home/pablo/mapas-tempo/mapa1 -W /home/pablo/Escritorio/mapa1.wav
y nos creará en el Escritorio un archivo de audio con el metrónomo de nuestra canción, en un periquete.

2.3. Sincronizando hydrogen con el mapa de tempo
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Ahora lanzamos hydrogen 0.9.4. y pulsamos "J.TRANS". De esta forma, hydrogen seguirá el tranporte de jack, con lo cual estará sincronizado con el resto de clientes que también lo usen.

El tamaño (size) 8 equivale al compás 4/4, con 4 beats o negras en los números 1, 2, 3 y 4 del editor de patrones. Para este ejemplo hagámoslo sencillo: por ejemplo, golpes de bombo en las negras en el pattern 1 y 50 cuadros de patrón 1 en el editor de canción. Pongamos hydrogen en modo canción (MODE SONG) Ahora hagamos:

Code: klick -T -f /home/pablo/mapas-tempo/mapa1

He qitado la opción -P para que klik no se autoconecte a los system:playbacks y no suene. He añadido la opción -T para que sea el "Maestro" del transporte de jack. Ahora podemos usar el transporte de Jack Control o el del propio hydrogen. Cuando damos a play veremos que el tempo se modifica, siguiendo nuestro mapa.

Otra prueba:

El concepto de patrón en hydrogen no equivale exactamente al de compás. Creo que es mejor asociar un patrón como un "ciclo susceptible de ser repetido en otras partes de la canción". Puede haber patrones de 2 compases o más. De hecho, escribir baterías en hydrogen con patrones de compases 4/4 en TODA la canción puede resultar un verdadero rollo. Como ya hemos dicho, el tamaño 8 equivale a un compás de 4/4, el tamaño 6 a uno de 3/4, etc. Así que el tamaño 16 son dos compases 4/4 o... por qué no, podemos identificarlo como un compás 8/4 en nuestro mapa de tempo.

Así que ahora hagamos otro mapa de tempo, con compases 8/4.

###################################
# MAPA DE TEMPO 2 #
###################################

Silencio: 1 4/4 120
Palos: 1 4/4 120 #Palos de entrada
parte1: 2 8/4 120
parte2: 3 8/4 120-144
parte3: 2 8/4 154
parte4: 5 8/4 164
parte5: 3 8/4 164-120
parte6: 1 8/4 120
golpe-final: 1 8/4 120
#suma de compases de 4/4: 1 silencio + 1 entrada
#suma de compases de 8/4: 16 + 1 final

Ahora, en hydrogen creamos dos patrón de tamaño 8 y 17 patrones de tamaño 16. No hacen falta 17 patrones diferentes, podemos tener tantos diferentes como queramos, pero en el editor de canción que los dos primeros sean de tamaño 8 y los 17 restantes, de 16. El primer patrón de 8 lo dejamos en blanco (silencio) y en el segundo escribimos palos (stick) en las posiciones 1, 2, 3 y 4 (beats o negras). En los de 16, podemos empezar con bombo, caja, charles... algo sencillo para probar. En el último escribimos sólo en el primer beat (por ejemplo, bombo y crash).

Copiamos el mapa de tempo a un archivo de texto, por ejemplo /home/pablo/mapas-tempo/mapa2

Terminal, flecha arriba para invocar el último comando y cambiamos el mapa1 por el nuevo mapa2.

2.4. Exportando el mapa de tempo a Ardour
"""""""""""""""""""""""""""""""
Dominic, el autor de klick y de gtklick ha escrito un script en python que exporta la estructura de nuestra canción a ardour, para que éste tenga en cuenta los cambio de tempo. Además, se crean marcas que representan los puntos de cambio de compás o de tempo, con la primera palabra de cada línea del mapa. En las rampas, klick2ardour.py escribe cambios consecutivos de tempo en cada beat.

Ahora creemos una nueva sesión en ardour, por ejemplo, 'mapa-2'. Cerramos ardour y hacemos en la terminal:

python /ruta/a/klick2ardour.py /ruta/a/mapa2 /ruta/a/mapa-2/mapa-2.ardour

Si no recibimos ningún mensaje es que ha ido bien.
Abrimos la sesión y qué vemos, la estructura de nuestra canción en ardour. Ahora incluso nos podemos olvidar de klick, poner ardour con transporte jack como Maestro y sincronizar con hydrogen elegantemente.

video
_______________________________________________________________________

3. CRÉDITOS Y PARA SABER MÁS
""""""""""""""""""""""""""""""

Un interesante estudio analizando variaciones de tempo de varias canciones, y posterior discusión:
http://musicmachinery.com/2009/03/02/in-search-of-the-click-track/

Lo mismo en el idioma de Cervantes:
http://www.hispasonic.com/blog/ivalladt/busca-metronomo-perdido

Dominic Sacre es el autor de (entre otros) klick, gtklick, kick2ardour y pyliblo
http://das.nasophon.de/

El manual de klick, completo:
http://das.nasophon.de/klick/manual.html

Hydrogen
www.hydrogen-music.org

Ardour
www.ardour.org

Video grabado con recordmydesktop.
Audio grabado con jack_capture
Dibujo hecho en tuxpaint
Montado en kdenlive.

______________________________________________________________________
Notas:

1. Puede que en hydrogen 0.9.3 también funcione, pero no lo he probado. De todas formas, recomiendo hydrogen >=0.9.4.
2. Las instrucciones de compilación/instalación suelen estar en los archivos README y/o INSTALL en la carpeta creada al descomprimir las fuentes (en inglés).
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

5 comentarios:

  1. Me puede resultar muy interesante este artículo, Pablo. En mi música uso bastante los cambios de tempo y compás y me acabas de abrir una buena alternativa para hacerlo en Ubuntu.

    Supongo que todo esto lo puedo aprovechar para el secuenciador que uso yo, Qtractor, al ser también esclavo de Jack, ¿verdad?

    Gracias por tu esfuerzo.

    ResponderEliminar
  2. Hola José, no estoy seguro del todo pero creo que no. Creo que qtractor no hace caso a la información de tempo de click, estando click como master.

    Pruébalo tú a ver. Pero es que qtractor, al igual que Rosegarden, permite hacer sus propios mapas de tempo (menú view). (Aunque no me funciona, no puedo añadir nuevo cambio de tempo... ¿te funciona a tí?).

    A mí me gusta hydrogen como secuenciador de baterías y el problema era que el tempo era fijo. Sin embargo este truco lo arregla, y además el mapa de tempo en modo texto es muy útil para anotar la estructura de tu canción.

    De nada, gracias a tí.

    ResponderEliminar
  3. Acabo de probar una cosa: en Hydrogen, en el editor de matriz de un patrón que vayas a usar, por ejemplo, a 3/4, cambias el valor de "size" de 8 a 6, y el cambio de compás hace su efecto a la perfección.

    Sin embargo, si lo que quiero es un cambio de tempo, tengo que intentar lo que propones en tu post, o lo que es lo mismo, instalando klick, siguiendo tus indicaciones.

    Qtractor no obedece a los cambios de tempo, o no es capaz de enviar esa información a Jack o a Hydrogen. No sé qué es exactamente lo que pasa.

    Ya te contaré como me va.

    ResponderEliminar
  4. Un artículo interesante que puede ayudar a romper la monotonía "temporal" en la que a veces caigo.

    Saludos Pablo y me agrego a tu blog con tu permiso. Estás haciendo un gran trabajo.

    Xavi

    ResponderEliminar
  5. Hola Pablo, he encontrado en tu artículo justo lo que necesitaba! Gracias y felicidades por el curro que te pegas. Yo también me quedo por aquí...
    Saludos

    ResponderEliminar