collapse

* Posts Recentes

Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


+ LASERs por dropes
[30 de Maio de 2025, 23:11]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

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

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

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 258
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: 258
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.378
    • 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 :)