Calculs audio numérique pour les nuls

Discutions générales sur le DSPiy et tout ce qui s'y rattache
thierry38
Messages : 143
Enregistré le : jeu. 16 juil. 2015 16:17
Localisation : Grenoble fournaise/Frigidaire

Re: Calculs audio numérique pour les nuls

Messagepar thierry38 » mar. 1 mars 2016 13:44

On peut générer une impulse sans aucun filtre,genre de 1Hz à 96KHz.
ça donne un presque "Dirac".

ou la somme de 2 impulses filtrées (onglet phase linéaire,pas l'onglet phase minimale).
si les 2 filtre PB et PH sont complémentaires,ça donne un presque "Dirac".

un peu comme une mesure de carte son rebouclée,(sauf le filtre passe-bas anti-repliement (anti aliasing) du DAC et de l'ADC).
c'est un Dirac,à qui il manque qq composantes hautes fréquences.

Edit:
Remarque,y'a un truc qu'on a sous les yeux (sans le savoir).
c'est une fonction de transfert électrique.
le 1 est un Dirac,(c'est valide aussi avec des passe-haut,de tout ordre,les all-pass,shelving...).

graphiquement,c'est Laplace,aussi con que cela puisse paraître (c'est une division de réponse en fréquence)

Image

Image

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » mar. 1 mars 2016 15:33

pas tout compris a ton post. a la troisième lecture peut être mais pas sur :/

Ce qui est sûr c'est que si on met 1 en entrée, on obtient 1 en sortie.
FFT(1) = iFFT(1) = 1
autrement dit, une réponse en fréquence toute plate à 0dB de 0Hz à fs/2 donne une impulse d'un magistral dirac de 1.
Dans les calculs of course. En réalité on n'est pas pret de le mesurer à 1 ne serait ce que parce qu'aucune carte son ne passe le continu.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierry38 » mar. 1 mars 2016 17:14

:) Oui,un Dirac (1) est égale à 0dB et 0° de 0Hz à fréquence infinie.(la perfection...un Alien de Ridley Scott).
En pratique,on s'en approche fortement (dans les limites électro et acoustiques ).

C'est vrai que c'est un peu contre-intuitif,on se dit mais où sont les basses fréquences ?,(c'est la surface dans le "1" qui regroupe toute l'énergie des sinus).
Dans le cas REW ci-dessous,il normalise l'amplitude à 1 pour simplifier.Ccomme les impulses servent au calage dans temps,l'amplitude affichée est secondaire.

Image

.

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

Les Impulses pour les nuls

Messagepar alka » ven. 4 mars 2016 16:39

suite des sessions pour les nuls : parlons Impulse

D'abord, pourquoi s'intéresser aux Réponses Impulsionnelles (IR)?
pour la convolution pardi !

Si on a une réponse impulsionnelle et qu'on fait la convolution avec une autre IR ou un signal, on obtient le mix des deux.

Concrètement, si on a la réponse impulsolanelle de la Chapelle Sixtine et qu'on a l'enregistrement de son piano dans une salle neutre, faire la convolution donnera le même résultat que si on avait enregistré le piano dans la chapelle ! chouette, non ?

On peut faire la convolution sur son pc ou, si on a un "moteur de convolution" comme un DSP, on peut l'appliquer en direct sur un flux de données.

Cette possibilité est exploitée par toutes sortes d'appareils pour appliquer des traitements audio, reverb par exemple, bien mieux que les triturations habituelles des DSP. Nous l'exploitons avec l'impulse de filtres audio que le moteur de convolution dans l'ADAU1452 va appliquer au flux audio entrant dans le DSPiy.
La convolution demande une grosse capacité de traitement.

Les IR (réponses impulsionnelles) sont aussi bien pratiques pour faire quelques opérations comme le gating par exemple (fenêtrage temporel).

Au fait, une Impulse c'est quoi ?
Comme son nom l'indique, c'est la réponse d'un système à une "Impulsion".
Impulsion aussi nommée Dirac du nom du mathématicien qui a planché sur ces questions.

Cette "Impulsion" est un signal instanné qui contient toutes les fréquences. C'est théorique bien sûr.
Ce qui s'en rapproche le plus c'est le Bang! d'un coup de fusil ou d'un ballon qui explose.
Évidement on ne tire pas sur son appareil ou son HP pour le mesurer ! les logiciels comme REW savent calculer la réponse impulsionnelle a partir d'une mesure en réponse à des sinus en sweep ou en steps.

IR = domaine temporel.
Une IR c'est la réponse du système dans le temps.
En entrée on imagine le Big Bang! qui correspond a un pic vertical instantané de hauteur 100%.
Le système mesuré répond plus ou moins vite et plus ou moins fort.

- Un système idéal ultra rapide et linéaire sur toutes fréquences répondrait par un pic instantané de 100%.
- Un système réel répond lentement et déforme. Ca donne les courbes qu'on voit : une courbe dont l'axe des abscisse est le temps.
L'échelle est souvent en milisecondes.

Une IR caractérise entièrement la réponse d'un système.
Dit autrement, IR et FR (réponse en fréquence & phase) sont deux vues de la même chose.
On peut passer d'une vue à l'autre et réciproquement.

On entend parfois dire que ces vues sont complémentaires : non, elles sont équivalentes. Il n'y a pas d'information dans l'une qui ne soit dans l'autre. C'est juste que c'est plus facile de lire certaines informations sur l'une plutôt que l'autre

Temporel vers Fréquentiel : IR vers FR
En audio, on préfère souvent voir la réponse en fréquence et en phase d'un système (FR), bien qu'un oeil exercé puisse voir pas mal de choses directement sur l'IR.

Image
Vous avez reconnu le Low Pass LR24 sur l'IR ?

Comment passe t on d'une IR (domaine temporel) à une réponse en fréquence (domaine fréquentiel) ?
La fameuse Transformée de Fourrier !

La transformée de Fourrier est un outil mathématique qui sert à plein de choses.
J'en parle dans le contexte audio et numérique, cad échantillonné.
Dans ce domaine on parle par abus de "FFT" (Fast Fourrier Transform) qui désigne l'algorithme rapide discret pour faire une TF.

Pour faire simple, la FFT permet de passer du temporel au fréquentiel.
La transformée inverse, notée IFFT , fait l'inverse.

On note habituellement x(t) ou h(t) dans le domaine temporel et X (f) ou H (f) leur correspondant dans le domaine fréquentiel.
X (f) = FFT [x(t)]

Il existe plusieurs versions de ces algorithmes. Je parle ici du plus classique qui travaille en entrée et en sortie sur des tables contenant des valeurs complexes.

La FFT a besoin d'une table de taille d'une puissance de 2.
On entre une table de N éléments complexes (IR) et il en ressort une table de N éléments complexes (FR).
L'IFFT c'est l'inverse

Appliqué à l'audio : Passer du temporel au fréquentiel

Un enregistrement audio ce sont des nombres réels, donc la table de l'IR en entrée de FFT sera remplie de réels. Les réels c'est des complexes dont la partie imaginaire est 0.

La table de sortie contient les valeurs complexes pour les fréquences de 0 à Fs moins un sample.

Image

La particularité de la FFT lorsqu'en entrée il y a des réels, est que la deuxième moitié du tableau en jaune (de N/2 + 1 à N-1) contient en miroir les valeurs complexes conjuguées de la première moitié de tableau.

La première moitié du tableau de sortie (de 0 à Fs/2) contient des informations utiles de la réponse complexe en fréquence dont on pourra tirer Amplitude et Phase.
La deuxième moitié du tableau de sortie de la FFT (de fs/2 à Fs-1) en jaune est inexploitée.
On sait qu'un système samplé à Fs ne peut être exploité que jusqu'à Fs/2 : en voici une nouvelle illustration.

Les tables contiennent :
- pour l'indice i, la table d'entrée x(i) contient la valeur (réelle) de l'IR pour t = i/Fs

- pour l'indice i, la table de sortie X(i)contient la valeur (complexe) de la réponse en fréquence pour f = i*Fs/N
valable pour i=0 à N/2 dans la table de sortie. N/2 correspond a Fs/2.
De la valeur complexe on sait tirer Amplitude et Phase comme d'habitude :
Amplitude(dB) = 20log(module(X (i))
Phase(degrés) = 180/Pi * Argument(X (i))

On note que la table X (f) contient les valeurs sur une échelle linéaire de fréquences, exploitables de 0 à Fs/2, par step de Fs/N.

Passage inverse, du fréquentiel au temporel
ou Comment recomposer l'IR a partir d'une FR ?

l'IFFT fait le passage inverse de la FFT et transforme N échantillons (complexes) de la FR en N échantillons (réels) de l'IR.
Techniquement l'IFFT produit aussi des complexes en sortie, dont la partie imaginaire sera 0.
x(t) = IFFT [X (f)]

La première partie de la table complexe X (f) se calcule avec la réponse en fréquence et en phase
for i = 0 to N/2
X (i).reel = A*cos(Phi)
X (i).imag = A*sin(Phi)
next i
avec A = 10^(G(i*Fs/N)) et Phi=Pi/180*Phase(i*Fs/N)
où G est l'amplitude en dB et Phase la phase en degrés.

Il faut penser que l'échelle en fréquence de la table X (f) est linéaire. Elles ne correspondent pas directement aux valeurs de FR en énième d'octave dont on dispose le plus souvent. Une possibilité est de faire de l'extrapolation linéaire pour trouver les valeurs manquantes.

L'autre contrainte est de reconstituer entièrement et correctement la table X (f) de la FR complexe.
Cad remplir la deuxième moitié du tableau en "miroir conjuqué". Sinon l'IFFT ne fonctionnera pas comme prévu.

Pour mémoire : le conjugué d'un complexe est un complexe de même partie réelle, partie imaginaire opposée.
Le miroir se fait p/r a la valeur en N/2.

Image

Algorithme "miroir conjuqué" pour remplir la deuxième moitié de la table RF avant d'appliquer l'IFFT :
For i = N/2+1 to N-1
X (i).reel = X (N-i).reel
X (i).imag = - X (N-i).imag
next i

Note : le nb de valeurs de part et d'autre de N/2 n'est pas le même. X (0) n'a pas de miroir.

Que faire si on n'a pas la FR jusqu'à Fs/2 ?
C'est fréquent d'avoir la réponse en fréquence jusqu'à 20kHz ou moins alors que le sampling est a 48k ou 96k.
Il arrvie aussi qu'on n'ait pas les premières valeurs de table, notamment X (0).
Remplacer les valeurs manquantes par 0 et remplir jusqu'à Fs/2 avant d'appliquer l'algorithme "miroir conjuqué".

Vérifier son travail
La première vérification est que la table résultat de l'IFFT doit comporter des réels, toutes les parties imaginaires a 0.
Si ce n'est pas le cas c'est qu'il y a sans doute un raté dans la table miroir conjuqué.

Une deuxième vérification plus complète est de faire un aller-retour : FR -> IR -> FR
FFT [IFFT [X(f)] ]
On vérifie qu'on retrouve parfaitement la réponse en fréquence et en phase initiale. (A la précision des calculs près.)

Comment faire si on n'a pas de fonction IFFT et seulement une FFT a sa disposition ?
c'est possible de faire simplement une Inverse FFT avec l'algorithme de FFT mais je n'ai jamais fait.
http://www.embedded.com/design/configur ... orward-FFT
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » ven. 4 mars 2016 16:45

encore une chose : dans le monde normal, dit causal, une IR est forcément dissymétrique.

Dans le vrai monde, il ne se passe rien avant le Bang!
A t0 subitement, le système se met à répondre.
L'impulse ne peut remonter le temps et elle est forcément non symétrique p/r à t0.

Les traitements qu'on leur fait subir pour devenir symétriques, comme celles récemment postées récemment par T38, font l'objet d'un autre chapitre.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » ven. 4 mars 2016 18:10

A la demande générale, zoom sur Comment faire le changement d'échelle de fréquence entre tables.

Imaginons que j'ai une table de données sources TabSource qui contient NS valeurs pour les fréquences fs1 à fsNS

Il faut remplir une autre table de données cible TabTarget avec un autre nombre de valeurs NT et des fréquences réparties différemment de ft1 à ftNT

On peut imaginer par exemple que la table source vient d'une mesure REW au 1/48eme d'octave de 20 à 20k et que la Target est une table pour une FFT a échelle linéaire de 32768 valeurs a remplir de 0 à 24kHz par step de 32768/48k. (Oui c'est une demi-table).

Ce pourrait aussi être pour changer d'échelle de smoothing de 1/48 à 1/12 par exemple.

Rien ne dit que les bornes des fréquences des tables soient les mêmes ou pas.

1) remplir la plage de fréquence cible comme on veut. La seule contrainte est que ce soit rangé par ordre croissant.
pour chaque i, on a maintenant fSi et on doit cherche la valeur correspondante dans la table Source

2) pour chaque i, on parcourt la table Source jusqu'à trouver le premier indice j de sorte que fSj+1 > fTi.
Dans la source, on aura à l'indice j la fréquence immédiatement inférieure et a j+1 celle immédaitement supérieure a la fréquence fTi cherchée. On a borné la recherche.
il peut se produire que j n'existe pas cad que la fréquence cherchée soit hors limite : soit inférieure au minimum fTs1 présent dans la source ou supérieure au max fTsNT. Dans ce cas, mettre la valeur 0 ou "ignoré" pour vTi ou autre chose qui signifie hors limite. Si c'est pour une FFT, on a vu qu'il faut mettre 0.

Le cas normal est que j existe et le plus simple est de faire l'extrapolation linéaire pour trouver vTi en fonction de vSj et vSj+1. Le protata.
cad ratio des valeurs = ratio des fréquences

en image sur un cas réel :
Image

Image
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » ven. 4 mars 2016 18:20

Bon, supposons une table avec
20.0 -3 0
200.0 -4 90
20000.0 +2 60

Première question, rien de spécial pour le phase ?
Question 2, si je veux cette table avec 686 valeurs de 1 à 20kHz, c'est réaliste ?

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » ven. 4 mars 2016 18:24

c'est valeurs a transposer d'une échelle de points a une autre, ca peut etre n'importe quoi. aucune précaution a prendre

ta table source a 3 valeurs et tu veux en fabriquer 686.... ca va marcher mais etre strange.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » ven. 4 mars 2016 18:45

pour la fine bouche, complétons avec le cas particulier du smoothing dédié audio.
On part d'une courbe ultra détaillée a lisser.
On est en audio donc l'échelle de la table Target est log en éniéme d'octave. La table source peut être aussi en échelle log, ou pas.

Au lieu de, comme montré ci-dessus, borner la fréquence cherchée dans la table source par deux valeurs celle juste au dessus et en dessous et de faire le prorata , on va faire faire plus subtil en prenant une fenetre plus large :

Pour fTi, chercher dans la Source la valeur approchante de fTi-w et de fTi+w ce qui définit deux bornes dans la Source indices j et k.
w est un entier a définir. 1, 2 ou plus. w=1 donne souvent des résultats corrects. Plus w est grand, plus c'est moyenné.
Les bornes j et k définissent une fenetre de plusieurs valeurs dans la table source entre fSj et fSk.

On applique un filtre aux valeurs de cette fenetre (par exemple Blackmann) puis on calcule la moyenne pour trouver vTi

L'idée intéressante ici est que la Fenêtre n'est pas de largeur fixe mais de largeur adaptée logarithmiquement puisque dépend de fTi ce qui va lisser correctement pour l'audio.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » ven. 4 mars 2016 22:20

Merci pour ces explications sur les transformées de Mr Fourrier. :merci:
On peut lire aussi DFT, c'est une autre dénomination ou autre chose ?

Si j'ai +- compris, en fréquentiel on se fixe des limites purement auditives alors qu'en temporel ces limites n'existent pas sauf par la fréquence max de fs/2.
Je présume que le fenêtrage est là pour ces limites, on aura un chapitre sur le fenêtrage? Ce qui l'intrigue c'est le pourquoi de différentes manières de le réaliser et leurs implications.

Sinon, pour le temporel, je n'ai toujours pas compris où se situe l'instant t0. :inlove:

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » ven. 4 mars 2016 23:07

thierryvalk a écrit :Merci pour ces explications sur les transformées de Mr Fourrier. :merci:
On peut lire aussi DFT, c'est une autre dénomination ou autre chose ?
DFT = Discrete Fourier Transform. C'est le vrai nom qu'on devrait lui donner. FFT étant le nom de l'algorithme qui la réalise rapidement "Fast" :)

Si j'ai +- compris, en fréquentiel on se fixe des limites purement auditives alors qu'en temporel ces limites n'existent pas sauf par la fréquence max de fs/2.
Je présume que le fenêtrage est là pour ces limites, on aura un chapitre sur le fenêtrage? Ce qui l'intrigue c'est le pourquoi de différentes manières de le réaliser et leurs implications.
oui et non.
La limite de Fs/2 qui se voit clairement en frequentiel est aussi présente dans le temporel mais c'est moins flagrant. Ca correspond à la limite sur la résolution de la courbe de l'impulse qui est Fs/N ou 1/T.
En fait cette limite de résolution est présente sur deux éléments en fréquentiel : la valeur max de Fs/2 qui se voit bien et la résolution fréquentielle de 1/Fs.
N, Fs et T sont liés. C'est juste pour confirmer que rien de ce qui est présent en fréquentiel est absent en temporel. Et réciproquement. C'est juste moins visible parfois.

Sinon, pour le temporel, je n'ai toujours pas compris où se situe l'instant t0. :inlove:
c'est parce que tu es perturbé par le FIR !
dans le monde normal IIR, t0 = 0. Le temps négatif ça n'existe pas.
enfin, si tu mesures au micro, il faut tenir compte du délai de la propagation dans l'air.

Faut que je fasse un chapitre sur les Impulses en FIR et le fenetrage qui va avec parce que a force de ne voir que des impulse FIR symétriques sur le forum, ça perturbe ! En revanche pour l'effet de Gibbs et autres plaisanteries dues au fenetrage, ca dépasse ma compétence de nul. Je laisserai ça à T38 ;)

Au fait : tu as un algorithme de IFFT dans ta librairie ?
c'est simple de faire une IFFT avec l'algorithme d'une FFT et il semble que les librairies qui proposent la FFT font aussi IFFT.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » sam. 5 mars 2016 09:04

Sinon, pour le temporel, je n'ai toujours pas compris où se situe l'instant t0. :inlove:
c'est parce que tu es perturbé par le FIR !
dans le monde normal IIR, t0 = 0. Le temps négatif ça n'existe pas.
enfin, si tu mesures au micro, il faut tenir compte du délai de la propagation dans l'air.

A la réflexion, la réponse nécessite un développement plus complet. Et permettra de mettre le doigt sur un sujet fondamental : l'équivalence temps et phase.

a suivre
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierryvalk » sam. 5 mars 2016 09:12

Oui, la les phases est un sujet bien obscur.

Pour ce qui est de l'IFFT, je pense que faisable avec la routine utilisée.
Mais pour le moment je me concentre sur le fréquentiel et garde en tête le but qui est toujours d'afficher des courbes dans le but d'aider a réaliser son filtrage actif.

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » sam. 5 mars 2016 12:12

suite : Impulse, référence des temps t0 et phase

Quand on calcule l'Impulse a partir d'une réponse en fréquence (amplitude, phase), l'IFFT remplit la table temporelle à partir de 0. Normal : la réponse temporelle du filtre commence dès le départ, dès le premier sample.

Si la FR de départ est une mesure, un délai peut s’être rajouté entre la réponse du système et la captation. Le plus flagrant est le délai dû à la propagation du son lors d'une mesure au micro.
L'IFFT remplit toujours la table de l'IR correspondante en commençant a 0, mais la véritable réponse du système n'est pas dès le début à cause du délai. On le voit bien : l'IR est décalée dans le temps.

Une IR décalée dans le temps n'a aucune influence en fréquentiel sur la courbe d'amplitude, seulement sur la phase.

Un décalage de l'IR correspond à un délai .
Un délai de t secondes sur l'IR correspond en fréquentiel à un déphasage de ∆ϕ = 360.f.t degrés sur la phase .
Ce déphasage n'est pas fixe. Il varie proportionnellement à la fréquence, c'est ce qu'on appelle un déphasage linéaire.
Un déphasage linéaire, cad délai sur le signal (latence), est transparent à l'écoute.

Est ce gênant ?
Pour l'écoute non, pour l'affichage de la réponse en phase oui. Un délai pollue grave l'affichage.
Exemple : 1 sample de décalage avec Fsample = 48kHz correspond a 0,021 ms. 1 sample c'est rien !
A 1kHz il créé un déphasage de 7.6° qui se voit a peine, mais a 10kHz il est de 76°, le double a 20kHz. Un décalage de quelques samples seulement peut rendre la courbe de phase illisible. Elle n'est pas fausse, juste illisible.

OK, l'IR d'une mesure peut être décalée et cela fausse la vision qu'on a de la réponse en phase. On peut faire quelque chose ?
oui on peut recaler l'origine des temps là où elle doit être, cad enlever l'effet du délai parasite.
C'est le fameux décalage de la référence des temps t0 sur l'impulse.

Ou mettre t0 ? la réponse est : au début de l'IR ;) sauf que le "début" n'est pas toujours facile a voir!

REW en faisant "Estimate IR delay" se cale sur le pic de l'impulse. La plupart du temps c'est pas faux, mais parfois c'est pas juste.

Le calage manuel à l'oeil reste le meilleur moyen. REW le permet.

Explication sur un exemple : en rouge l'IR d'un filtre HighPass LR24 a 1kHz. En bleu un LowPass LR24 a 1k. A la même échelle, la bleue se voit a peine !

Image

zoom sur la bleue
Image

Ces Impulses commencent à 0
Le pic de la rouge est sur le premier sample. Donc prendre le pic (max de la courbe) comme origine des temps t0 est correct.
Le pic de la bleue est décalé de 22 samples (0,46ms). Prendre le pic comme origine est faux.

Sur une IR, le début correspond à l'arrivée des hautes fréquences. Le pic est d'autant plus haut et plus abrupt que des fréq élevées arrivent groupées (on se rappelle qu'un système qui a une bande passante infinie et pas de group delay répond un dirac a 1).
Plus on s'éloigne du départ de l'IR, plus on voit les basses freq.
Pour un LowPass (bleu), les hautes fréquences sont filtrées. Pas de pic immédiat visible sur l'IR et on ne voit qu'une IR molle et très étalée.

L'origine t0 doit se mettre au moment où l'impulse commence à grimper. Pas facile à voir sur une mesure bruitée.

Autre chose : à t=0, la phase = 0
La vieille recette "prendre le tweeter comme origine des phase" prend tout son sens :dans l'IR d'une enceinte, le pic initial c'est le tweeter.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar thierry38 » sam. 5 mars 2016 16:30

:ange:
On croirait lire tcli,tellement c"est beau". :)

Je sors....Image

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » sam. 5 mars 2016 16:36

je continue mon oeuvre : FIR, impluses symétriques, zero-phase et phase-linéraire

C'est quoi le FIR ?
Finite Impulse Response versus IIR Infinite Impulse response

Faisons un pas en arriere et comparons à l'IIR avec en exemple le vénérable biquad.
IIR
Avant d'etre une fonction de transfert, un biquad c'est surtout une forme directe utilisée dans un DSP pour fabriquer des échantillons en sortie avec ceux qui arrivent en entrée.
Avec les coeffs normalisés : y(n) = b0 x(n) + b1 x(n-1) + b2 x(n-2) - a1 y(n-1) - a2 y(n-2)

Cette équation indique comment est fait le sample de sortie y de rang n avec les deux samples précédents x en entrée de rang n-1 et n-2 et on voit qu'il faut aussi les deux précédents calculés en sortie.
Donc pour faire un sample en sortie il faut déjà les deux précédents y(n-1) et y(n-2). C'est un bouclage de la sortie sur l'entrée.

Au démarrage, il faut emmagasiner deux samples pour pouvoir calculer la première sortie et c'est parti. La sortie est correcte dès le quatrième sample. Et ça continue en boucle sur tous les samples suivants, indéfiniment. Même sans rien en entrée puisque la sortie est bouclée.
Une fois passé le démarrage, la latence d'un biquad est de 2 samples. Autant dire rien.
Mettre plein de biquads en cascade ne change rien.
Cela explique que la latence du DSPiy en IIR est essentiellement celle des DACs augmenté éventuellement de celle de l'ADC en entrée analogique.

Une conséquence est que l'Impulse d'un tel filtre a une longueur infinie. En pratique, on cesse de s'y intéresser quand la réponse se noie dans le bruit.

Pour voir la réponse en fréquence, on a dit précédemment qu'il faut faire la FFT sur l'impulse.
Pour ce faire, on prend une fenêtre de N samples sur l'IR, N étant la longueur de la FFT. On peut choisir N très grand pour avoir une résolution très fine.

FIR
Le FIR c'est différent : son IR a une durée finie d'échantillons. Les fameux taps. Disons M taps.
L'Impulse a donc une durée finie de M / Fs secondes.

Sa forme directe est : y(n) = a0 x(n) + a1 x(n-1) + a2 x(n-2) + ... + aM-1 x(n-M-1)
M coefficients numérotés de 0 à à M-1 donc beaucoup de paramètres.
Pas de bouclage ici de la sortie sur l'entrée : la sortie ne tient compte que des M samples précédents arrivés. Quand il n'y a plus d'entrée, après M samples, il n'y a plus rien en sortie.

Pour produire un sample en sortie, un filtre FIR doit au préalable avoir emmagasiner M samples. En réalité, dès que M/2 samples sont arrivés, il commence à y avoir quelque chose en sortie. La sortie devenant conforme après M samples.
Passé le démarrage, la latence d'un filtre FIR est de M/2 samples. ( (M+1)/2 si M impair)

La durée limitée de l'Impulse d'un filtre FIR a des conséquences sur sa résolution. C'est un peu comme si on avait une fenêtre de longueur M samples et ce qu'on disait précédemment sur la résolution liée au fenêtrage reste vrai.
Par nature, un filtre FIR a une résolution limitée par le nombre de taps M. Résolution fréquentielle = Fs/M
Ce qui explique qu'il faut beaucoup de taps si on veut traiter les fréquences basses en FIR.

Pour déterminer sa réponse fréquentielle (Amplitude et Phase), on peut faire une FFT sur l'Impulse d'un filtre FIR.
On sait qu'une table FFT doit toujours être de longueur N = une puissance de 2. Or le nombre de taps M ne l'est pas nécessairement.
On prend donc une longueur de FFT qui convient de longueur supérieure à M et on remplit les cases vides par des 0.

Note: en IIR, augmenter la longueur de la fenetre sur l'IIR pour calculer la réponse fréquentielle permettait d'améliorer la finesse de la résolution.
En FIR, on peut augmenter autant qu'on veut la longueur de la FFT, la résolution ne dépassera pas la limite fixée par les taps, Fs/M.
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » sam. 5 mars 2016 16:38

un pavé sans images... dur dur pour les nuls. tant pis faut faire des efforts dans la vie :)

allez, je continue pour parler Symétrie des impulses
acheter un DSPiy ? c'est ici

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

Re: Calculs audio numérique pour les nuls

Messagepar alka » sam. 5 mars 2016 16:46

thierry38 a écrit ::ange:
On croirait lire tcli,tellement c"est beau". :)
c'est trop d'honneur de comparer avec lui. Lui il sait ce qu'il écrit :mrgreen:

je compte sur toi pour lire s'il y avait une bétise (normalement yapa) ou des précisions utile (et ça , ça manque forcément)
acheter un DSPiy ? c'est ici


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot] et 3 invités