Index du forum
M
e
n
u

Digital  Room Correction sous Linux

Mais j'ai de l'ambition.

Retourner vers Je débute en Hi-Fi



Digital  Room Correction sous Linux

Message #1 par shal » 30 Jan 2011 à 23:42

Et hop  :cool:

Je viens de réussir ma première Digital Room Correction (DRC) sous Linux.
Je vais donc présenter comment je suis arriver à ce résultat dans ce post.
Il y a un double but à cela : prendre des notes pour moi-même et aussi les partager avec ceux qui ont en besoins (j'ai pas trouver d’explication complété sur le Net, je tente d'en faire une ici).

Un gros avertissement : je suis totalement débutant dans ce type de travaux. n'hesiter a me corriger si vous voyez des erreurs (et accessoirement ne croyez pas ce que je raconte  :tongue:  ).
Si vous avez des doutes lisez la fin de ce post  :eek:

Déjà la DRC c'est quoi ? :
En une phrase: c'est mesurer les défauts de rendu d'enceinte dans une pièce puis de modifier la musique joué pour prendre en compte ces défauts et tenter de les corrigés.Hz
Par exemple : si on mesure que à 60Hz il y a un trou de 10db alors on vas modifier la musique pour rajouter 10db à 60Hz. et on croise les doigts pour que ces deux phénomènes s'annulent.

Plus concrètement, on vas par exemple mesurer le rendu du système en jouant une fréquence glissante sur toute l'etendu du spectre et on vas enregistrer le son qui sort de l'enceinte droite en plaçant le micro à la position d'écoute. Puis on refait pareil avec l'enceinte gauche.

A partir de là ces résultats sont analysés par des mécanismes de traitement numérique à base de transformé de Fourrier auquel je comprends pas grand chose. Il en ressort des "filtres" a appliquer sur la musique.

Il faut ensuite configurer votre systéme pour que dés qu'un musique est joué , ces filtres soient appliqués.

Voila le cadre est posé, c'est le principe générale.
Est-ce que cela fonctionne réellement ou pas : des gens avisés disent que non, d'autres personnes avisés disent le contraire. Le but est pour moi de voir si à mes oreilles cela fonctionne ou pas .


Je suis sous Linux donc voici la procédure que j'ai faite sous ce système.

Il faut bien sûr un micro de mesure et de quoi acquérir le signal reçut par celui-ci sur le PC.
Dans mon cas c'est un traditionnelle ECM8000 de Behringer, d'un preamp RME QuadMic et d'un convertisseur  AD/DA RME ADI-2 et d'une carte son RME (connecté àl'ADI-2 par deux câbles optiques).
Mais il y a des trucs beaucoup plus simple (micro qui sorte en USB).

Première étapes : mesuré une fréquence glissante
C'est peut-être la plus dur mais aussi la plus dangereuse : pour votre système et pour vos oreilles.
La fréquence glissante vas être de puissance constante sur toute l'étendu du spectre , vos tweeters risquent de s’abîmer sur trop de puissance et vos oreilles aussi (un port de casque est conseillé).

Pour mitiger les risques, il est dit que avec 0.5V on risque pas grand chose pour nos systèmes ( viewtopic.php?f=10&t=388 )
Pour cela vous générer un son de 50hz ( utiliser audacity pour le faire) et avec un multimètre en voltmètre alternatif et régler votre systéme pour ne pas sortir plus de 0.5V.

Un fois que c'est fait, on vas chercher le soft rec_imp  http://www.duffroomcorrection.com/wiki/ ... uring_Tool

On cherche le numéro de notre carte son sur le systéme.
Par exemple pour moi :
$ aplay -l
**** Liste des PLAYBACK périphériques ****
carte  0: DSP [Hammerfall DSP], périphérique 0 : RME Hammerfall HDSP 9632 [RME Hammerfall HDSP 9632]
 Sous-périphériques: 0/1
 Sous-périphérique: #0: subdevice #0

C'est la carte 0
Il faut trouver sur que port on envoi la musique pour moi c'est la première sortie et sur laquelle on reçoit la musique pour moi c'est la 12éme entrée (j'ai beaucoup d'entrée/sortie sur ma carte)


La ligne de commande devient :
rec_imp rec_right.pcm 44100 30 20000 45 0:0 11:0
Que l'on peut lire ainsi : on lance le soft rec_imp pour qu'il enregistre dans le fichier rec_righ.pcm le résultat d'une fréquence glissant qui travaille en 44.1kHz et qui vas de 30Hz a 20kHz en 45 secondes , rec_imp joue sur la première sortie de la première carte son (0:0) et lit sur la 12éme entrée de la premiére carte son (11:0).
on lance cette commande de façon a ce que le son ne sorte que de l'enceinte droite.

On fait pareil pour l'enceinte gauche :
rec_imp rec_left.pcm 44100 30 20000 45 0:1 11:0

Et voila, vous avez la "mesure" de votre système (pièce comprise).

Phase suivante : généré les filtres
On vas utiliser le software drc ( http://drc-fir.sourceforge.net/ )
Il faut sélectionner un profil de correction : il y a des normal, soft , minimal , extreme ....
Le soft drc est livré avec ces fichiers de profils. j'ai choisit soft-44.1.drc pour mes tests.

On appelle la commande :
drc  --BCInFile=rec_right.pcm  --PSOutFile=filter_right.pcm soft-44.1.drc
Ce qui vas généré le fichier filter_right.pcm qui contient notre filtre.
On fait de même a gaucher pour le filtre filter_left.pcm

Troisième partie : appliquer les filtres.

On vas utiliser un troisième software : brutefir

Il faut générer un fichier de configuration
voici mon fichier, nommons le brutefir_configuration
## DEFAULT GENERAL SETTINGS ##
float_bits: 64;             # internal floating point precision
sampling_rate: 44100;       # sampling rate in Hz of audio interfaces
filter_length: 8192,8;       # length of filters
overflow_warnings: true;    # echo warnings to stderr if overflow occurs
show_progress: true;        # echo filtering progress to stderr
max_dither_table_size: 0;   # maximum size in bytes of precalculated dither
allow_poll_mode: false;     # allow use of input poll mode
modules_path: ".";          # extra path where to find BruteFIR modules
monitor_rate: false;        # monitor sample rate
powersave: false;           # pause filtering when input is zero
lock_memory: true;          # try to lock memory if realtime prio is set


## LOGIC ##
logic: "cli" { port: 3000; };

## COEFFS ##
###########################
# DRC coeffs
coeff "main_left" {
    filename: "path_to/filter_left.pcm";
       format: "FLOAT_LE";     # file format

};

coeff "main_right" {
        filename: "path_to/filter_right.pcm";
       format: "FLOAT_LE";     # file format
};


## INPUT, OUTPUT ##                                                       
input "left", "right" {
       device: "jack" {  ports: "alsa_pcm:capture_1", "alsa_pcm:capture_2";};
       sample: "AUTO";
       channels: 2/0,1;
      
};

output "leftout", "rightout" {
       device: "jack" { ports: "alsa_pcm:playback_1", "alsa_pcm:playback_2";};
       sample: "AUTO";
       channels: 2/0,1;
       delay: 0,0;
};


##########################
# DRC filtering
filter "main_left" {
       inputs: "left";
       to_outputs: "leftout";
       coeff: "main_left";
};

filter "main_right" {
       inputs: "right";
       to_outputs: "rightout";
       coeff: "main_right";
};


Il est prévue pour collaborer avec le serveur de son jackd (souvent utiliser en home-studio sous Linux).
Il est a adapté suivant vos besoin et où sont vos filtres.

On lance le soft : brutefir brutefir_configuration
Vérifier qu'il ne rapporte pas des erreurs.

Ensuite à l'aide de jack connect il faut connecter la sortie de votre player à l'entré de brutefir.
Une illustration vaut mieux que de long discours :


Sélectionner à l'aide de la sourie l'output0 de VLC et l'entrée 0 de brutefir est cliqué sur connect.
idem pour l'entré 1  . N'oublier pas de supprimer les liens inutiles .

Résulat: ca marche, le son est réelement modifié .
Bon pour l'instant c'est nul  :sad:  on dirait que toute la musique est joué dans une élise  :frown:
Il y a des réglages a faire.


Olivier
Pas plus pire sourd qu'une oreille d'or qui veut rien entendre.
Heureux les pauvres en espritsourd, car le royaume des cieux la HiFi est à eux!
De tout façon , j'entends pas grand chose après 14khz ;-)
Avatar de l’utilisateur
shal
100 watts
100 watts
Messages: 2039
Inscription: 21 Oct 2010 à 18:18
Localisation: Rennes


Retourner vers Je débute en Hi-Fi

Qui est en ligne

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