Corrección 5.1 en Linux con jconvolver

DRC y todo lo relacionado con el tema
Responder
TeslaSinX
Mensajes: 5
Registrado: Lun 03 Ene 2011 , 9:33

Corrección 5.1 en Linux con jconvolver

Mensaje por TeslaSinX »

Para empezar, lo único que nos hace falta son los archivos de impulso de cada canal por separado.

Instalamos los programas que necesitamos:

Código: Seleccionar todo

sudo apt-get install jackd2 qjackctl pulseaudio-module-jack jconvolver
Añadimos nuestro usuario al grupo audio:

Código: Seleccionar todo

sudo usermod -a -G audio nombredeusuario
- jackd2 es un servidor de sonido de baja latencia (como ASIO en windows) Cuando nos pregunte que si queremos habilitar el tiempo real le decis que si.

- qjackctl es un programa para controlar el servidor jack gráficamente

- pulseaudio-module-jack pasa el sonido de pulseaudio al servidor jack

- jconvolver es el que nos hace la convolución de los canales de sonido.

Pasamos a configurar qjackctl, iré poniendo las capturas y explicando porqué se ponen las opciones:

Iniciamos el programa:

Imagen

Le damos a Setup para configurarlo:

Imagen

Vamos a la pestaña configuraciones:

Imagen

- Tiempo real: Le da preferencia al proceso para ejecutarse en tiempo real (para que no se corte el sonido).

- Modo tolerante: Jack tiene menos tendencia a desconectar los puertos (esto lo tuve que habilitar porque cada 4 minutos se me cortaba el sonido).

A continuación pongo la configuración de los buffers y el muestreo que funcionan con mi tarjeta de sonido (cada una será diferente), aquí pongo las no me dan error al iniciar el servidor:

- Cuadros / Periodo: 2048
- Frecuencia de muestreo: 44100
- Períodos / Buffer: 2

- Dispositivo de entrada: Aquí ponéis el micrófono o la entrada de linea que tengáis.

- Dispositivo de salida: La tarjeta de sonido que va a reproducir el audio.

En la pestaña Otras lo dejamos así para que inicie el servidor nada mas poner el programa:

Imagen

Antes de hacer nada mas, comprobamos que Jack funciona dándole a Iniciar y poniendo un programa de sonido que vaya por Jack (por ejemplo Aqualung). Sino va, miramos los logs con el botón Mensajes, y vemos el fallo que da y lo corregimos.

Si todo ha ido bien, hay que hacer unos ficheros que son los que se encargan de pasar el sonido de pulseaudio a Jack, os pongo el nombre del fichero y el contenido (sacado de http://web.archive.org/web/201107060222 ... he_new_way)

pulse-jack-pre-start.sh

Código: Seleccionar todo

#!/bin/bash
pacmd suspend true
pulse-jack-post-start.sh

Código: Seleccionar todo

#!/bin/bash
pactl load-module module-jack-sink channels=6
pactl load-module module-jack-source channels=6
pacmd set-default-sink jack_out
pacmd set-default-source jack_in
En module-jack-sink y module-jack-source channels ponéis el número de canales que tengáis (en mi caso 6).

pulse-jack-pre-stop.sh

Código: Seleccionar todo

#!/bin/bash
SINKID=$(pactl list | grep -B 1 "Name: module-jack-sink" | grep Module | sed 's/[^0-9]//g')
SOURCEID=$(pactl list | grep -B 1 "Name: module-jack-source" | grep Module | sed 's/[^0-9]//g')
pactl unload-module $SINKID
pactl unload-module $SOURCEID
sleep 5
pulse-jack-post-stop.sh

Código: Seleccionar todo

#!/bin/bash
pacmd suspend false
Los hacemos ejecutables con el comando:

Código: Seleccionar todo

chmod +x pulse-jack-pre-start.sh pulse-jack-post-start.sh pulse-jack-pre-stop.sh pulse-jack-post-stop.sh
Nos vamos a Setup, pestaña Opciones, habilitamos y buscamos los scripts, y los ponemos como está en la imagen:

Imagen

Damos a iniciar y ya tendríamos el sonido de pulseaudio pasado por Jack (lo comprobamos poniendo cualquier programa de música o youtube por ejemplo). Sino suena, nos vamos al icono del altavoz, Configuración de sonido, seleccionamos nuestra tarjeta de sonido y después volvemos a seleccionar Jack sink.

Imagen

Ahora la parte final, el jconvolver:

Explico cómo se configura, se hace un fichero .conf (por ejemplo 5.1-optimized.conf) y se pega lo siguiente:

Código: Seleccionar todo

#                in  out   partition     maxsize	
# ----------------------------------------------
/convolver/new    6    6         2048     250000


#              num   port name     connect to 
# -----------------------------------------------
/input/name     1     in.FL
/input/name     2     in.FR
/input/name     3     in.RL
/input/name     4     in.RR
/input/name     5     in.CE
/input/name     6     in.SW

/output/name    1     out.FL
/output/name    2     out.FR
/output/name    3     out.RL
/output/name    4     out.RR
/output/name    5     out.CE
/output/name    6     out.SW

#                in out  gain  delay  offset  length  chan      file  
# ----------------------------------------------------------------------
/impulse/read     1   1    1     0      0       0       1      optimized-FL.wav
/impulse/read     2   2    1     0      0       0       1      optimized-FR.wav
/impulse/read     3   3    1     0      0       0       1      optimized-RL.wav
/impulse/read     4   4    1     0      0       0       1      optimized-RR.wav
/impulse/read     5   5    1     0      0       0       1      optimized-CE.wav
/impulse/read     6   6    1     0      0       0       1      optimized-SW.wav
- En la parte de /convolver/new poneis el número de canales de audio que tengais.

- En /input/name/ se numeran y se nombran los canales de entrada al convolver.

- En /output/name/ lo mismo que en input pero para las salidas del convolver.

- En /impulse/read/ definimos la correspondencia entre entradas y salidas, el retardo y en file ponemos el camino y el nombre de los archivos de impulso. Esta es la parte flexible del programa porque podéis poner a una entrada varias salidas (para hacer que una entrada estereo se convierta en multicanal, por ejemplo). Os pego el texto:

Código: Seleccionar todo

#                in  out   partition     maxsize	
# ----------------------------------------------
/convolver/new    2    6         2048     250000


#              num   port name     connect to 
# -----------------------------------------------
/input/name     1     in.FL
/input/name     2     in.FR

/output/name    1     out.FL
/output/name    2     out.FR
/output/name    3     out.RL
/output/name    4     out.RR
/output/name    5     out.CE
/output/name    6     out.SW

#                in out  gain  delay  offset  length  chan      file  
# ----------------------------------------------------------------------
/impulse/read     1   1      1     0      0       0       1      optimized-FL.wav
/impulse/read     2   2      1     0      0       0       1      optimized-FR.wav
/impulse/read     1   3      1     0      0       0       1      optimized-RL.wav
/impulse/read     2   4      1     0      0       0       1      optimized-RR.wav
/impulse/read     1   5    0.5     0      0       0       1      optimized-CE.wav
/impulse/read     2   5    0.5     0      0       0       1      optimized-CE.wav
/impulse/read     1   6    0.5     0      0       0       1      optimized-SW.wav
/impulse/read     2   6    0.5     0      0       0       1      optimized-SW.wav
Ejecutamos el jconvolver con el archivo de configuración:

Código: Seleccionar todo

jconvolver 5.1-optimized.conf
Si no hay problema, no aparecerá nada en la línea de comandos y lo dejamos ejecutado, comprobamos si ha cargado bien mirando en el Qjackctl en el botón Conexiones. Deberá de aparecer lo siguiente:

Imagen

Borramos la conexión del sonido directo y lo hacemos pasar por el jconvolver, pulsando primero en Pulseadio JACK Sink (lado Puertos de Salida) y después en system (lado Puertos de Entrada)y le damos al botón desconectar.

Imagen

Ahora arrastramos Pulseaudio JACK Sink (lado Puertos de Salida) a jconvolver (lado Puertos de Entrada) y arrastramos jconvolver (lado Puertos de Salida) a system (lado Puertos de Entrada). Ahora debería de sonar el sonido corregido.

Imagen

Bueno, pues esto es todo, espero haberlo explicado bien y si tenéis alguna duda o problema preguntadme. Os doy las gracias por toda la información que me habéis dado en el foro y a ver si tengo tiempo y hago otro tutorial de cómo sacar los archivos de impulso en Windows (el DRCoP no funciona con mi tarjeta).
Avatar de Usuario
Marcelo
Site Admin
Site Admin
Mensajes: 5681
Registrado: Mar 08 Mar 2005 , 18:08
Ubicación: Vigo
Contactar:

Mensaje por Marcelo »

Gracias Tesla, se agradece la aportación!
slds, Marcelo
"Uno es dueño de lo que está dispuesto a perder. De lo demás es esclavo."
Responder