collapse

* Posts Recentes

(Resolvido) Compro ULN2003 DIP por KammutierSpule
[01 de Dezembro de 2022, 11:58]


DIY - Robot Arm por dropes
[30 de Novembro de 2022, 14:55]


Curiosidade Ferro Soldar por dropes
[22 de Novembro de 2022, 12:17]


Fonte de alimentação +/-15V para tensões de entrada <80Vdc por jm_araujo
[14 de Novembro de 2022, 16:25]


ua796 jurássico por SerraCabo
[08 de Novembro de 2022, 23:55]


Resistência interna de transformador por SerraCabo
[08 de Novembro de 2022, 23:42]


Resistência paralela com bateria primária de Lítio. por jm_araujo
[06 de Novembro de 2022, 18:49]


Precisão de condensadores de origem na China por dropes
[05 de Novembro de 2022, 20:44]


Imagine this kind of development tools for your favourite Programming Language. por blabla
[04 de Novembro de 2022, 22:16]


Ajuda Identificar Resistência por SerraCabo
[02 de Novembro de 2022, 22:27]

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

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

Offline blabla

  • Mini Robot
  • *
  • Mensagens: 249
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: 249
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 :)