Pasos seguidos para configurar apropiadamente GNU/Linux

En las distintas pruebas que hemos realizado, nos hemos encontrado con que lo más recomendable es compilar el IDJC desde las fuentes. Esto asegura soporte para formatos libres. Estas instrucciones de compilación son para hacerlo en Trisquel GNU/Linux 4.0.1 (Taranis) y es la distribución que recomendamos para usar en RadioGNU pues no contiene partes que irrespeten las libertades de los usuarios. Hay otras muy buenas distribuciones, pero hay que verificar primero que no vengan inoculadas con sistemas que causan dependencia.

Primer Paso: Instalamos JACK y las herramientas necesarias para compilar el IDJC:

aptitude install build-essential jackd qjackctl vorbis-tools alsa libjack-dev libvorbis-dev libogg-dev libmad0-dev \
libsamplerate0-dev libflac-dev libsndfile1-dev libavcodec-dev libavformat-dev libspeex-dev python-gtk2-dev \
python-mutagen checkinstall

El proceso de instalación preguntará si desea dar prioridad de Tiempo Real (RT) a jackd. Se aconseja responder SI, con lo cual se tendrá un sistema de baja latencia de audio.

Nota: si tu computadora tiene un puerto firewire y su tarjeta de sonido es externa y conectada a ese puerto, deberás incluir en el aptitude el paquete “jackd-firewire”

Hecho esto podremos proseguir con el próximo paso:

Segundo Paso:

Compilación del IDJC. Nos descargamos el paquete (para el momento de escribir esto la versión actual es la 0.8.4) desde la página oficial del proyecto:

http://sourceforge.net/projects/idjc/

Descomprimimos y compilamos las fuentes. En este caso se usa la versión 0.8.4 del IDJC.

tar xzf idjc-0.8.4.tar.gz
cd idjc-0.8.4
./configure
make
sudo checkinstall

Usando “checkinstall” en vez de “make install” estaremos instalando el paquete y generando un .deb que no debe ser usado para instalarse en otros sistemas a menos que sea exactamente la misma distribución y la misma versión de esa distribución y habiendo antes ejecutado el aptitude install anterior.

Para instalaciones en serie es una buena solución para compilar una sola vez y generar un paquete de instalación, que es bueno recordar, por defecto no maneja dependencias, sino que hay que especificarlas si se quiere un paquete como Dios manda.

Poniendo el Kernel a Punto

Para que el JACK pueda trabajar en tiempo real adecuadamente requiere hacer más de un paso.

Primero será necesario unir el usuario un grupo que podrá luego invocar el tiempo real en el kernel.

adduser tu-usuario audio 

Luego se debe editar el archivo /etc/security/limits.conf y allí agregar al final estas dos líneas que dan permiso al grupo @audio:

@audio - rtprio   100
@audio - nice     -10
@audio - memlock  unlimited

En otras distribuciones será necesario tener un kernel RT (realtime) instalado. En el caso de Trisquel GNU/Linux no es necesario, puesto que el kernel funciona perfectamente con aplicaciones RT.

“rtprio” es el índice de prioridad que se le otorga al proceso en tiempo real que viene del grupo @audio.

“memlock” será la cantidad de memoria que la aplicación puede usar para si misma. Para trabajar con audio se recomiendan 2GB de memoria o más. Este valor se puede expresar numéricamente (en KB) para definir un máximo permitido. Ejemplo:

@audio   -  memlock    769515

Reiniciar la sesión del usuario es suficiente para tomar los cambios, pero no viene mal en este punto reiniciar.

init 6

Es importante en adelante hacer uso comedido del procesador. Es decir, ver un video y sobretodo si el mismo tiene algún nivel de compresión alto es algo que demanda uso de CPU. Use esta computadora sólo para el IDJC y el JACKD. Si se necesita navegar en internet, se sugiere el uso de una sola ventana y una sola pestaña de navegación.

Levantando el JACK (con qjackctl)

La manera más sencilla de invocar un servidor con JACK es usando una aplicación llamada qjackctl. Para quienes no usen una interfaz gráfica, el servidor puede ser levantado con las opciones que se deseen desde el intérprete de lineas de comando.

El nombre de QJACKCTL es definido por CTL (que significa Control) del servidor JACK y que está hecho con librerías gráficas QT, por eso la Q al principio.

Al invocar QJACKCTL tendremos una pantalla como esta:

Antes de darle a INICIAR, tenemos que verificar que su configuración sea correcta. en SETUP.

Para ello tendremos que asegurarnos de varias configuraciones antes. Lo primero es que para que funcione todo en TIEMPO REAL, es necesario que nuestro kernel soporte tal cosa, de lo contrario dará errores. Se sugiere la primera vez no activar esta opción.

Otras dos configuraciones son importantes y darán finalmente la latencia con la cual trabajaremos. Brevemente, “latencia” significa retardo, y es en este caso el retardo que tendrá el sonido desde que entra al sistema hasta que sale del mimso. Evidentemente, mientras menos retardo será mejor. La combinación de la FRECUENCIA DE MUESTREO (se recomienda no mover de 44.100 Hz), los CUADROS/PERÍODO y los PERIODOS/BUFFER darán como resultado la latencia resultante. A mayor latencia menor uso del procesador: a menor latencia mayor consumo de procesador y viceversa

Si los valores para el manejo de los períodos no está bien ajustado el sistema dará errores llamados XRUNS. Estos se presentarán de color rojo en el lugar donde estás los ceros de color verde. Lo idóneo es que no hayan XRUNS.

RT significa que está activada la opción TIEMPO REAL en el kernel. Haga pruebas sin esta opción en caso de errores. Algunas distribuciones no traen soporte para RT (Real Time) en sus kernels genéricos. Trisquel GNU/Linux sí soporta esta característica.

Esto significa que han habido pequeñas (a veces imperceptibles) interrupciones de audio:

Si se evidencian valores como estos:

significa que hay problemas por corregir. Si esos valores se alcanzan en menos de un minuto es posible que la voz pueda comenzar a escucharse como si las interrumpiera una olla de cotufas (pop-corn) en plena ebullición.

Esto se corrige, ajustando adecuadamente los períodos de buffers y cuadros, anteriormente explicado.

Ahora, que ya está el JACK levantado (le hemos dado PLAY al qjackctl y no ha dado error) es cuando abrimos el IDJC. Es importante mantener este orden. IDJC no funcionará bien sin JACK levantado.

[ Documentación en progreso, marzo de 2011 ]