Adicionar harmônicos ímpares / pares para sinalizar?

12

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.

Carlos Barbosa
fonte
3
Por que você deseja adicionar harmônicos? O que você está tentando realizar? Com que tipo de sinal você está trabalhando?
Jim Clay
O que estou tentando fazer é obter alguns efeitos de distorção muito simples, mas estou tendo dificuldade em encontrar referências exatas. O que eu gostaria é algo semelhante ao que o abutre de cultura 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.
Carlos Barbosa
1
@CarlosBarbosa Você deve editar essas informações nos comentários da sua pergunta. Forneça detalhes - quanto mais interessante for a pergunta para a comunidade, mais respostas você poderá esperar e respostas de melhor qualidade.
Penelope
porque os harmônicos ímpares são mais perigo do que até mesmo harmônica no sistema de energia

Respostas:

17

O que sua caixa de distorção faz é aplicar uma função de transferência não linear ao sinal: output = function(input)ou y = 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:

  • Se a sua função de transferência tiver simetria ímpar (pode ser girada 180 ° sobre a origem), ela produzirá apenas harmônicos ímpares (1f, 3f, 5f, ...). Um exemplo de sistema com simetria ímpar é um amplificador de corte simétrico.
  • Se a sua função de transferência tiver simetria uniforme (pode ser refletida no eixo Y), os harmônicos produzidos serão apenas harmônicos de ordem par (0f, 2f, 4f, 6f, ...) O 1f fundamental é um harmônico ímpar e é removido. Um exemplo de sistema com simetria uniforme é um retificador de onda completa.

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)ou y = 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^4ou y = x + abs(x). A x +mantém o fundamental, que de outra forma seriam destruídos, enquanto o x^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:

y = x ^ 6 função de transferência

Sinal original em cinza, com sinal distorcido em azul e espectro de sinal distorcido mostrando apenas harmônicos uniformes e não fundamentais:

y = x ^ 6 espectro

Simetria estranha:

Função de transferência com simetria ímpar:

y = x ^ 7 função de transferência

Sinal original em cinza, com sinal distorcido em azul e espectro de sinal distorcido mostrando apenas harmônicos ímpares, incluindo fundamentais:

y = x ^ 7 espectro

Mesmo simetria + fundamental:

Função de transferência com simetria uniforme e função de identidade:

y = x + x ^ 4 função de transferência

Sinal original em cinza, com sinal distorcido em azul e espectro de sinal distorcido mostrando harmônicos pares mais fundamentais:

y = x + x ^ 4 espectro

É 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:

  • onda senoidal (somente harmônica ímpar fundamental) → seno retificado de onda completa (somente harmônicas pares)
  • onda quadrada (somente harmônicos ímpares) → CC (somente 0 ° harmônico)
  • onda dente de serra (harmônicos ímpares e pares) → onda triângulo (somente harmônicos ímpares)
  • onda triângulo (apenas harmônicos ímpares) → 2 × onda triângulo (somente harmônicos ímpares)

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?

endólito
fonte
Observe que as funções de exemplo aqui simplificam o entendimento da matemática, mas geralmente não são usadas em itens de áudio. Com x ^ 7, por exemplo, o sinal fica menos distorcido quanto mais você aumenta o ganho.
endolith
8

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:

 y=f(x)=d0 0+d1x+d2x2+d3x3+...+dNxN;

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:

Tk+1(x)=2xTk(x)-Tk-1(x);

T0 0(x)=1;

T1(x)=x;

T2(x)=2xx-1=2x2-1;

T3(x)=2x(2x2-1)-x=4x3-3x;

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.

sEun

sigrlami
fonte
Boa resposta, aprendi algo aqui. No entanto, não concordo com o uso da função de transferência de termos . Sua definição comum é a relação de saída para entrada de um sistema linear invariante no tempo no domínio da frequência. Seu sistema não é linear. Prefiro chamá-lo de característica ou apenas funcionar aqui.
DEVE
@Deve Obrigado. Sim, na verdade eu usei termo incorreto, apenas funcione o suficiente. Eu estava pensando ao exemplo de gravação do sistema linear, mas é bastante simples, de modo prazo permaneceu em meus pensamentos
sigrlami
Uau, obrigado por tudo isso, eu estarei lendo, apesar de muito, parece, alguma chance de algum exemplo de código c? Obrigado mais uma vez
Carlos Barbosa
T0 0(x)T1(x)y
@ Mohammad eles não estão relacionados exatamente, é apenas uma descrição simples da função polinomial se o iniciante do tópico não o conhece.
Sigrlami