RC5LOOP
Loop station de 5 trilhas em plugin CLAP nativo para Linux, no espírito do Boss RC-505.
Feito para baixo, mas serve para qualquer fonte estéreo. Nada de Wine, nada de bridge: só C++, X11 e cairo.
A interface, desenhada em cairo, sem toolkit pesado atrás
COMO FUNCIONA
Cada trilha tem um botão que cicla, igual ao hardware:
| Estado atual | O botão faz |
|---|---|
| vazia | começa a gravar |
| gravando | fecha o loop e toca |
| tocando | entra em overdub |
| em overdub | volta a tocar |
| parada | volta a tocar |
A primeira trilha que você fecha define o loop mestre. Com SYNC ligado, todas as outras ficam presas a múltiplos inteiros dele: apertar REC agenda o início para a próxima volta, e apertar de novo fecha na volta seguinte. Sem SYNC, tudo acontece na hora e cada trilha corre solta.
MULTI toca quantas trilhas você quiser ao mesmo tempo. SINGLE deixa só uma tocando, trocando na hora que você aciona outra. Por trilha: volume, pan, REV (reverso), 1/2 e x2 (velocidade), ONE (dispara uma vez e para) e UNDO/REDO.
METRÔNOMO E A GRADE DE TEMPO
O click roda antes de qualquer gravação, é ele que segura o tempo enquanto você grava a primeira trilha. A fórmula de compasso vai de 2/4 a 4/4, e o primeiro tempo recebe um click mais agudo.
Com SYNC ligado toda gravação entra e sai em compasso inteiro, e um loop pode ter quantos compassos você tocar sem que a fórmula ou o BPM mudem. O ponto ao lado do título pisca no tempo, azul nas batidas e laranja no primeiro tempo, pra você sentir o andamento sem ler número.
PRÉVIA escolhe 1, 2 ou 4 compassos de metrônomo antes da gravação começar de fato, e toca mesmo com CLICK desligado. REC GLOBAL escolhe a primeira trilha vazia, inicia essa contagem e começa a gravar sozinho quando ela termina. SEGUE HOST puxa o andamento do BPM do projeto no REAPER em vez do campo interno.
Se o CLICK estiver desligado e não houver loop mestre, não existe grade: a primeira gravação é livre e o tamanho dela é que vira o compasso. É o modo toca e vê no que dá.
MIDI E PEDALEIRA
O mapa padrão já vem pronto e aceita nota ou CC para cada ação, porque pedaleira bluetooth às vezes manda um, às vezes o outro. CC dispara com valor 64 ou mais, e todos os canais são aceitos.
| Ação | Nota | CC |
|---|---|---|
| Trilha 1 a 5 REC/DUB | 60..64 | 20..24 |
| Trilha 1 a 5 STOP | 65..69 | 30..34 |
| Trilha 1 a 5 CLEAR | 70..74 | 40..44 |
| ALL START | 75 | 50 |
| ALL STOP | 76 | 51 |
| UNDO/REDO | 77 | 52 |
| CLEAR ALL | 78 | 53 |
| REC GLOBAL | 79 | 54 |
Para remapear: clicar em MIDI MAP, clicar no campo e pisar no pedal. Botão direito apaga o vínculo. O mapa é salvo junto com o projeto.
A tela de mapeamento, feita para ser configurada com o pé
DECISÕES DE PROJETO
Desfazer sem alocar memória no thread de áudio. Cada trilha tem dois buffers: a base consolidada e a camada do último overdub. Tocar é somar os dois, e desfazer é só parar de somar, uma operação instantânea. Quando um overdub novo começa, a camada anterior é dobrada na base um frame por vez, conforme o loop passa por aquele ponto. Nunca existe um memcpy de dezenas de megabytes dentro do callback de áudio.
Nada de malloc depois do activate. Todos os buffers são alocados de uma vez quando o host ativa o plugin. Comandos da interface chegam ao áudio por uma fila SPSC sem lock, e o estado volta para a interface por atômicos.
Eventos caem no sample certo. O bloco de áudio é fatiado nos instantes dos eventos MIDI, então o pedal não é arredondado para o começo do buffer.
COMPILAR E INSTALAR
Isso compila, roda os testes e copia o plugin para ~/.clap/RC5LOOP.clap. No REAPER, em Preferências > Plug-ins > CLAP, confirmar que ~/.clap está na lista de caminhos e clicar em Re-scan. O plugin aparece como CLAP: RC5LOOP (Mister RickRoss).
Dependências: gcc, cmake, pkg-config, cairo-devel, libX11-devel. Os headers do CLAP já vêm no repositório.
LIMITAÇÕES CONHECIDAS
Estas são reais, não são "em breve".
- Overdub só em x1 para frente. Com REV ou velocidade diferente de 1, o comando é recusado e aparece um aviso na tela. É consequência direta do fold incremental.
- Desfazer é de um nível só, igual ao RC-505. Desfaz a última sessão de overdub, não a anterior.
- Desfazer no meio da primeira volta de um overdub novo pode tirar mais do que você quer. Depois de uma volta completa, o comportamento é exato.
- O áudio dos loops não é salvo no projeto. Só os parâmetros e o mapa MIDI. Fechou o projeto, perdeu os loops.
- Trilhas em velocidade diferente de 1 saem do sincronismo com o tempo, exatamente como no hardware.
- Mudar o TEMPO depois que existe loop mestre não faz nada. A partir daí quem manda é o loop gravado. Para trocar de andamento é CLEAR ALL.
- Teto de 60 s por trilha, cerca de 230 MB de RAM a 48 kHz. Para mudar: ./build.sh -DRC5_MAX_LOOP_SECONDS=120.
- Interface X11 apenas. Funciona no Wayland via XWayland, que é como o REAPER já roda.
- Só CLAP. Sem VST3 e sem LV2 por enquanto.