Início Produção musical no Linux
Postagem
Cancelar

Produção musical no Linux

ubuntu tuxguitar helvum música

O Linux é um sistema operacional bastante abrangente (assim como o Windows e o MacOS) e uma de suas infinitas possibilidade é a produção musical.

Através deste guia eu vou compartilhar alguns conhecimentos que obtive ao longo da última década(ou um pouco mais de tempo).

O ponto de partida, sem dúvidas, é escolher uma distribuição que seja suficientemente completa e tenha o suporte necessário de tudo que vamos precisar pra trabalhar com música.

A minha escolha da vez é o Ubuntu.

Se você gosta deste tema e quer conversar com outros músicos que também usam Linux, acesse o nosso grupo no Telegram.

ubuntu Ubuntu

O Ubuntu é uma distribuição baseada no Debian, que por ser uma das distribuições mais comentadas na internet, atrai a atenção de muitos usuários.

Isso se dá pelo fato de que o Debian é uma das distribuições mais antigas ainda em atividade e por isso, é possível encontrar muito conteúdo sobre ele na internet.

Neste guia eu vou utilizar o Kubuntu, mas todos os comandos indicados são compatíveis com qualquer um dos sabores do Ubuntu.

kubuntu-desktop

rtcqs rtcqs

O rtcqs é um checador de configurações do sistema, necessário pra checar se todas as configurações de desempenho já estão setadas corretamente, garantindo que o sistema tenha o máximo de desempenho possível com os programas de áudio.

rtcqs

As checagens indicadas se baseiam nas recomendações da Wiki do LinuxAudio.

📦 Instalação

1
2
3
4
5
6
sudo apt install pipx python3-tk
pipx install rtcqs
mkdir -p "$HOME"/.local/share/{applications,icons}
wget -qO "$HOME"/.local/share/applications/rtcqs.desktop https://github.com/autostatic/rtcqs/raw/main/rtcqs.desktop
sed -i "s@Exec=rtcqs_gui@Exec=$HOME/.local/bin/rtcqs_gui@g" "$HOME"/.local/share/applications/rtcqs.desktop
wget -qO "$HOME"/.local/share/icons/rtcqs.svg https://github.com/autostatic/rtcqs/raw/main/rtcqs_logo.svg

🔧 Configuração

1
2
3
4
5
6
7
8
9
10
11
12
sudo usermod -aG audio "$USER"
cat <<EOF |sudo tee /etc/sysctl.d/swappiness.conf>/dev/null
vm.swappiness = 10
EOF
cat <<EOF |sudo tee /etc/default/grub.d/cmdline-linux-default.cfg>/dev/null
GRUB_CMDLINE_LINUX_DEFAULT="cpufreq.default_governor=performance mitigations=off preempt=full quiet splash threadirqs"
EOF
sudo update-grub
sudo wget -qO /etc/udev/rules.d/99-cpu-dma-latency.rules https://raw.githubusercontent.com/Ardour/ardour/master/tools/udev/99-cpu-dma-latency.rules
systemctl --user disable xdg-desktop-portal
systemctl --user mask xdg-desktop-portal
sudo systemctl mask xdg-desktop-portal

udev-rtirq udev-rtirq

O udev-rtirq é um script que adiciona regras de gerenciamento de hardware ao sistema, que garantem alta prioridade no gerenciamento da interface de áudio.

📦 Instalação

1
2
3
4
5
6
sudo apt install build-essential git
git clone -q https://github.com/jhernberg/udev-rtirq
cd udev-rtirq
sudo make install
cd ..
rm -r udev-rtirq

xanmod XanMod

O XanMod é o núcleo de sistema recomendado para este contexto, por conter uma série de patches e otimizações que contribuem para o melhor desempenho de programas que são executados através do WINE, além de contribuir de forma decisiva para uma baixíssma incidência de xruns(que ocasionam artefatos sonoros, como clicks e pops no áudio) ao utilizar programas de áudio de baixa latência.

📦 Instalação

1
2
3
4
5
6
7
wget -cq https://dl.xanmod.org/check_x86-64_psabi.sh
chmod +x check_x86-64_psabi.sh
wget -cq --show-progress https://dl.xanmod.org/xanmod-repository.deb
sudo apt install --no-install-recommends ./xanmod-repository.deb
sudo apt update
sudo apt install linux-firmware linux-xanmod-x64$(./check_x86-64_psabi.sh|cut -d"-" -f3)
rm check_x86-64_psabi.sh xanmod-repository.deb

cadence Cadence

O Cadence é o programa responsável por gerenciar todas configurações de som do sistema, utilizando como base os programas JACK e PulseAudio.

Através das configurações indicadas aqui, seu sistema estará preparado pra executar o áudio com baixa latência e bom desempenho.

📦 Instalação

1
2
3
4
5
6
7
8
9
10
11
12
13
14
wget -cq --show-progress http://ppa.launchpad.net/kxstudio-debian/kxstudio/ubuntu/pool/main/k/kxstudio-repos/"$(wget -qO- http://ppa.launchpad.net/kxstudio-debian/kxstudio/ubuntu/pool/main/k/kxstudio-repos/|grep all.deb|tail -n1|cut -d '"' -f8)"
sudo apt install ./kxstudio-repos*.deb
sudo add-apt-repository -ny multiverse
sudo add-apt-repository -y universe
echo 'jackd2 jackd/tweak_rt_limits string true'|sudo debconf-set-selections
sudo apt install alsa-firmware cadence pulseaudio
sudo apt autoremove --purge qjackctl meterbridge
systemctl --user mask pipewire.service pipewire.socket
systemctl --user --now stop pipewire.service pipewire.socket
systemctl --user --now disable pipewire.service pipewire.socket
systemctl --user --now enable pulseaudio.service pulseaudio.socket
systemctl --user --now start pulseaudio.service pulseaudio.socket
pactl info|grep "Nome do servidor"
rm kxstudio-repos*.deb

🔧 Configuração

As configurações recomendadas para o Cadence podem variar um pouco de acordo com o seu hardware, vou deixar aqui configurações que funcionam bem na maioria dos hardwares atuais.

cadence-driver

cadence-engine

Caso você tenha baixo desempenho ou artefatos sonoros, procure alterar o valor Periods/Buffer na aba Driver, pela minha experiência, esse valor não tem um padrão claro, cada hardware precisa de um valor específico.

wine WINE TkG

O WINE é o programa responsável por disponibilizar uma camada de compatibilidade para a execução de programas do Windows no Linux, a versão TkG é compilada utilizando patches específicos para um maior desempenho, em especial o patch FSYNC.

q4wine

📦 Instalação

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install q4wine wine wine32:i386 winetricks
wget -q --show-progress "$(wget -qO- https://api.github.com/repos/Kron4ek/Wine-Builds/releases|grep browser_download_url|grep staging-tkg-amd64.tar.xz|head -n1|cut -d '"' -f4)"
tar fx wine*staging-tkg-amd64.tar.xz
rm wine*staging-tkg-amd64.tar.xz
sudo mv wine*staging-tkg-amd64 /opt/wine-tkg
wget -q --show-progress "$(wget -qO- https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases|grep browser_download_url|grep wine-lutris-ge|grep .tar.xz|head -n1|cut -d '"' -f4)"
tar fx wine-lutris-ge*.tar.xz
sudo cp lutris*/lib/wine/i386-windows/winemenubuilder.exe /opt/wine-tkg/lib/wine/i386-windows/winemenubuilder.exe
sudo cp lutris*/lib64/wine/x86_64-windows/winemenubuilder.exe /opt/wine-tkg/lib/wine/x86_64-windows/winemenubuilder.exe
find . -name "*lutris-ge*" -print0|xargs -0 rm -r
WINE_GECKO_VER="$(wget -qO- https://dl.winehq.org/wine/wine-gecko/|grep folder|cut -d '"' -f6|sort -d|grep -v wine|tail -n1)"
wget -qO- https://dl.winehq.org/wine/wine-gecko/"$WINE_GECKO_VER"|grep x86|grep tar|grep -wv pdb|grep -wv rc|cut -d '"' -f6>wine-gecko.links
sed -i 's@wine-gecko@https://dl.winehq.org/wine/wine-gecko/wine-gecko@g' wine-gecko.links
sed -i 's@wine/wine-gecko/@'wine/wine-gecko/"$WINE_GECKO_VER"'@g' wine-gecko.links
wget -q --show-progress "$(cat<wine-gecko.links|head -n1)"
wget -q --show-progress "$(cat<wine-gecko.links|tail -n1)"
rm wine-gecko.links
WINE_MONO_VER="$(wget -qO- https://dl.winehq.org/wine/wine-mono/|grep folder|cut -d '"' -f6|sort -g|tail -n1)"
wget -qO- https://dl.winehq.org/wine/wine-mono/"$WINE_MONO_VER"|grep x86|grep tar|cut -d '"' -f6>wine-mono.links
sed -i 's@wine-mono@https://dl.winehq.org/wine/wine-mono/wine-mono@g' wine-mono.links
sed -i 's@wine/wine-mono/@'wine/wine-mono/"$WINE_MONO_VER"'@g' wine-mono.links
wget -q --show-progress "$(cat<wine-mono.links|head -n1)"
rm wine-mono.links
sudo mkdir -p /opt/wine-tkg/share/wine/{gecko,mono}
sudo tar fx wine-gecko-*-x86.tar.xz -C /opt/wine-tkg/share/wine/gecko/
sudo tar fx wine-gecko-*-x86_64.tar.xz -C /opt/wine-tkg/share/wine/gecko/
sudo tar fx wine-mono-*-x86.tar.xz -C /opt/wine-tkg/share/wine/mono/
rm -r wine-gecko-*-x86.tar.xz
rm -r wine-gecko-*-x86_64.tar.xz
rm -r wine-mono-*-x86.tar.xz
cat <<EOF |sudo tee /etc/environment.d/99wine.conf>/dev/null
if [ -d "/opt/wine-tkg/bin" ] ; then
    PATH="/opt/wine-tkg/bin:\$PATH"
fi
export WINE_ENABLE_PIPE_SYNC_FOR_APP=1
export WINEESYNC=1
export WINEFSYNC=1
EOF

🔧 Configuração

1
winetricks -f -q dxvk

yabridge yabrige

O yabridge é o programa responsável por criar links simbólicos dos plugins VST do Windows, que podem ser lidos pelos programas de áudio nativos do Linux, como REAPER, Waveform, Bitwig, entre outros.

Ele é compatível com plugins VST2 e VST3 de 32 e 64 bits.

📦 Instalação

1
2
3
4
5
6
7
wget -q --show-progress "$(wget -qO- https://api.github.com/repos/robbert-vdh/yabridge/releases|grep browser_download_url|head -n2|tail -n1|cut -d '"' -f4)"
tar fxz yabridge*.tar.gz
rm -r yabridge*.tar.gz
sudo mv yabridge/yabridgectl /usr/bin/yabridgectl
sudo mv yabridge/libyabridge* /usr/lib/
sudo mv yabridge/yabridge* /usr/bin/
rm -r yabridge

🔧 Configuração

1
2
3
4
5
mkdir -pv "$HOME"/.wine/drive_c/Program\ Files/Common\ Files/VST3
mkdir -pv "$HOME"/.wine/drive_c/Program\ Files/VSTPlugins
yabridgectl add "$HOME"/.wine/drive_c/Program\ Files/Common\ Files/VST3
yabridgectl add "$HOME"/.wine/drive_c/Program\ Files/VSTPlugins
yabridgectl sync --prune --verbose

reaper REAPER

O REAPER é uma estação de trabalho de áudio digital, com o qual você pode produzir música, editar áudio, editar vídeo (de maneira básica) e fazer apresentações musicais ao vivo.

reaper

Os comandos indicados aqui incluem a instalação do ReaPack e da extensão SWS, além da tradução para o português brasileiro.

📦 Instalação

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
REAPER_VER="$(wget -qO- http://reaper.fm| grep VERSION|cut -d '>' -f2|cut -d ':' -f1|sed 's/VERSION //g')"
cd /tmp
rm -rf /tmp/*reaper* /tmp/*libSwell*
wget -q --show-progress http://reaper.fm/"$(wget -qO- http://reaper.fm/download.php|grep _linux_x86_64.tar.xz|cut -d '"' -f2)"
tar fx reaper*_linux_x86_64.tar.xz -C /tmp
sed -i 's/rmdir --/rm -rf --/g' /tmp/reaper*/install-reaper.sh
sudo /tmp/reaper*/install-reaper.sh --install /opt --integrate-desktop --quiet --integrate-sys-desktop
wget -qO libSwell.colortheme https://stash.reaper.fm/41334/libSwell.colortheme
sudo mv libSwell.colortheme /opt/REAPER/libSwell.colortheme
cd ..
cat <<EOF |sudo tee -a /usr/share/applications/cockos-reaper.desktop>/dev/null
#\n
Actions=NewProject;ShowAudioConfig;ReaMote;WhatsNew;License;
[Desktop Action NewProject]
Name=REAPER (create new project)
Name[pt_BR]=REAPER (criar novo projeto)
Exec=/opt/REAPER/reaper -new
Icon=cockos-reaper
[Desktop Action ShowAudioConfig]
Name=REAPER (show audio configuration on startup)
Name[pt_BR]=REAPER (mostrar configurações de áudio ao iniciar)
Exec=/opt/REAPER/reaper -audiocfg
Icon=cockos-reaper
[Desktop Action ReaMote]
Name=ReaMote
Exec=/opt/REAPER/reamote-server
Icon=folder-remote
[Desktop Action WhatsNew]
Name=What's new
Name[pt_BR]=O que há de novo?
Exec=xdg-open /opt/REAPER/whatsnew.txt
Icon=text-x-plain
[Desktop Action License]
Name=License and User Agreement
Name[pt_BR]=Licença e contrato de usuário
Exec=xdg-open /opt/REAPER/EULA.txt
Icon=text-x-plain
EOF

🔧 Configuração

1
2
3
4
5
6
mkdir -pv "$HOME"/.config/REAPER/{LangPack,UserPlugins}
wget -O "$HOME"/.config/REAPER/LangPack/pt-BR.ReaperLangPack https://stash.reaper.fm"$(wget -qO- https://stash.reaper.fm/tag/Language-Packs|grep pt-BR|head -n1|cut -d '"' -f2|sed 's/\/v//g')"
wget https://sws-extension.org/download/pre-release/"$(wget -qO- http://sws-extension.org/download/pre-release/|grep Linux-x86_64|head -n1|cut -d '"' -f4)"
tar fvx sws-*-Linux-x86_64-*.tar.xz -C "$HOME"/.config/REAPER
rm -rfv sws-*-Linux-x86_64-*.tar.xz
wget -O "$HOME"/.config/REAPER/UserPlugins/reaper_reapack-x86_64.so "$(wget -qO- https://api.github.com/repos/cfillion/reapack/releases|grep browser_download_url|grep download/v|grep x86_64.so|head -n1|cut -d '"' -f4)"

xruns Boas práticas para evitar xruns

wireless Desative conexões sem fio(wifi e bluetooth)

Conexões sem fio, sabidamente causam xruns esporádicos.

Alguns notebooks tem um botão físico para desativar a conexão sem fio, se esse não for o seu caso, você pode desativar através do gerenciador de rede na área de notificação do seu ambiente gráfico.

wifi

mediainfo Evite a conversão de arquivos de áudio em tempo real

Muitos programas de gravação de áudio, como é o caso do REAPER, por exemplo, permitem que você importe arquivos em formatos diferentes pra dentro do projeto, fazendo a conversão desses formatos em tempo real, durante a reprodução do projeto, isso gera uma sobrecarga de processamento e sabidamente pode causar xruns.

Quando você estiver usando um programa de gravação de áudio, é recomendado evitar a conversão de arquivos de áudio em tempo real, ou seja, faça a conversão prévia de quaisquer arquivos que precisa usar no seu projeto, evitando sobrecarga no processamento durante a execução desses arquivos dentro do seu programa de gravação.

Para checar os formatos dos arquivos, você pode usar o programa MediaInfo, que pode ser facilmente instalado através do comando indicado abaixo.

📦 Instalação

1
sudo apt install mediainfo-gui

mediainfo

Para converter os arquivos de áudio, vídeo e imagem em outros formatos, você pode usar o programa Videomass, que pode ser facilmente instalado através dos comandos indicados abaixo.

📦 Instalação

1
2
3
sudo apt-add-repository ppa:jeanslack/videomass
sudo apt install --no-install-recommends yt-dlp
sudo apt install python3-videomass

videomass

Se você gostou do conteúdo desta postagem e quer receber mais conteúdos como esse, me siga no Twitter.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.

-

Melhore o desempenho do Ubuntu