Servidor de sonido JACK

Para profesionales del audio. Aunque lo nuevo es Pipewire

Jack2 es el que está en desarrollo, jack1 está en bugfix only.

Instalación

pacman -S jack2 carla # Basico
pacman -S pulseaudio-jack jack_mixer # Recomendable
pacman -S cadence || yay -S studio-controls-git # Solo se puede tener uno
pacman -S libffado # Opcionales
# qjackctl # -> no recomendado por pulseaudio bridge [8]
# calf meterbridge zam-plugins x42-plugins tap-plugins mcp-plugins lsp-plugins fil-plugins dpf-plugins cmt caps amb-plugins zynaddsubfx # Plugins

Permisos

Semi auto con el paquete realtime-privileges

pacman -S realtime-privileges

groups $USUARIO | grep realtime || usermod -aG realtime $USUARIO
# Cadence comprueba si estamos en el grupo audio, pero no tiene por que ser ese grupo:
# https://wiki.linuxaudio.org/wiki/cadence_introduction

Manual con el grupo existente audio

/etc/security/limits.d/audio.conf

@audio   -  rtprio     95
@audio   -  memlock    unlimited
groups $USUARIO | grep audio || usermod -aG audio $USUARIO

Info

  • Arranque
    • /usr/share/dbus-1/services/org.jackaudio.service -> /usr/bin/jackdbus auto
    • ~/.log/jack/jackdbus.log

Comprobaciones

fuser /dev/snd/*
ps ax | grep [PID here]
ps -ef | grep -iE 'cadence|studio|jack|pulse'
journalctl -b | grep -iE 'pulse|jack|alsa'

ulimit -r -l
lsof +c 0 /dev/snd/pcm* /dev/dsp* || fuser -fv /dev/snd/pcm* /dev/dsp*

Ficheros de configuraciones

find /home/*/.log -type f -ls
find /home/*/.config/ -type f -iname "*jack*" -ls
# ALSA settings
ls -l ~/.asoundrc
# Pulse settings
ls -l ~/.pulse
# JACK settings
ls -l ~/.config/jack
# Cadence settings
ls -l ~/.config/Cadence
# Studio-Controls settings
ls -l ~/.config/autojack/
  • Borrar / Limpiar
rm -fr ~/.asoundrc ~/.pulse ~/.config/jack/conf.xml ~/.config/Cadence/* ~/.jackdrc ~/.config/rncbc.org/QjackCtl.conf

~/.config/jack/conf.xml

<jack>
 <engine>
  <option name="driver">alsa</option>
 </engine>
 <drivers>
  <driver name="alsa">
   <option name="device">hw:S,0,0</option>
   <option name="capture">hw:S,0</option>
   <option name="playback">hw:S,0</option>
   <option name="period">1024</option>
   <option name="inchannels">1</option>
   <option name="outchannels">2</option>
  </driver>
 </drivers>
</jack>

Configuración via utilidades

jack_control

jack_control status
jack_control dl     # get list of available drivers
jack_control dg     # get currently selected driver
jack_control dp     # get parameters of currently selected driver
jack_control il     # get list of available internals
jack_control ep     # get engine parameters

jack_control ds alsa
jack_control dps device hw:S,0,0 dps rate 48000 # No funciona, solo un comando por ejecucion
jack_control dps period 1024    # Así
jack_control dps nperiods 2     # si

Cadence

  • Info
    • NO detecta automaticamente las entradas y salidas, pero se pueden poner manualmente.
  • Config
    • JACK Bridges:
      • ALSA Audio -> Bridge Type : ALSA -> PulseAudio -> JACK (Plugin) [8]
      • PulseAudio -> Auto-start at login = pulseaudio --daemonize --high-priority --realtime --exit-idle-time=-1 --file=/usr/share/cadence/pulse2jack/play+rec.pa -n
  • Ficheros
    • ~/.asoundrc
    • ~/.config/Cadence/JackSettings.conf
  • Arranque
    • /etc/xdg/autostart/cadence-session-start.desktop -> /usr/bin/cadence-session-start --maybe-system-start 2 -> /usr/share/cadence/src/cadence_session_start.py --system-start-desktop 3
    • /etc/X11/xinit/xinitrc.d/61cadence-session-inject -> /usr/bin/cadence-session-start --system-start-by-x11-startup $STARTUP -> /usr/share/cadence/src/cadence_session_start.py --system-start
      • Llamado por /usr/share/sddm/scripts/Xsession
  • Inhabilitar
    • echo 'Hidden=true'> ~/.config/autostart/cadence-session-start.desktop

Comprobaciones

journalctl -b | grep cadence
ps -ef | grep cadence

Studio Controls

https://github.com/ovenwerks/studio-controls/wiki

  • Info
    • Detecta automaticamente las entradas y salidas, pero no deja configurarlas manualmente
    • Permite modificar el nombre de los puentes de Pulse para que aparezcan en Carla facilmente identificables
  • Dependencias
pacman -S python-dbus python-jack-client zita-ajbridge a2jmidid
# opcionales python-numpy alsa-utils
yay -S python-pyalsaaudio
  • Arranque:
    • studio.service -> /usr/bin/autojack

Comprobaciones

systemctl --user status studio.service
systemctl --user status session-monitor.service

sudo systemctl status studio-system.service

tail -qn 60 ~/.log/jack/jackdbus.log ~/.log/autojack.log

find /home/*/.asoundrc -exec echo '==> {} made by Cadence may not be compatible with Studio-Controls' \; 2>/dev/null
pacman -Ql python-pyalsaaudio | grep 3.8 && echo "==> Please reinstall python-pyalsaaudio cleaning the cache, it shouldn't be found in python3.8 directory"

Config Jack Master Setting

  • Kingston HyperX Cloud Revolver S
    • 48000 - 32 - 3 : No va
    • 48000 - 64/128 - 3 : Xruns
    • 48000 - 256 - 3 :

Config HW de Extra Devices

  • Radeon RX580
    • HDMI,11,0 playback (HDMI 5) -> DP1 Central : 1 puerto
    • HDMI,10,0 playback (HDMI 4) -> DP0 Lateral : 2 puertos
    • HDMI,9-7,0 playback (HDMI 3-0) -> Sin conexion : 1 puerto

pactl

pactl load-module module-jack-sink client_name=NOMBRE_OUTput sink_properties=device.description='"JACK\ Sink\ (client_name)"'
pacmd list-sinks

Manejo

Session Manager

Sirve para guardar configuraciones de parcheo y estados y poder tener diferentes sesiones/configuraciones fácil de volver a cargar sin hacerlo todo de nuevo.

Carla

  • https://kx.studio/Applications:Carla
  • Plugin host + Patchbay.
  • Configure Carla :
    • Main:
      • Enable experimental features: Si
    • Experimental:
      • Enable plugin bridges: Si
      • Enable jack applications: Si
    • Engine:
      • Audio driver: JACK
      • Process mode: Single Client

Catia

  • Pathbay incluido en el paquete cadence. (Menos potente que Carla)

Aplicaciones Clientes

Firefox

  • Necesita FLAG en compilación. Arch la tiene.
    • Pero si hay pulseaudio disponible no la usa por prioridad.

Latency

jack_control dps input-latency 17
jack_control dps output-latency

Documentacón


Última modificación May 7, 2024: contexto tabla whisper (8508556)