--- tags: produção musical no linux --- {%hackmd @rauldipeas/dark-theme %} # Produção musical no Linux :::warning Você pode conferir uma versão atualizada deste guia no meu [novo blog](https://rauldipeas.surge.sh/blog/posts/produ%C3%A7%C3%A3o-musical-no-linux/) sobre Linux. ::: ![ubuntu](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/distributor-logo-ubuntu.svg "Ubuntu" =150x)![tuxguitar](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/tuxguitar.svg "TuxGuitar" =150x)![helvum](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/org.pipewire.Helvum.svg "Helvum" =150x)![música](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/org.gnome.Music.svg "Música" =150x) O [![linux](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/tux.svg "Linux" =24x) **Linux**](https://linux.org) é um sistema operacional bastante abrangente (assim como o [![windows](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/16x16/apps/windows95.svg "Windows" =24x) **Windows**](https://www.microsoft.com/pt-br/windows) e o [![macos](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/16x16/places/folder-apple.svg "MacOS" =24x) **MacOS**](https://www.apple.com/br/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](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/distributor-logo-ubuntu.svg "Ubuntu" =24x) **Ubuntu**](https://ubuntu.com). Se você gosta deste tema e quer conversar com outros músicos que também usam Linux, acesse o nosso grupo no [![telegram](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/telegram.svg "Telegram" =24x) **Telegram**](https://t.me/producaomusicalnolinux). ## ![ubuntu](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/distributor-logo-ubuntu.svg "Ubuntu" =24x) [**Ubuntu**](https://ubuntu.com) O [![ubuntu](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/distributor-logo-ubuntu.svg "Ubuntu" =24x) **Ubuntu**](https://ubuntu.com) é uma distribuição baseada no [![debian](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/24x24/apps/distributor-logo-debian.svg "Debian") **Debian**](https://debian.org), 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](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/24x24/apps/distributor-logo-debian.svg "Debian") **Debian**](https://debian.org) é 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](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/48x48/apps/distributor-logo-kubuntu.svg "Kubuntu" =24x) **Kubuntu**](https://kubuntu.org), mas todos os comandos indicados são compatíveis com qualquer um dos [_sabores_](https://ubuntu.com/desktop/flavours) do [![ubuntu](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/distributor-logo-ubuntu.svg "Ubuntu" =24x) **Ubuntu**](https://ubuntu.com). ![kubuntu-desktop](https://i.imgur.com/szZmW59.png "Área de trabalho do Kubuntu") ## ![rtcqs](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/emblems/emblem-default.svg "rtcqs") [rtcqs](https://codeberg.org/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](https://i.imgur.com/mNw09cO.png "rtcqs") As checagens indicadas se baseiam nas recomendações da [**Wiki do LinuxAudio**](https://wiki.linuxaudio.org/wiki/system_configuration). <details> <summary>📦 Instalação</summary> ```bash pkcon 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 ``` </details> <details> <summary>🔧 Configuração</summary> ```bash 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 ``` </details> ## ![rtirq-udev](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/devices/audio-card.svg "rtcqs") [udev-rtirq](https://github.com/jhernberg/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. <details> <summary>📦 Instalação</summary> ```bash git clone -q https://github.com/jhernberg/udev-rtirq cd udev-rtirq sudo make install ``` </details> ## ![xanmod](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/devices/cpu.svg "XanMod") [XanMod](https://xanmod.org) 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 executados através do [**WINE**](https://www.winehq.org/), além de contribuir de forma decisiva para uma baixíssima incidência de [`xruns`](https://unix.stackexchange.com/questions/199498/what-are-xruns)(que ocasionam artefatos sonoros, como cliques e pops no áudio) ao utilizar programas de áudio de baixa latência. <details> <summary>📦 Instalação</summary> ```bash wget -cq --show-progress https://dl.xanmod.org/xanmod-repository.deb sudo apt install --no-install-recommends ./xanmod-repository.deb pkcon refresh pkcon install linux-firmware linux-xanmod ``` </details> ## ![cadence](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/cadence.svg "Cadence") [Cadence](https://kx.studio/Applications:Cadence) O **Cadence** é o programa responsável por gerenciar todas as configurações de som do sistema, utilizando como base os programas [**JACK**](https://jackaudio.org) e [**PulseAudio**](https://www.freedesktop.org/wiki/Software/PulseAudio). Através das configurações indicadas aqui, seu sistema estará preparado pra executar o áudio com baixa latência e bom desempenho. <details> <summary>📦 Instalação</summary> ```bash 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)" pkcon install-local ./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 pkcon install alsa-firmware cadence ``` </details> <details> <summary>🔧 Configuração</summary> As configurações recomendadas para o **Cadence** podem variar um pouco conforme o seu hardware, vou deixar aqui configurações que funcionam bem na maioria dos hardwares atuais. ![cadence-driver](https://i.imgur.com/qxnUY8Z.png "Cadence Driver") ![cadence-engine](https://i.imgur.com/Msr9y1N.png "Cadence Engine") :::warning 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. ::: </details> ## ![wine](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/wine.svg "WINE") [WINE TkG](https://github.com/Frogging-Family/wine-tkg-git) 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**](https://www.phoronix.com/news/Linux-Kernel-Wine-Sync-API-2021). ![q4wine](https://i.imgur.com/2qv0xPt.png "Q4WINE") <details> <summary>📦 Instalação</summary> ```bash bash <(wget -qO- https://raw.githubusercontent.com/rauldipeas/apt-repository/main/apt-repository.sh) pkcon install q4wine wine-tkg winetricks ``` </details> <details> <summary>🔧 Configuração</summary> ```bash winetricks -f -q dxvk ``` </details> ## ![yabridge](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/org.gnome.Extensions.svg "yabridge") [`yabrige`](https://github.com/robbert-vdh/yabridge) 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. <details> <summary>📦 Instalação</summary> ```bash bash <(wget -qO- https://raw.githubusercontent.com/rauldipeas/apt-repository/main/apt-repository.sh) pkcon install yabridge ``` </details> <details> <summary>🔧 Configuração</summary> ```bash 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 ``` </details> ## ![reaper](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/cockos-reaper.svg "REAPER") [REAPER](https://reaper.fm) 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. ![image alt](https://i.imgur.com/rr91QmQ.png "REAPER") Os comandos indicados aqui incluem a instalação do [**ReaPack**](https://reapack.com) e da extensão [**SWS**](https://www.sws-extension.org), além da tradução para o português brasileiro. <details> <summary>📦 Instalação</summary> ```bash bash <(wget -qO- https://raw.githubusercontent.com/rauldipeas/apt-repository/main/apt-repository.sh) pkcon install cockos-reaper ``` </details> <details> <summary>🔧 Configuração</summary> ```bash 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)" ``` </details> ## ![xrun](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/48x48/status/notification-audio-volume-muted.svg "xruns" =48x) Boas práticas para evitar `xruns` ### ![wireless](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/devices/network-wireless.svg "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](https://i.imgur.com/R443kiR.png "Conexão sem fio") ### ![mediainfo](https://raw.githubusercontent.com/PapirusDevelopmentTeam/papirus-icon-theme/master/Papirus/32x32/apps/mkvinfo.svg "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**](https://mediaarea.net/en/MediaInfo), que pode ser facilmente instalado através do comando indicado abaixo. <details> <summary>📦 Instalação</summary> ```bash pkcon install mediainfo-gui ``` </details> ![mediainfo](https://i.imgur.com/hizh47U.png "MediaInfo") Para converter os arquivos de áudio, vídeo e imagem em outros formatos, você pode usar o programa [**Videomass**](https://jeanslack.github.io/Videomass), que pode ser facilmente instalado através dos comandos indicados abaixo. <details> <summary>📦 Instalação</summary> ```bash sudo apt-add-repository ppa:jeanslack/videomass sudo apt install --no-install-recommends yt-dlp pkcon install python3-videomass ``` </details> ![videomass](https://i.imgur.com/Mm7XAQg.png "Videomass")