martes, 28 de julio de 2009

Estudio de grabación - Compilando Ardour 2.8.2 VST y Jack 0.116.2 en ubuntu

Pues como ya he comentado en otro post, mi interés en la grabación digital de audio viene desde tiempo atrás, cuando mi hermano se hizo con una pequeña mesa de mezclas Mackie y una tarjeta de sonido Terratec EWS88/MT, allá por el año... ni me acuerdo. Ese fué el primer equípo que utilizamos en nuestras grabaciónes caseras, junto con el programa de grabación de audio Logic.

Aunque la mesa solo tiene 4 entradas I/O balanceadas, los previos que tienen las mesas Mackie tienen una relación calidad/precio de las más elevadas. Actualmente, habiendo renovado también el equípo informático, nos hemos hecho con un módulo de previos a válvulas que incorporan ecualización y compresión de la señal. Además, para completar 8 pistas, de una pequeña mesa Yamaha utilizamos dos de sus inserts.

Todo esto lo hemos ido completando con sets de micros cada vez mejores donde no falta un set de microfoneado de batería AKG, micrófonos de condensador para ambiente, así como el conocido Shure SM57... uno de los micros mas versátiles del mercado, que graba la caja de mi batería con una pegada increible, y recoje a la perfección los agudos de una guitarra eléctrica.

Por otro lado, hace poco que terminamos una obra enorme en el local, que ha quedado como un auténtico estudio de grabación. Hemos tenído en cuenta desde las paredes, de madera y espuma acustica para evitar reflexiones en frecuencias medias, así como trampas de graves con "Rockwool" para el techo, tarima flotante con grosores mayores tanto para las piezas como para la espuma etc.

Y después de todo esto hay que sacarle partido. Hace tiempo que dejé de usar los sistemas Windows, por cuestiónes éticas, y en esto de la música no quería ser menos, así que me informé de las opciónes libres, y hasta el momento no puedo tener queja. Me he dado cuenta de que la grabación tiene más calidad, mas cuerpo y más realismo, aunque parezca imposible. He probado distribuciónes específicas como Musix y Ubuntu Studio, pero al final uso Ubuntu desktop 9.04 con el kernel rt, Ardour 2.8.2 sin Plugins VST pero con los LV2, que son una auténtica maravilla, así como Jack 0.116.2.
Lo peor es que en los repositorios de Ubuntu, así como de otras distros, las versiónes tanto de Ardour como de Jack no están actualizadas del todo, y en un proyecto tan vivo como Ardour, estas actualizaciónes incluyen mejoras significativas. Además no basta con instalar el kernel rt, sino que hay que asignar recursos adicionales del sistema para que realmente se pueda iniciar el servidor jack activando el modo rt y reducir la latencia de la señal, y un rendimiento mayor del equipo. Evidentemente todo dependerá de tu hardware, pero en mi caso, mi Terratec EWS88/MT tiene una latencia con la configuración por defecto, de 46 ms y configurando jack adecuadamente (sin xruns) baja a 5,4 ms, lo cual no está mal considerando los 128 ms de latencia que obtenía con un kernel "generic".

Antes de nada, comentar que me pareció sencillamente increible que Ubuntu detectase automáticamente mi Terratec con los drivers ALSA para tarjetas Envy24 (ICE), y empezase a funcionar perfectamente sin instalar nada, más allá del panel de control de la tarjeta, el "Envy24 Control", que también funciona a la perfección (en Windows XP tuve que buscar los drivers y descargarlos de una página de dudosa intención).

Y así, manos a la obra. Vamos a instalar y configurar el kernel realtime de ubuntu. La instalación de un nuevo kernel hoy en día no implica (necesariamente) nada complicado como una compilación o cosas así, que en el pasado nos han hecho renunciar. Ahora solo hay que abrir el gestor de paquetes de ubuntu (Synaptic) y buscar "linux rt" e instalar:
  • linux-image-rt
  • linux-headers-rt
  • linux-restricted-modules-rt
Una vez hecho esto, nos encontraremos con una opción más de inicio en el GRUB, que nos permitirá arrancar con dicho kernel, o para hacer que Ubuntu arranque con ese kernel, editar el archivo /boot/grub/menu.lst y hacer que por defecto arranque con ese kernel, indicando el número de opción del menu de grub en la sentencia default.

Ahora nos toca configurar el sistema para que jack tenga todos los recursos necesarios y aprovechar el rendimiento de este kernel lo máximo posible. Básicamente se debe configurar la cantidad de memoria que un proceso puede bloquear para si, ejecutandose como el usuario con el que entremos en ubuntu. Esta configuración básica la encontramos en el archivo /etc/security/limits.conf. La sintaxis de las líneas en este archivo es:

{nombre_de_usuario} {tipo_de_limite} {item} {valor}


de forma que podemos añadir unas líneas como las que vemos a continuación:
@audio - rtprio 99
@audio - nice -10
@audio - memlock unlimited
Donde @audio es el nombre del grupo de usuarios para el que asignamos los límites. Para el parámetro memlock también podemos calcular un tamaño en Kb en función de la RAM que tengamos y de lo que nos permita el sistema. Desde los desarrolladores de Jack recomiendan unlimited. El parámetro nice puedes también asignarle -15 en determinados equipos con lo que los procesos tendrán más prioridad. Por supuesto deberás crear el grupo audio y asignar tu usuario a dicho grupo, o cambiar el nombre del grupo por alguno al que ya pertenezcas.

Para la instalación de Jack además, es necesaria una partición para el directorio de archivos temporales que utiliza Jack y para ello creamos un directorio:

sudo mkdir /mnt/ramfs

Y añadimos la siguiente línea en /etc/fstab:

none /mnt/ramfs tmpfs defaults 0 0

Cuando reiniciemos el equipo, podremos comprobar en "Sistema > Administración > Monitor del sistema" que tenemos ubuntu arrancado con el nuevo kernel y la nueva asignación de prioridades etc.

Ya tenemos nuestro equipo listo para instalar Jack y Ardour. Jack es el servidor de audio, y permite establecer la ruta de las señales de audio que tengamos en nuestro equipo entrando y saliendo, derivandolas a plugins de efectos, a otras aplicaciónes como Jamin, o incluso con JackNet a otros equipos que podríamos utilizar como procesadores de efectos.
Ardour es una aplicación que nos dá una interfaz para realizar proyectos de audio utilizando Jack, y nos permite grabar, ecualizar, filtrar, y manipular las señales de audio. Así que nos descargamos:
Y ahora es cuando deberemos instalar unas cuantas librerías que nos permitan realizar una compilación correcta de ambos sistemas. Aquí os dejo las ordenes, que solo tendréis que copiar y pegar en un terminal y con permisos de root. Algunos paquetes están duplicados pero weno no os preocupéis puesto que los gestores de paquetes son mágníficos...

sudo apt-get install libxine1 libxine-dev libxine1-gnome libxine1-misc-plugins gxine gstreamer0.10-plugins-ugly-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-bad gstreamer0.10-pitfdll gstreamer0.10-ffmpeg jamin audacity jack libmp3lame0 jack-tools libjackasyn0 liblo0-dev libqt4-dev python-ogg-dbg jack-tools meterbridge libjackasyn0 nas libfftw3-dev liblo0-dev libqt4-dev python-ogg-dbg python-pyvorbis-dbg csladspa libfftw3-dev liblo0-dev libqt4-dev python-ogg-dbg python-pyvorbis-dbg qt4-dev-tools libmysqlclient15-dev libsqlite3-dev libiodbc2-dev audiooss phonon-backend-xine alsa-tools-gui build-essential libxml2 scons gettext pkg-config libtool xml2 libxslt1.1 python-libxslt1 libmodxslt0 libxalan110 xalan xmlstarlet libart-2.0-2 libart-2.0-dev libart2.24-cil libart-dev libart2 libgdk-pixbuf2 libgdk-pixbuf-dev libart2-ruby libasound2-plugins libsamplerate0 libsamplerate0-dev libgavl1 libgavl-dev raptor-utils libraptor1 libraptor1-dev liblrdf0 liblrdf0-dev jack-rack blepvco blop caps dssi-dev dssi-example-plugins dssi-utils fil-plugins jackeq libladspa-ocaml libladspa-ocaml-dev lv2core mcp-plugins rev-plugins rubberband-ladspa ladspa-sdk muse ubuntustudio-audio-plugins libgnome2-canvas-perl libgnomecanvas2-0 libgnomecanvas2-common libgnomecanvas2-dev libgnomecanvasmm-2.6-1c2a libgnomecanvasmm-2.6-dev guile-gnome0-canvas libgnomecanvas2-ruby1.8 libfftw3-3 libfftw3-dev pd-aubio python-aubio libaubio-dev libaubio2 aubio-tools libsndfile1 libsndfile1-dev wine wine-dev libsvn1 libsvn-perl subversion subversion-tools boost-build libboost-signals-dev libboost-regex-dev libboost-graph-dev libboost-dev libusb-1.0-0 libusb-1.0-0-dev libusbprog-dev alsa-firmware-loaders libdiscover-dev libdiscover2 libusb++-dev libmtp-dev libmtp8 libgphoto2-2 libgphoto2-2-dev alsa-source alsa-tools libbio2jack0 libbio2jack0-dev libbjack-ocaml libbjack-ocaml-dev libclalsadrv-dev libclalsadrv1 liblash-dev liblash2 liblo10k1-0 liblo10k1-dev libopenal-dev libopenal1 bse-alsa libesd-alsa0 libasound2-plugins libasound2-dev libasound2 libao2 gstreamer0.10-alsa alsa-base libpt2.6.1-plugins-alsa automake autoconf autotools-dev gnome-common libsigc++-2.0-0c2a libsigc++-2.0-dev libsigc++-1.2-5c2 libsigc++-1.2-dev libsigc++-dev lv2core libecasound2.2-dev libtse3-dev libwildmidi-dev libwildmidi0 libsdl-mixer1.2 libsdl-mixer1.2-dev dssi-host-jack libfluidsynth-dev libfluidsynth1 libportmidi-dev libportmidi0 redland-utils libsoprano4 librdf-perl librdf-ruby python-librdf librdf0 librdf0-dev libdmalloc-dev libxklavier12 libxklavier12-dev libdmalloc5

Un tostón, además os recomiendo no hacerlo de un tirón, pero enhorabuena!!! Ahora eres capaz de compilar un sistema de audio profesional completo!!! Además, ahora también podrás compilar el core de LV2, las librerías SLV2 y los plugins ll etc. es lo bueno de esta orden...

Evidentemente si has ejecutado todo lo anterior, ya tienes instalado Jack, en la versión del repositorio de Ubuntu, pero si quieres la última versión, escribe desde un terminal en el directorio donde has descomprimido los fuentes de jack:

./configure --with-default-tmpdir=/mnt/ramfs
make
sudo make install


Esto te compilará e instalará el ejecutable de Jack en /usr/local/bin/jackd, recuerda esto cuando intentes iniciar el demonio, y cuando configures qjackcontrol. Con estos nuevos parámetros, y dependiendo de la tarjeta de sonido que tengas, podrás ajustar el parametro de "Cuadros/periodo" (frames/period) para reducir la latencia. Yo actualmente tengo 5 ms con 256 frames/period, y ningún xrun.

Para compilar ardour vete preparando una taza de café, unos puritos e incluso un tablero de parchis porque va a tardar un poquito... jeje... Así que cuanto antes mejor. Entra en el directorio donde descomprimiste Ardour, y escribe:

scons LV2=1 FFT_ANALYSIS=1 SLV2=1 VST=1
sudo scons install


Imagino que no es muy normal que haya que intentarlo varias veces, pero en ocasiones, me fallo la compilación y misteriosamente al volver a intentarlo no da error. Supongo que el orden en script de scons estará mal, o hay interdependencias raras... vete tu a saber... La opción de VST es posible si has instalado todas las librerías que he mencionado, pero lo cierto es que aunque es más estable que antes, no va del todo bien, y los plugins LV2 y Jamin permiten hacer maravillas. Bueno pues si has sido capaz de realizar estos pasos tan sencillos, ya tienes un sistema de audio bastante profesional, y gratuito, a disfrutarlo.

5 comentarios:

  1. ¡Muy bueno! Estoy compilando ardour ahora... Una cosa, si ya pones LV2=1, no creo que SLV2=1 hace falta. Eso sí, tienes que haber instalado SLV2. En mi caso, lo he compilado/instalado desde la página de drobilla, que a su vez me pide otras dependencias, pero sin problemas. Ya te contaré. Qué estudio más chulo, ¿no?. Saludos. Pablo

    ResponderEliminar
  2. Pues si que es verdad, lo que pasa es que en realidad en la página oficial la opción que dan es SLV2, y creo recordar algo de que no me lo hizo bien... por eso para "curarme en salud" puse las dos opciones... jeje...
    Gracias.. si la verdad es que estamos flipando con el estudio...

    ResponderEliminar
  3. Muy bueno el post. Estoy tratando de implementarlo, ya que hace bastante que estoy utilizando linux, pero actualmente estoy grabando en Nundo en windows, y estaria bueno seguir migrando mis aplicaciones.
    Estuve siguiendo los pasos para instalar el kernel rt, pero con ese kernel no logre instalar los driver Nvidia. Si alguno lo pudo hacer o tuvo problemas y encontró la solución, bienvenida sea.
    Muy buen la información

    SALUDOS
    Gabriel

    ResponderEliminar
  4. ¡¡Muchas gracias Gabriel!!... Te comento, que dependiendo de tus necesidades podrías no instalar el kernel rt. Con procesadores pontentes (un dual core o quad.. ) no deberías tener mucho problema, si no tienes un estudio profesional, o unos requisitos demasiado exigentes.
    Respecto a los drivers de nvidia, no puedo añadir nada que no se haya dicho, pero si vas a utilizar tu equipo como estudio y sin el kernel rt tal vez deberías intentar no activar ningún efecto de escritorio, e intentar no tener demasiados procesos en memoria (open office etc.. tal vez debería comentar algo de eso...).
    Por otra parte podrías tener otros sistemas de ventanas instalados, que sean más ligeros, como xfce, y arrancar uno u otro en función de lo que estés haciendo. Al arrancar, cuando te pide la clave de usuario y contraseña podrás elegir entre uno u otro.
    Un saludo!!!

    ResponderEliminar
  5. Y hemos añadido unos módulos más de previos a valvulas, así como "el bebe" T-bone, y el micro de bombo AKG que suena de muerte... a ver como se dá...

    ResponderEliminar

¿Que te parece? Deja un comentario