(Workstation) Estación de Trabajo de Audio

Partiremos de lo que debe incluir o más bien puede incluir nuestra estación de trabajo, aunque algunas cosas en definitiva son indispensables e irreemplazables como el kernel de baja latencia y el servidor jack.

- Kernel compilado para baja latencia
- Jack - Servidor de Sonido de baja latencia
- Rosegarden - Secuenciador
- Hydrogen - Percusión
- Ardour - Editor y grabador de sonido multipista
- Multiefectos DSP como LADSPA y VST Plugins
- Rezound - Editor de audio
- Jamin - Masterización de audio

Naturalmente para poder empezar tenemos que tener nuestra tarjeta de sonido instalada, configurada y funcionado adecuadamente.

Para el caso de Ubuntu 32bits, puede agregarse el repositorio de Ubuntu Studio para facilitar la tarea, así como para Debian de 32bits puede usarse el repositorio de Musix, para Debian 64bits el repositorio de 64Studio, y para Gentoo puede usarse el overlay pro-audio fácilmente instalable con layman o por cvs.

More...
KERNEL

Comencemos por el kernel de baja latencia, para empezar la tarea debemos entender qué es eso de baja latencia y para qué nos sirve, en términos generales y de un modo pedagógico podríamos entender la latencia como el tiempo que tarda nuestro equipo en responder a una orden dada, así, la baja latencia sería que el computador se demora poco tiempo en responder a las órdenes, es decir es más cercano a una respuesta en tiempo real, por eso a los kernels configurados para baja latencia también se les conoce como real time o rt. (más información: http://es.wikipedia.org/wiki/Latencia o dirígase al maestro google)

Para instalar el kernel la primera opción, la más fácil, es instalarla desde repositorios, simplemente buscar dentro de los paquetes un kernel 2.6.xx-rt o low-latency, o para el caso de gentoo el rt-sources.

La segunda opción es hacerlo manualmente, para lo cual vamos primero a descargar un kernel, vamos a la página kernel.org a la sección de kernels y projects, donde encontraremos la carpeta rt que contiene los parches para real time de los kernel, descargamos el del kernel que queramos trabajar, y posteriormente el kernel. (lo prefiero en este orden, ya que no siempre encontramos el parche para el kernel que queremos, así que primero miraremos los parches para no perder la descargada del kernel).

wget ftp://ftp.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.24.3-rt3.bz2
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.3.tar.gz

Seguimos el camino habitual para compilar un kernel, descomprimimos el kernel en /usr/src, hacemos un enlace simbólico a /usr/src/linux, y aplicamos el parche.

tar xvf linux-2.6.24.3.tar.gz
bzip2 -d patch-2.6.24.3-rt3.bz2
rm -r linux (si existía una carpeta llamada linux)
ln -s linux-2.6.24.3 linux
cd linux
patch -p1 < /path/to/patch-2.6.24.3-rt3

Si tenemos nuestro viejo .config guardado lo copiamos y lo cargamos, e iniciamos la configuración de nuestro kernel.

cp /path/to/.config (el que teniamos guardado)
make oldconfig
make menuconfig

Ahora lo que hay que modificar, puede que no esté exactamente en la ruta que indico, así que de lo contrario lo tendrás que buscar por ahí al ladito:

Processor type and features ---> Preemption Mode (Complete Preemption (Real-Time)) --->
alguno de estos dos (¡SOLO UNO!):
(X) Preemptible Kernel (Low-Latency Desktop)
(X) Complete Preemption (Real-Time)
El completo es mejor pero a veces presenta problemas.

Processor type and features --->
[*] MTRR (Memory Type Range Register) support
Timer frequency (1000 HZ) ---> (X) 1000 HZ
esto depende de la frecuencia interna del reloj

Block layer ---> IO Schedulers --->
<*> Anticipatoty I/O scheduler
<*> Deadline I/O scheduler
<*> CFQ I/O scheduler
Default I/O scheduler (CFQ) --->
no recuerdo para qué es

File systems --->Pseudo filesystems --->[*] Virtual memory file system support (former shm fs)
Esto ayuda con el servidor jack, sobre todo si escogiste como opción de kernel Complete Preemption (Real-Time).

Device Drivers ---> Character devices --->
Estas tres opciones son necesarias
[M] Enhanced Real Time Clock Support
[M] Generic /dev/rtc emulation
[*] Extended RTC operation

Real Time Clock --->
[M] RTC class
--- RTC interfaces
[M] sysfs
[M] proc
[M] dev
[M] Test driver/device

Device drivers ---> Sound ---> Advanced Linux Sound Architecture --->
<*> RTC Timer support
[*] Use RTC as default sequencer timer
Esto da soporte Realtime al alsa, es buena idea ya que no es bueno depender solo de jack.

Security options --->
[*] Enable different security models
[M] Default Linux Capabilities
[M] Realtime Capabilities
Esto ayuda a que todos los usuarios tengan privilegios para manejar el rt.

Listo ahora:
make && make modules_install
o como lo hagas en tu distro, configuras el /boot/grub/menu.list y a provar el nuevo kernel.

Una vez arrancas con el nuevo kernel, instalamos el paquete realtime-lsm para kernels viejitos y rlimits para kernels recientes, (no sé exactamente desde cual es considerado reciente, pero si tratas de instalar el que no es, no te dejará así que se puede provar con confianza) y pruebas los nuevos módulos de realtime y si no hay problemas los puedes agregar al arranque automático.

emerge realtime-lsm o apt-get install set_rlimits o como sea!

modprobe rtc-lib
modprobe rtc-core
modprobe rtc-test

(espero que hayas activado como módulos Default Linux Capabilities y Realtime Capabilities)

SERVIDOR DE SONIDO JACK

Para este su instalación es muy sencilla, ya que se encuentra en los repositorios oficiales de la mayoría de distros. Simplemente procedemos.

instalador jack-audio-connection-kit (por instalador entiéndase urpmi, emerge, aptitude, apt, etc)

Eso basta para tener jack instalado en nuestro sistema, para iniciarlo detenemos todo lo que pueda estar usando el sonido como amarok.app, kmix, o cualquier icontray u aplicación que pueda estar utilizando nuestro servidor alsa, y con el comando jackd podemos arrancar el servidor. Pero para el caso yo prefiero de una vez instalar qjackctl, el cual nos ofrece una interfaz gráfica para arrancar y configurar jack, y para conectar y administrar dispositivos una vez este corriendo.

instalador qjackctl (por instalador entiéndase urpmi, emerge, aptitude, apt, etc)

Ejecutamos qjackctl bien sea desde la consola o buscándo la nueva entrada en el menú. Cabe anotar que en gentoo si jack fué compilado con SHM support, sólo funcionará en nuestro kernel rt, o en otros si les diste el soporte, así que ojo con la opción File systems --->Pseudo filesystems --->[*] Virtual memory file system support (former shm fs) cuando compiles el kernel.

Si presenta problemas con el soporte shm, habría que añadir al fstab lo siguiente:

shmfs /dev/shm shm defaults 0 0
none /tmp/jack tmpfs defaults 0 0
none /mnt/ramfs tmpfs defaults 0 0

y crear la carpeta escrita con mkdir /mnt/ramfs

para mayor información sobre problemas y/o configuración del servidor jack puede mirar aquí.

Si al tratar de correr el servidor jack bota un problema de permisos como cannot use real-time scheduling, es debido a los privilegios para ejecutar jackd con real-time, lo puedes comprobar corriendo qjackctl como root e iniciándo el servidor, a lo que no debe presentar ningún problema. Esto se soluciona con el administrador de privilegios que instalamos como set_rlimits. ver aquí.

En mi caso instalé set_rlimits, su configuración se encuentra en el archivo /etc/set_rlimits.conf, en el cual tiene que estar especificado todos los programas que pueden acceder al realtime junto con el grupo que tiene acceso, osea el grupo de audio, aquí una muestra de mi set_rlimits.conf:

@audio /usr/bin/jackd nice=-1 rtprio=85
@audio /usr/bin/qjackctl nice=-1 rtprio=84
@audio /usr/bin/ardour nice=-1 rtprio=83
@audio /usr/bin/hydrogen nice=-1 rtprio=82
@audio /usr/bin/jackeq nice=-1 rtprio=81
@audio /usr/bin/jack-rack nice=-1 rtprio=80
@audio /usr/bin/jamin nice=-1 rtprio=79
@audio /usr/bin/qsynth nice=-1 rtprio=78
@audio /usr/bin/rosegarden nice=-1 rtprio=77
@audio /usr/bin/seq24 nice=-1 rtprio=76
@audio /usr/bin/specimen nice=-1 rtprio=75
@audio /usr/bin/vkeybd nice=-1 rtprio=74
@audio /usr/bin/zynaddsubfx nice=-1 rtprio=73
@audio /usr/bin/ams nice=-1 rtprio=72
@audio /usr/bin/amsynth nice=-1 rtprio=71

Ahora para arrancar el programa en cuestión hay que ejecutar el comando set_limits /path/to/program y listo, es decir para iniciar el servidor jack

set_rlimits /usr/bin/qjackctl (esto como usuario)

podemos hacer scripts con este comando y agregarlos al menu para los diversos programas, como rosegarden-rt.sh o alo así para inicar rosegarden con prioridad realtime, bueno en fin, aquí ya prima el gusto del paciente.

De aquí en adelante puedes instalar todos los paquetes extra de jack que quieras usar, desde jackmix o jack_mixer el equivalente a kmix o alsamixergui exclusivo de jack, hasta jack-rack un rack de effectos, o jackEQ que es un equalizador, jack_capture, jackbeat, jackmeter, etc...


ROSEGARDEN

Lo único que habría que aclarar para rosegarden es que puede funcionar con distintos combos, com rt o sin él, con jack o con alsa, lo importante del caso es que para que te funcione debes tener corriendo un servidor de audio y uno midi, los que yo más uso el ALSA + Timidity, o JACK + Qsynth. mayor info aquí.


RESTANTE

Para todo lo demás solo hace falta instalar, los paquetes se encuentran en todos los repositorios oficiales de las distros, lo único que quedaría por aclarar serían tips, como que ardour no funciona con alsa sólo con jack, los usuarios gentoo deben agregar a su variable USE dssi vst jack jackmidi jack-tmpfs caps "ladcca o lash (sólo una de las dos)", para que los programas tengan el soporte adecuado, en la página del manual de Musix encuentran muchos tips, y ayuda sobre el manejo de software.

Espero les haya sido de ayuda.

basado en http://forums.gentoo.org/viewtopic-t-462677.html y http://www.gisa-elkartea.org/documentacion/recetas/audio-digital-1

2 comentarios:

MCKAY Brothers dijo...

music, basada en debian (ohh debian..umm que raro no!? je je ;-) ) knoppix, y otras.. requieren instalar paquetes..

a veces no tenemos los reqursos y no hay internet.. donde instalar paquetes a mano resulta ser una total pesadilla...

la razon las dependencias..

en este articulo, muy completo instalar paquetes sin internet.. dependencias parte 1 podras ver cuatro casos, (en la parte 1 solo dos) enla parte dos, se aborda el teman de mini repositorios caseros locales.. y filtrado de dependencias..

Anónimo dijo...

la web de
VENENUX ESTA ARRIBA dime que opinas de su velocidad y rendimiento?

VENENUX multimedia website

y aqui la galeria de fotos del escritorio

Ariculo: VENENUX blog la web arriba