Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Traitement du signal

7 réponses
Avatar
Achim Bombota
Bonjour,

je fais un petit programme qui génère un signal (à base de sinus, de
carré, etc) dans un fichier wav et je voudrais appliquer un filtre
logiciel sur "l'échantillon" final.

Je suis à la recherche d'infos sur le principe de fonctionnement d'un
tel filtre.

Il y a bien des choses sur harmony-central, mais c'est en anglais et
c'est souvent largement au-dessus de ma compréhension des maths !

Je ne cherche pas du code tout fait, mais plutôt une explication la plus
simple possible de la théorie.

Vous auriez une piste ?

--
Fred

7 réponses

Avatar
Achim Bombota
Le 25/02/2010 10:22, Achim Bombota a écrit :
Bonjour,

je fais un petit programme qui génère un signal (à base de sinus, de
carré, etc) dans un fichier wav et je voudrais appliquer un filtre
logiciel sur "l'échantillon" final.

Je suis à la recherche d'infos sur le principe de fonctionnement d'un
tel filtre.

Il y a bien des choses sur harmony-central, mais c'est en anglais et
c'est souvent largement au-dessus de ma compréhension des maths !

Je ne cherche pas du code tout fait, mais plutôt une explication la plus
simple possible de la théorie.

Vous auriez une piste ?



Hello

suite à l'agression sur un pylône téléphonique par un tractopelle,
j'étais privé d'Usenet depuis ce message.

J'ai raté une réponse ?

--
Fred
Avatar
debug this fifo
Achim Bombota wrote:

je fais un petit programme qui génère un signal (à base de sinus, de
carré, etc) dans un fichier wav et je voudrais appliquer un filtre
logiciel sur "l'échantillon" final.

Je suis à la recherche d'infos sur le principe de fonctionnement d'un
tel filtre.




J'ai raté une réponse ?




"débuter en traitement du signal" de Jean-Noel Martin (ed Ellipses)
et le classique de Bellanger.
Avatar
siger
Achim Bombota a écrit :

suite à l'agression sur un pylône téléphonique par un tractopelle,
j'étais privé d'Usenet depuis ce message.

J'ai raté une réponse ?



Non.

--
siger
Avatar
Achim Bombota
Le 04/03/2010 19:41, siger a écrit :
Achim Bombota a écrit :

suite à l'agression sur un pylône téléphonique par un tractopelle,
j'étais privé d'Usenet depuis ce message.

J'ai raté une réponse ?



Non.



Merci :)
Avatar
grokub
Achim Bombota wrote:

J'ai raté une réponse ?



Mes «bibles» sont

- Theory and Application of Digital Signal Processing, Rabiner & Gold
- Digital Signal Processing, Oppenheim & Schafer
La suite Bellanger dont:
- Traitement Numérique du signal
- Analyse des signaux et Filtrage Adaptatif Numérique

Ce sont des références assez anciennes avec du code FORTRAN mais la
théorie n'a pas changé. Il y a pléthore d'ouvrages pus modernes.

En ligne:

The Scientist and Engineer's Guide to Digital Signal Processing
www.dspguide.com

Numerical Recipes
http://www.nr.com/oldverswitcher.html

Et plein de cours en ligne, un de mes préférés pour l'audio est la série
de Julius Smith au CCRMA: https://ccrma.stanford.edu/realsimple/


En gros, il faut commencer par les deux familles IIR/FIR, les méthodes
de synthèse pour chacune qui vous permettront de fabriquer des
passe-bas, passe-haut, passe-bande plus ou moins raides, avec des
caractéristiques de phase différentes (butterworth, chebychew, cauer,
puis fenêtrés pour les FIR).

Il y a bien des choses sur harmony-central, mais c'est en anglais et
c'est souvent largement au-dessus de ma compréhension des maths !



Double handicap, désolé. Quelques rares école françaises ou Belges
(Mons) ont des topos en ligne. Masson, Dunod, Eyrolles ont d'excellents
ouvrages en français (on a quand-même une bonne école française avec
le CNET et ses pointures). Mais il faudra passer par les maths pour
synthétiser les filtres, les coefficients ne sortent pas d'un chapeau.

Sinon, Matlab et son clone libre Octave possèdent des bibliothèques de
synthèse. Il existe des logiciels spécialisés dans la synthèse de filtre
mais je n'en connais pas de gratuits. Deux programmes historiques,
DOREDI et FIR pour le calcul respectif des IIR et des FIR, font à peu
près le tour de la question. Ils sont écrits en FORTRAN, mais vous
trouverez une multitude de traductions en particulier dans les Numerical
Recipes cités au-dessus.

Vous seriez surpris d'apprendre que j'utilise toujours DOREDI.FTN pour
calculer mes elliptiques (bien que munis d'un front-end qui m'évite de
perforer les cartes). Pour les butterworth c'est nettement plus simple.
Quelques équations implémentées en Max ou Octave font l'affaire.
On les trouve par exemple page 232 dans le Bellanger.

Une fois les coefficients calculés, l'implémentation ne demande pas de
maths. Juste la compréhension des topologies de filtres, qu'on traduit
servilement dans son langage préféré.

PureData (variante libre de Max/MSP) permet une implémentation
temps-réel. Deux topologies suffisent à peu près à tout implémenter:
une cellule biquad pour les IIR (qu'on cascade pour obtenir des ordres
supérieurs) et la ligne à retard à sorties multiples pour les FIR.

Par chance, c'est un domaine qui a été exploré avant la maladie de la
"brevetite" et dont tous les résultats sont dans le domaine public.



--
Jean-Yves Bernier <http://www.pescadoo.net/>
Avatar
Achim Bombota
Le 15/03/2010 14:04, Jean-Yves Bernier a écrit :

Bonjour,

ça fait un bail, non ?

Il y a bien des choses sur harmony-central, mais c'est en anglais et
c'est souvent largement au-dessus de ma compréhension des maths !



Double handicap, désolé.



Bon disons que je me débrouille un peu en maths et pas mal en anglais,
mais certaines notions de maths que je pourrais comprendre en français
sont nettement moins abordables expliquées en anglais.

Par chance, c'est un domaine qui a été exploré avant la maladie de la
"brevetite" et dont tous les résultats sont dans le domaine public.



J'archive votre message qui va me demander quelques jours à digérer !

Merci.
Avatar
grokub
Achim Bombota wrote:

Bon disons que je me débrouille un peu en maths et pas mal en anglais,
mais certaines notions de maths que je pourrais comprendre en français
sont nettement moins abordables expliquées en anglais.



Bellanger est votre ami. 460 pages à avaler sans modération.
Tiens, une postface de Picinbono. Ce fut un de mes profs.

J'archive votre message qui va me demander quelques jours à digérer !



Alors voila pour les jours suivants:

Comprenez d'abord IIR et FIR. Utilisez Google image, les schémas
parlent d'eux-même. L'IIR est récursif, il est potentiellement instable
(il se transforme en oscillateur, comme les passe-bande des synthés
qu'on pousse en résonnance). Le FIR est inconditionnellement stable,
il a des caractéristiques de phase plus intéressantes mais il coûte plus
cher en calcul. On l'utilise plutôt en transmissions, bien qu'il existe
des applications en audio (la convolution est un FIR). On peut
l'implémenter en FFT pour économiser le calcul.

Tout votre problème se ramènera à calculer les coefficients qu'on met
dans les boîtes "multiplier". C'est la synthèse de filtre.

Pour les IIR, on parle de Butterworth, Chebychew, Bessel, Cauer (j'en
passe) en référence aux auteurs de méthodes de calcul. Ils produisent
un jeu de coefficients différents. La topologie, par contre, ne change
pas. C'est toujours le même coup addition - retard de 1 échantillon -
multiplication.

Butterworth est le plus simple, même s'il n'est pas aussi performant en
coupure, il est plus gentil avec la phase, ce qu'on apprécie en audio.

La formule canonique du Butterworth donne un passe-bas, on obtient un
passe-haut complémentaire en inversant simplement deux coefficients. Et
un passe-bande en cascadant un pb et un ph, même s'il y a d'autres
manières de procéder.

Gaffe à la notation. Pour l'implémenteur, c'est le principal risque
d'erreur. Les auteurs utilisent des notations différentes, il est donc
important d'utiliser la topologie du même auteur, son schéma sur
lequel figurent les An et Bn.

Filtrer, c'est bien. Analyser - et surtout comparer - les caractéris-
-tiques des filtres, c'est mieux. Pour ça, on trace les réponses en
fréquence et en phase (Matlab/Octave fait ça trés bien).

Et attention aux oreilles quand un biquad diverge :)




--
Jean-Yves Bernier <http://www.pescadoo.net/>