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 : 3523
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 19:25

On change de registre et nouvelle question pour un champion. :hehe:

hp.PNG


En rose, Impulse de la mesure des HP de mon PC portable passé par une FFT et affichée. OK
En brun, même impulse passée par la FFT dont on récupère la table en complexe.
Cette table sert alors a initialiser la table qui va ensuite être multipliée par les biquads puis affichée. NOK
Il y a tout de même quelque chose qui fonctionne c'est l'effet des biquads; il y a une EQ à 1000Hz de -10dB avec un Q de 10.

Problèmes que je vois :
L'impulse est en 48K alors que les biquads en 96K.
Il y a que l'on fait une interpolation pas terrible.

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mer. 24 févr. 2016 19:27

thierryvalk a écrit :Bon la phase en FIR c'est OK, mais avec l'ancien système, donc après conversion en amplitude et phase.
Donc actuellement je suis incapable de mettre un délai directement sur les complexes.

c'est vrai qu'ici on tente de répondre aux questions.

Quand on comprend pas, faut reformuler.

Tout ce qu'on fait c'est toujours multliplier des complexes entre eux.
Ce sont toujours des résultats d'une fonctions de transfert, (sauf ceux issus de la FFT ou d'une mesure)
- Un biquad c'est une fonction un peu compliquée qui nécessite 6 lignes de code pour trouver sa valeur complexe
- Inverser la phase c'est aussi une fonction de transfert toute simple qui fait * -1. cad * (-1,0) partout. ce qui est (cos(180), sin(180))
- appliquer un gain c'est aussi une fonction de transfert toute simple qui fait * A. (avec A = 10^(G/20)). Ce serait * (A,0) partout.
- appliquer un délai c'est une fonction de transfert qui a pour résultat (cos(phi), -sin(phi)) avec w = 2.Pi.f.T (avec T en secondes)

Voici mon code vba pour appliquer les trois choses qui dépendent de la voie (Gain, inv phase, délai).
Je cumule les trois paramètres dans une seule fonction. Le nb complexe retourné par la fonction VH correspond dans ton cas à ce qu'il faut multiplier dans la case de la frequence Freq de ton tableau.

Dans ton tableau tu accumule HFFT * Hfiltre1 * H filtre2 * .... * HFiltreN * VH

Code : Tout sélectionner

Function VH(Freq, Fs, Sp, Gain As Double, Inv As Boolean) As String
' Ajoute l'effet des parametres sur la Voie: gain, inversion, délai
' Freq is frequency in Hz
' Fs is sampling frequency in Hz
' Sp is number of samples
' Gain is the gain in dB. on ne cumule pas avec celui du PEQ ou LowShelve ou HighShleve
' Inv is True if invert phase is checked
' returns complex

    Dim Phi, A As Double
    Dim PI As Double
   
    PI = WorksheetFunction.PI()
   
    ' initialisation
    VH = 1
   
    ' applique le déphasage du delai
    If Sp <> 0 Then
        Phi = 2 * PI * Freq / Fs * Sp
        VH = WorksheetFunction.Complex(Cos(Phi), -Sin(Phi))
    End If
   
    ' applique le gain
    If Gain <> 0 Then
        A = 10 ^ (Gain / 20)
        VH = WorksheetFunction.ImProduct(LineH, A)
    End If
   
    ' inverse si coché
    If Inv Then
        VH = WorksheetFunction.ImProduct(LineH, -1)
    End If
   
    ' vba uses the dot as decimal separator on my system, where excel expects a comma
    VH = Replace(LineH, ".", ",")
   
End Function
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mer. 24 févr. 2016 19:30

thierryvalk a écrit :On change de registre et nouvelle question pour un champion. :hehe:

En rose, Impulse de la mesure des HP de mon PC portable passé par une FFT et affichée. OK
En brun, même impulse passée par la FFT dont on récupère la table en complexe.
Cette table sert alors a initialiser la table qui va ensuite être multipliée par les biquads puis affichée. NOK
Il y a tout de même quelque chose qui fonctionne c'est l'effet des biquads; il y a une EQ à 1000Hz de -10dB avec un Q de 10.

Problèmes que je vois :
L'impulse est en 48K alors que les biquads en 96K.
Il y a que l'on fait une interpolation pas terrible.

par une FFT ... laquelle ?

yaurait pas un High-pass qui traine ? au hasard vers 500Hz
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 19:34

Phi = 2 * PI * Freq / Fs * Sp
VH = WorksheetFunction.Complex(Cos(Phi), -Sin(Phi))

:amen: :amen: c'est si simple de comprendre 2 lignes bien écrites.

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 19:38

par une FFT ... laquelle ?

Je n'en ai qu'une d'une longueur de 32278 .

yaurait pas un High-pass qui traine ? au hasard vers 500Hz

Normalement non, en regardant bien, il y a une courbe grise qui donne juste les EQ.
Et j'ai même testé sans y faire passer les biquads.

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mer. 24 févr. 2016 19:42

en passant: a l'époque ou on a fait le décalage de phase pour tenir compte du délai de centrage d'impulse de rephase, j'appliquais la formule (cosphi + i sinphi)
C'était avant qu'on me corrige pour dire que c'est moins au lieu de plus.

cela dit, la corection de sens de la phase c'est relatif. Si dans ton cas le décalage sur le résultat de la FFT marche en positif, c'est peut etre ça qu'il faut changer. Si tu rajoute du déphaaage au lieu d'en retirer, ça se voit tout de suite :mrgreen:
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 19:48

Oui, pour ce genre de truc, je ne m'en fait plus de bien longtemps, on a toujours une chance sur 2.

Le problème semble être au début :
hp1.PNG

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mer. 24 févr. 2016 19:50

quelle idée de commencer a 1Hz ! je t'ai dit que c'est que des ennuis :hehe:

thierryvalk a écrit :
yaurait pas un High-pass qui traine ? au hasard vers 500Hz

Normalement non, en regardant bien, il y a une courbe grise qui donne juste les EQ.
Et j'ai même testé sans y faire passer les biquads.
alors je donne ma langue a Félix ...
c'est du débug de code car ça ne devrait rien changer de passer par un calcul ou un autre.
Mais ca ressemble fichtrement a un passe-haut quand meme!
Deux mesures successives de HP de pc dans une pièce c'est sur que c'est pas égal au db près. Les deux se ressemblent sauf en dessous de 500 - 600Hz
Essaie ton smoothing pour mieux voir ;)
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 19:57

C'est la même mesure (fichier).

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mer. 24 févr. 2016 20:00

ah ok. alors c'est que le sampling différent qui donne tous ces détails de plus.
smoothing sur les deux, y a que ça de vrai pour les mesures type point d'écoute, non fenetré. sinon c'est toujours que du gribouillis.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 20:03

Mon smoothing n'est pas encore automatisé, risque de faire des bêtises et tourner plus en rond.

Si tu regardes bien, la courbe rose est ok et l'autre identique mais comme si l'échelle des dB était plus grande.

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 20:08

Yessss :gene:
hp2.PNG


Le coupable :
double magnitude = 20 * Math.Log(fc[i].Module);
double magnitude = 20 * Math.Log10(fc[i].Module);

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

Re: Calculs audio numérique pour les nuls

Messagepar louisr » mer. 24 févr. 2016 20:12

thierryvalk a écrit :Yessss :gene:
Le coupable :
double magnitude = 20 * Math.Log(fc[i].Module);
double magnitude = 20 * Math.Log10(fc[i].Module);


Décidément :hehe: :hehe:

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mer. 24 févr. 2016 20:12

pfff un bug indigne :happy1:

cf page 1 post 1 de ce sujet. c'est pourtant écrit en petit, pour attirer l'attention :mrgreen:
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » mer. 24 févr. 2016 20:29

Et pour jouer, le HP de mon PC corrigé.

hp3.PNG


Demain rajouter la correction FIR, ce fameux délai et tout le reste.

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » jeu. 25 févr. 2016 17:22

Premier problème du soir.
Suis occupé à mettre au propre et appliqué le délai sur les complexes avant passage en magnitude/phase.
Le signe du sin est bien + sinon c'est gribouillis.
Simple impulse en FIR qui passait très bien avant mais maintenant j'ai comme du bruit sur la phase en dessous de 100Hz
Une idée ?

le code :

Code : Tout sélectionner


int i
=0;
            int ii = 0;
           
            while 
( i< 16384)
                 {
                i = (int)Math.Pow(2, (double)ii / 48);
                double fx = i * fsfir / 32768;

                double phi = (* Math.PI * fx )/ fsfir * picimpulse;
                Complexe c = new Complexe(Math.Cos(phi), Math.Sin(phi));
                cft[i] = cft[i] * c; //delai
                fftre[ii].frequence = fx;
                fftre[ii].magnitude = 20.0 * Math.Log10(cft[i].Module);
                fftre[ii].phase = cft[i].Argument * 180 / Math.PI;
                ii++;
                }

            return fftre;
 

Et pour afficher

Code : Tout sélectionner


 i 
= 0;
                 while (ffty[i].frequence < 20000)
                 {
                     list1.Add(ffty[i].frequence, ffty[i].magnitude);
                     if (ffty[i].magnitude > -80) { list2.Add(ffty[i].frequence, ffty[i].phase); }
                     i++;
                 }
 

et le problème
fir.PNG


Edit peut être une piste ou du moins un autre soucis, mon EQ était à -12dB et elle s'affiche à -24dB.
Et la phase suit aussi ce x2, vérifié avec une EQ en IIR.

Edit 2 : vérifié avec ancienne version de DStudio et idem, donc bug qui existe depuis un moment.


Edit d'Edith, j'ai me suis trompé d'impulse de référence, devrais nettoyer mon disque dur.

Edit 3 : Selon moi le problème provient du résultat de la fft qui est linéaire en fréquence et que j'y vais à la pêche avec des arrondis (c'est pas clair mais je me comprend +-)

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » jeu. 25 févr. 2016 18:48

Je confirme, en prenant les 16384 points de la FFT c'est bon.
Il faudrait donc soit tomber juste soit faire le smooting après soit ....

razzortec
Messages : 148
Enregistré le : jeu. 16 juil. 2015 17:37

Re: Calculs audio numérique pour les nuls

Messagepar razzortec » jeu. 25 févr. 2016 19:03

Je te soutiens..............


Retourner vers « DSPiy général »

Qui est en ligne

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