collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

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

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

Offline blabla

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