Calculs audio numérique pour les nuls

Discutions générales sur le DSPiy et tout ce qui s'y rattache
Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Correction/filtrage semi-automatisé en FIR

Messagepar thierryvalk » ven. 19 févr. 2016 23:27

au fait, en sachant faire une FFT inverse et une convolution en c#, je pense bien qu'on pourrait tenter de rendre les filtres a phase 0 ou linéaire directement dans dstudio

Justement, tu n'aurais pas dans tes cahiers des explications limpides avec moyens memo techniques sur toutes ces phases ?

thierry38
Messages : 190
Enregistré le : jeu. 16 juil. 2015 16:17
Localisation : Grenoble fournaise/Frigidaire

Re: Correction/filtrage semi-automatisé en FIR

Messagepar thierry38 » sam. 20 févr. 2016 08:10

au fait, en sachant faire une FFT inverse et une convolution en c#, je pense bien qu'on pourrait tenter de rendre les filtres a phase 0 ou linéaire directement dans dstudio

FFT on sait faire


:) Bon courage.

Ce délai a 1000Hz correspond a un déphasage de 10°
La nouvelle phase mesurée sera de 35° ou de 55° ?
Yaka essayer pour voir. Moi je dis 55°


Pour la phase affichée sur une mesure,
pour simplifier l'impulse de mesure=IFFT(FFT(mesure)/FFT(sweep)).

l'impulse n'est pas calée,c'est d'ailleurs pour cela que l'on centre l'IR sur t=0,(à la main sur le plus fort dv/dt (Fs/2))
à moins de faire une mesure avec un loopback as time ref.,la phase affichée ne dépend que du bon vouloir de l'utilisateur.
(voir Holm,et REW avec estimate IR delay).

Viens de vérifier avec REW,donc c'est bien un offset négatif de l'impulse(shift sur la droite dans le temps) qui donne une phase de + en + négative.
Modifié en dernier par thierry38 le sam. 20 févr. 2016 16:23, modifié 1 fois.

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Correction/filtrage semi-automatisé en FIR

Messagepar thierryvalk » sam. 20 févr. 2016 08:53

Pour le moment du moins, le t0 est déterminé automatiquement sur le sommet de l'IR.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar alka » sam. 20 févr. 2016 09:39

@t38 : le calage initial de l'IR n'a pas d'importance. Tout ce qui compte c'est le décalage.
Que rajouter du délai fasse un déphasage négatif, me parait contre le sens commun. Si c'est ça la convention, elle n'est pas terrible. Je regarderai a l'occasion mais comme c'est pas grave, on va pas en faire un fromage.


thierryvalk a écrit :
on pourrait tenter de rendre les filtres a phase 0 ou linéaire directement dans dstudio
Justement, tu n'aurais pas dans tes cahiers des explications limpides avec moyens mnemo techniques sur toutes ces phases ?
suis moins a l'aise.
De ce que j'ai compris, un filtre a phase nulle ou a phase linéaire c'est pareil, a un délai près. (et délai = déphasage linéaire)
Autant je vois bien ce qu'est un filtre a phase linéaire autant physiquement je vois pas celui a phase nulle. Le pic de l'impulse sur t=0 je vois pas trop comment est représentée toute l'information avec t < 0 et a quoi elle correspond.
le 1452 sait avaler la table correspondant à un filtre a phase nulle ?
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Correction/filtrage semi-automatisé en FIR

Messagepar thierryvalk » sam. 20 févr. 2016 09:57

le 1452 sait avaler la table correspondant à un filtre a phase nulle ?

Aucune idée, très peu de documentation sur le FIR du DSP. Le simulateur de SigmaStudio fonctionne avec du FIR, mais apparemment là aussi il y a des discutions sur la représentation de phase.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar alka » sam. 20 févr. 2016 10:21

au sujet du sens du déphasage : thierry38 et REW sont d'acord . 2 contre 1, je me couche et adopte la convention ;) merci

donc je reprogramme mon intuition : quand on éloigne le micro du HP, la valeur absolue de la phase diminue. Inversement, quand on l'approche, elle augmente.

Faut changer le signe dans la formule du délai, ce que je vais faire de ce clic.
- appliquer un délai de t (secondes) c'est multiplier par le nb imaginaire [cos(phi) - i sin(phi)] avec Phi = 2.Pi.f. t


au passage : dans les controls de REW, quand il propose d'appliquer un délai c'est le décalage de son T0. Dans son cas, un délai positif c'est rapprocher T0 et l'impulse. Mettre un délai positif sans son controle fait bien augmenter la phase à une f donnée.
acheter un DSPiy ? c'est ici

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: Correction/filtrage semi-automatisé en FIR

Messagepar louisr » sam. 20 févr. 2016 12:19

Supers explications Alka !

thierryvalk a écrit :Merci pour ces explications structurées, car en général les explications sur les maths se font avec des maths pures et dures tout aussi indigestes et incompréhensibles que le problème de base.
:amen:


C'est un peu ce que je reproche à l'enseignement universitaire (je pense que c'est moins le cas en IUT/BTS) mais de manière général, on explique un phénomène uniquement par les maths. C'est particulièrement flagrant en électronique, qui est pour moi un domaine très pratique. Par exemple, j'ai eu un cours en début d'année sur les diodes, on a vu les caractéristique IV, les modèles, mais à aucun moment on nous a dit à quoi ça servait une diode. Je trouve ça dommage..
Pour revenir aux complexes, ils ont l'avantages d'être très puissants tout en étant très visuels. C'est énormément utilisé en automatique, à travers Laplace et Fourrier.
J'ai un cours sur le traitement du signal l'année prochaine, j'espère que je pourrai être à jour sur le FIR, Convolution & co parce que la.. :(

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar alka » sam. 20 févr. 2016 14:52

louisr a écrit :J'ai un cours sur le traitement du signal l'année prochaine, j'espère que je pourrai être à jour sur le FIR, Convolution & co parce que la.. :(
j'ai presque tout oublié des miens qui datent de quelques années ... Image

du coup je me pose plein de questions rigolotes.
par exemple, lorsqu'on fait H(jw) = H1(jw) * H2(jw) serait ce équivalent à la convolution h(t) = h1(t) * h2(t) ?
acheter un DSPiy ? c'est ici

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: Correction/filtrage semi-automatisé en FIR

Messagepar louisr » sam. 20 févr. 2016 15:14

Si tu parles bien du produit de convolution, oui :
Image

avec x(t) et y(t) deux fonctions de transferts dans le domaine temporelle, X (p) et Y(p) leur équivalence dans le domaine de Laplace, et "TL" la transformé de Laplace. Sachant que pour passer dans le domaine fréquentielle il suffit de remplacer P par jw.
Désolé pour la qualité de la photo, je ne peux pas faire mieux.

Edit : ça montre d'ailleurs l’intérêt de calculer dans Laplace ou Fourrier : au lieu de se trimbaler des intégrales dans le domaine temporelle, il suffit de multiplier les deux fonctions de transferts..

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar alka » sam. 20 févr. 2016 15:48

en théorie nous sommes d'accord. Sachant que nous sommes en discret, ce sont des sommes finies pas des intégrales.

autre question (et là je n'ai pas d'idée sur la réponse )
que donne dans le domaine fréquentiel la symétrique d'une impulse dans le domaine temporel ?

dit autrement :
Soit une impulse x(t) centrée sur t=0 qui va de [0 , tmax]
La symétrique y c'est celle qui va de [-tmax , 0] telle que y(t) = x(-t)
si X (jw) = FFT [ x(t) ]
que donne Y(jw) = FFT [ y(t) ] ?
au vogelpick je tenterai bien Y = le conjuqué de X .
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
philby
Messages : 325
Enregistré le : ven. 10 juil. 2015 12:28
Localisation : Gironde France
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar philby » sam. 20 févr. 2016 16:19

C'est pas faux...

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: Correction/filtrage semi-automatisé en FIR

Messagepar louisr » sam. 20 févr. 2016 16:23

alka a écrit :en théorie nous sommes d'accord. Sachant que nous sommes en discret, ce sont des sommes finies pas des intégrales.


Une intégrale c'est une somme de petits éléments, donc ça doit être similaire.
Sinon pour le reste, j'suis pas très à l'aise avec les impulse, je vais regarder me renseigner et y réfléchir

Edit : Dans le cas continu, il me semble qu'il y a un soucis avec les temps négatifs et Laplace/Fourier. La notion de signal "causal" revient souvent : c'est un signal qui vaut 0 pour tous les t<0. https://fr.wikipedia.org/wiki/Causal_(signal).
Dans le cas discret, d'après ce que je lis, on peut faire des réponses impulsionnelle +- non-causals, par mémorisation des échantillons. C'est de la que vient le délais en FIR ou rien à voir ?
https://fr.wikipedia.org/wiki/Traitement_num%C3%A9rique_du_signal
C'est un peu expliqué la :
http://herve.boeglen.free.fr/Tsignal/chapitre3/chapitre3.htm
Dans le cas discret, il faut faire une transformé en Z que je connais absolument pas. Bref j'ai pas du tout répondu à ton problème Alka, mais j'ai fait quelques recherches et j'ai appris plein de choses ::d
Modifié en dernier par louisr le sam. 20 févr. 2016 17:15, modifié 2 fois.

thierry38
Messages : 190
Enregistré le : jeu. 16 juil. 2015 16:17
Localisation : Grenoble fournaise/Frigidaire

Re: Correction/filtrage semi-automatisé en FIR

Messagepar thierry38 » sam. 20 févr. 2016 16:39

par exemple, lorsqu'on fait H(jw) = H1(jw) * H2(jw) serait ce équivalent à la convolution h(t) = h1(t) * h2(t) ?

oui,une multiplication dans le fréquentiel (jw) correspond à un produit de convolution.
c'est ce qu'on obtient en faisant AxB dans REW,Holm.
ou une déconvolution est égale au produit avec un filtre inversé (A/B par ex= Ax1/B).

un filtre FIR à phase nulle (zéro phase) ,ce serait un filtre FIR de 1 taps,qui ne servirait pas à grand chose.
une impulse symétrique donne une phase linéaire,mais retardée de taps/2.

En post processing (après une mesure par exemple) on peut toujours recaler (vers la gauche) de taps/2 pour obtenir un filtre zéro phase.
mais en temps réel ce n'est pas possible,il y aura toujours une latence de taps/2 en ph.lin.(IR symétrique).

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: Correction/filtrage semi-automatisé en FIR

Messagepar louisr » sam. 20 févr. 2016 17:42

Bon je crois que j'ai trouvé.
On a une impulse y(t) quelconque qui démarre à -Tmax et qui finie à 0. Comme pour t<0, y(t) n'est pas égale à 0, l'impulse n'est pas causale. D'après ce que je lis ci dessous :
http://herve.boeglen.free.fr/Tsignal/chapitre3/chapitre3.htm,
On va lui appliquer un retard pour que pour tous les t<0, l'impulse soit nulle. On va donc la décaler d'une durée t=Tmax.
On se retrouve donc avec un truc de la forme :
y(t)=x(t-Tmax), et ça, on connait la transformé de Laplace/fourrier :
TL{x(t-Tmax)}=X(p)*exp(-Tmax*p) ce qui donne en fréquentielle : FT(Y)=X(jw)exp(-Tmax*jw).
A vérifier, je suis pas sur de moi à 100% car je maîtrise vraiment pas le sujet. J'essayerai de tracer des graphes, ça sera peut-être plus compréhensible.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar alka » sam. 20 févr. 2016 18:26

@Philby : :mrgreen:
@thierry38 : merci. donc pas de prise de tete avec les zero phase dont je voyais pas a quoi ça pouvait correspondre de toute façon dans le monde réel.

Louis : y(t)=x(t-Tmax) c'est la décaler de tmax. Un décalage c'est connu dans la littérature. je veux la symétriser et j'ai pas trouvé.

Vous ne me voyez pas venir ? une IR convoluée avec sa symétrique garde la même réponse a une magnitude au carré et devient "phase linéaire" ;)

J'ai posé ma question avec une impulse centrée sur 0 car je pensais simplifier pour exprimer l'idée de la symétrique. Manifestement une mauvaise idée car confusionne.
mathématiquement, on se fiche d'avoir des indices négatifs. Le temps négatif ça n'arrete pas un mathématicien ;)

Reprenons un cas qui perturbe pas :

Impulse de départ x(t) en bleu, centrée sur t0.
x(t) définie seulement a partir de t0. rien avant.
En rouge y(t) est sa symétrique (un miroir). Sauf erreur, y(t) = x(2.t0 - t) avec y(t) définie jusqu'à t0.

Image

si on connait X (jw) y a t il moyen de connaitre facilement Y (jw) ?
vogelpick me dit Y = conjuqué de X mais je ne lui fais pas confiance
acheter un DSPiy ? c'est ici

thierry38
Messages : 190
Enregistré le : jeu. 16 juil. 2015 16:17
Localisation : Grenoble fournaise/Frigidaire

Re: Correction/filtrage semi-automatisé en FIR

Messagepar thierry38 » sam. 20 févr. 2016 18:27

Hello Louis

...On va lui appliquer un retard pour que pour tous les t<0, l'impulse soit nulle. On va donc la décaler d'une durée t=Tmax.
On se retrouve donc avec un truc de la forme :
y(t)=x(t-Tmax), et ça, on connait la transformé de Laplace/fourrier :
TL{x(t-Tmax)}=X(p)*exp(-Tmax*p) ce qui donne en fréquentielle : FT(Y)=X(jw)exp(-Tmax*jw).


Le raisonnement est le bon.
En pratique,(numérique),il n'y a pas d'opération de retard,le calcul se fait en flux tendu.
il y a 2 manières de faire de la convolution temps réel.(et offline aussi)
moteur direct (multiplication/addition) "brutale" (comme le DSPiy) y(t)=h(t)*x(t)
moteur FFT/iFFT (càd en passant en fréquentiel et en faisant Y(jw)=H(jw) x X (jw) puis retour au temporel (iFFT)

J'avais dessiné un schéma sur HCFR.

Image
Image

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: Correction/filtrage semi-automatisé en FIR

Messagepar alka » sam. 20 févr. 2016 19:09

bon, ben puisque vous voulez pas répondre a ma question je tente vogelpick dans excel :)

et il semble bien qu'il ait raison...

voila un BUTT12 qui filtre sans modifier la phase :)
edit: plus vraiment un BUTT12 en fait (voir plus loin)

Image
acheter un DSPiy ? c'est ici

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: Correction/filtrage semi-automatisé en FIR

Messagepar louisr » sam. 20 févr. 2016 19:14

Effectivement j'ai mal interprété le problème. Mais cette histoire de t<0 me gêne. :perv:

Tu peux détailler un peu ton test avec ton vogelpick ? ::d

Hello Thierry,
Merci de ta réponse et du schéma, j'ai saisi, sauf le dernier schéma :gene:


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités