Producción de Audio en Debian 12
Esta configuración es la que actualmente estoy usando y la considero bastante estable.
Sin duda alguna la última actualización de Debian ha sido excelente y la mejor en muchos años, y con esta guía espero dejar documentado l proceso de configuración de mi estación de producción de audio en Debian 12.
Actualización del Sistema
Antes de iniciar vamos a activar contrib
en el repositorio:
sudo sed -i '/^deb /s/$/ contrib/' /etc/apt/sources.list
Luego se procesde a realizar una actualización completa del sistema:
sudo apt update && sudo apt upgrade -y
Se instalan un par de dependencias que se usaran en este tutorial:
sudo apt wget curl -y
Install Liquorix kernel
Para más información dirijase a https://liquorix.net/
sudo apt install curl -y
curl 'https://liquorix.net/add-liquorix-repo.sh' | sudo bash
Reiniciar
Pipewire
Se instala el software requerido
sudo apt install pipewire pipewire-alsa pipewire-audio pipewire-audio-client-libraries pipewire-jack pipewire-pulse libspa-0.2-jack wireplumber -y
Luego se necesita habilitar WirePlumber en systemd
ejecutando el siguiente comando como usuario (NO como root):
systemctl --user --now enable wireplumber.service
JACK con pipewire
Básicamente lo que se debe hacer acá es decirle a los programas que usan JACK que de ahora en adelante van a usar Pipewire JACK.
sudo cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/
y luego ejecutar el comando
sudo ldconfig
Revisar si el pipewire esta cargado
Es momento de reinicar y probar si todo está cargado
PulseAudio
LANG=C pactl info | grep '^Server Name'
ALSA
LANG=C aplay -L | grep -A 1 default
PW-TOP
Con el comando pw-top
podemos ver todo lo que se está conectando a pipewire
pw-top
Latencia para los clientes de Jack en PipeWire
Se copia y modifica el archivo /usr/share/pipewire/jack.conf
en el directorio ~/.config/pipewire/
, para lo cual se debe crear la carpeta pipewire
en el ~/.config
primero.
mkdir ~/.config/pipewire
cp /usr/share/pipewire/jack.conf ~/.config/pipewire
nano ~/.config/pipewire/jack.conf
En donde se modifica node.latency
en la sección jack.properties
y se pone el valor de la latencia. En el siguiente ejemplo esse usa 256ms y 48KHz:
# global properties for all jack clients
jack.properties = {
#node.latency = 1024/48000
node.latency = 256/48000
#node.lock-quantum = false
#jack.show-monitor = true
#jack.merge-monitor = false
#jack.short-name = false
#jack.filter-name = false
#
# allow: Don't restrict self connect requests
# fail-external: Fail self connect requests to external ports only
# ignore-external: Ignore self connect requests to external ports only
# fail-all: Fail all self connect requests
# ignore-all: Ignore all self connect requests
#jack.self-connect-mode = allow
#jack.locked-process = true
}
NOTA: Actualmente uso un pequeño script de python r_pw_latency
el cual hace parte de shell-scripts:
CPU Governor Performance
Este paso consite en modificar el comando de arranque de GRUB para habilitar el modo performance CPU Governor, es decir modificar el /etc/default/grub
y agregar la configuración:
sudo nano /etc/default/grub
y modificar la siguiente línea:
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
convirtiendola en :
GRUB_CMDLINE_LINUX_DEFAULT="quiet threadirqs cpufreq.default_governor=performance"
Este es un comando que uso. Sólo usarlo una vez.
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet threadirqs cpufreq.default_governor=performance"/g' /etc/default/grub
Lo importante es que una vez realizado el cambio, se actualice el grub:
sudo update-grub
Modificar los límites
Un paso importante que debe hacerse en Manjaro es darle privilegios de tiempo real al grupo audio, lo cual se realiza en el archivo /etc/security/limits.conf
. En caso de conocer más sobre la naturaleza de este paso puedes consultar la información publicada en al sitio web del proyecto jack.
sudo nano /etc/security/limits.d/audio.conf
Una vez acá, se procede a pegar las siguientes líneas de código.
# audio group
@audio - rtprio 90
@audio - memlock unlimited
O se puede ejecutar el comando directo, si no se ha realizado la modificación antes:
echo '# audio group
@audio - rtprio 90
@audio - memlock unlimited' | sudo tee -a /etc/security/limits.d/audio.conf
sysctl.conf
Esta configuración cambia la llamada swapiness
(capacidad de intercambio de su sistema), o en otras palabras, el momento en que su sistema comienza a usar su swap
(partición de intercambio). Esto se realiza creando el archivo /etc/sysctl.d/99-custom.conf
. Ver Linux Audio - System Configuration para más información al respecto.
sudo nano /etc/sysctl.d/99-custom.conf
Una vez acá, se procede a pegar las siguientes líneas de código.
vm.swappiness=10
fs.inotify.max_user_watches=600000
O se puede ejecutar el comando directo, si no se ha realizado la modificación antes:
echo 'vm.swappiness=10
fs.inotify.max_user_watches=600000' | sudo tee /etc/sysctl.d/99-custom.conf
Una vez realizada la modificación, se aplican los cambios:
sudo sysctl --system
Usuario en el grupo de Audio
Crear el grupo de audio si no existe ya.
sudo groupadd audio
Agregar el usuario actual al grupo de audio:
sudo usermod -aG audio $USER
Repositorio KXStudio
Es momento de instalar algo de software de audio, y nada mejor que el repositorio de KXStudio el cual esta re-cargado de plugins y aplicaciones de audio profesional:
Activar el repositorio
sudo apt-get update
sudo apt-get install apt-transport-https gpgv wget
wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.1.0_all.deb
sudo dpkg -i kxstudio-repos_11.1.0_all.deb
sudo apt-get update && sudo apt-get upgrade -y
rm -rf kxstudio-repos_*.deb
Instalar el software
KXStudio permite instalar los plugins a través de Meta-Packages, y yo uso el de VST para ser más compatible con REAPER, además de instalar Carla:
sudo apt install kxstudio-meta-audio-plugins-vst carla
Software de audio en general
En general instalo este software de audio base:
sudo apt install ardour audacity soundconverter dragonfly-reverb lsp-plugins calf-plugins caps dpf-plugins tap-plugins zam-plugins eq10q ebumeter x42-plugins
REAPER
El siguiente código instalará REAPER en /opt/REAPER
. Consulte la página oficial de descarga de REAPER y actualice el número de versión si es necesario, que al momento de hacer esta guía es 7.18
:
wget -O reaper.tar.xz https://www.reaper.fm/files/7.x/reaper718_linux_x86_64.tar.xz
mkdir ./reaper
tar -C ./reaper -xf reaper.tar.xz
sudo ./reaper/reaper_linux_x86_64/install-reaper.sh --install /opt --integrate-desktop --usr-local-bin-symlink --quiet
rm -rf ./reaper
rm reaper.tar.xz
Para desinstalar, usar:
sudo sh /opt/REAPER/uninstall-reaper.sh
Wine
wine
es requerido para poder usar los plugins VST de windows en Linux a través de yabridge
. Favor referirse a WineHQ for Debian para información adicional.
sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources
sudo apt update
sudo apt install --install-recommends winehq-stable -y
Yabridge
Puede encontrar instrucciones detalladas en el sitio web de Yabridge
Cuando se ejecuta este script, es posible que haya una versión más reciente de yabridge disponible.
Consulte la página de versiones y actualice el número de versión a continuación si es necesario, que al momento de hacer esta guía es 5.1.0
:
wget -O yabridge.tar.gz https://github.com/robbert-vdh/yabridge/releases/download/5.1.0/yabridge-5.1.0.tar.gz
mkdir -p ~/.local/share
tar -C ~/.local/share -xavf yabridge.tar.gz
rm yabridge.tar.gz
Para poder acceder al programa, se debe agregar la ruta al .bashrc
:
echo '' >> ~/.bash_aliases
echo '# Audio: yabridge path' >> ~/.bash_aliases
echo 'export PATH="$PATH:$HOME/.local/share/yabridge"' >> ~/.bash_aliases
Fuentes:
- @rolodoom - Producción de Audio en Manjaro KDE
- Pipewire - Debian Wiki
- How do I configure my linux system to allow JACK to use realtime scheduling?
- PipeWire Github's Page
- Linux Audio Setup Scripts by Brendan Ingram
- LinuxAudio.org - System configuration
- KXStudio - Collection of applications and plugins for audio production