Algoritimo de filtro

Software e Hardware para DSP

Moderadores: joao, guest2003, 51

Algoritimo de filtro

Mensagempor vtrx » 18 Fev 2021 18:10

Comecei a me aventurar em efeitos de áudio,Eco,Chorus ,reverb,pitch etc.
Estou estudando usando o STM32F103,que é o que tenho e mãos,e me deparei com um filtro que funciona muito bem,mas não sei o funcionamento pois estou usando exemplos que encontro.
A rotina é a seguinte;
Código: Selecionar todos
#define FILTER_BUF         9
...
 const float filter_coeff[FILTER_BUF] =
{
   0.0200, 0.0647, 0.1664, 0.2489, 0.2489, 0.1664, 0.0647, 0.0200
};
...
u16 low_pass(u16 input)
{
   int i;
   static float buffer[FILTER_BUF];
   u16 result;
   
  for (i = (FILTER_BUF-1); i > 0; i--)
   {
      buffer[i] = buffer[i-1];
   }
   buffer[0] = input;
   
  for (i = 0; i < FILTER_BUF; i++)
  {
      result += buffer[i] * filter_coeff[i];
  }
   
   return result;
}

Alguém pode me explicar qual o algoritmo,quero alterar para outras frequências.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2174
Registrado em: 20 Abr 2008 21:01

Re: Algoritimo de filtro

Mensagempor eletroinf » 18 Fev 2021 18:39

É um filtro FIR.
Tem alguns programas grátis para calcular os coeficientes, como:

http://digitalfilter.com/enindex.html

e

http://iowahills.com/

Estes sites também têm a explicação básica de como os filtros funcionam.
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 905
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: Algoritimo de filtro

Mensagempor vtrx » 18 Fev 2021 18:44

Uma rotina que me fez ficar pensando é essa;
Código: Selecionar todos
#define PITCH_BUF2        500

....
u16 pitch_down(u16 input)
{
   static int index_wr = 0;
   static int index_rd = 1;
   static u8 half = 0;
   static u16 buffer[PITCH_BUF2];
   
   buffer[index_wr] = input;
   
   half++;
   if (half == 2)
   {
      index_rd++;
      half = 0;
   }
   if (index_rd >= (PITCH_BUF2-1))
   {
      index_rd = 0;
   }
   index_wr++;
   if (index_wr >= (PITCH_BUF2-1))
   {
      index_wr = 0;
   }
   
   return buffer[index_rd];
}


O pitch fica extremamente baixo,em tempo real.
Não entendi como ela funciona.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2174
Registrado em: 20 Abr 2008 21:01

Re: Algoritimo de filtro

Mensagempor vtrx » 21 Fev 2021 09:55

Alguem sabe um esboço para simular aumentar e diminuir um audio?
Pensei que era só diminuir o valor de cada amostra.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2174
Registrado em: 20 Abr 2008 21:01

Re: Algoritimo de filtro

Mensagempor vtrx » 21 Fev 2021 20:51

Por enquanto consegui implementar Reverb,Eco uma repetição e inversão do áudio em tempo real,44.100khz/mono com 72MHz.
Ainda não estou usando memória externa.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2174
Registrado em: 20 Abr 2008 21:01

Re: Algoritimo de filtro

Mensagempor vtrx » 13 Mar 2021 16:57

Voltando ao filtro (FIR),encontrei um utilitário que gera os coeficientes,mas não entendi qual o valor final.
A rotina que uso utiliza 8 coeficientes,o utilitário tem esta opção,mas não entendi o significado das frequência que tem como opção.
Criei um aplicativo para enviar os coeficientes em tempo real para a placa,assim gerei vários coeficientes e testei os que não geraram 'ruído'.
Consegui gerar 10, mas não sei como classifica-los, pois não entendi como foram calculados.
Segue o aplicativo que gera os coeficientes para se alguém tiver paciência tentar me explicar o setup das frequências.

https://drive.google.com/file/d/1qEog0Uh7kWPcebCpuEsaS5zXX8MtglhM/view?usp=sharing
Avatar do usuário
vtrx
Dword
 
Mensagens: 2174
Registrado em: 20 Abr 2008 21:01

Re: Algoritimo de filtro

Mensagempor Guri » 03 Abr 2022 18:14

Muito legal vtrx.

Eu também estou começando a mexer ou pelo menos tentando iniciar testes com filtros e efeitos em audio.
Fiquei meio desanimado, por causa da crise no setor dos chips, que infelizmente aqui no Brasil, estão explorando como bem querem, preços absurdos.

Como andam seus trabalhos!

Valeu :roll:
DEUS SEJA LOUVADO
GURI (VonNilmam)
Guri
Byte
 
Mensagens: 451
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Re: Algoritimo de filtro

Mensagempor vtrx » 03 Abr 2022 20:13

Guri escreveu:Muito legal vtrx.

Eu também estou começando a mexer ou pelo menos tentando iniciar testes com filtros e efeitos em audio.
Fiquei meio desanimado, por causa da crise no setor dos chips, que infelizmente aqui no Brasil, estão explorando como bem querem, preços absurdos.

Como andam seus trabalhos!

Valeu :roll:

Consegui uns Micros com preço bom no AliExpress e comprei.
Agora estou aguardando para receber e saber se são bons para comprar mais.
Engraçado que dei um tempo nas interfaces que vendo para outro projeto pois com a pandemia houve uma queda,além do problema dos 'chips',de repente as vendas voltaram,as interfaces que tinha pronto acabou e tem um cliente que me pediu uma certa quantidade.
Avisei que só daqui um mês.
Parece que meu sistema operacional tem um vírus que descobre quando estou sem material e avisa os clientes para comprarem...
Avatar do usuário
vtrx
Dword
 
Mensagens: 2174
Registrado em: 20 Abr 2008 21:01


Voltar para DSP

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x