collapse

* Posts Recentes

Super obsolescência super programada? por SerraCabo
[06 de Agosto de 2022, 11:36]


Motor de aspirador por dropes
[02 de Agosto de 2022, 22:18]


Serviço de dessoldar e soldar micro-usb tlm Samsung GT-S6312 por senso
[01 de Agosto de 2022, 22:20]


Condensador Poly .47K X2 por brunus
[26 de Julho de 2022, 16:11]


pequeno robot arte por Robotarium
[21 de Julho de 2022, 15:45]


Diferença entre fontes por jm_araujo
[13 de Julho de 2022, 09:27]


Dual Op-amp Test board - uma ideia simples, barata e bem esgalhada. por dropes
[10 de Julho de 2022, 20:35]


PHILCO Radio Manufacturing Factory Automation 1929 por SerraCabo
[10 de Julho de 2022, 18:22]


Meu novo robô por josecarlos
[08 de Julho de 2022, 23:06]


Desenvolvimento para RaspberryPi Pico em Windows < 10 por KammutierSpule
[06 de Julho de 2022, 09:15]

Autor Tópico: Fiz um port dos Audio filters da WebAudio API  (Lida 504 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 235
Fiz um port dos Audio filters da WebAudio API
« em: 06 de Dezembro de 2021, 12:22 »
Bom dia a todos,

Fiz um port dos Audio filters da WebAudio API. Estes filtros do WebAudio normalmente são implementados pelos “fabricantes” dos diferentes Browser’s e normalmente são feitos em C++. Tradicionalmente o seu código é muito mais complexo de se entender pois a API é extensa, neste port eles estão implementados de uma forma muito mais simples e mais fácil de entender.
No entanto continua a ser DSP’s, mas eles são muito fáceis de usar.

O código, os testes, e a geração dos gráficos e as FFT’s está todo implementada em Rust, o original era em Python, contudo já era um port da versão em C++.

Peço-vos que vejam a página do projeto pois eu esforcei-me para que fosse fácil de visualizar o comportamento dos diferentes filtros, tanto em ganho vs frequência como em desfasamento de fase vs frequência.

Podem também visualizar facilmente a resposta do filtro.

Todos os filtros são implementados enquanto parâmetros de um filtro BiQuad IIR (Infinite Impulse Response) de segunda ordem.

Os filtros implementados e parametrizáveis são os seguintes:

-low pass
-high pass
-band pass
-all pass
-peak
-PeakEQ_constant_Q
-low shelf
-high shelf
-notch
-Parametric 10 Band Equalizer

Os filtros são parametrizáveis em:
-frequency
-sample rate
-q_factor
-gain (dB)

GitHub - Audio filters in Rust
https://github.com/joaocarvalhoopen/Audio_filters_in_Rust

Os detalhes deste port e todas as referências estão na página do projeto.

A licença é MIT Open Source.

Obrigado,

Cumprimentos,
João
« Última modificação: 08 de Dezembro de 2021, 19:34 por blabla »

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 235
Re: Fiz um port dos Audio filters da WebAudio API
« Responder #1 em: 08 de Dezembro de 2021, 19:33 »
Boa noite,

hoje tinha algum tempo livre e decidi implementar neste projeto um 10 Band Equalizer paramétrico, implementei-o usando 10 filtros Peak_EQ com fator Q constante (novo tipo), com eles cálculo os coeficientes de um filtro IIR BiQuad de 2º ordem. Eles estão colocados em cadeia ou sequência.
O ganho e o Q_factor pode ser mudado em tempo real.

Coloquei um exemplo já, parametrizado com as respetivas respostas de frequência, tanto em gain (dB) como em Phase Shift  (são os últimos dois gráficos da pág do projeto).

Mais uma vez a implementação é em Rust, mas é fácil de perceber, mesmo para quem não saiba muito de Rust. Coloquei todas as referencias de modo a que seja fácil a outras pessoas desenharem o seu próprio equalizador, lendo aquilo que eu li e vendo o meu código.

O código está suficientemente genérico para que possa ser usado para criar Equalizadores com qualquer números de bandas ou frequências.

Obrigado,

Cumprimentos,
João

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.364
    • Tiago Rodrigues
Re: Fiz um port dos Audio filters da WebAudio API
« Responder #2 em: 20 de Dezembro de 2021, 13:39 »
Obrigado por partilhares, vou espreitar :)