La Phase dans DStudio

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: La Phase dans DStudio

Messagepar thierryvalk » jeu. 7 janv. 2016 22:16

Ce joue principalement dans les cafés où l'on y boit plus de bières que de café.
Et a un certain moment, oui, cela devient du hasard. :ghee:

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

Re: La Phase dans DStudio

Messagepar alka » ven. 8 janv. 2016 15:37

ayé, thierry m'a envoyé des fichiers et j'ai pu jouer avec excel qui sait faire une FFT. comme outil de débug excel est super !

l'explication du délai était correcte mais mal appliquée ;)
Quand on exporte une impulse de Rephase, elle est décalée d'un Offset de n samples. Offset d'autant plus grand plus si on centre l'impulse.
Cet offset représente un décalage fixe (un délai) de d = n/Fs secondes.
Ce délai donne pour la fréquence f un déphasage de Δϕ = (360 * f * d )
Le déphasage est en degrés dans l'intervalle [0, 360[ modulo 360

Le résultat du calcul de la FFT est tableau de nombres complexes. La première moitié du tableau donne les valeurs utiles pour les fréquences de 0 à Fs/2. (La deuxième moitié du tableau est inutile pour nous. Elle contient en "miroir" les conjugués complexes de la première moitié.)
Si le tableau a une longueur de N, la fréq de l'indice i du tableau est f = i * Fs/N (Fs/N est la résolution de la FFT)
Amplitude = 20 * log(Abs (FFT)) en dB
Phase = 180/Pi * Arg(FFT) donne la phase en degrés dans l'intervalle ]-180, 180] . atan2 fait pareil.

Cette phase est la phase de sortie de fft. Il faut la corriger du déphasage linéaire causé par l'offset de l'impulse.

Comme on voit , l'une est dans l'intervalle ]-180, 180] et l'autre dans [0, 360[. Faut faire un peu de gymnastique avant d'additionner.

Ma façon de faire et il y a sans doute mieux :
Commencer par mettre la phase calculée par la ftt de ]-180, 180] vers [0, 360[.
Phase_fft_360 = (Phase_fft + 360) modulo 360

Ensuite ajouter le déphasage causé par le délai de l'offset :
Phase_corrigée_360 = (Phase_fft_360 + Δϕ ) modulo 360
[avec Δϕ = (360 * f * d ) et d = offset_en_samples/Fs ]

Pour finir, on ramène dans ]-180, 180]
si (Phase_corrigée_360 > 180) alors (Phase_Corrigée_180 = Phase_Corrigée_360 - 360) sinon (Phase_Corrigée_180 = Phase_Corrigée_360)

et ça marche ! :)
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: La Phase dans DStudio

Messagepar thierryvalk » ven. 8 janv. 2016 15:49

C'était pas compliqué alors :aille:

Vais tenter ne pas me planter en codant ça en C#, j'espérait quelque chose de bien en forme avec les déclarations et tout ...

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

Re: La Phase dans DStudio

Messagepar alka » ven. 8 janv. 2016 15:57

c'est du pseudo_code, je sais pas faire mieux :)

non pas compliqué, tout est dans la phrase de nyquist, cad celle du milieu
"Comme on voit , l'une est dans l'intervalle ]-180, 180] et l'autre [0, 360[. Faut faire un peu de gymnastique avant d'additionner"
une sombre affaire de correction d'angle. la fonction existe peut etre en c#

un truc qui m'échappe encore c'est le besoin de centrer l'impulse avant de l'importer dans DStudio. Va falloir que je me mette sérieusement au FIR.
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: La Phase dans DStudio

Messagepar thierryvalk » ven. 8 janv. 2016 16:01

un truc qui m'échappe encore c'est le besoin de centrer l'impulse avant de l'importer dans DStudio. Va falloir que je me mette sérieusement au FIR.

En phase minimum comme en IIR l'impulse est symétrique, pas en phase linéaire d'où le temps de latence du FIR.
(enfin c'est ce que j'ai +- compris)

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

Re: La Phase dans DStudio

Messagepar alka » ven. 8 janv. 2016 16:34

la dernière que tu m'as envoyée et qui fait un déphasage nul : oui, elle est bien symétrique autour de son pic.
Les autres non.
Je suppose que lorsqu'on fait du FIR c'est qu'on cherche la phase nulle ou linéaire. Je comprend bien qu'il faut l'impulse en entier et on ne peut pas se caler sur le pic et évacuer ce qui est avant.
Centrer l'impulse avant d'exporter c'est le plus simple pour tout avoir mais ça créé un gros délai. L'idéal serait de la déplacer juste ce qu'il faut sans perdre d'information utile. Il doit y avoir un optimum.

Ca me fait penser aux discussions sur le décalage d'impulse dans rephase pour gagner en délai dans DStudio.
je finirai par reconstituer le puzzle, mais pas aujourdh'ui ;)
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: La Phase dans DStudio

Messagepar thierryvalk » ven. 8 janv. 2016 17:14

Oui, puis si l'on peut abuser, tu nous concocterai un rePhase que l'on pourrait intégrer à DStudio et l'on pourrait faire de la correction presque en temps réel.

Mais en attendant et grâce à Alain :merci: , voici ce que l'on pourra voir dès la prochaine version de DStudio :
phase.PNG

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

Re: La Phase dans DStudio

Messagepar louisr » ven. 8 janv. 2016 17:55

Super :super:
J'installe l'adau1452 ce soir, et je reçois une carte son dans la semaine, je vais pouvoir profiter de vos travaux bientôt ::d

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

Re: La Phase dans DStudio

Messagepar thierry38 » ven. 22 janv. 2016 20:30

Hello Thierry, :)

J'ai une piste.
Premièrement j'ai centré l'impulse dans ma table FFT de longueur de 32768, j'ai donc le même nombre de zéro rajoutés devant et derrière.
Je fait la FFT.
Puis je prend la phase de N0 que j'additionne avec N32768, ensuite N1 avec N32767 et ainsi de suite.


C'est une bonne façon de faire.
tout ce qui est "à droite " de t=0 est à phase minimale (phase décroissante)
tout ce qui est "à gauche" de t=0 est à phase maximale (phase croissante).
la somme des 2 "côtés" donne la résultante.(surtout si l'impulse est symétrique,la phase=0 sur tout le spectre).

L'amplitude est quasi immuable (si la fenêtre FFT est large,large),seul ce calage de temps reste pour afficher des phases "académiques" (textbook).

Un peu comme quand on fait AxB dand REW (ou Holm),les amplitudes s'ajoutent (en log),et les phases aussi.

C'est plus la nature de la lib FFT qui est utilisé qui peut poser problème.

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

Re: La Phase dans DStudio

Messagepar thierryvalk » ven. 22 janv. 2016 20:47

HellOoooo Thierry,
Donc je n'avais pas tout faux, bien. :merci:
La méthode d'Alain semble fonctionner très bien mis à part un tout petit décalage en fréquence pas bien dérangent vu que le but est juste de voir si l'on a la même courbe que dans rePhase question d'être certain d'avoir importé la bonne impulse.

Par contre cette histoire de représentation temporelle, c'est intéressant mais franchement pas simple (pour moi du moins) de se représenter le pourquoi du comment.

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

Re: La Phase dans DStudio

Messagepar alka » mar. 16 févr. 2016 09:49

je profite de ce sujet pour voir si j'ai compris ce que fait Rephase. Si quelqu'un peut confirmer :
Il s'agit de prendre l'IR d'un filtre (ou d'un système) et de faire la convolution avec l'IR symétrique. La nouvelle IR obtenue correspond a un nouveau filtre FIR, dont la réponse en amplitude est identique au filtre initial mais la phase est modifiée et devient linéaire. Ou si l'impulse résultante est centrée sur t=0, devient a phase nulle.
Un filtre fir a phase nulle ou phase linéaire c'est pareil, a un délai près.
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: La Phase dans DStudio

Messagepar thierryvalk » mar. 16 févr. 2016 10:01

Sur le comment du pourquoi je ne vais pas te répondre car je raconterais trop de bêtises.
rePhase permet de créer une IR de A à Z au moyen d'EQ et autres fonctions de filtres.
L'import d'une mesure dans rePhase permet de visualiser les effets des réglages sur la courbe importée avec une courbe demandée et une courbe simulée via nombre de taps, centrage ...
Donc on peut très bien ne jouer que sur l'amplitude ou la phase ou les 2.

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

Re: La Phase dans DStudio

Messagepar alka » mar. 16 févr. 2016 10:27

thierryvalk a écrit :Sur le comment du pourquoi je ne vais pas te répondre car je raconterais trop de bêtises.
rePhase permet de créer une IR de A à Z au moyen d'EQ et autres fonctions de filtres.
L'import d'une mesure dans rePhase permet de visualiser les effets des réglages sur la courbe importée avec une courbe demandée et une courbe simulée via nombre de taps, centrage ...
Donc on peut très bien ne jouer que sur l'amplitude ou la phase ou les 2.

ok, je reformule pour voir si je comprend : Rephase permet soit de partir d'une IR externe (une mesure importée qu'il transforme en IR) qu'on modifie ou pas, soit de créer from scratch un Filtre initial comme on veut. Il produit en sortie un filtre FIR avec les caractéristiques qu'on a demandé : l'amplitude telle que corrigée dans rephase et phase cible. Je cherche a valider si j'ai ben compris la manière dont il fait le travail de "rephasage " d'une l'IR pour en faire une avec phase linéaire.
(que ce soit rephase ou un autre soft de ce genre qui fabrique un filtre a phase linéaire d'ailleurs J'imagine qu'ils utilisent tous le même principe)
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: La Phase dans DStudio

Messagepar thierryvalk » mar. 16 févr. 2016 11:26

Rephase permet soit de partir d'une IR externe (une mesure importée qu'il transforme en IR) qu'on modifie ou pas

Non, on ne l'utilise pas dans l'IR produite.

On pourrait faire le // avec DStudio, les biquads créent une fonction de transfert et l'affiche.
On pourrait (comme le fait REW avec les EQ) prendre une mesure et y appliquer cette fonction pour l'affichage.


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Majestic-12 [Bot] et 8 invités