# Waveshaper

Em música eletrônica, waveshaping (modelador de ondas) é um método de síntese sonora realizada através da distorção da forma de onda, onde espectros complexos são produzidos a partir de tons simples, pela alteração do formato da onda.

## Funcionamento

Waveshaping é uma forma de modular um sinal sonoro (onda) passando-o por uma função não-linear escolhida adequadamente. A função f (chamada função de transferência) distorce a forma de onda de entrada, transformando-a em uma forma diferente. A nova forma depende da forma de onda de entrada, da função de transferência e, principalmente, da amplitude do sinal de entrada. Como a amplitude da onda de entrada afeta a forma da onda de saída (e, portanto, o timbre), isso nos possibilita uma maneira fácil de criar uma família de timbres que varia continuamente, através da simples variação do nível de entrada da transformação. Por esta razão, costuma-se incluir um controle de amplitude como parte da operação waveshaping.
A amplitude da senóide é chamada de índice de waveshaping. Em muitas situações, um índice pequeno resulta em distorções relativamente pequenas (portanto, em uma saída aproximadamente senoidal), enquanto um índice maior propicia um timbre mais rico e distorcido. Um exemplo familiar de Waveshaping é o em que f equivale a uma função de corte. Este exemplo mostra claramente como a amplitude de entrada - o índice - pode afetar a forma de onda de saída. A função de corte passa sua entrada inalterada para a saída desde que ela se mantenha no intervalo determinado. Então, quando a entrada (neste caso uma senóide) não excede o intervalo determinado, a saída é a mesma que a entrada. Mas quando a entrada cresce além do limite, ela é limitada e, conforme a amplitude do sinal aumenta, o efeito dessa ação de corte é progressivamente mais “grave”. Para uma entrada senoidal de amplitude decrescente, por exemplo, a saída evolui de uma forma de onda quase quadrada no início para uma senóide pura no final. Este efeito é bem conhecido por quem já tocou um instrumento ligado a um amplificador com overdrive. Quanto mais alta for a entrada, mais distorcida será a saída. Por esta razão, waveshaping às vezes também é chamada síntese de distorção.
Uma maneira muito mais simples de analisar a situação é considerando uma função de transferência
f(x)= x²
Para uma entrada senoidal,
x[n]=a*cos(ωn+Ø)
obtemos f[x(n)] = a²/2 * (1 + cos(2ωn+2Ø)).
Se a amplitude for igual a um, isso causará uma modulação em anel da senóide por uma senóide de mesma frequência e o resultado será uma saída de sinal DC (frequência nula) somado a um sinal de ao menos duas vezes a frequência original. Contudo, neste exemplo de waveshaping, ao contrário da situação na modulação em anel, a amplitude da saída cresce com o quadrado da entrada.
Mantendo a mesma função de transferência, consideramos agora o efeito do envio de uma combinação de duas senóides com amplitudes and a e Ø e freqüências angulares α e β. Para simplificar, vamos omitir os termos de fase inicial. Fazemos:
x[n] = a*cos(αn)+ b*cos(βn)
e passando isso por f, o resultado é
f(x[n]) = a²/2 * (1+cos(2αn)) + β²/2 * (1+cos(2βn)) + ab[cos((α+β)n)+cos((α-β)n)].
Os dois primeiros termos são somente o que obteríamos caso passássemos as duas senoides separadamente. O terceiro termo advém do produto dos dois termos de entrada.
f(x+y) = x²+2xy+y²
Este efeito, chamado intermodulação, torna-se cada vez mais dominante conforme o número de termos na entrada aumenta; se houver k senoides na entrada haverá apenas k termos “diretos” no produto, mas haverá (k²-k)/2 termos de intermodulação.
Em comparação com a modulação em anel, que é uma função linear do sinal de entrada, waveshaping não é linear. Fomos capazes de analisar os processos lineares considerando sua ação separadamente em todos os componentes da entrada, mas no caso não-linear também temos de considerar as interações entre os componentes. Os resultados são muito mais complexos e algumas vezes bem mais ricos sonoramente, contudo são também mais difíceis de compreender ou prever. De forma geral, podemos demonstrar que uma entrada periódica, não importa quão complexa, repetir-se-á com o mesmo período: se o período for de τ modo que
x[n+τ]=x[n]
então, obtemos imediatamente
f(x[n+τ])=f(x[n])
(em alguns casos especiais, a saída pode repetir a um submúltiplo do τ, o que nos fornecerá uma harmônica da entrada como resultado; veremos isso ocorrer mais a frente).
Combinações de tons periódicos em intervalos consonantes darão origem a produtos de distorção nas subharmonicas. Por exemplo, se dois sinais periódicos e estão separados de uma quarta musical (ou seja, se seus períodos estão na proporção 4:3), então a soma das duas repetições na taxa mais baixa será dada pela subharmônica comum (rever). Nas equações, teríamos:
x[t+τ/3]=x[t]
y[t+τ/4]=y[t]
o que implica
x[t+τ] + y[t+τ] = x[t]+y[t]
e assim a soma distorcida f(x+y) iria se repetir após um período τ:
f(x+y)[n+τ]=f(x+y)[n].
Isto é vivenciado pelo guitarrista que liga o amplificador em “overdrive” e toca as cordas abertas si e mi agudo em conjunto: o produto de distorção indica o mesmo que o mi grave, que está duas oitavas abaixo do agudo.
Para obter uma análise um pouco mais explícita dos efeitos da waveshaping em um sinal de entrada, às vezes é útil escrever a função f como uma série finita ou infinita de energia:
f(x)=f0+f1*x+f2*x²+f3*x³+...
Se o sinal de entrada x[n] é uma senoide, a*cos(ωn), podemos considerar a ação dos termos acima separadamente:
f(x[n])=f0+a*f1*cos(ωn)+a²*f2*cos²(ωn)+a³*f3*cos³(ωn)+...
Uma vez que os termos de ordem superior são multiplicados por potências superiores da amplitude , um valor mais baixo de reforçará os termos anteriores mais fortemente; um valor superior fará os termos de ordem superior mais proeminentes. O espectro individual de cada termo pode ser encontrado através da aplicação da fórmula do produto do cosseno repetidamente:
1=cos(0)
x[n]=cos(ωn)
x²[n]=1/2+1/2*cos(2ωn)
x³[n]=1/3*cos(-ωn)+2/4*cos(ωn)+1/4*cos(3ωn)
x^4[n]=1/8*cos(-2ωn)+3/8*cos(0)+3/8*cos(2ωn)+1/8*cos(4ωn)
x^5[n]=1/16*cos(-3ωn)+4/16*cos(-ωn)+6/16*cos(ωn)+4/16*cos(3ωn)+1/16*cos(5ωn)
e assim por diante. O peso relativo dos componentes será reconhecido como o triângulo de Pascal. Cada k-ésima linha pode ser aproximada por uma curva de Gauss cujo desvio padrão (medida de largura) é proporcional à raiz quadrada de k.
Os termos de frequência negativa (que têm sido mostrados separadamente aqui para maior clareza) devem ser combinados com os termos positivos; o envelope espectral é dobrado sobre si mesmo, da mesma forma como no exemplo com modulação em anel.
Enquanto os coeficientes fk forem todos maiores ou iguais a zero, as amplitudes das senoides nas expansões acima também o serão.
Nesse caso, todas as fases serão alteradas coerentemente à variação de α, então teremos uma ampliação do espectro (e possivelmente um aumento drástico de amplitude) com valores crescentes de α.
Por outro lado, se alguns dos são positivos e outros negativos, as expansões diferentes irão interferir destrutivamente, o que resultará numa evolução espectral de sonoridade mais complicada. Note também que as expansões sucessivas contêm apenas apenas parciais pares ou ímpares. Se a função de transferência (em forma de série) contiver apenas expoentes pares:
f(x)=f0+f2*x^2+f4*x^4+...
então o resultado, tendo apenas parciais pares, vai soar uma oitava mais alta do que a senóide de entrada. Se apenas potências ímpares aparecem na expansão de f(x), então a saída conterá apenas parciais ímpares. Mesmo se f não puder ser expresso exatamente como uma série de potência (por exemplo, a função de corte da figura 5,3 ), ainda é verdade que, se f é uma função par, isto é, se
f(-x)=f(x)
obteremos apenas harmônicas pares e se f é uma função ímpar,
f(-x)=-f(x)
obtemos harmônicas ímpares.
Muitos truques matemáticos têm sido propostos para uso de waveshaping como gerador de espectros especificados. Ocorre que você pode gerar senóides puras, em qualquer harmônico da fundamental usando um polinômio Chebyshef como uma função de transferência [ Leb79 ], e a partir daí você pode construir qualquer espectro estático desejado. A geração de famílias de espectros através do waveshaping de uma senóide de amplitude variável torna-se mais complicada, apesar de vários casos especiais interessantes serem encontrados.