Modérateurs: Modération Forum Home-Cinéma, Le Bureau de l’Association HCFR • Utilisateurs parcourant ce forum: cd, guittet, imotep27000, J3FF, julien-64, pierrot le fou et 169 invités

Tout ce qui concerne les logiciels lié au HC sur ordinateur (PC, Mac, Linux...)
Règles du forum
Avant de poster, merci de prendre connaissance des règles du forum : à lire avant de poster

Mise en oeuvre de la vidéo dans ma salle

Message » 22 Nov 2008 15:11

y'a aussi les videos de Seb, suffit de les remuxer avec un mp3 dans un MKV et d'activer Reclock :
http://membres.lycos.fr/sebfr26/PCHC/.public/
leeperry
 
Messages: 7025
Inscription Forum: 06 Jan 2007 19:44
  • offline

Message » 25 Nov 2008 11:34

Ce WE j'ai commencé à générer mes fichiers test sous Matlab pour tester le resampler de reclock.
Je vais essayer d'être le + clair possible même si vous n'avez aucune connaissance en TNS.

Les fichiers de test sont :

- un logsweep de 10 sec entre 100 Hz et fs/2 pour l'analyse par spectro

- une sinusoïde pure de 10 sec à 1000 Hz pour les mesures de THD

-6.02 dBFS - Réso 32 (inutile ici), 24 et 16 bits.fs = 48 et 96 kHz.

Voici le fichier .m qui génère les wav mono. Il y a aussi la génération des mêmes fichiers avec 10 sec de silence au début et à la fin pour faciliter la capture pdt la lecture des DVD.

Code: Tout sélectionner
% Signaux de test à 48 kHz

f = 48000;
t = 0:1/f:10-1/f; % 10 sec @ 48 kHz sample rate

sweep48 = chirp(t,100,10,f/2,'logarithmic')/2; % logsweep de 100 Hz à 24 kHz à -6.02 dBFS

wavwrite(sweep48,f,32,'logsweep_48kHz_32bits.wav'); % 32 bits flottant
wavwrite(sweep48,f,24,'logsweep_48kHz_24bits.wav');
wavwrite(sweep48,f,16,'logsweep_48kHz_16bits.wav');

N = length(t);
n = 0:N-1;
sin48 = sin(2*pi*1000/f*n)/2; % sinusoïde pure de fréquence 1000 Hz à -6.02 dBFS

wavwrite(sin48,f,32,'sin1000_48kHz_32bits.wav'); % 32 bits flottant
wavwrite(sin48,f,24,'sin1000_48kHz_24bits.wav');
wavwrite(sin48,f,16,'sin1000_48kHz_16bits.wav');

% Ajout de 10 sec de silence au début et à la fin pour permettre une capture plus facile

silence = zeros(1,10*f);
sweep48silence = [silence sweep48 silence];

wavwrite(sweep48silence,f,32,'logsweep_48kHz_32bits+silence.wav');
wavwrite(sweep48silence,f,24,'logsweep_48kHz_24bits+silence.wav');
wavwrite(sweep48silence,f,16,'logsweep_48kHz_16bits+silence.wav');

clear all;

% Signaux de test à 96 kHz

f = 96000;
t = 0:1/f:10-1/f; % 10 sec @ 96 kHz sample rate

sweep96 = chirp(t,100,10,f/2,'logarithmic')/2; % logsweep de 100 Hz à 48 kHz à -6.02 dBFS

wavwrite(sweep96,f,32,'logsweep_96kHz_32bits.wav'); % 32 bits flottant
wavwrite(sweep96,f,24,'logsweep_96kHz_24bits.wav');
wavwrite(sweep96,f,16,'logsweep_96kHz_16bits.wav');

N = length(t);
n = 0:N-1;
sin96 = sin(2*pi*1000/f*n)/2; % sinusoïde pure de fréquence 1000 Hz à -6.02 dBFS

wavwrite(sin96,f,32,'sin1000_96kHz_32bits.wav'); % 32 bits flottant
wavwrite(sin96,f,24,'sin1000_96kHz_24bits.wav');
wavwrite(sin96,f,16,'sin1000_96kHz_16bits.wav');

% Ajout de 10 sec de silence au début et à la fin pour permettre une capture plus facile

silence = zeros(1,10*f);
sweep96silence = [silence sweep96 silence];

wavwrite(sweep96silence,f,32,'logsweep_96kHz_32bits+silence.wav');
wavwrite(sweep96silence,f,24,'logsweep_96kHz_24bits+silence.wav');
wavwrite(sweep96silence,f,16,'logsweep_96kHz_16bits+silence.wav');


Pour générer ces wav avec Matlab, il suffit de copier le code dans un fichier avec extention .m puis de le lancer sous Matlab.

L'analyse de la THD se fera via le freeware jap Wave Spectra v1.40 (voir + haut pour le lien).
Rappel sur ce qu'est une THD :

Image

=> donc pour mesurer correctement une THD à 1kHz, il faut connaitre avec précision l'amplitude des harmoniques à 2kHz, 3 kHz, 4 kHz etc.

L'analyse par spectro se fera à l'aide de la fonction SpectrogramAnalysis.m de chez BIAS :
http://xserve1.bias-inc.com:16080/produ ... esampling/

que j'ai un poil modifié pour pouvoir analyser en plus des fichiers wav stéréo au cas où... Ici le canal lu est le canal n°1. Attention, pour que ça marche, il y a deux autres fichiers à récupérer sur le site. Dans cette fonction la fenêtre utilisée est une fenêtre de Kaiser de N=1024 points qui permet une réjection de 160 dB de l'étalement spectral de chaque sinusoïde qui compose le signal. La réso fréq. est ici de fs/N, soit 46 Hz si fs = 48 kHz. Le recouvrement temporel des fenêtres successives est de 75%. Je ne rentrerai pas ds les détails de tous les pb que pose le principe d'incertitude temps-fréquence en analyse combinée temps *et* fréquence. Je rappel juste que ds ce type d'analyse temps-fréquence on est obligé de choisir une fenêtre temporelle assez courte (ici N=1024) , ce qui réduit malheureusement la réso fréq.

Code: Tout sélectionner
%
% Script for Spectrogram Analysis of a Sound File in .WAV format
%

% Sound file to analyze - Must be in .wav format

soundFile = 'sin1000_48kHz_16bits.wav'; % EDIT SOUND FILE NAME

% Read sound file

[audioSignal, sampleRate, numBits] = wavread( soundFile );

% Spectral analysis parameters

N = 1024;
numOverlap = round(3*N/4);
sidelobeAtt = 160; % Sidelobe attenuation of Kaiser window
analysisWindow = mykaiser(N, sidelobeAtt);

% Compute and plot spectrogram (petite modif ici !)

spectrogram(audioSignal(:,1), analysisWindow, numOverlap, N, sampleRate, 'yaxis' )

% Set the spectrogram color map

specMin = -160; % minimum colormap level
specMax = -2; % maximum colormap level
caxis([specMin specMax]);
load 'Color Map'
colormap(map);
colorbar; % display colormap bar next to spectrogram
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10416
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • online

Message » 25 Nov 2008 11:39

Voici les perf par défaut des fichiers source (qui seront dégradées ou pas par le resampler) :

logsweep 24 bits : RAS

Image

logsweep 16 bits : on voit apparaître la disto de quantification même si la réso fréq. du spectrogramme (sur l'axe vertical) est faible.

Image

Lorsque reclock rééchantillonne à 46080 Hz pour compenser le PAL speedup (vidéo qui passe à 24 fps), le resampler doit préalablement filtrer toutes les fréq entre 46080/2=23040 Hz et 48000/2=24000 Hz sinon ces dernières vont se retrouver aliasées en dessous de 23040 Hz ou elle peuvent éventuellement devenir audibles. Donc, il faudra vérifier ce point.

En pratique, on s'en tape totalement vu qu'il n'y probablement pas de fréq. > 23040 Hz sur une bande son à 48000 kHz (à cause des filtres anti repliement qui coupent avant lors des prises de son). Et s'il y en a, c'est probablement à des niveaux infimes. Donc la pollution engendrée en dessous de 23040 Hz par aliasing sera de toute façon inaudible AMHA.
Dernière édition par Emmanuel Piat le 25 Nov 2008 12:00, édité 1 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10416
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • online

Message » 25 Nov 2008 11:48

Pour la mesure de THD à 1 kHz avec Wave Spectra, j'ai choisi une fenêtre flat-top qui permet d'avoir le niveau réel des amplitudes sur les harmoniques. Ceci est du au fait que comme elle a un lobe principal très large, elle permet de compenser la réso fréq. qui fait que les fréq. d'analyse ne tombent pas exactement sur les multiples de 1-2-3-...kHz, ce qui est embêtant en mesure de THD.

Par ailleurs, pour info, c'est la seule fenêtre qui ne minore pas systématiquement l'amplitude comme vous pouvez le constater en regardant l'amplitude de la fondamentale qui est de -6.02 dB (ce type de fenêtre s'utilise par exemple qd on veut calibrer une chaine d'acquisition en mesure acoustique afin de ne pas engendrer une erreur de mesure absolue...).


Par contre, il faut vérifier que les fuites spectrales très importantes pour cette fenêtre ne rajoutent pas une disto sur la 1ère harmonique à 2kHz. Ceci impose de choisir une taille de fenêtre de 131 072 points... Je rappelle que cette taille conditionne l'intervalle des fréq. d'analyse du spectre (incrément fréquentiel).

Exemple avec la sinusoïde 16 bits où il y a une disto de quantification non négligeable sur les harmo impaires. Dans ce cas, il ne faut pas en ajouter artificiellement à 2KHz. En 16 bit par exemple, ça passe : THD de 0.00082 %

Image

Par contre, ça ne passe plus en 24 bits, ou la fenêtre rajoute de la disto artificiellement sur les harmo paires et impaires (attention, ici on descend à -160 dBFS pour le 24 bits...) :

Image

Dans ce cas, la seule fenêtre qui marche est la Blackman-Harris 7 terms :

Image

et comme vous pouvez le voir sur le snapshot, la THD tombe à zéro en 24 bits avec la réso de calcul du soft.

En 16 bits, Blackman-Harris 7 terms donne une THD de 0.00066% qui est un peu trop optimiste car on a 0.00082% en flat-top (erreur de calcul due au fait que cette fenêtre modifie les amplitudes de la fondamentale et des harmoniques contrairement à la fenêtre flat-top).

Conclusion :

en 16 bits, je donnerai la THD en flat top et en BH7.
en 24 bits, je donnerai la THD en BH7

Et les snapshots seront aussi fournis pour avoir un contrôle "visuel" de la mesure...
Dernière édition par Emmanuel Piat le 25 Nov 2008 18:05, édité 7 fois.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10416
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • online

Message » 25 Nov 2008 11:57

Ecueil classique en mesure de THD : pour positionner le curseur sur la fondamentale dont on veut mesurer la disto harmonique, il faut vraiment se placer sur l'amplitude max la plus proche du pic (ici 1000 HZ), donc ne pas hésiter à zoomer.

Image

La fréq. la plus proche de 1000 Hz dépend des fréq. d'analyse et donc de la largeur de la fenêtre choisie... Une erreur de positionnement d'un seul incrément fréquentiel peut faire varier la THD du simple au double, surtout qd elle est faible :roll: c'est facile à vérifier avec le soft... C'est une des raisons pour laquelle bien souvent les mesures de THD sont totalement farfelues (on lui préfère le THD+N bcp + robuste à la mesure).

Malgré ça, on va essayer de faire des mesures de THD correctes, mais je ne garantie rien.

spectro sin 16 bits => on retrouve la disto de quantification sur les harmo impaires. Pour rappel, la largeur exagérée des harmo est due à la faible réso fréquentielle du spectro (axe vertical) avec la fenêtre utilisée (Kaiser de 1024 points).

Image

spectro du sin 24 bits => RAS

Image

La compagne de mesure portera sur les modes slave on et off de reclock. Pour faire trépigner un peu Lee, je commencerai par slave on :) . J'essairai de fournir tous les DVD de tests si l'envie vous prend de refaire les mesures :wink:

La mesure de THD en slave off pose qd même de sacrés problèmes, car vu que la fréquence de la fondamentale va varier sur la fenêtre d'analyse temporelle (qui est très large), il va y avoir plein d'harmoniques supplémentaires dues aux fréq. 998, 999, 1001, 1002, 1003 Hz etc. qui seront présentes ds cette fenêtre d'analyse. Mais, si on positionne le curseur sur 1000 Hz (on est bien obliger de choisir, cf. la def de la THD), alors normalement, seules les harmo 1,2,3... kHz seront pris en compte et pas les autres... Il faut que je vérifie ce point en combinant 2 sin à 1000 et 1000 + x Hz pour voir si c'est bien le cas...

Bon tout ça se fera évidemment petit à petit car c'est long et j'ai peu de temps à y consacrer...
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10416
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • online

Message » 25 Nov 2008 12:58

J'ai édité mon commentaire sur la mesure de THD en mode "slave off" juste au dessus.
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10416
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • online

Message » 25 Nov 2008 14:22

Perso, je vois pas trop l'intérêt de la mesure en Slave OFF ... du moins, telle que l'on peut la faire actuellement ...

Pour moi, ce serait plus intéressant de pouvoir "forcer" d'autres freq (que le 46080Hz), histoire de se faire une idée des quelques cas classiques.
Il me semble qu'en Slave OFF, on ne peut même pas être vraiment sûr de la freq de réechantillonnage puisqu'elle est fonction de la freq VBL mesurée et de la freq réelle de la CS ... etc ... :idee:

Suis je enduit d'erreur ? :mdr:
Seb.26
 
Messages: 3256
Inscription Forum: 04 Mar 2004 16:43
  • offline

Message » 25 Nov 2008 14:33

Seb.26 a écrit:Suis je enduit d'erreur ? :mdr:

ouais, tout plein :mdr:

t'facon l'important c'est que l'utilisateur final soit content.

je suis avec le nouveau resampler en slave off "excellent", le son me convient...tres content :)

pour le fun j'ai recompare avec l'ancien en "very good", je trouve le son affreux.

apres le reste...avant que mon Q6600 o/c plie....il va en falloir :mdr:
leeperry
 
Messages: 7025
Inscription Forum: 06 Jan 2007 19:44
  • offline

Message » 25 Nov 2008 15:03

Bin perso, ça me semble très intéressant. Le pb c'est comment le faire correctement...

>on ne peut même pas être vraiment sûr de la freq de réechantillonnage

Pour le savoir, il suffit de regarder sur la capture à quelle fréquence se retrouve la sinusoide qui est à 1000 Hz au départ. Après on a les pb classiques dûs à l'incertitude temps-fréquence : pour faire l'analyse fréquentielle, on a besoin d'une fenêtre temporelle. On ne peut pas faire une analyse fréquentielle instantanée (il faudrait une fréq. d'échantillonnage infini). Donc il faut espérer que reclock fait lentement évoluer sa fréquence d'échantillonnage (ce que je soupçonne) pour qu'on puisse définir des fenêtres temporelles ou elle est constante. De la taille de ces fenêtres dépendra alors la résolution fréquentielle obtenue. Espérons que ce ne sera pas trop mauvais...

Bref, on verra bien :wink:
Emmanuel Piat
Contributeur HCFR 2016
 
Messages: 10416
Inscription Forum: 10 Oct 2000 2:00
Localisation: Besançon, FRANCE
  • online

Message » 25 Nov 2008 15:21

Ce que je veux dire, c'est que Slave ON ou OFF, c'est le même algo ... donc le même résultat pour une même freq de "sortie" ...

[Edit] quand j'écris "freq de sortie", je pense à la fréquence de sortie du ré-échantillonnage de Reclock ... mais c'est long à taper ... :wink:

La diff étant que dans un cas (Slave OFF) la freq de sortie est fonction de x paramètres, alors qu'en "Slave ON", la freq de sortie est fixe ...

:idee: ne serait il donc pas plus pratique de muxer le son dans une vidéo @23fps ou @20fps ... qui serait corrigée @24fps par Reclock, donc à des freq fixes et != 46080 Hz ?

... en "Slave ON", l'incertitude disparait, et en choisissant bien le fps, on doit pouvoir retrouver les quelques cas "standards" ...

Ou alors je suis trop enduit d'erreur et je délire ! :lol:
Dernière édition par Seb.26 le 25 Nov 2008 15:29, édité 1 fois.
Seb.26
 
Messages: 3256
Inscription Forum: 04 Mar 2004 16:43
  • offline

Message » 25 Nov 2008 15:29

t'facon le nouveau resampler de Reclock est aussi dispo en MAJ pour ffdshow(yesgrey3 powah)

apres la question c'est qu'en slave off, y'a un resampling permanent a des freqs differentes......et si l'ancien resampler fait 150k et le nouveau 1.5mb, on peut imaginer que c'est mieux gere ;)

et l'entendre aussi, mais c'est la partie la plus triviale...j'en conviens :lol:
leeperry
 
Messages: 7025
Inscription Forum: 06 Jan 2007 19:44
  • offline

Message » 25 Nov 2008 15:30

leeperry a écrit:...et si l'ancien resampler fait 150k et le nouveau 1.5mb, on peut imaginer que c'est mieux gere ;)

Ou que l'un est codé en ASM sans optimisation pour les CPU, alors que le nouveau ets en C++ avec multi-code pour chaque CPU :wink: ... et avec pas mal de tables pré-calculées pour gagner du temps ... car franchement, 1.5MB de code exécutable, c'est énorme ! ... ( voir "pas normal" AMA :wink: )
Seb.26
 
Messages: 3256
Inscription Forum: 04 Mar 2004 16:43
  • offline

Message » 25 Nov 2008 15:35

heu nan les 2 sont en C++, et clsid a refuse de mettre le nouveau resampler dans ffdshow car ajouter 1.3mo de plus a l'install pour ca :roll:

yesgrey3 avait donne les details qui font que le code a grossi x10, en gros plein d'optimisations dans la conversion ;)

de plus le nouveau code tire plus sur le CPU que l'ancien.
Dernière édition par leeperry le 25 Nov 2008 15:43, édité 1 fois.
leeperry
 
Messages: 7025
Inscription Forum: 06 Jan 2007 19:44
  • offline

Message » 25 Nov 2008 15:41

[HS]
Bon ... dommage pour FFDShow ... qui est à 1.3Mo près aujourd'hui ? ... je soupçonne une autre raison ... :wink:
[/HS]

Laissons la place à Emmanuel ... j'ai hâte de lire les conclusions de ces essais ! :oops:

Au passage : comme d'hab, grand merci et chapeau bas "Dr. Piat" 8)
... ce post navigue autours des limites de mon niveau technique (et va probablement bientôt passer au dessus) mais c'est un vrai régal de lecture !
Seb.26
 
Messages: 3256
Inscription Forum: 04 Mar 2004 16:43
  • offline

Message » 25 Nov 2008 15:44

Si on comprenait tout ce qu'écrit Emmanuel, ça ne serait plus Emmanuel :roll: :lol: :wink:
Christophe Elecson KLS
Pro-Commercant
Pro-Commercant
 
Messages: 15736
Inscription Forum: 23 Sep 2000 2:00
Localisation: Elecson KLS Vannes
  • offline


Retourner vers Logiciel PC Home-cinéma