sábado, 2 de enero de 2010

Introducción a LV2: Efectos, instrumentos y hosts

#########################
Notas de revisiones:
Revisión 0: 25 enero 2010. Publicado.
Revisión 1: 28 enero 2010. Añadido Traverso como host.

#########################

PRESENTACIÓN

LV2 (LADSPA Version 2) es un nuevo estándard para plugins y sus correspondientes hosts para Linux, destinado principalmente al procesamiento y generación de audio. LV2 es un sucesor de LADSPA, cuya intención es abordar las limitaciones de éste.

LADSPA ha tenido éxito con muchos plugins y hosts pero está bastante limitado y no da para más. En contraste, LV2 está diseñado desde el principio con la idea de hacerlo extensible. Ver la página oficial de LV2 para más información sobre esta especificación.

Hosts o anfitriones


De momento, no existen muchos pero poco a poco irán creciendo. Conozco éstos:

Zynjacku es un sencillo host para sintetizadores o instrumentos virtuales LV2. Lv2rack es un host para efectos LV2. Similar al clásico jackrack pero con plugins LV2 en lugar de LADSPA. Se instala por defecto al instalar zynjacku.

Qtractor (a partir de la versión 0.4.4). Qtractor distribuye paquetes binarios para varias distribuciones desde su página de descargas de sourceforge.

Ardour (por defecto a partir de la versión 2.8.3). Aquí explicamos cómo compilar una versión actualizada de ardour si tenemos una versión anterior sin habilitación para LV2. Por ejemplo, la 2.8.2 que trae karmic.

Traverso, una sencilla DAW multiplataforma. Instalable desde los repositorios de ubuntu.

Plugins

Aquí hay una lista para empezar. Esperemos que crezca. Ver abajo para compilar / instalar algunos de ellos.

Calf (Efectos: Compresor, Filtros, Flanger, MultiChorus, Phaser, Reverb, Rotary speaker y Vintage delay. Instrumentos: Órgano y monosynth)

Invada (Varios efectos incluyendo Reverbs, Filtros, Vúmetro, Phaser y Tube distortion)

SWH (Clásicos plugins de efectos de Steve Harris, portados desde LADSPA a LV2)

Linuxdsp (Los efectos "stand-alone" de linuxdsp están siendo portados a LV2, incluyendo ecualizadores gráfico y paramétrico y compresor)

MDA (Plugins de efectos originalmente para VST portados a LV2)

Algunos otros, como el Vocoder de Nedko Ardaunov


Instalación de lv2core y libslv2


Si estamos en karmic, antes de nada, vamos a instalar estos paquetes:

pyhton
librdf0-dev
libraptor1-dev
librasqal1-dev


libslv2 no está en los repositorios de karmic, y la versión de lv2core está un bastante vieja. Vamos a hacer el truco de cambiar los repositorios de karmic por los de lucid de forma temporal. Una pequeña trampa.

gksudo gedit /etc/apt/sources.list

Menú Buscar, Reemplazar, Buscar karmic y reemplazar con lucid

En Synaptic o con apt-get, recargamos e instalamos / actualizamos lv2core y libslv2-dev. Comprobamos que no se vaya a instalar ninguna dependencia cuyo nombre no empiece por slv2 o libslv2. Estoy bastante seguro de que esto será así, pero si hay más dependencias, no hagas nada, ya vendrá lucid con todo su esplendor. Me sentiría muy mal si estropeas el sistema por mi culpa. De hecho, es un peligro actualizar paquetes de esta forma. Lo hago en este caso particular porque lv2core no tiene dependencias ni en karmic ni en lucid y (creo que) todas las dependencias de libslv2 que faltan por instalar sólo están en lucid.

Después de instalar estos paquetes y antes de hacer nada más, ¡¡No olvidemos dejar las listas de repos como estaban!!:

gksudo gedit /etc/apt/sources.list

Menú Buscar, Reemplazar, Buscar lucid y reemplazar con karmic

Y para dejarlo todo en orden, actualizamos las listas de paquetes:

sudo apt-get update

Instalación de Zynjacku, lv2rack y libdynaparam:

Si queremos tener un host sencillo, sin tener que lanzar qtractor o ardour.

Aquí hay un PPA (en la entrada sobre reproductores de multimedia a través de jack vimos cómo añadir un PPA a la lista de repositorios)

https://launchpad.net/~slavender/+archive/karmic

Añado las fuentes y la firma. Instalo los paquetes:

lv2rack zynjacku y liblv2dynparamhost1-1


Instalación de los plugin Calf

Los podemos compilar o, en ubuntu karmic al menos, instalar el paquete 'calf-plugins'


Instalación de los plugins LV2 de Invada

Descargamos el archivo tar.gz desde el sitio de descargas que se da en esta página abajo del todo y lo descomprimimos en nuestro directorio de fuentes. Alternativamente, hay un PPA para ubuntu karmic. Voy a dar las instrucciones para la primera opción.

Como se indica, necesitamos algunas dependencias, en el caso de ubuntu karmic los paquetes se llaman libgtk2.0-dev, libglade2-dev y libcairo2-dev. Y por supuesto, lv2core, que ha hemos instalado antes. En la terminal y desde el directorio donde descomprimimos las fuentes:

make
y
make install-user (para instalar los plugins en el directorio home/usuario/.lv2)

sudo make install-sys (para instalarlos en /usr/local/lib/lv2)

Elijo la segunda opción, por coherencia con la mayoría de los plugins, que tengo instalados en el sistema, no en mi home. Si eres usuario único de tu ordenador, da igual.

Instalación de los plugin LV2 de SWH

Desde nuestro directorio de fuentes, hacemos:

git clone git://github.com/swh/lv2.git

Se genera una carpeta llamada lv2 que podemos renombrar a swh-lv2

Desde una terminal situada en dicho directorio, escribimos:
make
y
make install-user (para instalar los plugins en el directorio home/usuario/.lv2)
o
sudo make install-system (para instalarlos en /usr/local/lib/lv2)

Instalación de los plugins LV2 de MDA


Desde una terminal situada en nuestro directorio de fuentes:

svn co http://svn.drobilla.net/lad/trunk/mda-lv2/
cd mda-lv2
make
Nos da un error "No bundle path set" que la siguiente línea nos dice que no es tal y que lo debemos ignorar.
sudo make install-local (los instala en /usr/local/lib/lv2/)
sudo make install-system (en /usr/lib/lv2/)
make install-user (los instala en /home/usuario/.lv2)


Bueno, a estas alturas, ya sabes cómo isntalar cualquier cosa en Linux. Lee el LEEME (README) es la norma número 1. Si nos lo piden será por algo.


Pantallazos


Compresor invada, en ardour


Calf flanger, en lv2rack


Calf Organ, en zynjacku

12 comentarios:

  1. Excelente post, Pablo. Se abren nuevas perspectivas.

    ResponderEliminar
  2. Hola pablo!!
    Solo comentar que tu post es excelente y me ha sido de gran ayuda.
    Ademas quiero hacer un apunte, ya que a la hora de instalar el plugins LV2 de MDA me salia un error cuando hacia el make, me decia que no existia el archivo de cabecera X11/Intrinsic.h
    pos nada la solucion esta en instalar la libreria libxt-dev con el synaptic mismamente.

    Un saludo.

    ResponderEliminar
  3. ¡Muchas gracias por vuestros comentarios y por tu apunte Dj Deeiby! Me alegro mucho que sea de ayuda. :)

    ResponderEliminar
  4. hola Pablo

    * siguiendo a esta entrada como guia, instale los plugins que me faltaban (y de paso aprendi otro poco mas) -> Gracias

    * baje el codigo fuente de zynjacku desde la pagina que linkeas y al compilarlo me tira este error:

    configure: WARNING: ==================================================
    configure: WARNING: == ==
    configure: WARNING: == pythondir is NOT in your Python's sys.path ==
    configure: WARNING: == which means you should add it to PYTHONPATH ==
    configure: WARNING: == at runtime, or add a .pth file to one of ==
    configure: WARNING: == your Python's existing sys.path directories. ==
    configure: WARNING: == ==
    configure: WARNING: == Alternatively, re-run ./configure with ==
    configure: WARNING: == PYLIBDIR set to override the default ==
    configure: WARNING: == pythondir, or adjust prefix to match the ==
    configure: WARNING: == prefix used to build your Python. ==
    configure: WARNING: == ==
    configure: WARNING: ==================================================
    ooooootra vez te pido ayuda Pablo por favor, cuando tengas tiempo y ganas

    Gracias por anticipado

    ResponderEliminar
  5. Hola, ¿Puedes poner el resumen que viene antes de estos warnings? Las 4 ó 5 líneas que empiezan por "Prefix..."

    ResponderEliminar
  6. Hola Pablo

    ========================
    Prefix : /usr/local
    Dynparam1 plugins support : yes
    Python include dir : -I/usr/include/python2.6
    Python script dir : /usr/local/lib/python2.6/site-packages
    Dev version : no

    ResponderEliminar
  7. Prueba lo siguiente:

    $ export PYLIBDIR=/usr/lib/python2.6
    $ ./configure

    Saludos, Pablo

    ResponderEliminar
  8. hola Pablo

    puse la linea que sugeriste ($ export PYLIBDIR=/usr/lib/python2.6) y al tipear $ ./configure ya no aparecen los warnings, pero sigue apareciendo:

    ========================
    Prefix : /usr/local
    Dynparam1 plugins support : yes
    Python include dir : -I/usr/include/python2.6
    Python script dir : /usr/lib/python2.6
    Dev version : no

    te pregunto: a que se refiere la ultima linea (Dev version : no) ?

    esto es un avance

    Gracias y Saludos

    ResponderEliminar
  9. Hola Marcelo,

    Supongo que se referirá a que no es la versión de desarrollo. Si quieres entender todas las manías de los desarrolladores de software te puedes volver tan loco como ellos. ¡Es broma! ¡Si no fuera por ellos! No le des importancia. Date cuenta que estás compilando código escrito por un programador. Si escribes:

    ./configure --help

    verás muchas más opciones pero ya vas llegando a un punto en el que sólo puedes saber las cosas con certeza si se las preguntas directamente al que ha hecho el programa.

    Saludos, Pablo

    ResponderEliminar
  10. hola Pablo

    * Observacion sobre la ultima linea, mas claro : I-M-P-O-S-I-B-L-E

    zynjacku esta tirando fuego por el caño de escape. Otra vez: muchas gracias Pol, De veras.

    Saludos.

    ResponderEliminar
  11. de nuevo: Hola Pablo

    * si me lo permitis te dejo una inquietud

    (aprovecho para agradecerte 1) la ayuda que diste a {no-recuerdo-el-nombre-del-usuario} quien pedia auxilio por un desfasaje en la sincronizacion rosegarden-qsynth, vos recomendaste bajar la latencia de jackctl, vale decir que mi melodrama era una asincronia entre dos instrumentos (otorgados por qsynth) cuando rosegarden solfeaba semifusas, baje la latencia de jack y santo remedio, asique: gracias por la ayuda que diste en hispasonic)

    * revolviendo post y mas post en hispasonic lei algo sobre JOST (exposicion hecha por ivalladt), host que acepta plug-ins VST compilados nativamente en Linux, es decir, que pueden ejecutarse como un plug-in LADSPA, sin necesidad de FST ni de Wine. JOST funciona con el entorno JUCE (el cual he tenido algun que otro inconveniente en compilar) -> por lo tanto no puedo compilar JOST (instale el binario pero esteeeee: NO)

    SINTESIS: Estimado Pol, sin que tenga aires de abuso, una entrada en "Semicorchux" sobre -a mi forma de ver- el Futurista JOST, seria una "Semilla" invalorable para este Sr. Blog. No muestro empatia por ningun fanatismo, menos por un blog, eso si: soy querendon de "Semicorchux". A este blog, cualquier Linuxero Novato lo lleva clavado en el alma.

    * Mis conocimientos en Linux son exactamente escasos -como ya habras podido detectar-. Aun asi te ofrezco mi ayuda en lo que te sirva a la hora de confeccionar una entrada sobre JOST [si esta fuese tu decision]

    * Compañero Jose: pido una palabra de aliento para Nuestro Amigo Pablo, ud. puede ...

    Gracias por leer Pablo.
    Saludos.

    ResponderEliminar
  12. :) Gracias Marcelo! Lo dejo como pendiente pero no prometo nada. No obstante, si tienes alguna dificultad concreta para compilar o instalar el binario igual te puedo ayudar.

    ResponderEliminar