Acoustic passion

Acoustic passion

Transformer 2 sorties asymétriques en 1 sortie symétrique avec le DSP

Bonjour,

 

J'ai essayé et réussi a transformer très simplement 2 sorties asymétriques de ma carte son en 1 sortie symétrique avec un simple programme de DSP, compilé pour fonctionner sous linux en tant que client de jack audio...

Le principe est simple : je connecte un canal audio a mon application. Mon application copie ensuite le canal et change de signe tout les samples en faisant une multiplication par -1. Nous avons alors un signal digital symétrique : le canal d'origine et son opposé, qu'il me suffit d'envoyer sur 2 canaux de ma carte audio (j'utilise une paire de canaux, par exemple les 2 canaux de la sortie front ou side ou rear ou sub+center).

Etant donné que tout les canaux sont synchronisés entre eux par un même cristal sur la carte son, normalement les 2 canaux devraient sortir en même temps sans décalage et donc peuvent être parfaitement reconstitués par l'ampli de puissance.

Pour vérifier expérimentalement le gain de qualité, j'ai réalisé des mesures.

Le système de mesure se compose ainsi :

 

Signal digital ==> Générateur de signal symétrique (la simple application expliquée précédemment) ==> Carte son DAC sortie G/D (canal +/canal -) jack femelle 3.5mm ==> câble jack mâle 3.5mm vers 2x RCA femelle ==> adaptateur 2x RCA mâle vers jack mâle 3.5mm ==> carte son ADC entrée ligne auxiliaire (jack femelle 3.5mm) ==> programme DSP reconstruction signal symétrique (inversion du canal - puis supperposition des 2 canaux) ==> analyseur audio

 

Les signaux digitaux et analogique étant normalement synchronisés temporellement, il n'est pas nécessaire d'appliquer un délai pour les aligner. Je me contente donc de calibrer l'amplitude des signaux pour parfaire la symétrique :

 

I- Calibration du niveau d'entrée de la carte son, partie ADC (entrée ligne auxiliaire)

 

J'utilise pour cette étape un signal 1khz envoyé vers le canal G du DAC. Le signal analogique est alors envoyé vers :

1- le côte gauche de l'adaptateur RCA => jack.

2- le côte droit de l'adaptateur RCA => jack.

 

Je mesure l'amplitude du signal a 1khz dans le cas 1 et 2, l'écart de niveau mesuré par le DAC est dans mon cas de 0.01dB. L'erreur relative a corriger est de 0.005dB.

Je corrige cette erreur en utilisant un gain entre le ADC et l'analyseur de spectre, plus précisément en atténuant le signal trop fort (on pourrait aussi augmenter l'autre signal mais j'ai toujours préféré atténuer un signal que l'amplifier, bête habitude ^^).

On peut vérifier après calibration que le niveau est identique entre les 2 entrées du ADC en répétant la procédure de mesure.

 

II- Calibration des niveaux de sortie des canaux G/D du DAC : optimisation de la symétrie des signaux

 

Etant donné que l'amplitude des 2 canaux de l'ADC ont été calibrés, on doit ajuster le niveau des 2 canaux de sortie du DAC. Pour cela soit on mesure 1 signal symétrique envoyé sur les 2 canaux du DAC et :

- on transmet 1 canal de sortie DAC sur 1 canal d'entrée ADC et on mesure, puis on change de canal de sortie en restant sur le même canal d'entrée ADC et on compare la mesure.

- on transmet intégralement le signal des 2 canaux de sortie DAC aux 2 canaux d'entrée ADC et on mesure l'amplitude de chaque canal indépendemment.

- idem que précédemment mais au lieu de mesurer l'amplitude de chaque canal, on aditionne d'abord les 2 canaux et on visualise graphiquement l'amplitude des 2 signaux aditionnés. C'est ma méthode préféré, car elle permet de trouver avec précision avec quel réglage les 2 canaux s'annulent le mieux. En effet, plus l'écart d'amplitude entre les 2 canaux est important et plus le signal résultant de la sommation des 2 canaux sera fort. En théorie si les 2 signaux étaient parfaitement symétrique, leur sommation résulterait en 1 signal nul, donc d'amplitude 0. Il faut donc régler le gain d'un canal à tâtons jusqu'à trouver le signal résultant le plus faible.

Voici les screenshots en utilisant la troisième méthode avant/après calibration :

 

Avant calibration (signal résultant = -50.064dB @1khz)

Après calibration (signal résultant = -74.548dB @ 1khz)

 

La comparaison visuelle est aisée par la visualisation de la forme d'onde a gauche (visu oscilloscope) car les échelles sont les mêmes pour les 2 mesures. Les statistiques du signal sont disponibles sur le côte droit de l'image, la partie droite haut représente le spectre du signal instantané tandis que la partie droite bas représente le spectre du signal moyenné sur 1 minute.

 

III- Mesures et comparaison des 2 signaux : asymétrique/symétrique

 

Maintenant que nous avons un système de mesure calibré et des signaux symétriques au mieux possible, nous allons analyser et comparer la qualité d'un signal asymétrique et celle d'un signal symétrique généré par notre carte son (dans mes mesures il s'agit de ma carte son XONAR D1, dont les caractéristiques RMAA et annoncées par le constructeur sont déjà excellentes pour le signal asymétrique normalement fourni par la carte son !).

 

J'ai utilisé pour mes mesures le logiciel pour linux Baudline avec l'option de lancement -jack pour pouvoir l'utiliser avec jack audio.

Les 2 DSP (générateur de signal symétrique avant DAC et reconstructeur de signal symétrique après ADC) sont des programmes que j'ai programmé moi-même (il m'est possible de donner les codes sources si nécessaires ou de faire l'équivalent avec d'autres logiciels, par exemple en utilisant un filtre avec 1 coefficient = -1 et tout les autres = 0 avec convolution -brutefir ou tout autre logiciel- pour la génération/reconstruction du signal symétrique).

 

Mesure signal asymétrique

Mesure signal symétrique

 

Caractéristiques asymétrique/symétrique :

Niveau primaire du signal (@ 1 khz en dB) : -10.120 / -4.100

SNR (mal calculé en asymétrique, en dB) : -7.697 / -122.247

SINAD et SFDR (en dB) : -84.769 / -122.247

 

Le SNR étant mal calculé en asymétrique (la fréquence fondamentale repérée par le logiciel ne correspond pas a la fréquence de 1khz), j'ai donné les valeurs SINAD / SFDR équivalentes mais mieux représentatives de la qualité d'un DAC/ADC. On voit le gain énorme entre le signal SINAD et SFDR : le gain est de plus de 37dB !

 

Attention : je dois revoir les mesures car le DAC générant le signal inverse sur l'autre canal, ce mauvais signal asymétrique est dû au stereo cross-talk (il faudrait que je ne fasse fonctionner qu'un seul canal lors de la mesure).



23/05/2011
0 Poster un commentaire

Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 20 autres membres