O famoso http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt oferece um conjunto de fórmulas [reais] de cálculo de filtro de biquad que geralmente funcionam bem.
No entanto, quando a frequência do filtro se aproxima da frequência de Nyquist, a especificação Q (largura de banda) de um filtro fica muito distorcida - geralmente diminui muito (embora o autor tenha mencionado que ele realizou um pré-empenamento necessário).
Estou em busca de fórmulas de filtro que não tenham uma distorção tão forte na largura de banda. Preciso de filtros de pico / sino, passa-banda, passa-baixo, passa-alto, prateleira alta e entalhe. Sei que isso pode ser feito como anteriormente, comprei uma fórmula de filtro de pico / sino / passa-banda com menos distorção, mas elas ainda não são perfeitas e preciso de outros tipos de filtro.
Então, também estou disposto a pagar pela solução, se o preço for justo.
Como alternativa, se alguém pudesse me indicar um algoritmo de otimização que funcione com filtros do domínio Z, também seria ótimo. Infelizmente, os algoritmos de otimização mais comuns não funcionam bem no domínio Z - eles não podem otimizar um conjunto de parâmetros para corresponder à resposta de frequência desejada (provavelmente devido às funções periódicas usadas para calcular a resposta de frequência).
fonte
Respostas:
Aqui está uma rápida olhada em como os 5 graus de liberdade para o EQ paramétrico podem ser vistos. é minha opinião sobre o que Knud Christensen da tc electronic inventou cerca de uma década atrás em uma convenção da AES e nesta patente .
portanto, esqueça o Cookbook (e os problemas de Q e largura de banda) e considere (no plano s) o EQ paramétrico como a soma de um filtro passa-banda (com um valor ) em paralelo com um fio:Q
são 4 botões para girar. mais um botão para adicionar (sem aumentar a ordem dos filtros) e concluiremos a adição de mais parâmetros independentes.
então, o que Knud faz aqui é substituir esse "fio" (aquele que segue " " na função de transferência) por um protótipo de filtro de prateleira que deve ter os mesmos pólos, os mesmos e que o BPF, para que o denominador seja o mesmo. a função de transferência dessa prateleira é:1 Q ω0
onde e é o diferencial de ganho da prateleira em dB. é isso que compensa o ganho em Nyquist para ser diferente do ganho em DC. Após a transformação bilinear, Nyquist é impulsionado pela dB e o ganho no DC permanece inalterado. Como o parâmetro boost, o parâmetro pode ser positivo ou negativo. é o ganho linear em Nyquist.R ≜10t i l t20 t i l t t i l t dB t i l t G0 0⋅ R
junte tudo isso e você obtém:
não importa como você veja isso, isso tem 5 graus de liberdade e esses 5 coeficientes de biquad são totalmente definidos a partir desses 5 parâmetros. não importa se você mapeia de para usando a transformação blinear ou a regra trapezoidal (efetivamente a mesma coisa) ou qualquer outro método que não altere a ordem do filtro. pode ser necessário alterar a definição de ou largura de banda, compensar e / ous z Q ω0 0 Q para efeitos de distorção de frequência (como você obtém com a transformação blinear), mas se você pagou muito dinheiro por algo que recebe um filtro IIR de segunda ordem, não importa se você o implementa com qualquer Formulário direto ou Formulário direto transposto ou No modelo Lattice ou Normalized Ladder ou na variável de estado de Hal Chamberlin ou Andrew Simpson, de analógico linear com integração trapezoidal, você obtém 5 coeficientes e eles podem ser mapeados para esses 5 parâmetros independentes. é tudo a mesma coisa. se você pagou ou não por uma licença ou não. a matemática é mais forte do que qualquer reivindicação feita por quem você está licenciando.
Apenas FYI, eu resolvido onde o verdadeiro pico ou vale frequência é quando não é uma que não é zero. a frequência em que o pico ou vale foi empurrado pela inclinação é:t i l t
você pode ver que, quando , então e, consequentemente, . o ganho de pico também pode precisar ser ajustado um pouco e isso ainda precisa ser resolvido. um bom palpite seria ou talvez .t i l t = 0 R = 1 ωpico=ω0 0 Gimpulso Gimpulso←GimpulsoR√ Gimpulso←Gimpulso- (R--√- 1 )
fonte
@Jazz, uma das coisas que aprendemos em engenharia elétrica é que qualquer ordem de equação diferencial pode ser dividida em um conjunto (ou "sistema") de equações diferenciais de primeira ordem. por isso, se a integração trapezoidal, com o mesmo "passo de tempo" está sendo usado de forma consistente para todos os integrais de tempo contínuo, para uma º de ordem linear ODE, você pode busto que até em equações diferenciais de primeira ordem. considere apenas um desses eqs diferenciais de primeira ordem:Δ t N N
novamente, considere emular um capacitor. permita que o período de amostragem seja seja o mesmo que " " usado na regra do trapézio.T=1 1fs Δ t
ou
no domínio s é
então a integração trapazoidal em momentos discretos é:
ou como valores de amostra em tempo discreto
aplicando a transformação Z
resolvendo paraV
parece que estamos substituindo
ou
que é precisamente o que o bilinear sem compensação pelo desvio de frequência faz.
fonte
Usando métodos de otimização, podemos obter a resposta de frequência de um filtro digital mais próxima do filtro analógico de destino.
No experimento a seguir, um filtro passa-banda de 6 ordens é otimizado usando Adam, um algoritmo de otimização frequentemente usado em aprendizado de máquina. As frequências acima da banda passante são excluídas da função de custo (peso zero atribuído). A resposta do filtro otimizado se torna mais alta que o alvo para frequências muito próximas de Nyquist, mas essa diferença pode ser compensada pelo filtro anti-aliasing da fonte de sinal (ADC ou conversor de taxa de amostragem).
fonte
tensorflow-gpu
versão 1.12.0, a otimização não é convergente, mas divergente.tensorflow
1.12.0 funciona melhor, mas a otimização não converge completamente, devido à escolha do otimizador (Adam) e sua taxa de aprendizado, e possivelmente devido à maneira como a função de custo é formulada. Atribuirei a recompensa a esta resposta, porque mostra uma abordagem moderna para otimização de coeficientes: diferenciação automática. Eu ainda gostaria de ver: otimização mais estável e organização dos coeficientes obtidos para uso em tempo real (como varreduras de parâmetros).Eu criei um design para o EQ de 10dB. Eu escolhi 20 filtros com frequências centrais entre 500 Hz e 16 kHz (Fs = 48 kHz). O gráfico superior abaixo é o design de acordo com o Audio-EQ-Cookbook da RBJ , que é bom, mas leva à distorção da largura de banda quando as frequências centrais se aproximam de Nyquist. O gráfico inferior é o novo design em que os filtros correspondem muito aos filtros de protótipo analógico:
E é assim que os novos filtros de entalhe se parecem com o Cookbook (largura de banda = 4 oitavas, maiorf0 0= 23 kHz):
A figura a seguir mostra um design de filtro passa-baixo (Q = 2 , f0 0= 16 kHz, Fs= 48 kHz). Observe que o novo design se aproxima do protótipo analógico e, por esse motivo, ele não funciona como um filtro passa-baixo convencional (não tem zero em Nyquist):
fonte