miércoles, 30 de diciembre de 2009

Plugins de efectos e instrumentos VST a través de dssi-vst

#########################
Notas de revisiones:
Revisión 0: 31 diciembre 2009. Publicado.
Revisión 1: 1 enero 2010. Completado.
Revisión 2: 3 enero 2010. Añadida nota para compilación en sistemas de 64 bits
Revision 3: 18 enero 2010. Añadido punto 9 para solucionar posibles problemas de fuentes
Revisión 4: 26 marzo 2010. Añadida alternativa a instalación a través de Synaptic, añadiendo PPA
#########################

¿Qué y por qué?

En Linux tenemos plugins de efectos de audio LADSPA y plugins sintetizadores (o "instrumentos virtuales) DSSI. Además, LV2 (LADSPA Version 2) es una nueva especificación que sirve tanto para efectos como para instrumentos. También hay plugins VST nativos para Linux.

Sin embargo, la tecnología Windows VST está tan extendida que a muchos usuarios que vienen de Windows les parece impensable tener que prescindir de sus plugins. Para eso salieron proyectos como dssi-vst, que presentamos en esta entrada.

Dssi-vst permite a los usuarios de Linux ejecutar plugins de efectos e instrumentos VST compilados para Windows en hosts para plugins DSSI y LADSPA. Además, dssi-vst ofrece un host pra VST "stand-alone" que es cliente de jack.

Dssi-vst es libre y de código abierto, escrito por Chris Cannam (autor de Rosegarden, Sonic Visualiser, la librería Rubberband...). Se distribuye bajo la licencia GPL. La compilación por defecto (que veremos en aquí) no hace uso del SDK de Steinberg y en teoría no habría problema para distribuirlo en binario. Sin embargo, no está en los repositorios de las ultimas versiones estables de Debian ni de Ubuntu.

Existen otros hosts para plugins Windows VST, por ejemplo, LMMS (en los repos de Debian / Ubuntu y otras distribuciones) o Ardourvst (no en los repositorios de Debian / Ubuntu, de momento).



Uso de dssi-vst


En la práctica, dssi-vst da para varias combinaciones. Por ejemplo, podemos:

- Tener efectos e instrumentos VST en Rosegarden, con una interfaz dssi. (Ver pantallazo 1).
- Tener efectos e intrumentos VST en ardour (nota 1), Audacity, Jack Rack o cualquier otro host de plugins LADSPA (Ver pantallazos 2 y 3).
- Tener un instrumento VST como si fuera una aplicación "stand alone", en un sencillo host cliente de jack. (Ver pantallazos 4 y 5).


Pantallazo 1. SPITFISH DeEsser (VST) lanzado desde Rosegarden, en el editor de plugins DSSI



Pantallazo 2. SPITFISH DeEsser lanzado desde ardour, en el editor de plugins LADSPA



Pantallazo 3. SPITFISH DeEsser lanzado desde Audacity, en el editor de plugins LADSPA (Menú efectos)


Pantallazo 4. SPITFISH DeEsser lanzado con vsthost


Pantallazo 5. Studio Devil, ampli virtual de guitarra (instrumento VST), lanzado con vsthost. Muestro también las conexiones de jack audio necesarias para enchufar la guitarra directamente a la tarjeta de audio y escucharnos por los altavoces


Instalación de dssi-vst

(Estas instrucciones se han probado en ubuntustudio 9.10. Para otras distribuciones o versiones de ubuntu será muy similar, pero puede haber pequeñas variaciones)


EDITADO en rev 4. Para ahorrarse los pasos 1 a 5, los usuarios de karmic pueden añadir el PPA de Philip Johnson. Más información sobre los PPA's de ubuntu.

sudo add-apt-repository ppa:philip5/extra

Ir a synaptic, recargar e instalar dssi-vst.

No recomiendo tener este repo (ni ningún otro no oficial) permanentemente habilitado. De paso veréis que tiene otros paquetes interesantes)



1) Dependencias

En ubuntu, es necesario instalar estos paquetes:

build-essential
wine-dev
liblo0-dev
dssi-dev
libasound2-dev

En sistemas de 64 bit, hay que instalar, además:

gcc-multilib
g++-multilib

(Yo he compilado para x86 (32 bits). No he probado seguir esta guía para x86_64 pero debería funcionar igualmente)


2) Conseguir las fuentes y moverlas al directorio de trabajo

Desde http://breakfastquay.com/dssi-vst/ bajamos la última versión. A la fecha de escribir esto, dssi-vst-0.8

En la carpeta 'Descargas' o en el Escritorio, nos aparecerá un tar.gz, que descomprimimos. Movemos la carpeta creada a nuestro directorio de trabajo, en mi caso, /home/pablo/fuentes.


3) Comprobar el path de las libs de dssi y ladspa y si necesario, modificar el Makefile:

Veremos que hay un archivo Makefile, con el siguiente contenido (entre otras líneas):

DSSIDIR = /usr/local/lib/dssi
LADSPADIR = /usr/local/lib/ladspa

Si hemos instalado el soporte para plugins LADSPA y DSSI a través de paquetes de nuestra distribución (o vinieron instalados por defecto, como en el caso de ubuntustudio, al instalar los plugins de audio), tendremos que modificarlas a:

DSSIDIR = /usr/lib/dssi
LADSPADIR = /usr/lib/ladspa

Podemos comprobar con nautilus cual es la ruta correcta.

4) Añadir el "include" cstdio al código fuente, para que no haya problemas de compilación

(A dssi-vst le falta este "include" para que se pueda compilar con la reciente versión del compilador de GNU que trae ubuntu 9.10. Este paso no será necesario en todos los casos)

En los archivos:

remotepluginclient.cpp
remotepluginserver.cpp
remotevstclient.cpp
rdwrops.cpp

debemos añadir, debajo del resto de "includes":

#include [cstdio]

(Sustituyendo los corchetes por los signos "menor que" y "mayor que" que no puedo escribir aquí porque el editor html no lo permite)

5) Compilar e instalar

En una terminal desde el directorio de dssi-vst-0.8:

make
sudo make install

Algunas personas se han encontado con un error al instalar dssi-vst. Algo así como:

"install: no se puede efectuar `stat' sobre «dssi-vst-server»: No existe el fichero ó directorio"

En este caso, parece que wine (algunas versiones de wine, ya que no siempre aparece este problema) crea los archivos 'dssi-vst-server.exe' y 'dssi-vst-scanner.exe' en lugar de 'dssi-vst-server' y 'dssi-vst-scanner', que es lo que espera el Makefile de dssi-vst. El truco es renombrar esos dos archivos (en el directorio de trabajo, donde están las fuentes de dssi-vst), quitándoles la extensión .exe. Y luego volver a hacer 'sudo make install'.


6) Configuración de wine

Elegir Windows XP y en la pestaña audio, alsa.
Ignorar cualquier error de tipo fixme:mixer si lanzamos winecfg desde terminal

7) Establecer las rutas de los VST

Es muy importante que los vst's (librerías de extensión .dll) estén en directorios conocidos por el sistema. dssi-vst va a mirar por defecto en los directorios:

/usr/lib/vst/
/usr/local/lib/vst
/home/usuario/vst

Si tenemos los .dll en otras ubicaciones, debemos declararlo en el archivo 'home/usuario/.bashrc', con las rutas separadas con dos puntos (:), como en la siguiente línea:

export VST_PATH=/ruta/a/vsts:/ruta/a/otros/vsts:etcétera

Por ejemplo, en mi caso:

export VST_PATH=/usr/local/lib/vst/:/home/pablo/vst/:/home/pablo/vst/pruebas

Las dos primeras rutas no sería necesario declararlas (porque son las rutas por defecto), pero mejor hacerlo.

8) Renombrar las librerías .dll para eliminar los espacios, si los hay.

9) En algunos VST las letras se ven mal hasta el punto que apenas son legibles. winetricks es un script que nos puede solucionar algunos problemillas con wine, como en este caso. Desde terminal, podemos hacer

$wget http://www.kegel.com/wine/winetricks (descarga el script)
$sh winetricks allfonts (instala fuentes de microsoft)

Casos prácticos

Para lanzar un vst como "stand alone" cliente de jack, hacemos:

vsthost elquesea.dll

Como hemos dicho, también se pueden lanzar desde Rosegarden (con interfaz dssi), ardour, audacity, jack-rack, etc (con interfaz ladspa).

Créditos y para saber más:

Chris Cannam
http://www.breakfastquay.com/dssi-vst/

http://www.digitalfishphones.com (Pantallazos 1-4)
http://www.studiodevil.com/home/ (Pantallazo 5)

Notas:

(1) Ardour también se puede compilar para hacer de host de VST, directamente sin el envoltorio ladspa-vst.

martes, 29 de diciembre de 2009

Reproductores de multimedia a través de JACK

#########################
Notas de revisiones:
Revisión 0: 29 diciembre 2009. Publicado.
Revisión 1: 17 enero 2010. Retocado texto (nada importante)
Revisión 2: 29 abril 2010. Actualizado a ubuntu lucid lynx
#########################

Como sabemos, cuando JACK está ejecutándose se aborta el audio de toda aplicación que no sea su cliente. Por ello, si jack está activo no podemos escuchar una canción o ver un video en un reproductor multimedia por la misma tarjeta de audio que usa Jack... a menos que consigamos "jackificar" el reproductor. En este caso no solamente podremos escuchar las canciones sin tener que finalizar el servidor jack, sino que además podremos integrar el stream de audio en nuestra sesión, ruteándolo hacia donde nos plazca. Por ejemplo, podemos pasarlo a través de plugins de efectos, ecualización... y/o llevarlo a las entradas de captura de un grabador cliente de jack, por ejemplo, a una pista de Ardour o Audacity.

En esta entrada vamos a mostrar cómo jackificar algunos reproductores populares. En algunos casos, sus salidas se autoconectarán a los system_playbacks y en otros las tendremos que conectar manualmente desde la ventana de conexiones de qjackctl (Jack Control), pestaña Audio. El comportamiento, en cuanto a mostrar los puertos en esta ventana, tampoco es igual para todos. Algunos sólo los mostrarán durante la reproducción y desaparecerán cuando se para. Algún otro será más "jack-friendly" y mostrará puertos mientras la aplicacion esté simplemente levantada. Para los primeros hay un truco para que no desaparezcan los puertos y así poder hacer tranquilamente las conexiones: Reproducir y pausar immediatamente después (el mismo truco que usamos con Audacity cuando va a través de Jack).

Estas instrucciones están probadas en y orientadas hacia ubuntu(studio) 9.10 (karmic) y 10.04 (lucid), aunque en algunos casos el método puede ser similar para otras versiones de ubuntu y para otras distribuciones. Si no se indica lo contrario, todos los reproductores indicados están instalados desde los repositorios oficiales de ubuntu, desde el gestor de paquetes synaptic o método equivalente desde terminal.

La idea de esta entrada no es hacer una evaluación sobre reproductores, cada uno verá. La propuesta es: "Si alguno de estos está entre tus favoritos, aquí tienes cómo hacerlo sonar a través de Jack". He tenido un par de fracasos como veréis. Se agradecen sugerencias. También espero que alguien se anime a aumentar la lista.

Audacious

karmic:
Instalar el paquete audacious-plugins-extra. Lanzamos jack, lanzamos audacious y con botón derecho sobre la barra de arriba, vamos a preferences, audio y elegimos el "Jack Output Plugin".

lucid:
El plugin de salida de jack se incluye ahora en el paquete audacious-plugins. Como éste es una dependencia de audacious, el plugins de jack está presente sin hacer nada. Sólo hay que elegirlo como se indica arriba.

Rhythmbox

Necesitamos el paquete gstreamer0.10-plugins-bad

Ejecutamos (alt + F2 o desde terminal) 'gconf-editor' y en el directorio .../system/gstreamer/0.10/default/ damos el valor 'jackaudiosink' a los nombres 'audiosink', 'chataudiosink' y 'musicaudiosink'. Si no queremos que se autoconecten las salidas del reproductor a los system_playbacks, pondremos: 'jackaudiosink connect=none'

Exaile

Exaile también utiliza gstreamer, así que hay que hacer lo mismo que para rhythmbox. Además, en Editar->Preferencias->Playback, nos aseguramos que el "Audio Sink" es JACK.


VLC

En ubuntu, instalamos el paquete 'vlc-plugin-jack'. Después, desde el menú Herramientas->Preferencias->Audio, elegimos la Salida de Tipo: "Salida de audio JACK".
Si queremos que los puertos de salida se autoconecten a los system_playbacks, editamos:

gedit ~/.config/vlc/vlcrc

En la línea 750, más o menos, (esto en karmic, en lucid, está al principio del archivo) encontramos:

# Automáticamente conectar a clientes escribibles (boolean)
#jack-auto-connect=0

Cambiamos la segunda línea a:
jack-auto-connect=1


Mplayer / gmplayer

Desde línea de comandos, podemos especificar la salida a jack con: 'mplayer -ao jack archivo', para un archivo de audio o video.

Podemos hacer que esto sea permanente editando el archivo '~/.mplayer/config' y añadiendo la línea:

ao=jack

De esta forma, podemos usar mplayer desde línea de comandos, simplemente con 'mplayer archivo'.

(Lo que sigue es válido sólo para karmic, En lucid no existe otro archivo de configuración y ya hemos terminado. Eso sí, hace falta el paquete 'mplayer-gui').

Sin embargo, esto no es suficiente para lanzar mplayer con botón derecho sobre el archivo que queremos reproducir (en gnome al menos, esto invoca a gmplayer). Para ello, editamos el archivo '~/.mplayer/gui.conf' y sustituimos la línea:

ao_driver = "pulse,alsa,sdl:aalib" por:
ao_driver = "jack"

(Podemos poner también 'jack,alsa' o 'jack,pulse' en lugar de 'jack' a secas, tanto en 'config' como en 'gui.conf', para permitir que mplayer use alsa o pulseaudio como segunda opción, si jack no está activo).


Aqualung


No hay que hacer nada. Si jack está activo, funcionará con jack (si no, con pulseaudio o alsa). Además, los puertos de salida se muestran en las conexiones de qjackctl incluso cuando aqualung está parado. Ojalá todos los demás hiceran lo mismo.

Amarok

karmic:
Amarok usa el motor de audio xine. El problema e que la versión de libxine de ubuntu karmic no incluye soporte para jack. Habría que recompilar libxine... o añadir el repositorio PPA de Motin "https://launchpad.net/~motin/+archive/until-jack-is-included-in-main". Vamos a hacer esto último. Si desplegamos la línea "Technical details about this PPA" vemos que las lineas que hay que añadir a /etc/apt/sources.list. Lo podemos hacer de dos maneras, o editando este archivo y añadiendo estas líneas o bien, desde orígenes del software (en el menú "Sistema->Administración"), pestaña otro software, añadir y copiar las líneas. Para obtener la firma, haremos en terminal:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xAxAxAxAxA

El código del final es un ejemplo inexistente. Ahí hay que poner la firma (Signing key) del PPA, pero sólo el código que aparece detrás de la barra.

Hecho esto, ya podemos utilizar nuestro gestor de paquetes favorito. Si usamos Synaptic, habrá que recargar. Después buscamos 'libxine' y actualizamos el paquete 'libxine1-plugins' que nos actualizará sus dependencias, entre otras, 'libxine1'. Veremos que la versión de estos paquetes tiene la coletilla "+withjack1" (v. nota 1).

Después en Amarok, Preferencias, Configurar Amarok, Reproducción, Configurar, Preferencia del Dispositivo, Salida de Audio, Música, nos debería aparecer el dispositivo de salida "Jack Audio Connection Kit". Lo seleccionamos y lo subimos arriba del todo con el botón "Preferir". Lo mismo podemos hacer para el resto de salidas de audio; aunque creo que Amarok sólo tendrá en cuenta la que elijamos para música, de esta forma configuramos xine para otros tipo de salida.

Al igual que aqualung, los puertos de salida de xine no desaparecen cuando amarok está parado :)

lucid:
Dejo de mantener este documento. Aunque libxine debe tener soporte para jack integrado y no sería necesario añadir ningún repo alternativo.

Kaffeine

También utiliza xine. Si en la configuración de xine (desde Amarok, como acabamos de ver) hemos elegido Jack para la salida de video, fucionará con Jack a la primera.

Ver notas para lucid en el párrafo anterior.

flashplayer (youtube, vimeo, myspace...)

Hasta hace poco, casi la única forma de tener el flash player como cliente de jack era a través del plugin alsa-jack, que había que recompilar pues ubuntu no trae sporte para jack en su paquete "alsa-plugins". En el PPA de Motin hay una versión de los alsa-plugins con soporte para Jack que nos ahorraría tener que recompilar. Además tendríamos que crear un archivo .asoundrc con cierto código para que esto funcionase. Algunos lo hacen, parece que con mejor resultado, a través del jack audio sink de pulseaudio.


Estos métodos son parches. Ahora lo podemos tener de forma nativa por medio de un plugin aparecido hace unos meses . Manos a la obra:

Necesitamos estos paquetes:

build-essential
git-core
autoconf
automake
libtool
libasound2-dev
libjack-dev
libsamplerate0-dev
libssl-dev

Desde una terminal en el directorio por defecto (/home/usuario):

(Las dos primeras líneas son opcionales; por una cuestión de orden, conviene tener un directorio destinado a los programas en código fuente)

mkdir fuentes
cd fuentes
git clone git://repo.or.cz/libflashsupport-jack.git
cd libflashsupport-jack
sh bootstrap.sh
make
sudo make install

Los puertos de salida de flash se autoconectan a los system_playbacks

Otra opción es "pescar" el archivo del directorio /tmp, traerlo a home, chequear los permisos y abrirlo con nuestro reproductor favorito.

lucid:
Con la versión de firefox que trae, parece que hay un pequeño lío con las rutas de las librerías. Además de todo lo explicado para karmic, he necesitado hacer:

sudo ln -s /usr/local/lib/libflashsupport.so /usr/lib/firefox-3.6.3/

Si lo hacemos con firefox se nos queda colgado, con tanto hurgar en sus tripas:

killall firefox-bin

Mixxx

karmic:
Hace falta portaudio19 con capacidad para jack, cosa que no tiene el que trae ubuntu/ubuntustudio karmic. Si hemos añadido el PPA de Motin, como vimos para el caso de amarok, actualizamos el paquete libportaudio2 a la versión "+withjack2" (v. Nota 1).

En Mixxx, vamos a Options->Preferences y elegimos "Jack Audio Connection Kit" como Sound API.

lucid:
Ya no es necesario añadir ningún repo alternativo. portaudio viene con el soporte para Jack integrado.

Beneficios colaterales

Gracias a esta versión de portaudio tenemos soporte Jack para Mscore :D. (En lucid a la primera, eso sí, tenemos que elegirlo en preferencias).


Deseos inclumplidos y soluciones prácticas:

TOTEM:

karmic:
Se supone que debería funcionar con el hack a gstreamer que hace funcionar a rhytmhbox y a exaile pero no hay manera. No me importa mucho porque tengo VLC, Kaffeine o mplayer / gmplayer.

lucid:
Me funciona a la primera

FIREFOX plugins :

No he conseguido que ninguno funcione con jack dentro de firefox. ¿Alguna idea? Como alternativa, en Editar, Preferencias, Programas, he optado por abrir los archivos multimedia mediante /usr/bin/vlc. De esta forma los descarga y los abre en vlc externamente de forma automática, incluida la conexión a los system:playbacks.

AGRADECIMIENTOS

No descubro nada. Todo esto ya está escrito y lo he leído en varios sitios. Lo del flash player es a partir de un aviso de Rakarrack Team hace poco en el foro GNU/Linux de Hispasonic, con apunte oportuno de lgarrido, pues me estaba volviendo loco con las sugerencias de Raka. En general, gracias a todos los que lo han explicado y a los que lo hacen posible con su código.

Nota 1: Creo que esto no tiene nada que ver con Jack1 (versiones 0.xxx.x) o Jack2 (versiones 1.9.x). Parece un número que se ha quedado colgado atrás.

domingo, 20 de diciembre de 2009

Introducción a jconvolver

##################################
Notas de revisiones:
Revisión 0: 20 diciembre 2009. Publicado.
Revisión 1: 22 diciembre 2009. Retocada descripción de frontends.
Revisión 2: 23 diciembre 2009. Ampliado tutorial de Jc_Gui
##################################

jconv (renombrado a jconvolver desde la versión 0.8.4) es un motor de convolución a tiempo real, cliente de jack. Nada mejor que la descripción que da el propio autor, Fons Andriensen, en su página web . Si descargáis las fuentes, hay una descripción más completa en archivo README. Esto pretende ser una introducción para romper el hielo.

INSTALACION
""""""""""""""""
En instalaciones basadas en Debian, podemos instalar los paquetes 'jack-jconv' y 'jconv-config-files'. Por supuesto, siempre podemos compilar e instalar manualmende desde el código fuente, que podemos descargar desde la página oficial del proyecto.

USO
"""""
Básicamente, el comando jconv llama a un archivo de configuración, el cual, a su vez, invoca el archivo wav de impulso, con varias opciones. El propio autor explica en qué consiste un archivo de configuración de jconv. Vamos a hacer una búsqueda. En una terminal:

sudo updatedb
locate jconv

Vemos que hay un README.CONFIG en /usr/share/doc/jack-jconv. Vamos a ver qué dice:

cat /usr/share/doc/jack-jconv/README.CONFIG

Vemos que hay 7 comandos diferentes, cada uno con sus opciones. Con el locate también vimos que hay varios archivos de configuración y algunos impulsos de ejemplo en el directorio /usr/share/jack-jconv/config-files/.

Voy a pasar todo esto a mi home, más que nada por tener un único directorio donde poner todos los impulsos y los archivos de configuración que me interesen. De momento, voy a crear un nuevo directorio llamado conv-reverb y luego lo copio allí con:

sudo cp -R /usr/share/jack-jconv/config-files/* /home/pablo/conv-reverb/

También voy a cambiar el propietario de todos estos archivos, para que no tenga problemas a la hora de editar los archivos de configuración:

sudo chown -R pablo:pablo /home/pablo/conv-reverb/

Y voy a descargar algunos impulsos que ha creado el propio autor desde su página oficial (en downloads, abajo, remark 2). Los descomprimo y los muevo a mi directorio conv-reverb.

Por ejemplo, voy a probar el chapel.wav. Ya teníamos un archivo de configuración de ejemplo llamado chapel.conf, así que vamos a partir de éste, que es bastante sencillo. La primera línea a modificar es el la ruta donde se encuentra el archivo chapel.wav. En mi caso, la cambio a:

/cd /home/pablo/conv-reverb

El tamaño de la partición (en la línea /convolver/new, parámetro partition) lo podemos poner igual al tamaño del periodo (cuadros por periodo) de jack. A mayor "partition" mayor latencia.
Vemos también en esa línea que lo estamos definiendo con una entrada y dos salidas. En las siguientes líneas podemos cambiar los nombres de los puertos de jack, si queremos. Por fin, en las líneas /impulse/read definimos el archivo del impulso y algunos parámetros para cada combinación entrada-salida (en este caso dos). Lo podemos dejar como está.

Si ahora hacemos en la terminal:

jconv conv-reverb/chapel.conf

Ya tendremos nuestro impulso cargado. Sus puertos nos aparecerán en las conexiones de qjackctl, y los podremos conectar con otros clientes a nuestro antojo.



En la imagen he conectado el puerto de captura 1 (donde tengo enchufado un micro) a la entrada de jconv y las salidas de jconv a los system:playbacks, que representan las salidas analógicas a los altavoces. Pues sí, me escucho como en una capilla :)


FRONTENDS
""""""""""""""

El método que hemos visto para usar jconv es muy flexible y, superado el trabajo inicial de pruebas y edición de archivos, mucho más rápido de lo que parece a primera vista. Por ejemplo, podríamos preprogramar varios reverbs y lanzarlos con un click desde un cajón en el panel de gnome.

Sin embargo, si queremos algo más sencillo y gráfico podemos contar, de momento y que yo sepa, con una par de frontends gráficos, Jc_Gui y conviction.

Jc_Gui


Jc_Gui está escrito por Hermann Meyer y James Warden, autores de guitarix, un amplificador virtual de guitarra. Jc_Gui utiliza código de guitarix, que ya tiene la opción de añadir impulsos para simular cajas de altavoces haciendo uso de jconv.

Para instalarlo, vamos a su página oficial de sourceforge y descargamos la última versión disponible. Lo descomprimimos y lo movemos a nuestro directorio de fuentes y desde su directorio hacemos:

./waf configure
./waf build
sudo ./waf install

Nos aparece en el menú de sonido y video.

Jc_Gui y conexiones en qjackctl

En la imagen de la onda podemos seleccionar parte del impulso, arrastrando el ratón con botón izquierdo, para obtener un offset y una longitud. Podemos mover la selección con botón central y borrarla con botón derecho. El tamaño por defecto, en muestras o samples, será igual al tamaño del impulso.

En cuanto a las conexiones, las salidas 2 y 3 de Jc_Gui van a las entradas de jconvolver, que devuelve la señal a las entradas 2 y 3 de Jc_Gui. Por las salidas 0 y 1 de Jc_Gui sale una mezcla que se puede controlar con el slider wet/dry. Nuestra fuente de audio la conectaremos a las entradas 0 y 1 de Jc_Gui.

A la izquierda del slider wet/dry tenemos la señal "seca", sin reverb (le afecta sólo el volumen y la ecualización). A la derecha del todo, sólo la señal "mojada" que se envía al procesador. Como la configuración de jconvolver no se puede modificar en tiempo real, los desarolladores han facilitado una ganancia y un delay "pre-jconv" en la misma ruta de la señal "mojada".


Conviction

Conviction está desarrollado en python por Juan Ramón Castán. Se puede descargar desde aquí .

Es necesario el paquete sndfile-programs y python 2.6. De momento, parece que sólo funciona con jack1 (el jack "normal", versión 0.xxx). La instalación es sencilla: 'sudo make install' desde el directorio creado al descomprimir. Aparece en el menú de sonido y video.

Si simplemente queréis cargar un impulso y que la reverb suene a la primera sin complicaros, conviction es una buena opción. Además, permite cargar varios impulsos que aparecen en las conexiones de jack como puertos independientes.

Conviction

viernes, 18 de diciembre de 2009

Instalación de linuxsampler-qsampler desde el código fuente en ubuntu / ubuntustudio 9.10

#############################
Notas de revisiones:
Revisión 0: 19 diciembre 2009. Publicado.
Revisión 1: 24 enero 2010. Revisada la instalación del soporte para LV2 (ver nota 1)

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

En esta entrada vamos a explicar cómo instalar linuxsampler con su frontend qsampler, desde el código fuente. Linuxsampler es un sampler de software para librerías de samples en formato .gig.

Voy a compilar los programas con las opciones por defecto, mayormente. Aquí, Luis Garrido, desarrollador de aplicaciones musicales para GNU/Linux, nos explica cómo optimizar los programas ejecutables. Precisamente pone de ejemplo linuxsampler y comenta que, con ciertas opciones, se puede conseguir una mejora radical en su rendimiento. Yo no lo he probado y de momento lo dejaré de lado. Siempre tenemos la opción de volver atrás y hacer caso y preguntar a los que controlan de verdad.

Linuxsampler tiene una licencia considerada como no-libre, ya que impone una restricción a su uso comercial (crear software o hardware comercial a partir de su código). Por esta razón, no está en los repositorios oficiales de Debian ni de Ubuntu.

Con este método, podremos editar los samples, con gigedit, desde el propio qsampler. No voy a instalar el frontend basado en java (jsampler), pero es otra posibilidad. Además, qsampler y jsampler no son incompatibles.

______________________________________________________________

INSTALACION DE LINUXSAMPLER Y QSAMPLER
""""""""""""""""""""""""""""""""""""""""
1. Descargar el código fuente

Descargaremos las fuentes desde la página oficial de linuxsampler (abajo en Source Packages). Las últimas verisones de los archivos tar.bz2:

libgig
linuxsampler
gigedit
liblscp
qsampler


2. Extraer y mover a nuestro directorio de fuentes

Extraemos con botón derecho y movemos los directorios creados a nuestro directorio de fuentes, por ejemplo, /home/usuario/fuentes

3. Compilar e instalar libgig

~/fuentes/libgig-3.3.0$ ./configure

Si "configure" nos da algún error es porque falta alguna librería. En este caso instalaremos el paquete de desarrollo de esta librería. Normalmente es fácil de adivinar, por ejemplo, si echa en falta libsndfile, lo podemos buscar en synaptic y nos encontramos 'libsndfile1-dev'. También, si es la primera vez que compilamos algo, necesitaremos el paquete 'build-essential' y seguramente alguno más. "Configure" nos pondrá sobre la pista. Ante la duda, no instalaremos paquetes a lo loco. Mejor volver a ejecutar "configure" hasta que deje de quejarse. Entonces, compilamos con:

make

e instalamos con:

sudo make install

4. Compilar e instalar linuxsampler:


./configure no da error pero advierte que no encuentra sqlite, necesario para cargar bases de datos de instrumentos. Instalo libsqlite3-dev.
Vuelvo a hacer ./configure.

El mensaje final me dice:

# MIDI Input Drivers:
# ALSA: yes, JACK: yes, CoreMIDI: no, MME: no, MidiShare: no
#-------------------------------------------------------------------
# Audio Output Drivers:
# ALSA: yes, JACK: yes, ARTS: no, CoreAudio: no, ASIO: no
#-------------------------------------------------------------------
# Building sampler as plugin for following host standards:
# DSSI: yes, LV2: no, VST: no, AU: no
#-------------------------------------------------------------------#

Esto significa que tengo soporte MIDI y audio para alsa y para Jack, pero no puedo lanzar linuxsampler como un plugin LV2 ni como un plugin VST. Lo segundo no me interesa, ya que si bien podría hacerlo funcionar con vsthost de dssi-vst (por ejemplo), me parece absurdo ya que ese host de VST lo tengo precisamente para los que no tengo opción nativa para linux. ¿Pero, sería interesante tener linuxsampler como plugin LV2? ¡No parece mala idea!

Inciso: Soporte para LV2


Hace falta lv2core, que podemos instalar siguiendo las instrucciones que se dan aquí. Volvemos al directorio de linuxsampler y otra vez:

./configure
...
# Building sampler as plugin for following host standards:
# DSSI: yes, LV2: yes, VST: no, AU: no

Ahora sí, ya podremos tener linuxsampler en un host de LV2 (y también en un host de dssi, como Rosegarden, esto es porque en ubuntustudio-audio-plugins viene instalado el soporte para dssi y ya teníamos las librerías instaladas).


5. Gigedit:

./configure

me ha dado el siguiente error:
configure: error: Your intltool is too old. You need intltool 0.35.0 or later.

Voy a synaptic y busco intltool. Lo instalo. En el segundo intento de configure me dice:

No package 'gtkmm-2.4' found
No package 'gthread-2.0' found

Los busco en synaptic e instalo libgtkmm.-2.4-dev y sus dependencias.

Sin embargo, configure me advierte que no encuentra linuxsampler (?). No sé por qué ocurre esto pero pruebo a volver al directorio de linuxsampler y hacer otra vez ./configure, make y sudo make install.

Otra vez al directorio gigedit. "configure", ahora sí, me dice:
checking for LINUXSAMPLER... yes
Found linuxsampler 0.5.0

make y sudo make install, terminan con éxito (no hay mensajes de error).

5. liblscp


./configure
make
sudo make install

Como la seda

6. qsampler
./configure

checking for Qt library version >= 4.1... no; Qt 4.1 or greater is required

¿Qué hace falta aquí? Como ya deberíamos haber leido en el README, necesitamos qt 4.
Vamos a ir a synaptic y hacer una búsqueda por qt. Instalaremos libqt4-dev

"configure" termina bien. Sólo veo una cosa rara:
libgig supports fast information retrieval . . . .: no
No creo que sea importante. Seguimos con make y sudo make install... EXITO.

"""""""""""""""""""""""""""""""""""""""""

Vale, se supone que ya hemos terminado. Vamos a lanzar qjackctl y después qsampler. qsampler aparece en el menú de sonido y video... Parece que no va. Si lo lanzamos desde terminal:

~$ qsampler
qsampler: error while loading shared libraries: liblscp.so.6: cannot open shared object file: No such file or directory

Problemilla. Vamos a localizar liblscp:

$ sudo updatedb
$ locate liblscp

Entre otros:
/usr/local/lib/liblscp.so.6

En realidad existe pero no la encuentra. Esto es porque qsampler espera esa librería en /usr/lib, no en /usr/local/lib. Podemos solucionarlo con un enlace simbólico:

sudo ln -s /usr/local/lib/liblscp.so.6 /usr/lib/liblscp.so.6

Solucionado.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

qsampler, con qjackctl

Nota 1: Si seguiste el método de instalación de LV2 que dí en la revisión 0, borra las librerías de slv2 en /usr/local/lib después de haber seguido el método referenciado en la revisión 1 (sudo rm /usr/local/lib/libslv2* será suficiente)

miércoles, 16 de diciembre de 2009

Ubuntustudio 9.10 para principiantes. IV. Ajustes y primeros pasos

################################
Notas de revisiones:
Revisión 0: 16 diciembre 2009. Publicado
Revisión 1: 20 marzo 2010. Actualizado

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

EN PROGRESO.

Esta entrada va a ser la última de la serie de ubuntustudio para principiantes. ¡Pero no porque ya no sea necesario ir más lejos!

En otras entradas seguiremos hablando sobre ajustes e instalación y manejo de programas que, por supuesto, serán aplicables a ubuntustudio. Sin embargo, fuera de esta serie procuraré que el enfoque sea distro-neutral en la medida de lo posible y en la de mis escasos conocimientos de distribuciones no basadas en debian.


1. Tarjetas de audio

El control de las tarjetas de audio está explicado en esta entrada.


2. Ajustes para jack

Si quieres usar tu ordenador para crear música, no puedes prescindir del servidor de audio jack. Aquí hicimos una breve presentación de jack y una demostración de la flexibilidad entre las conexiones de audio entre aplicaciones y tarjeta de sonido.
Pr favor, lee ahora la breve presentación del servidor de audio jack y los "conceptos no tan obvios" 1) 2) y 3). Suelen ser motivo de confusión frecuente entre nuevos usuarios.

Jack ya viene instalado en ubuntustudio pero hay que hacer algunos ajustes para que el servidor y sus clientes se encuentren cómodos.

Vamos a abrir una terminal y a comprobar la salida de los siguientes comandos:

groups

ulimit -r

ulimit -l

El primero a qué grupos pertenecemos como usuario. Nuestro usuario debe estar en el grupo audio (grupo al que vamos a dar ciertos privilegios).

El segundo dice cuál es la máxima cantidad de memoria que puede bloquear nuestro usuario. Jack y sus clientes quieren tener la posibilidad de bloquear memoria. A mí me sale 64, que es insuficiente para jack. jack.org recomienda el valor "unlimited".

El tercero te dice cual es la máxima prioridad de realtime que puede tomar jack. Lo máximo y lo que se suele recomendar es que sea 99, y es lo que trae ubuntustudio por defecto en una instalación limpia.

Así que tenemos que conseguir que 'ulimit -l', nos devuelva el valor "unlimited"

(Nota para usuarios que han "actualizado" a ubuntustudio desde ubuntu: Hacer también el paso 0, si no aparece "audio" en la salida de 'groups')

0. Añadirte al grupo audio con el comando:
sudo adduser tunombredeusuario audio

1. Editar el archivo /etc/security/limits.conf (por ejemplo con:)
gksudo gedit /etc/security/limits.conf

2. Añadir al final de este archivo las líneas (la primera ya estará si 'ulimit -r' dió 99):
# Prioridad de realtime y memlock, necesario para jack en realtime (esto es un comentario)
@audio - rtprio 99
@audio - memlock unlimited

3. Reiniciar.

Ahora abrimos otra vez la terminal y comprobamos con los comandos de arriba (podemos usar flecha arriba para repetir comandos introducidos últimamente) que estamos en el grupo audio y sobre todo que 'ulimit -l' da "unlimited" y 'ulimit -r' da 99.

De esta forma podremos lanzar jack con la opción realtime, que es lo recomendado.

3. Configuración de jack

TODO. Esto necesita una entrada dedicada. De momento, google es nuestro amigo.

4. Lo que no puede faltar

TODO: Soporte de idiomas, códecs... Dar un par de buenos links, Hay muchos sitios donde explican esto y mucho más.

5. Trucos y conveniencias

Comandos básicos de terminal e instalación de utilidades para facilitarnos el manejo del ordenador de una forma lo más gráfica posible.

6. Instalación de programas

¿Cómo se instalan programas?


7. Aplicaciones interesantes

Plugins (LADSPA, DSSI, LV2, Windows VST, Linux VST)
Reverb convolución (jconv, Jc_Gui, conviction...)
Para guitarristas (Rakarrack, guitarix, tuneit...)
Edición (Audacity, rezound, ...)
Grabación multipistas (Ardour, qtractor, traverso, non-daw...)
Secuenciadores MIDI (Rosegarden, Muse, Seq24, non-sequencer...)
Notación musical (mscore, notedit, denemo, Rosegarden, Lilypond)
Análisis de audio (jaaa, japa, sonic visualiser y plugins vamp...)
Programación de procesado de audio (Puredata, Supercollider, Csound...)
Educación (tuxguitar, solfege...)
....

domingo, 13 de diciembre de 2009

Organización y control de tarjetas de audio

#########################
Notas de revisiones:
Revisión 0: 13 diciembre 2009. Publicado.
Revisión 1: 8 febrero 2010. Corregido. No 'alsabase' sino 'alsa-base' y otros detalles.
Revisión 2: 8 junio 2010. Mejor usar en jack la identificación alfanumérica que da alsa

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

Advertencia: Esta entrada asume que las tarjetas de audio están soportadas por ALSA. Para comprobar el soporte en Linux de tu tarjeta de audio, ver (TODO).


Aunque existen herramientas gráficas para configurar el audio, nada es tan fiable, potente e informativo como nuestra vieja amiga la terminal de comandos.

¿Qué tenemos por ahí?


Hagamos en la terminal:

lspci | grep -i audio

Nos saldrán los dispositios de audio que tenemos en el bus pci.

En mi caso:

pablo@Desktop:~$ lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
05:00.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 08)
05:01.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02)

La primera es la integrada, la segunda una SB Live! y la tercera una m-audio 2496.

Además, he enchufado una UCA202 de Behringer en un puerto USB. Si hago:

lsusb

Veo, entre otras líneas:

Bus 002 Device 003: ID 08bb:2902 Texas Instruments Japan

ALSA es un projecto mantenido por voluntarios que escriben drivers para tarjetas de audio y los integran en el kernel de Linux. Estas cuatro tarjetas están soportadas por ALSA. Vamos a ver cómo las ve ALSA, con el comando:

cat /proc/asound/cards

En mi caso:
pablo@Desktop:~$ cat /proc/asound/cards
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xfebf8000 irq 22
1 [Live ]: EMU10K1 - SB Live! Value [CT4870]
SB Live! Value [CT4870] (rev.8, serial:0x80281102) at 0xb880, irq 21
2 [M2496 ]: ICE1712 - M Audio Audiophile 24/96
M Audio Audiophile 24/96 at 0xb800, irq 22
3 [default ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-0000:00:1d.1-1, full s

Y qué modulos o drivers las manejan, con

cat /proc/asound/modules

Para mí:

pablo@Desktop:~$ cat /proc/asound/modules
0 snd_hda_intel
1 snd_emu10k1
2 snd_ice1712
3 snd_usb_audio

El módulo de la tarjeta integrada es snd_hda_intel, el de la SB Live!, snd_emu10k1, el de la m-audio 2496, snd_ice1712 y el de la UCA 202, snd_usb_audio.

Acerca de la tarjeta integrada, si no la vamos a usar, lo mejor es deshabilitarla desde la BIOS. Si nos fijamos, está compartiendo número de IRQ con la m-audio (irq 22). Eso no es bueno. Queremos que nuestra tarjeta principal no comparta número de IRQ con ningún otro dispositivo. Echaremos un vistazo a la salida de

cat /proc/interrupts

Si tenemos un kernel RT, podemos levantar la prioridad de nuestra tarjeta de audio para mejorar la latencia. Esto se explica en esta entrada

Un poco de orden

Pronto volveré a guardar en el cajón la SB Live! y entraré en la BIOS para deshabilitar la integrada, pero de momento tengo un pequeño problema; cuando reinicio el ordenador el orden de las tarjetas en 'cat /proc/asound/cards' ya no es el mismo.

Esto puede crear un problema con jack si en el setup de qjackctl elegimos la interfaz con su identificación numérica (hw:0 por ejemplo).

Para solucionar esto, podemos hacer dos cosas. Una de ellas, es darles números de orden fijos como se explica a continuación pero existe otra forma mucho más sencilla e infalible que he aprendido recientemente. Si queréis ahorrar tiempo, saltar hasta % y seguir leyendo...

Editamos el archivo '/etc/modprobe.d/alsa-base.conf' (nos debemos asegurar que este archivo existe, es posible que su nombre sea 'alsa-base' en lugar de 'alsa-base.conf'):

gksudo gedit /etc/modprobe.d/alsa-base.conf

Y añadimos al final:

#Dar números de orden fijos a la tarjetas de audio
alias snd-card-0 snd-ice1712
options snd-ice1712 index=0
alias snd-card-1 snd-emu10k1
options snd-emu10k1 index=1
alias snd-card-2 snd-hda-intel
options snd-hda-intel index=2
alias snd-card-3 snd-usb-audio
options snd-usb-audio index=3

Fijaros que he tomado los nombres de los módulos, pero hay que sustituir el guión bajo por un guión normal.

Para que este cambio tenga efecto debemos, bien reiniciar el ordenador, o bien, más rápido, recargar los módulos de alsa con el comando:

sudo alsa force-reload

%

Poner en jack la identificación alfanumérica, que es lo que encontramos entre corchetes en la salida de "cat /proc/asound/cards", precedido de "hw:". Por ejemplo, si quiero que jack arranque con la m-audio escribiré en el campo interfaz (aunque no aparezca en el menú desplegable):

hw:M2496

Mezcladores de alsa

ALSA nos da acceso al mezclador hardware, con el cual podemos interactuar con los niveles, las rutas del audio y otros parámetros fundamentales de nuestras tarjetas.

El más elemental es 'alsamixer', de línea de comandos. El manejo es con el teclado:

[TAB] para cambiar Playback, Capture, All. Para reproducción, lo dejamos en Playback.
Flechas izquierda/derecha para movernos por los parámetros (Items)
Flechas arriba/abajo para cambiar valor.
Tecla [M] para silenciar/activar. (MM indica silenciado, OO activado)
[Ctrl] + [C] para salir.

Hay otros mezcladores gráficos como gnome-alsamixer o gamix (en ubuntu / ubuntustudio, en synaptic). gamix está muy bien porque los controles están ordenados. Para las integradas o para las comerciales tipo SB es mucho más claro que alsamixer o gnome-alsamixer.

gamix sobre la tarjeta integrada en un Acer Aspire One

El controlador recomendado para la m-audio 2496 y similares (m-audio 1010LT por ejemplo; en general, las que usen el módulo snd_ice1712) es 'envy24control'. Se lanza desde terminal. Es necesario que tengamos instalado el paquete 'alsa-tools-gui'.

Envy24control sobre una m-audio 2496. Pestaña Analog Volume

Para algunas tarjetas RME, el controlador adecuado es hdspmixer (también en el paquete alsa-tools-gui).


Problemas comunes


1. No suena o no captura audio
Si no suena, lo primero será comprobar que los cables están conectados correctamente. Después comprobaremos los niveles de nuestro mezclador ALSA favorito (alsamixer. gamix, gnome-alsamixer...)

2. Mi tarjeta de audio integrada sigue sin sonar o sin capturar audio
En ocasiones, y sobretodo en laptops, las tarjetas de audio integradas que utilizan el módulo snd_hda_intel tienen algunos problemillas. Aquí hay una orientación para intentar arreglarlos:
http://www.ubuntu-es.org/?q=node/115147

3. Mi tarjeta m-audio no suena ni captura.
Si es una tarjeta que usa el módulo snd_ice1712, lo primero será comprobar la pestaña Analog Volume de Envy24control. Los convertidores DAC (para reproducción) y ADC (para captura) no deben de estar bajados.

3. Mi tarjeta de audio funciona pero Jack no arranca.
Ver (TODO)


Créditos y para saber más


User FAQ nº 13 de www.64tudio.com
Los créditos en http://www.ubuntu-es.org/?q=node/115147
ALSA wiki sobre los mezcladores de ALSA, http://alsa.opensrc.org/index.php/AlsaMixers

jueves, 19 de noviembre de 2009

Ubuntustudio 9.10 para principiantes. III. Mejorando el aspecto

###############################
Notas de revisiones:
Revisión 0: 19 noviembre 2009. Publicado.
Revisión 1: 16 diciembre 2009. Modificado título.
##############################

Esta entrada la vamos a dedicar a mejorar la interfaz gráfica para dar facilidad de uso y un aspecto agradable y familiar a ubuntustudio.

El entorno gráfico de escritorio que utiliza ubuntustudio por defecto se llama 'gnome'. Hay otros entornos como KDE, XFCE, Fluxbox... de aspecto y uso diferente. De hecho, el entorno gráfico no está intrínsecamente ligado al sistema operativo, sino que es un programa más (mejor dicho, un conjunto de programas). Gnome es fácil de usar y al mismo tiempo ofrece mucha flexibilidad para poner el ordenador a nuestro gusto. Recordemos el aspecto que tenía nada más ser instalado.

La barra que aparece arriba se llama 'panel'. A la derecha vemos un control básico de volumen, fecha y hora y la papelera de reciclaje. A la izquierda, el logo de ubuntustudio. Si nos fijamos tiene una flechita. Al pulsar se despliega el menú de ubuntustudio. Veamos, Sistema -> Ayuda y soporte, Acerca de Gnome, Acerca de ubuntu... Buena idea leer esto para empezar.

Siguiendo con el panel, vamos a poner el ratón sobre él y botón derecho... Propiedades. Le podemos dar color, transparencia, tamaño... Y también hacer: ¡Panel Nuevo! Abajo que va. Si preferimos lanzar aplicaciones desde abajo, podemos situarnos en el nuevo de panel, botón derecho, añadir al panel, barra de menús. Botón derecho sobre barra de menús, mover, movemos a la izquierda, bloqueamos al panel. Ya tenemos nuestro menú más accesible desde un lugar más familiar. ¿O por qué no arriba? Quitamos del panel de arriba el logo de ubuntu y hacemos la misma operación, añadir menú personalizado. ¿Mejor arriba? Por variar.

Ahora podemos añadir al panel de abajo una "Lista de ventanas", para que sepamos qué ventanas tenemos abiertas. O un "Cambiador de áreas de trabajo" con 4 áreas de trabajo (botón derecho, preferencias). Podemos cambiar el área de trabajo con [Ctrl] + [Alt] + Flecha izquierda/derecha. Esto viene bien para cuando tenemos abiertas un montón de aplicaciones y queremos poner orden para trabajar con ellas.

Ahora probemos otra cosa, abrimos Aplicaciones->Accesorios. Nos situamos con el ratón en "Terminal", pinchamos y arrastramos al panel superior, por ejemplo. Así tenemos el lanzador de la terminal a mano, con un click. Nos vendrá bien.

Supongo que ya hemos visto que en Aplicaciones->Internet tenemos el Firefox, de hecho supongo que estamos leyendo esto en Firefox. Podemos arrastrarlo también al panel. Podemos arrastrar cualquier aplicación del menú al panel, para lanzarla con un click. También podemos arrastrarlas al escritorio, para lanzarlas con dos clicks, a lo Windows. Yo personalmente prefiero tener los lanzadores en el panel y dejo el escritorio lo más limpio posible. Bueno, ahora que tenemos la ventana de Firefox abierta vamos a redimensionarla, con el segundo botón de la derecha (sí, no se ve para qué es cada botón, también podemos cambiar el tema de las ventanas de ubuntustudio como veremos ahora) y buscando la esquina inferior. O también, otro truco, situarnos con el ratón dentro de la ventana, presionando [ALT] y arrastrando el ratón con el botón central pulsado, desde cualquier punto.

Ahora, con la ventana de firefox ocupando, pongamos, la mitad del escritorio, vamos a lanzar la terminal desde el panel de forma que tengamos las dos ventanas a la vista. (Esto es un ejercicio para perder el miedo a la terminal).

apt-get moo

Selecciona el código de arriba con el botón izquierdo y "déjalo caer" en la terminal con el botón central. ¿Ya has hecho muuu? Esto es lo que se llama un "huevo de pascua" o "sorpresa". El sentido del humor que no falte. Bueno, esto era para mostraros qué fácil podemos copiar texto de un campo de edición a otro, incluso entre ventanas y aplicaciones diferentes, gracias a nuesstro "ratón-grúa". También podemos simplemente arrastrar el texto. Copiar y pegar: Dos operaciones, dos clicks.

Ahora cerremos la terminal y sigamos con lo nuestro. Si pulsamos botón derecho sobre el escritorio y "cambiar el fondo de escritorio". Se nos abren las preferencias de la apariencia, de hecho, mucho más que cambiar el fondo de escritorio. Podemos elegir un tema diferente para las ventanas. Si no nos gusta el tema ubuntustudio podemos elegir cualquier otro. Sólo pulsarlo y ya nos cambia el aspecto de la ventana. También lo podemos personalizar. Podemos cambiar el fondo, hay uno precioso de fotografías del universo, del Hubble supongo, o poner un color sólido de fondo con la rueda de colores, con gradiente, sin gradiente... Cambiar las tipografías, etc. Vamos, ponerlo todo a nuestro gusto.

Para terminar, dependiendo de la tarjeta gráfica, podemos activar los efectos visuales normales o extra. Por ejemplo, con mi tarjeta gráfica nvidia sólo tengo aceleración 3D (necesaria para los efectos de escritorio) gracias al controlador privativo del fabricante (privativo porque no es software libre, entre otras cosas, el código fuente no está disponible para cualquiera). Algunas personas se niegan a instalar nada privativo en sus ordenadores pero la verdad es que los efectos son muy divertidos. También es verdad que si el ordenador lo vamos a dedicar pricipalmente a música, los efectos nos quitan algo de recursos de CPU, pero bueno no es para tanto y a mí me gustan, sobretodo las ventanas gelatinosas :P

Después de instalar el controlador privativo nos pide reiniciar. Pero antes, vamos a introducir synaptic, Sistema -> Administración -> Gestor de paquetes Synaptic. También lo podemos poner en panel o en Escritorio, lo vamos a usar un montón. Después de leer la introduccuión rápida y enterarnos, más o menos, de lo que es un "paquete de software", vamos a buscar 'compizconfig-settings-manager'. Lo marcamos para instalar, con lo cual se marcará también otro paquete (una "dependencia"). Si hay actualizaciones disponibles, instalémoslas también. Aplicamos.

Y para que no nos pida otra vez la contraseña cada vez arranquemos (si somos usuario único del ordenador) vayamos a Sistema-> Administración-> Pantalla de acceso, desbloqueamos y permitimos acceso directo a "nuestro" usuario.

En Linux hay un administrador (o superusuario) y uno o más usuarios. En nuestro ordenador personal podemos acceder a los programas como administrador o como usuario, aunque seamos la misma persona. No es lo mismo tú administrador que tú usuario. Y como vamos comprobando, ciertas cosas (instalar software por ejemplo) sólo las puede hacer el administrador, o un usuario con derechos de administrador. Traducido a la práctica: nos pide contraseña. Esto es un rollo pero es así. Y es bueno que sea así. Tú usuario no te puedes cargar el sistema operativo. Tú administrador sí. Puedes hacer cuentas para otros usuarios y estar tranquilo/a pues no te van a instalar ni desinstalar ni borrar nada importante para tí.

Ahora sí, reiniciamos... A lo que íbamos. Si dispones de una tarjeta gráfica que lo permita y no hubo problema en que ubuntu instalara los drivers adecuados, botón derecho sobre escritorio, "cambiar el fondo de escritorio", Efectos visuales, Extra. ¡Ventanas gelatinosas! Tecla Super (Windows) con rueda ratón: ¡Tremendo zoom a la pantalla!

Sistemas -> Preferencias -> Administrador de Opciones CompizConfig. Girar Cubo, que vale y que vale.
[Ctrl] + [Alt] + arrastrar ratón con botón izquierdo pulsado... Bueno, no hace música pero es divertido. Con los efectos de escritorio te puedes tirar todo el día probando cosas sorprendentes. Hay gente que se lo pasa bomba con cosas como éstas (me incluyo).

Ah, que no se ve youtube. No hay problema, voy a arrastrar esto a la terminal:

sudo wget http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list --output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update && sudo apt-get install flashplugin-nonfree

Claro que tengo que reiniciar... firefox :) Este video se ha visto más de un millón y medio de veces. Creo que muchos se pasaron a Linux después de ver esto. Otros muchos piensan que no vale para nada. Algunos comentarios son de aúpa. La guerra de los SO's. Parecemos esclavos del ordenador. ¿Para qué enfadarse? Cada uno que elija lo que le parezca mejor. Siempre puedes deshabilitarlos.

Con el comando de arriba hemos añadido un nuevo repositorio, el de medibuntu y hemos instalado el plugin (no libre) para flash. En la siguiente entrada instalaremos más software y haremos algunos ajustes básicos.

martes, 17 de noviembre de 2009

Ubuntustudio 9.10 para principiantes. II. Instalación

###############################
Notas de revisiones:
Revisión 0: 17 noviembre 2009. Publicado.
Revisión 1: 24 noviembre 2009. Corregido.
Revisión 2: 16 diciembre 2009. Modificado título.
##############################


Voy a instalar ubuntustudio 9.10 en el disco duro de mi ordenador.

Lo primero que debo hacer es lo que se dice "preparar el suelo", es decir, preparar las particiones. Realmente, con un espacio libre en disco de al menos 10 GB sería suficiente, pues el DVD de instalación es capaz de redimensionar, crear nuevas particiones y formatearlas.

¿Por qué nuevas? ¿No es suficiente con una partición? No. Hacen falta al menos dos, una para el sistema operativo y otra para el área de intercambio (o memoria swap). Pero yo lo haré en tres; una para el sistema operativo, otra para los documentos y configuraciones de usuario, y otra para la swap.

Así que sabiendo esto y también sabiendo que el DVD de instalación de ubunstustudio no es muy intuitivo para redimensionar y hacer nuevas particiones, las dejaré preparadas de antemano:

Una partición de 12 GB para el sistema operativo
Una partición de 100 GB para los documentos y configuraciones
Una partición de 2 GB para el área de intercambio

No importa el formato, ya que le pediremos al instalador que las reformatee. Tampoco importa que las particiones sean primarias o lógicas. Para esto podemos usar algún programa para particionar. Yo usaré gparted desde un Live CD de ubuntu genérico, pero hay muchas otras opciones.

Por supuesto, antes de hacer esto habré hecho una copia se seguridad de mis archivos importantes.

Ahora descargaré el DVD de instalación de ubuntustudio desde:

http://cdimage.ubuntu.com/ubuntustudio/releases/9.10/release/
En concreto el "PC (Intel x86) alternate install DVD"

Y lo quemaré a un DVD.

La instalación de un Ubuntu Desktop genérico es más fácil y más agradable que con este DVD "alternate", pero parece que ubuntustudio sólo dispone de este instalador. Aquí lo explicaré paso a paso, lo mejor que pueda.

Ahora voy a arrancar el ordenador desde el DVD. Por supuesto, deberé tener la BIOS configurada para que arranque primero desde el lector de DVD's.

Elegiré instalar (opción por defecto), elegiré el idioma de instalación (español) y pulsaré Enter. Empieza la aventura.

Elegimos nuestra ubicación.

En la configuración del teclado podemos decir que no y luego elegir el teclado normal de una lista o decir que sí e introducir las letras que nos pide para que el instalador adivine qué teclado tenemos. Yo iré por la primera opción, y después elegiré el teclado Spain, con distribución de teclado Spain. Este es el tipo de teclado más común que yo sepa pero tu caso puede ser diferente.

Ahora entrará en la fase de detección de hardware y análisis de CDROM, cargar componentes, configurar DHCP... Le dejamos hacer.

Si todo va bien, llegaremos a una ventana donde nos pide el nombre de la máquina. Seguimos las indicaciones y le damos un nombre. Con la tecla elegimos continuar y Enter.

Ahora elegiremos nuestra zona horaria, poniendo la ubicación cuya hora sea la misma que la nuestra, en mi caso Madrid.

El instalador pasará a detectar los discos duros y el resto del hardware, tras lo cual cargará algunos componentes adicionales y entrará en la fase crítica, el particionado. Máxima atención.

Elegiré el particionado manual y utilizaré la partición de 12 GB como sistema de ficheros ext4, formatear la partición, punto de montaje sistema de ficheros raíz, '/', el resto lo dejaré con los valores por defecto.

Con la de 100 GB utilizamos también como ext4, en este caso formateamos la partición y elegimos el punto de montaje '/home'.

El espacio de 2 GB lo utilizamos como área de intercambio o swap.

Elegimos "finalizar el particionado y escribir los cambios en el disco". Si todo está bien, confirmamos la operación, eligiendo "Sí" con la tecla y .

Ahora estará un rato creando los sistemas de archivos y luego pasará a instalar el sistema base.

Después nos pedirá el nombre del nuevo usuario. Aquí podemos elegir nuestro nombre propio. Después nos pide el nombre de usuario. Por defecto tomará el que hayamos elegido como nombre de usuario pero todo en minúsculas. Este será nuestro nombre de inicio de sesión, nuestra identificación de usuario en el sistema de directorios.

A continuación elegiremos una contraseña segura. Tener en cuenta que la contraseña nos la pedirá siempre que instalemos programas o hagamos cualquier otra operación para la cual nos hagan falta privilegios de administrador. Puede contener letras y números y se distinguen las mayúsculas de las minúsculas. Nos la pedirá dos veces.

Después de esto nos pedirá si queremos que la carpeta personal esté cifrada. A libre elección, yo elijo que no. Después información del proxy, yo no tengo tal cosa y lo dejo en blanco.

Ahora le dejamos hacer; configurar apt, seleccionar e instalar programas...
Nos da la opción de instalar 4 suites diferentes, gráficos en 2D/3D (The Gimp y Blender entre otras), Creación de Audio (jack, ardour, etc), plugins de audio LADSPA y DSSI y suite de creación de video (xjadeo, Kino...). Yo elijo los 4, para eso he hecho una partición de 12 GB. Mientras haya espacio no hay problema y para empezar, no quiero sentir que me estoy perdiendo algo. Elegimos con la tecla y nos movemos con las flechas arriba/abajo.

Y seguirá instalando programas... Al final instalará el cargardor de arranque grub, configurará nuestra cuenta, y nos preguntará sobre la confuguración de nuestro reloj. Le diré que UTC. Se terminó.

El sistema se reiniciará detectando el resto de sistema operativos (esperamos), nos pedirá la contraseña (podemos hacer que no la pida como ya explicaremos) y arrancará nuestro recién instalado ubuntustudio 9.10, cuya primera vista aparece así:



Ahora pensamos, ¿Dónde están los programas?
Por algo suelo recomendar yo empezar con un Linux genérico, que es mucho más intuitivo para empezar... Pero está fácil, lo tenemos ahí mismo. Sólo tenemos que poner a nuestro gusto el aspecto del entorno gráfico para que sea más atractivo y familiar. Este será el tema de la siguiente entrada.

Pero... nos aparece una ventana que nos sugiere actualizar el sistema. ¡Pero si acabamos de instalarlo!

Es que algunos de los programas ("paquetes de software") que hay en el CD han evolucionado y ya están en versiones más actualizadas. Vamos a actualizar todo. Cuando termina, para nuestra sorpresa, ¡No nos pide reiniciar!.

Primer gran punto a favor:

Ubuntu no pide reinicar cada vez que instala un programa, ni siquiera cada vez que instala o actualiza un montón de programas al mismo tiempo. Sólo lo hará con unos pocos, los que realmente afectan al sistema de arranque.

¿Y de dónde saca los programas para actualizar si no hemos abierto el navegador de internet?
De los repositorios de ubuntu, pero no voy a explicar eso ahora...

Ahora vamos a poner bonito nuestro ubuntustudio.

Ubuntustudio 9.10 para principiantes. I. Introducción y objetivos.

################################
Notas de revisiones:
Revisión 0: 17 noviembre 2009. Publicado.
Revisión 1: 18 noviembre 2009. Añadidos datos y notas de hardware
Revisión 2: 16 diciembre 2009. Modificado título.
###############################

Comienzo una serie de entradas dedicadas a ubuntustudio 9.10, dirigidas a principiantes.

Ubuntustudio es una distribución de Linux basada en ubuntu, con el entorno gráfico de escritorio gnome.

Esta va a ser mi elección para mi ordenador de escritorio. Le daré el uso típico del usuario medio de ordenador (internet, correo, oficina, ver fotos y videos, chatear con los amigos, jugar, montar videos caseros, aprender...). Y, por supuesto, también lo usaré para producción de música, como músico aficionado. Esto incluye usar el ordenador como un amplificador o como un instrumento o como un procesador de efectos variados, grabación multipistas, notación, edición y análisis de audio...

No busco latencias de nanosegundos ni rendimientos excepcionales, pues no lo usaré para grabar decenas de pistas con mucho procesamiento de señal. Por eso mismo, (y porque hay que saber bastante de Linux para conseguirlo y yo todavía me estoy formando) no voy a ajustar el sistema hasta el último archivo de configuración. Así y todo, ubuntustudio ya viene ajustado para trabajo con audio, aunque haremos algunos reajustes que considero muy convenientes.

También instalaremos algunos programas útiles que no vienen en la instalación por defecto, daremos algunas recomendaciones y enseñaremos algunos trucos.

Por supuesto, el hardware es muy importante. Como referencia, yo tengo en este ordenador:

Placa base ASUSTeK P5B
Intel Core2 Duo CPU 6420 @ 2,13 GHz
2 GB de RAM
Gráfica nVidia GeForce 8400 GS
Tarjeta de sonido integrada Intel HD Audio
Tarjeta de sonido m-audio 2496

Es muy importante enterarse del soporte del hardware. Hay muchas tarjetas de audio que funcionan, pero hay otras muchas que no. No es fruto de la casualidad sino del trabajo de los escritores de drivers libres y de la colaboración de los fabricantes de hardware. Si tienes intención de comprar una tarjeta o si ya tienes una y quieres saber si funcionará en Linux, comprueba a ver si está soportada, bien por el proyecto FFADO (para tarjetas firewire) o bien por el proyecto ALSA (para tarjetas PCI, USB, etc). Para ello puedes visitar:

http://www.ffado.org/?q=devicesupport/list
http://www.alsa-project.org/main/index.php/Matrix:Main

En general, las tarjetas integradas suelen funcionar, bien a la primera o bien con un poquito de edición de archivos del sistema y/o un poquito de subir volúmenes de alsamixer (documentado en los HowTo de ubuntu-es.org). Con las integradas se puede hacer algo de música, pero no esperemos calidad profesional ni latencias muy bajas.

En la siguiente entrada hablaremos de la instalación. Si quieres probar, te invito a que me sigas en esta nueva aventura de Semicorchux.

Mi otro consejo es que te adelantes, que uses internet, que diversifiques tus fuentes de información.... siempre que tengas tiempo para ello.

Ojalá te funcione todo a la primera, pero el software libre, lo mismo que este blog, intenta hacer las cosas lo mejor posible... sin ninguna garantía. Tú verás si esto te encaja o no.

"Una persona no puede pretender que su experiencia individual sea universal ni puede decir a nadie lo que debe o no debe hacer. Como mucho podrá aconsejar, recomendar o sugerir. Tú eres el único que puede llegar a saber qué es lo mejor para tí mismo"

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).
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

sábado, 27 de junio de 2009

Bueno, bonito, barato.

############################
Notas de revisiones:
Revisión 0: 27 junio 2009. Primeras ideas.
Revisión 1: 8 julio 2009. Retocado.

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

Bonito

http://es.wikipedia.org/wiki/Software_libre
http://es.wikipedia.org/wiki/GNU/Linux

Linux (en su acepción más amplia, con todos sus sabores y distribuciones y sobre todo con su carácter libre gracias a las bases establecidas por el proyecto GNU) es algo más que un sistema operativo. Es un acontecimiento histórico nacido de la colaboración de miles de personas de todo el mundo, autoorganizado en proyectos, grandes, pequeños, con objetivos diversos y con fines no necesariamente lucrativos.

En contradicción con los economistas que ignoran otras inclinaciones naturales diferentes a "enriquecerse con bienes materiales", también existen las de cooperar, compartir, la satisfacción del trabajo bien hecho, disfrutar los triunfos del trabajo en equipo, la ilusión de sentirse útil, el verse reconocido, el sentimiento de pertenencia a una comunidad, el sentido del humor, el amor al arte...

Desde luego, GNU/Linux no es el único exponente de esta evolución hacia el conocimiento libre y colaborativo que estamos viviendo, gracias a internet, a una escala mayor que nunca. Sin embargo, creo que es una de las piezas que faltan en el puzzle informático de muchas personas que se rebelan contra los monopolios de software y contra las políticas que ponen muros a la libre creatividad e impiden que las "cosas blandas", los programas de ordenador, las ideas, se puedan compartir y disfrutar libremente.

Los usuarios de Linux no somos meros consumidores de software ni tenemos que escondernos de nadie ni de nada ni hacernos del club de los "listos" que saben dónde conseguir los programas gratuitamente. En Linux, si tú quieres, puedes convertirte en prosumidor (productor-consumidor) y colaborar en el desarrollo de los programas o en su documentación.

Usar software libre implica aceptar licencias que nos invitan a colaborar y no nos prohíben compartir.

Barato

La parte barata es obvia; el sistema operativo y la gran mayoría de las aplicaciones que iremos presentando se pueden descargar gratuitamente desde los sitios web de los proyectos de los programas o desde los servidores (repositorios) de las distintas distribuciones, sin incumplir ninguna licencia. Algunos proyectos piden apoyo económico voluntario.

Bueno

La parte buena es que se puede hacer música con Linux. Requiere un poco de esfuerzo pero creo que merece la pena.

Para el usario medio de ordenador, Linux ya no es el "monstruo" que era ni se merece, a día de hoy, su fama de "sistema operativo solamente para informáticos". Ubuntu, Fedora, Linux Mint, Open Suse... (por citar 4 de las más populares de entre decenas) son distribuciones ("variedades" de Linux) que suministran entornos gráficos muy fáciles de usar y son bastante fáciles de instalar. Sólo hay que cambiar el chip de "Informática = Windows", leer un poco, especialmente sobre el soporte del hardware, y preparar bien el suelo en el disco duro. Y si aún no te animas a instalarlo, siempre puedes probarlo con un "Live CD", que funciona desde el CDROM sin "tocar" el disco duro. En cuanto al uso del ordenador para creación música, la cosa se complica un poco pero existen distribuciones enfocadas a "multimedia". Ya hablaremos de esto en otra entrada...

Y es que el éxito que Linux ha tenido en algunos campos de la informática no se ha reflejado, de momento, en ordenadores personales utilizados como estaciones de trabajo de audio digital.

La realidad es que los programas de audio/midi para Linux y el propio sistema operativo llevan años mejorando y aún están en pleno desarrollo y evolución. Ahora mismo se puede encontrar de todo, desde un sencillo metrónomo virtual hasta un estudio de grabación multipistas profesional, racks de efectos, plugins, editores y analizadores de audio, instrumentos virtuales, editores de partituras, etcétera... http://www.linux-sound.org

Requiere un poco de esfuerzo. Pero de verdad, no es para tanto. No con una actitud positiva y con disposición de aprender.

sábado, 14 de marzo de 2009

Conexiones de audio entre aplicaciones y tarjeta de sonido. Jack Control y Patchage.

################################
Notas de revisiones:
Revisión 0: Marzo 2009. Publicado sin contenido.
Revisión 1: 21 junio 2009. Publicado completo.
Revisión 2: 23 junio 2009. Retocado y ordenado texto.
Revisión 3: 27 junio 2009. Eliminada chapa filosófica (para otra entrada).
Revisión 4: 7 julio 2009. Añadida nota 1.
Revisión 5: 8 julio 2009. Añadido pantallazo qjackctl y retocado texto.
Revisión 6: 28 enero 2010. Añadido enlace a "Reproductores multimedia a través de jack"
#################################
_________________________________________________________________
1. Breve presentación del servidor Jack
_________________________________________________________________

Jack Audio Connection Kit (JACK) es un sistema para enviar audio entre aplicaciones y para permitir que éstas compartan la tarjeta de audio. Jack está diseñado para funcionar a latencias muy bajas (tan bajas como la tarjeta de audio lo permita) y para sincronizar perfectamente el audio entre ellas.

La herramienta gráfica más utilizada para lanzar el servidor jack es "qjackctl", que suele aparecer como "Jack Control" en el menú "Sonido y vídeo", "Multimedia" o similar en los entornos gráficos de escritorio. Desde Jack Control, botón setup, configuramos los parámetros y opciones con las que el servidor jack va a ejecutarse. En otra entrada daremos algunas orientaciones sobre esta configuración.

qjackctl

Si damos al botón "Conexiones", en la pestaña "Audio" veremos los denominados "clientes" de Jack, que son todas las aplicaciones "jack-aware" o "jackificadas" (es decir, que han sido programadas para ser clientes de jack, al menos optativamente) que tengamos abiertas en este momento. En esta entrega nos centramos en las conexiones de audio y veréis que resulta muy fácil conectar aplicaciones entre sí y con la tarjeta de sonido.

Otra característica destacable de jack es su transporte (teclas play / forward / rewind / pause ...) que es capaz de sincronizar diferentes clientes (secuenciadores, grabadores, reproductores...) en una única línea de tiempo, si así lo deseamos.

Acerca de jack, hay algunos conceptos no tan obvios que debemos tener claros para evitar confusiones:

1) El servidor jack se ejecuta "por debajo". No se ve, es un "demonio".

2) El servidor jack aborta el audio de toda aplicación que no sea su cliente, es decir, las aplicaciones no jackificadas no suenan (si esto es un problema para escuchar tu música o ver tus películas, echa un vistazo a esta entrada).

3) Qjackctl (Jack Control) es una interface gráfica para lanzar, configurar y hacer conexiones entre clientes del servidor jack (Ver nota 1).

4) Hay otras formas de lanzar el servidor jack, además de Jack Control; que yo sepa, bien mediante línea de comandos o bien mediante la configuración de audio de una aplicación que no puede funcionar sin jack, como es ardour. (Esta opción sólo aparece en el diálogo de inicio de ardour si el servidor jack no estaba ejecutándose de antemano).

5) Hay otras formas de hacer conexiones entre clientes de Jack, además de la ventana de conexiones de Jack Control. Por un lado, muchas aplicaciones tienen su propio interfaz de conexiones que, además de a sí mismas, ven también al resto de clientes de jack. Por otro lado, existen otras interfaces independientes, por ejemplo Patchage, como vamos a ver en el video.

_________________________________________________________________
2. Video-demo
_________________________________________________________________

Resumen:
Mostramos la flexibilidad en las conexiones virtuales de audio entre aplicaciones y tarjeta de sonido, utilizando primero la ventana de conexiones de Jack Control y después Patchage. De paso, damos a conocer algunos programas útiles.

video

(00:05) Tengo abierto Jack Control y unas pocas aplicaciones "jack-aware". Al dar al botón "Conexiones" aparece la ventana donde se pueden realizar las conexiones virtuales entre los puertos de salida y los puertos de entrada de las aplicaciones y tarjeta de sonido. "System" representa la tarjeta. Los puertos "capture" vienen de las entradas de micrófono o línea y los puertos "playback" van a las salidas que conectamos a los altavoces o equipo de audio exterior.

El resto de clientes son las aplicaciones que tenemos abiertas:

gtklick, un sencillo metrónomo con un puerto de salida.

Audacious, un reproductor de audio (con el plugin de salida de jack).

Rakarrack, un rack de efectos para guitarra y bajo.

Jack-capture, un grabador de audio que conecta automáticamente todo lo que conectemos a los "system playbacks" de forma que grabamos todo lo que sale de los altavoces. (Jack-capture lo he utilizado para grabar el audio de este videotutorial).

(00:40) Parto de todos los puertos desconectados. Conecto la salida de gtclick con los "system playbacks" y el "system capture_1" (que viene de la primera entrada analógica de mi tarjeta de audio donde tengo enchufada directamente una guitarra) con una de las entradas de rakarrack y una de sus salidas con los "system playbacks". Así, puedo practicar con el metrónomo. Después conecto los puertos de salida de audacious con los system playbacks y pongo música, que puedo seguir con la guitarra.

(01:50) Ahora vemos patchage, otro interfaz para hacer las conexiones virtuales. En patchage, cada cliente de jack se representa mediante una o dos cajas, según queramos representar los puertos de entrada y salida de cada cliente en una sola caja (botón derecho, join) o bien tenerlas por separado (split). También podemos desconectar todas las conexiones de cada caja sin afectar al resto (disconnect all).

Las conexiones y puertos de audio aparecen en azul, las conexiones alsa midi en verde y las jack midi en rojo. En el video se ven de pasada algunos puertos alsa midi pero como hemos dicho antes, en esta entrega nos centramos exclusivamente en las conexiones de audio.

Patchage tiene una ventaja con respecto a la ventana de conexiones de Jack Control cuando tenemos muchas aplicaciones abiertas o cuando alguna de ellas presenta muchos puertos, pues ofrece más claridad. Nos permite retirar cajas desconectadas a los márgenes, podemos organizarlas de forma que los cables no se crucen, se pueden poner unas cajas debajo de otras, se pueden seleccionar varias cajas para moverlas simultáneamente y se pueden poner diferentes tamaños de cajas y fuentes jugando con los botones de zoom. Las conexiones y desconexiones se realizan arrastrando el ratón de unos puertos a otros.

(2:38) Lanzo hydrogen (caja ritmos), conecto las salidas de audio a los "system playbacks" y hago un poco de ruido. (3:14) Después lanzo ardour y creo una nueva sesión en la cual agrego una pista estéreo. Por defecto, ardour autoconecta a las entradas de sus pistas los primeros puertos de captura que ve, en este caso "system capture_1" y "_2". (3:41) Los desconecto. (3:47) Desconecto también las salidas de audacious de los "system playbacks" y las conecto a los puertos de entrada de audio de la pista estéreo. (3:57) Después "armo" (preparo para grabar) la pista. Observa la señal de entrada en el vúmetro de la pista. (04:02) Para poder escuchar (monitorizar) lo que entra a la pista hay que elegir "monitorización por Ardour" (es decir, por software, en contraposición con "monitorización por hardware" en la cual se usa el mezclador de la propia tarjeta para evitar toda latencia). (04:07) Para terminar, grabo la parte final de la canción a la pista estéreo.

En el video utilizo gnome con efectos de escritorio por motivos estéticos y didácticos (los zooms son de mucha ayuda). Sin embargo, éstos consumen recursos (RAM y CPU) y en general no se recomienda tenerlos activos cuando se trabaja con audio en tiempo real.

_________________________________________________________________
3. Agradecimientos, créditos y para aprender más...
_________________________________________________________________

www.blogger.com, que cede este espacio gratuitamente.

El vídeo se ha grabado con recordmydesktop. http://recordmydesktop.sourceforge.net

El audio se ha grabado en directo con jack-capture (jack-capture-gui2).
Posteriormente se ha editado en Audacity para cortar un trozo final sobrante y exportar a un formato comprimido.

En kdenlive se han integrado el video y el audio y se ha exportado a un formato admisible por blogspot. www.kdenlive.org

El título lo he montado con The Gimp

JACK (Jack Audio Connection Kit): www.jackaudio.org

qjackctl: http://qjackctl.sourceforge.net/

gtklick. http://das.nasophon.de/gtklick/

rakarrack. http://rakarrack.sourceforge.net/

audacious. http://audacious-media-player.org/

Hydrogen. http://www.hydrogen-music.org/

Ardour. http://www.ardour.org

Canción "Time is on my hands", por The Greatest of Ease,
grabada y producida en ardour por Dave Taht.
_________________________________________________________________

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Notas
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
1. Cuando hablamos de clientes de Jack, nos referimos a clientes de audio y clientes de MIDI (jack MIDI o MIDI manejado por jack). Pero Qjackctl sirve también para hacer conexiones entre clientes de "Alsa MIDI" o MIDI manejado por alsa. En cualquier caso, en esta entrada sólo hablamos de conexiones de audio.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""