Como adiciono harmônicos ímpares ou pares a um sinal de ponto flutuante?
Eu tenho que usar tanh ou pecado?
O que estou tentando fazer é obter alguns efeitos de distorção muito simples, mas estou tendo dificuldades para encontrar referências exatas. O que eu gostaria é algo semelhante ao que o Culture Vulture faz adicionando harmônicos ímpares e pares em suas configurações de pentodo e triodo. O valor flutuante é uma amostra única em um fluxo de amostra.
audio
signal-detection
c
distortion
Carlos Barbosa
fonte
fonte
Respostas:
O que sua caixa de distorção faz é aplicar uma função de transferência não linear ao sinal:
output = function(input)
ouy = f(x)
. Você está apenas aplicando a mesma função a cada amostra de entrada individual para obter a amostra de saída correspondente.Quando o seu sinal de entrada é uma onda senoidal, um tipo específico de distorção é produzido chamado distorção harmônica . Todos os novos tons criados pela distorção são harmônicos perfeitos do sinal de entrada:
Então, sim, se você quiser adicionar harmônicos ímpares, coloque seu sinal através de uma função de transferência simétrica ímpar como
y = tanh(x)
ouy = x^3
.Se você deseja adicionar apenas harmônicos uniformes, coloque seu sinal em uma função de transferência que seja simétrica e uma função de identidade, para manter o fundamental original. Algo como
y = x + x^4
ouy = x + abs(x)
. Ax +
mantém o fundamental, que de outra forma seriam destruídos, enquanto ox^4
é ainda simétrica e produz apenas harmônicos pares (incluindo DC, que você provavelmente vai querer remover depois com um filtro passa-alta).Mesmo simetria:
Função de transferência com simetria uniforme:
Sinal original em cinza, com sinal distorcido em azul e espectro de sinal distorcido mostrando apenas harmônicos uniformes e não fundamentais:
Simetria estranha:
Função de transferência com simetria ímpar:
Sinal original em cinza, com sinal distorcido em azul e espectro de sinal distorcido mostrando apenas harmônicos ímpares, incluindo fundamentais:
Mesmo simetria + fundamental:
Função de transferência com simetria uniforme e função de identidade:
Sinal original em cinza, com sinal distorcido em azul e espectro de sinal distorcido mostrando harmônicos pares mais fundamentais:
É disso que as pessoas estão falando quando dizem que uma caixa de distorção "adiciona harmônicos ímpares", mas não é realmente precisa. O problema é que a distorção harmônica existe apenas para entrada de onda senoidal . A maioria das pessoas toca instrumentos, não ondas senoidais; portanto, o sinal de entrada possui vários componentes de onda senoidal. Nesse caso, você obtém distorção de intermodulação , não distorção harmônica, e essas regras sobre harmônicos ímpares e pares não se aplicam mais. Por exemplo, a aplicação de um retificador de onda completa (simetria uniforme) aos seguintes sinais:
Portanto, o espectro de saída depende fortemente do sinal de entrada, não do dispositivo de distorção, e sempre que alguém disser " nosso amplificador / efeito produz harmônicos de ordem par mais musicais ", você deve aceitá-lo com um pouco de sal .
(Há alguma verdade na afirmação de que sons com harmônicos pares são "mais musicais" do que sons com harmônicas ímpares , mas esses espectros não estão sendo produzidos aqui, como explicado acima, e essa afirmação é válida apenas no contexto de Escalas ocidentais de qualquer maneira. Sons ímpares harmônicos (ondas quadradas, clarinetes etc.) são mais consoantes em uma escala musical Bohlen – Pierce baseada na proporção de 3: 1 em vez da oitava de 2: 1.
Outra coisa a lembrar é que processos não lineares digitais podem causar aliases, que podem ser mal audíveis. Consulte Existe distorção não linear com banda limitada?
fonte
O que você está tentando alcançar é chamado distorção . Essas técnicas são usadas quando você deseja adicionar alguns harmônicos a um determinado sinal. Você tem 2 métodos básicos para fazer isso: modelagem de ondas e modulação de anel . Tentarei explicar o primeiro.
Waveshaping
O Waveshaping permite distorções através do uso de uma função especialmente selecionada . Um dos métodos úteis são os polinômios de Chebyshev . Eles têm uma propriedade muito importante ao apresentar através deles um sinal harmônico com amplitude unitária (por exemplo, uma onda senoidal), obtemos o mesmo sinal, apenas algumas vezes mais alto. O multiplicador de frequência dependerá da ordem do polinômio. Todos os polinômios são assim:
No nosso caso, cada elemento gera uma gaita e todos eles se somam. A exibição de cada membro é determinada pela seguinte relação de recorrência:
Como você pode imaginar, o segundo termo - o primeiro harmônico e o terceiro - o segundo e assim por diante.
Outra característica dos polinômios de Chebyshev, quando através deles emite um sinal cuja amplitude é menor que a unidade, a saída é um som menos saturado com harmônicos. Isso permite criar efeito de overdrive.
fonte