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 » mer. 6 janv. 2016 16:51

phase1.PNG


:fleur1:

Oui, un signe dans la conversion entier format DSP au format float.

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 » mer. 6 janv. 2016 17:04

C'est pas fini. X(
Si je rajoute un passe-haut dans rePhase à 1kHz en 48dB/octave :
phase2.PNG

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 » mer. 6 janv. 2016 22:18

plus grave car l'amplitude ne va plus et yapa de raison. T'es sur que rephase exporte bien avec le filtrage ?
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 » mer. 6 janv. 2016 22:29

RePhase n'est pas en cause, la cause au filtrage a phase linéaire qui fait que l'impulse avant le t0 est différent.
Pour le moment je ne vois comme solution que de passer deux fois dans la FFT.
Mais manquera encore le raccord de la phase.
RePhase coupe simplement l'affichage de la phase lorsque le signal est < 100 dB.

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 » mer. 6 janv. 2016 22:40

ah ok, je vois. T'es presque obligé de "centrer" l'impulse dans la table de la FFT pour avoir l'amplitude correcte.
Donc offset de X samples, (X étant grand) et que rephase t'indique.

Pourquoi pas juste tenir compte de cet offset pour l'affichage de la phase?
Cad que pour chaque freq f, tu corrige la phase calculée par la FFT en retirant X*durée_sample*f*360°

(ne pas afficher la phase quand amplitude < -100dB est aussi une bonne idée pour éviter la pollution inutile)
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 » mer. 6 janv. 2016 22:45

Cad que pour chaque freq f, tu corrige la phase calculée par la FFT en retirant X*durée_sample*f*360°

Ce serait plus propre, je lisais justement un truc du genre :
http://www.dsprelated.com/showthread/co ... onological

Tu peux développer ?
X= numéro du sample

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 » mer. 6 janv. 2016 22:51

thierryvalk a écrit :Tu peux développer ?
X= numéro du sample

X c'est l'offset que te donne Rephase en nb de samples.
C'est la formule classique du décalage de phase en dégré causé par un délai : déphasage = 360 * f * d
avec d = délai en secondes.
Dans ce cas, l'impulse est décalée d'un délai d = X * durée_d'un_sample_en_seconde
et c'est ce délai qu'il faut compenser.
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 » jeu. 7 janv. 2016 18:24

Testé et ne fonctionne pas.

pour chaque x :

ph = ffty[i].phase - 3500 * (1 / fs) * x;
while (ph < -180) ph = ph + 360;

ffty[i].phase = sortie de fft
3500 = 3500 sample pour une impulse de 7000.
fs = 48000
x = fréquence

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 » jeu. 7 janv. 2016 18:30

thierryvalk a écrit :Testé et ne fonctionne pas.

pour chaque x :

ph = ffty[i].phase - 3500 * (1 / fs) * x * 360;
while (ph < -180) ph = ph + 360;

ffty[i].phase = sortie de fft
3500 = 3500 sample pour une impulse de 7000.
fs = 48000
x = fréquence

manque un * 360
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 » jeu. 7 janv. 2016 18:33

pas mieux.

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 19:29

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.

Voici le résultat, ne pas tenir compte des lignes bleues.
Il reste quelques ratés mais la forme globale est bonne.
Edith : corrigé, il fallait faire revenir dans -180° à +180°
phasqe1.PNG


Edith 2 : en y regardant de plus prêt, c'est pas la même courbe que rePhase. :/

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 20:03

Bon dans la logique floue ....
Pas encore tout bien compris, mais 32768 en entrée de FFT donne la moitié en sortie.
J'ai donc appliqué le principe de l’addition mais avec N0 et N16384.
Et cette fois, mais je ne le crie pas trop fort, la courbe semble bien correspondre.
Reste tout de même qu'elle part dans tous les sens à partir de +- 12kHz.
Mais ce serra pour demain car cette phase commence tout du doucement a m'énerver.

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 » jeu. 7 janv. 2016 20:48

comprend pas trop non plus.

l'indice n/2 (ici 16384) dans le tableau de sortie d'une FFT rapide correspond a la fréquence de nyquist, cad Fs/2. (ici 24000Hz)
Tu t'es déjà arreté avant puisque n'affiche que jusqu'a 20k.
Si je me rappelle bien, la phase est forcément a 0 d'ailleurs pour cette fréq de nyquist.

pour le reste, comprend pas trop a quoi correspondent ces additions surtout si tu as centré l'impulse en entrée de fft. Je sais pas d'ou vient cette idée de centrer ou de décaler le pic de l'impulse en entrée de FFT. il n'y a pas de symétrie en entrée, l'algorithme analyse du début a la fin. C'est du temporel en entrée et ca doit commencer a t=0. La sortie de l'algortihme a une symétrie autour de l'indice n/2 avec un signal audio. Mais peu importe, puisqu'on n'exploite pas la deuxieme moitié du tableau. On s'est arreté avant car 20k < 24k. C'est toujours le cas puisqu'on sait que le résultat pour des freq > freq de nyquist n'ont pas de sens en audio.

La correction du délai me parait plus compréhensible. Et elle a fonctionné en shiftant l'impulse au début. (C'est ce qu'on a fait en effaçant la partie avant le pic de l'entrée : le t=0 de l'impulse correspondait au t=0 de la fft)
Peut etre faut il ajouter la correction 360*f*d au lieu de la soustraire?
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 » jeu. 7 janv. 2016 21:05

Oui, il y quelques trucs étranges et il faudrait faire le point avec une feuille de papier car pour le moment c'est du vogelpik.
Un de ces trucs étranges, c'est la répartition données dans le graphique.
Pour correspondre aux Hz en X je dois appliquer un coefficient de 1,48 alors qu'en toute logique, comme tu le dis j'ai normalement mon tableau qui va de 0 à 24 kHz.
Quoi que en écrivant c'est 24000 Hz repartis sur 16984 données.

Et ce qui ce passe avec mon système, c'est qu'il me manque la fin vu que je n'ai plus que 16984/2 données.

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 » jeu. 7 janv. 2016 21:31

32768 valeurs en entrée, Fs = 48k donne f0 = 48000/32768 = 1,4648 Hz. c'est la résolution.

dans le tableau de sortie de FFT, les valeurs de chaque indice i correspondent a la freq i*f0

arrivé a l'indice 32768/2 = 16384 tu est rendu a la freq de nyquist, 16384 * 1,4648 = 23 999 (c'est bon, aux arrondis près.)

comme l'affichage ne va que jusqu'a 20k, tu peux t'arreter de calculer Amplitude et Phase dès i=13654 (20k/1,4648)

du vogelpik... tiens tiens... :]
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 » jeu. 7 janv. 2016 21:51

Pourquoi tiens tiens, je viens de vérifier, c'est au Larousse.

Ok pour la répartition, comment expliquer que j'ai une phase qui semble correcte jusque a 12k en additionnant les phases ?
Faudrait que je retrouve l'article qui parlait de ca. De mémoire il parlait de multiplier les complexes de chaque côté tout en expliquant que cela revenait a une addition pour la phase.
Mais j'ai peut être très mal compris. :0

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 » jeu. 7 janv. 2016 22:08

thierryvalk a écrit :Pourquoi tiens tiens, je viens de vérifier, c'est au Larousse.

Ok pour la répartition, comment expliquer que j'ai une phase qui semble correcte jusque a 12k en additionnant les phases ?
Faudrait que je retrouve l'article qui parlait de ca. De mémoire il parlait de multiplier les complexes de chaque côté tout en expliquant que cela revenait a une addition pour la phase.
Mais j'ai peut être très mal compris. :0

parce qu'il y a une certaine symétrie dans le tableau de sortie autour de son milieu.
Avec une entrée audio, cad des nombres réels en entrée, la deuxième moitié du tableau de sortie de la FFT rapide contient les conjuqués de la première partie du tableau. (conjugué = même partie réelle, imaginaire inversé. donc phase inversée.) La deuxième moitié du tableau correspond aux fameuses freq négatives trouvées par l'algorithme.
Pour i=1, f= 1,46Hz. Pour i = 32768-1 = 32767 , f = -1,46Hz. Ces freq négatives c'est artificiel évidemment. En audio, on n'exploite pas la deuxième moitié du tableau car n'a pas de sens. N'oublions pas que la FFT est un outil mathématique qui s'applique a autre chose que de l'audio.

Si tu additionnes ces phases pour les fréq inverses comme tu faisais au début par symétrie d'un bout a l'autre du tableau, tu dois trouver phase=0. Normal, car nombre complexe C + son conjuqué Cbarre = pur réel, donc img = 0 et phase = 0.

Ce que tu fais maintenant, c'est additionner la phase pour f = 1,46Hz avec celle de i=16384-1 = 23697Hz. Je n'ai aucune idée de ce a quoi ça peut correspondre physiquement.
par hasard, ca peut donner quelque chose qui a l'air d'une phase.
acheter un DSPiy ? c'est ici

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 » jeu. 7 janv. 2016 22:11

thierryvalk a écrit :Pourquoi tiens tiens, je viens de vérifier, c'est au Larousse.
dans le larousse belge ! :mrgreen:

vogelpik signifie jeu de fléchette. Ce qui pour moi n'est pas un jeu de hasard... encore une expression qui n'a pas de sens
acheter un DSPiy ? c'est ici


Retourner vers « DSPiy général »

Qui est en ligne

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