PDF de programación - Instalación de JACK

Imágen de pdf Instalación de JACK

Instalación de JACKgráfica de visualizaciones

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 21 de Marzo del 2018
365 visualizaciones desde el 21 de Marzo del 2018
681,5 KB
93 paginas
Creado hace 3a (16/01/2017)
1/93

Instalación de JACK





JACK

2/93

● Para crear agentes de JACK se requiere

instalar el servidor JACK.

● Así como las bibliotecas que permiten acceder

a las funcionalidades de JACK.
– Las bibliotecas oficiales son en el lenguaje C.

● Para eso estábamos haciendo el repaso.

– El sistema operativo mayormente soportado es

Linux.





JACK y Otros Lenguajes

3/93

● Hay otros lenguajes que también pueden acceder a

las funcionalidades de JACK.
– Aunque no están soportados oficialmente.

● JAVA: java-jack

– https://code.google.com/archive/p/java-jack/

● Python: JACK-client

– https://pypi.python.org/pypi/JACK-Client/

● C++: JackCpp

– http://x37v.info/projects/jackcpp/





JACK y Otros Sistemas Operativos

● También, se puede instalar JACK en otros

sistemas operativos.

4/93

● Windows:

– http://jackaudio.org/downloads/

● Sección “Windows”

● Mac OS X (Snow Leopard)

– http://jackaudio.org/downloads/

● Sección “OS X”





JACK y Proyecto Final

5/93

● En este curso utilizaremos el lenguaje oficial de la
biblioteca (C) en el sistema operativo mayormente
soportado (Linux).

● Pero el proyecto final lo pueden hacer en cualquier

lenguaje y en cualquier sistema operativo.
– Se califica el desempeño final, no la herramienta.

“Si funciona bien, no puedo argumentar en contra.”





Instalación

6/93

● Cada computadora es su propio mundo, pero
normalmente en Ubuntu 12.04 en adelante lo
siguiente debe funcionar:

sudo apt-get install jackd2 libjack-jackd2-dev
pulseaudio-module-jack qjackctl

● Respondan que “sí” al preguntarles que si

quieren que corra en tiempo real.





Instalación

7/93

● jackd2 : servidor de JACK
● qjackctl : una interfaz para configurar y

controlar al servidor de JACK

● libjack-jackd2-dev : librerias de C para crear

agentes de JACK

● pulseaudio-module-jack : modulo de

PulseAudio para que puedan vivir a la vez
JACK y PulseAudio





JACK en Tiempo Real

8/93

● El servidor de JACK corre en tiempo real sólo
si el usuario que lo levanta pertenece al grupo
“audio”.

● Utilicen el comando “groups” para saber a

cuáles grupos su usuario pertenece.





Agregar Usuarios a Grupos

9/93

● Corran:

sudo adduser <usuario> audio





Y para terminar...

10/93

● Reinicien su sesión para que los cambios se

apliquen.

● Vuelvan a correr “groups” para verificar que su

usuario ya está en el grupo “audio”.





Instalación

11/93

● jackd2 : servidor de JACK
● qjackctl : una interfaz para configurar y

controlar al servidor de JACK

● libjack-jackd2-dev : librerias de C, C++ para

crear agentes de JACK

● pulseaudio-module-jack : modulo de

PulseAudio para que puedan vivir a la vez
JACK y PulseAudio





¿PulseAudio?

● Conceptualmente parecido a JACK.

12/93





13/93





14/93

PulseAudio

PulseAudio Agents





¿PulseAudio?

15/93

● Es el sistema de audio que a los

desarrolladores de Ubuntu les ha gustado.
– La mayoría de los programas de Ubuntu se

apoyan en PulseAudio para acceder a dispositivos
de Audio.

● Pero es lento e impredecible al momento de

entregar datos de audio en tiempo real.





16/93

En un mundo fenomenal, sólo existiría JACK...





Pero...

17/93

● Hay programas que no pueden “ver” a JACK,

pero sí pueden ver a PulseAudio.
– PulseAudio es popular y, teniendo la “preferencia”

de Ubuntu, no podemos ignorarlo.

● pulseaudio-module-jack le da la posibilidad a

PulseAudio en convertirse en un agente de
JACK.
– Así agentes de PulseAudio y JACK pueden

convivir al mismo tiempo.





18/93





19/93

PulseAudio

PulseAudio

Agents





Otro pero...

20/93

● Para que esto suceda, tenemos que primero

configurar el servidor de JACK.

● Luego nos encargamos de PulseAudio.

● Y, no se preocupen, esto no va a desinstalar

nada del sistema operativo.
– De hecho, se puede revertir con sólo unos

cambios a archivos de configuración.





QJackCtl

21/93





22/93





23/93





24/93

Configurar al Servidor JACK

● Cerciorar que el “Realtime” esté seleccionado.
● Periods/Buffer sea 4 (2 normalmente da

problemas)

● Seleccionar al dispositivo de salida y entrada en

“Input Device” y “Output Device”.
– Utilizar los dipositivos generales como “hw:0” o

“hw:1”, NO los específicos como “hw:1,0” o “hw:0,2”.

– Recomendable que el de salida y entrada sea el

mismo dispositivo.





¿Scripts?

25/93

● QJackCtl permite correr scripts en diferentes

momentos antes y después de haber corrido o
matado al servidor JACK.
● Esto es útil si, por ejemplo:

– Justo después de haber iniciado el servidor quisieramos

que PulseAudio se hiciera un agente de JACK.

jack_startup

– Justo antes de matar al servidor JACK regreseramos a

PulseAudio a ser el servidor de audio principal.

jack_shutdown





26/93

Scripts

● Descarguen los archivos de:

http://calebrascon.info/jack/jack_startup

http://calebrascon.info/jack/jack_shutdown





jack_startup

27/93

● Asumiendo que un servidor de JACK está corriendo:
– Levanta los módulos de entrada y salida de PulseAudio

hacia JACK.
● Usando a pactl, “PulseAudio Control”

– Pone como salida y entrada default de PulseAudio hacia

JACK.
● Usando a pacmd, “PulseAudio Command”

– Para más información:

man pactl
man pacmd





jack_shutdown

28/93

● Asumiendo que un servidor de JACK está

corriendo:
– Remueve los módulos de PulseAudio de salida y

entrada hacia JACK.

● PulseAudio automáticamente agarra otra

salida y entrada por default.





Scripts

29/93

● Muevan estos archivos a donde gusten.

– Recomendación: a /home/<usuario>

● Activen el modo de ejecución para los scripts:

chmod +x jack_startup
chmod +x jack_shutdown

● Y agréguenlos a QJackCtl.





30/93





Correr JACK

31/93

● Suban el volumen de las bocinas y de su micrófono.

– JACK asume dichos niveles como sus máximos.

● Intenten correr JACK por medio de pulsar el botón de

Inicio (Start).

● Observen que la configuración de PulseAudio (clic

derecho en botón de audio de Ubuntu → Configuración)
tiene como salida y entrada a:
– Jack Sink
– Jack Source

● Ya están conviviendo.





En caso de problemas...

32/93

● Es posible que los dispositivos seleccionados

no sean válidos.
– Utilizar otros.

● Es posible que PulseAudio no quiera prestar

los dispositivos.
– Reiniciar PulseAudio por medio de:

pulseaudio --kill
pulseaudio --start





QjackCtl → Connect

33/93





Probar Salida

34/93

● En una terminal corran:

– jack_simple_client

● Deben escuchar un tono.
● Observen que en la ventana de “Connect” de

QjackCtl se ha agregado un nuevo agente.

● Presionar CTRL + C en la terminal cuando se

harten del tono.





Probar Entrada

35/93

● En la ventana de Connect.
● De la columna izquierda, seleccionen uno de los

puertos bajo “system”, que sus nombres comienzan
con “capture”.

● De la columna derecha, seleccionen uno de los

puertos bajo “system”, que sus nombres comienzan
con “playback”.

● Presionen el botón “Connect”.
● ¿Se escuchan?





36/93

Por cierto...

● ¡Felicidades!
● Ya están procesando audio.

– Muy simple, pero se vale aplaudir.





37/93

Ahora, a crear nuestro primer agente de JACK





Agentes de JACK

38/93

● Cada agente se comunica con JACK por

medio de escribir y/o leer valores de energía
en arreglos de datos.

● Dichos arreglos representan ventanas de

audio.





Agentes de JACK

39/93

● La comunicación agente-servidor se hace de

por medio de una función callback.
– Son funciones especiales que se hacen

accesibles al exterior del programa.

– Y se pueden correr desde otros programas como

forma de comunicación.





40/93

void func_callback(int *a){

*a = 1;

}

int main(){

/* codigo que determina a func_callback como nuestro callback */

while(1){

/* codigo que hace otra cosa */

}

}





Agentes de JACK

41/93

● Todo agente de JACK tiene que tener una
función callback a la que el servidor JACK
puede mandar a llamar en cada ciclo de audio.
– Un ciclo de audio es el intervalo de tiempo que el

servidor JACK permite a todos sus agentes trabajar
en sus callbacks correspondientes.

– Usualmente es limitado por la cantidad de tiempo
de “respuesta” (latency) que tiene que garantizar
para que sea tiempo real.





42/93





Agentes de JACK

43/93

● Aquellos que no respondan en el tiempo

propuesto (latency), se levanta un error de
“overrun”.

● Esto significa que la información en las salidas

del agente tardío es ignorada en el siguiente
ciclo de audio.





Ciclo de Audio

44/93

● En cada ciclo de audio, el servidor JACK
manda a llamar a la función callback de
TODOS los agentes JACK conectados.
● En dicha función, los agentes de JACK

pueden acceder a los datos de audio en su
entrada y/o escribir información en su salida.





Ciclo de Audio

45/93

● En cada ciclo de audio, el servidor JACK

provee a sus agentes buffers de datos de los
cuales se puede:
– Leer, si es buffer de entrada.
– Escribir, si es buffer de salida.

● El tamaño de dichos buffers es configurado en

el servidor JACK.





46/93





¿Frames? ¿Periodos?

47/93

● Los buffers son conocidos como periodos.
● Los datos dentro los buffers son conocidos como

frames.

● ADVERTENCIA: la opción de Periods/Buffers

habla de los buffers internos de JACK, no de los
buffers que provee a los agentes.
– A los desarrolladores de JACK les gusta confundir a la

gente.





Código Ejemplo

48/93

● Para proseguir, es más fácil apoyarnos en un

ejemplo simple de un agente de JACK.

● Bajarlo de la página del curso, ó:

http://calebrascon.info/jack/jack_in_to_out.c

● Vamos a revisar sus partes...
● Se recomienda tener a la mano:

http://jackaudio.org/files/docs/html/index.html





Creación del Agente

49/93

● Se hace uso de jack_client_open
● Requiere de:

– El nombre del agente.





Creación del Agente

50/93

– Opciones de comienzo:

● El m
  • Links de descarga
http://lwp-l.com/pdf9751

Comentarios de: Instalación de JACK (1)

Nestor
11 de Mayo del 2018
estrellaestrellaestrellaestrellaestrella
la programacion es demasiado buena.
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad