Para uma modulação aleatória em degraus, escolha um novo valor em intervalos regulares e mantenha-o até a próxima atualização. Este fluxo de trabalho no REAPER usa um tom sintético e um pequeno efeito JSFX de ganho personalizado para criar degraus aleatórios de volume com duração e faixa definidas.

A tarefa é intencionalmente restrita: fazer com que um único tom sustentado mude de nível de forma imprevisível, sem deslizar continuamente entre níveis. O método automático abaixo exige que você copie um programa de efeito completo uma vez. Uma seção posterior explica como criar uma escada repetitiva e editável com os envelopes de automação nativos do REAPER.

O que torna a modulação aleatória em degraus?

Três escolhas determinam o resultado: quando um valor muda, qual novo valor é escolhido e como o efeito chega a esse valor. Neste fluxo de trabalho, o tempo é regular, o nível é pseudoaleatório e a transição é imediata. Entre as atualizações, o ganho permanece constante.

Uma sequência ilustrativa poderia manter −15 dB por 250 milissegundos, saltar para −9 dB pelos 250 milissegundos seguintes e depois saltar para −18 dB. Esses números ilustram o comportamento; não são medições nem uma sequência de saída garantida.

O sistema de modulação de parâmetros do REAPER oferece um LFO com controles de Speed, Strength, Phase e direção. O sistema de automação oferece, separadamente, pontos de envelope Square. São ferramentas diferentes: a velocidade do LFO controla a taxa de modulação, enquanto os segmentos quadrados do envelope definem valores mantidos entre pontos. Consulte os capítulos 18 e 19 de Up and Running: A REAPER User Guide.

O efeito personalizado abaixo torna explícito em seu código o comportamento de manutenção do valor. Ele processa diretamente o ganho estéreo; não configura uma fonte universal aleatória em degraus para todos os demais parâmetros de plug-ins.

Prepare um tom sintético sustentado

Comece com um projeto vazio do REAPER e uma faixa. Adicione ReaSynth à cadeia de FX dessa faixa. A documentação do REAPER descreve o ReaSynth como um sintetizador que pode ser tocado a partir de itens MIDI, portanto não é necessário gravar nem usar um arquivo de áudio externo. Seus controles incluem volume de saída, sustain e misturas de formas de onda. The REAPER Cockos Effects Summary Guide, ReaSynth.

Use esta configuração simples para a fonte:

  1. Defina o andamento do projeto como 120 BPM e use uma seção de quatro compassos em 4/4.
  2. Selecione a faixa e faça uma seleção de tempo que cubra esses quatro compassos.
  3. Escolha Insert → New MIDI Item.
  4. Clique duas vezes no item MIDI para abrir o editor MIDI. Desenhe uma nota e estenda sua borda direita até o fim do item.
  5. No ReaSynth, comece com Volume em torno de −12 dB e Sustain em 0 dB. Deixe Square mix, Sawtooth mix e Triangle mix em zero para obter um tom simples.

O fluxo de criação e edição de itens MIDI está documentado no capítulo 13 do REAPER User Guide. O andamento, a duração e os níveis específicos usados aqui são configurações de exemplo, não requisitos do aplicativo.

Reproduza a seção antes de adicionar a modulação. Confirme que a faixa produz um tom sustentado. Se ele parar cedo, verifique a duração da nota e a configuração de sustain. Será mais fácil avaliar as mudanças de ganho se a própria fonte mantiver um nível constante.

Adicione um efeito que mantenha cada nível aleatório

JSFX é o sistema integrado do REAPER para efeitos escritos como programas de texto. O REAPER compila esses programas quando são carregados; este exemplo não precisa de uma biblioteca de programação externa. Sua estrutura segue a referência de programação JSFX oficial.

Abra View → FX Browser. No menu FX do navegador, escolha Create new JS FX e dê ao efeito um nome distinto, como Stepped Random Gain. Abra o código-fonte usando Edit JS FX, substitua o conteúdo inicial pelo programa completo abaixo e salve-o. Esses comandos de criação e edição estão documentados na seção 16.16 do REAPER User Guide.

desc:Stepped Random Gain
slider1:250<20,2000,1>Step duration (ms)
slider2:-18<-60,0,0.1>Level endpoint A (dB)
slider3:-6<-60,0,0.1>Level endpoint B (dB)
in_pin:Left
in_pin:Right
out_pin:Left
out_pin:Right

@init
remaining = 0;
gain = 1;

@slider
interval_samples = max(1, floor(srate * slider1 / 1000 + 0.5));
low_db = min(slider2, slider3);
high_db = max(slider2, slider3);
remaining = 0;

@sample
remaining <= 0 ? (
  level_db = low_db + rand(1) * (high_db - low_db);
  gain = 10 ^ (level_db / 20);
  remaining = interval_samples;
);

spl0 *= gain;
spl1 *= gain;
remaining -= 1;

Este é um efeito de áudio estéreo completo, não um fragmento. Adicione-o depois do ReaSynth na cadeia de FX da faixa. Limpe qualquer filtro de pesquisa do navegador de FX se o nome não estiver visível.

O programa usa rand(1) para obter um valor pseudoaleatório e mapeia esse valor entre os dois limites em dB. A sintaxe condicional, o operador de exponenciação e a função aleatória da linguagem estão documentados em JSFX Programming Reference — Language Essentials.

O contador usa srate, a taxa de amostragem atual do REAPER. Cada amostra passa pelo mesmo ganho armazenado até o contador chegar a zero. Os dois canais recebem esse ganho, portanto o efeito não randomiza seus níveis de forma independente. O REAPER documenta srate, spl0 e spl1 em JSFX Programming Reference — Special Variables.

O programa foi conferido com base nessas referências. A aritmética do contador também foi verificada separadamente em 44,1 e 48 kHz; o próprio JSFX não foi executado no REAPER para este artigo.

Defina a duração dos degraus e a faixa de níveis

Comece com Step duration (ms) em 250, Level endpoint A (dB) em −18 e Level endpoint B (dB) em −6. Essas configurações selecionam um novo valor de atenuação quatro vezes por segundo. Cada valor selecionado dura o intervalo inteiro, a menos que você altere um controle.

Os limites especificam o ganho aplicado depois do sintetizador. Eles não representam leituras desejadas nos medidores de saída. Por exemplo, −6 dB corresponde a um multiplicador de amostra de aproximadamente 0,501, enquanto −18 dB corresponde a aproximadamente 0,126. O sinal da fonte e o processamento subsequente da faixa ainda determinam a saída final.

Comportamento desejado Configuração de exemplo O que muda
Patamares lentos e distintos 1.000 ms Um novo nível por segundo
Degraus moderados 250 ms Quatro novos níveis por segundo
Degraus mais rápidos 125 ms Oito novos níveis por segundo
Diferenças menores entre níveis Limites de −9 e −6 dB Uma faixa de seleção mais estreita
Atenuação constante para comparação Ambos os limites em −6 dB Cada seleção produz o mesmo ganho

A 120 BPM, uma colcheia dura 250 milissegundos: 60 segundos divididos por 120 batidas e depois por dois. Este é um cálculo de tempo trabalhado. O efeito fornecido usa milissegundos e não acompanha mudanças de andamento nem alinha os degraus à grade musical do projeto.

Os limites podem ser inseridos em qualquer ordem, pois o programa os ordena. Alterar qualquer controle deslizante inicia um novo intervalo na próxima amostra processada. O nível aleatório é mantido sem interpolação, embora duas seleções consecutivas possam, por acaso, ser próximas.

Crie uma escada repetitiva editável

Use um envelope de automação quando quiser valores exatos em posições exatas da linha do tempo. Essa também é a forma nativa recomendada para aplicar mudanças mantidas a um parâmetro de efeito exposto. O REAPER documenta os envelopes de parâmetros e o formato de ponto Square no capítulo 18 do seu User Guide.

Para um padrão de volume fixo, primeiro desative o JSFX personalizado. Abra os controles de envelope da faixa e exiba o envelope Volume. Mantenha a faixa em Trim/Read enquanto edita manualmente.

Crie pontos em intervalos de 250 milissegundos usando Shift-clique e depois mova-os para níveis irregulares. Clique com o botão direito em um ponto e use Set Point Shape → Square. Aplique esse formato a cada ponto cujo segmento de saída deve manter o valor. O envelope deve mostrar patamares horizontais seguidos de mudanças verticais.

Para o parâmetro de outro efeito, toque no controle desejado e escolha Param → Show track envelope. Em vez disso, adicione e ajuste o formato dos pontos nesse envelope. O fluxo de trabalho do menu de parâmetros está descrito em The REAPER Cockos Effects Summary Guide.

Inserir valores irregulares manualmente cria um padrão fixo; isso não gera novos valores aleatórios a cada reprodução. Para reutilizá-lo, selecione seu intervalo de tempo, clique com o botão direito no envelope e escolha Automation items → Insert new automation item. O REAPER oferece suporte a itens de automação em loop e a cópias agrupadas cujas edições são propagadas para as demais cópias. REAPER User Guide, Automation Items.

Solucione movimentos suaves, mudanças ausentes e falta de repetibilidade

Se o envelope ainda estiver inclinado, inspecione o formato do ponto de saída. Linear cria uma rampa; Square cria o segmento mantido necessário aqui. Um LFO quadrado e uma escada multinível desenhada manualmente também têm funções diferentes: alternar simplesmente entre dois níveis não cria uma sequência arbitrária de níveis.

Se o efeito personalizado não produzir mudanças perceptíveis, confirme que ele está depois do ReaSynth, que está ativado e que os limites são diferentes. Experimente degraus de 1.000 milissegundos com limites de −24 e −6 dB para facilitar a inspeção da estrutura. Depois, volte à faixa necessária para o seu projeto.

Mudanças abruptas de ganho podem introduzir cliques porque o multiplicador da amostra muda imediatamente. Este programa não inclui intencionalmente nenhum suavizador. Diferenças menores entre os níveis podem reduzir o tamanho dessas descontinuidades, mas não garantem uma saída sem cliques. Adicionar uma rampa de transição mudaria o comportamento exato de degrau imediato.

O efeito foi projetado para uma faixa estéreo e modifica apenas os dois primeiros canais de áudio. Ele não grava pontos de automação, salva uma sequência aleatória escolhida, quantiza os valores para um conjunto pequeno de níveis nem oferece sincronização com o andamento. Normalmente, o REAPER executa uma seção JSFX @init quando a reprodução começa; este programa reinicia o contador nessa seção. Não conte com ele para reproduzir a mesma sequência aleatória depois de reiniciar. Referência das seções de código JSFX.

Use o efeito de ganho personalizado quando quiser níveis mantidos gerados automaticamente. Use a automação quadrada quando quiser editar, repetir e preservar mudanças específicas. Ambas as abordagens permitem que o tom sintético passe por patamares distintos; a escolha depende de ser mais importante obter novos valores ou seguir um padrão exato na linha do tempo.

Fontes