Rechercher



Latence et Crachotements

Vous êtes ici : Matériel / OS >Les Cartes Son
English Version...


Magie de la Mailing-List Cubase, Hamid pose une simple question sur la latence et les crachotements de sa carte son, et il obtient deux réponses détaillées, l'une de Serial P et l'autre de Sébastien Métrot ! On parle de Delta 1010, mais cet exposé reste valable pour n'importe quelle carte...


Serial P d'abord...

Qui fait quoi ?

Les problèmes que tu rencontres sont typiquement des problèmes de "buffer underruns". Je vais essayer de t'expliquer ça en bon vieux François. Avant toute chose, il te faut comprendre comment ça fonctionne... Ton ordinateur n'est pas capable de te lire plusieurs pistes audio en même temps. Les têtes de lecture de tes disques durs ne lisent qu'un seul fichier à la fois... Moralité, pour pouvoir lire plusieurs pistes Audio en même temps, il a fallu trouver une ruse et ça s'appelle la bufferisation (houla, je vais me faire taper dessus, ça doit pas être français comme ça !).

Alors comment cela fonctionne-t'il ? Et bien au moment de lancer la lecture, le processeur demande au disque dur de lire à tour de rôle un petit bout de chaque fichier audio et de le coller dans une mémoire tampon : le fameux buffer. Il ne reste plus qu'à lire ce fichier simultanément de la mémoire tampon dans la carte son et roule ma poule, le temps que tu te débrouilles pour relire tout ça, le disque dur a le temps de re-remplir le buffer avec un autre petit bout de chaque piste.. ;-)

Ca, c'est la théorie, mais ça ne fonctionne qu'à une seule condition : il faut remplir la mémoire tampon plus vite qu'elle ne se vide, sinon il va arriver un moment où elle n'aura rien à lire ! Et là, tu vas entendre... comme un léger trou ;-D (que l'oreille perçoit comme des craquements, à cause de la rapidité du phénomène et du DC Offset important qui peut apparaître à l'endroit précis où le fichier reprend la lecture, mais ceci est une autre histoire)....

A ce stade de la réflexion, il convient d'examiner les heu... maillons faibles ;-)


Latence et stabilité sont dans un bateau...

C'est là où ça se corse comme aurait dit Napoléon au moment de régler la latence de sa carte son... En effet, le gros problème de la bufferisation c'est... ? ... La latence ! Et oui ! la latence est la conséquence directe de la bufferisation ! En effet, pour pouvoir lire le fichier, il faut d'abord qu'il ait été lu depuis le disque dur, et écrit dans le buffer, ce qui prend en gros le temps que met le buffer à se remplir. Ce temps-là, généralement exprimé en millisecondes, est aussi appelé la latence... Alors vous me direz, ben pour que la latence diminue, il suffit de faire des buffers plus petits, et ils seront donc plus rapides à remplir et à lire et donc la latence va diminuer... Et ben ouais, et c'est exactement comme ça que ça fonctionne... Y'a que deux tout petits problèmes, ça oblige à avoir un flux de données beaucoup plus stable (et c'est là que parfois le bus PCI coince il me semble) et ça oblige le CPU à beaucoup plus de boulot et de disponibilité (il doit s'occupper de remplir et vider ces buffers beaucoup plus souvent et doit le faire sans attendre sous peine de laisser le buffer se vider).


Réglages et bidouillages tombent à l'eau !

Alors dans ton cas, pas trop le choix, va falloir bidouiller. Sache tout d'abord que les derniers drivers WDM de la Delta marchent assez bien chez moi, même si par ailleurs ils ont certains défauts assez chiants comme par exemple la latence maximum possible est de 28 ms, ce qui n'est pas énorme du tout, surtout si t'es short en CPU. Alors première chose, tu vas dans le panneau "Hardware Settings" du Control Pannel de la Delta. Là, tu vérifies que la latence est réglée sur 28 ms, que la Master Clock est sur "Internal" et que le Multitrack Driver Devices est sur "Single" (si tu n'as qu'une seule 1010)... Ensuite, tu retournes sur Cubase, tu joues un titre, tu ouvres le voyant des performances et tu regardes si y'a un truc qui va dans le rouge quand ça "craque"... Si c'est le voyant du disque dur, il va falloir checker et éventuellement changer la valeur de la taille du buffer de bloc disque dans la configuration du Système Audio... Moi, je suis à 48 ko, mais chacun trouve Midi à sa porte (profites en pour vérifier que t'as bien "M-Audio Delta ASIO" de marqué dans le champ "Périphérique Asio")... Si tu vois le voyant CPU au-delà des 70 %, essaie de virer une des 40 grosses reverbs que t'as mises en insert sur la percussion du fond ;-D Si ça continue à craquer de partout, je te conseille de changer ta carte son de slot PCI, et si tous sont pris, d 'interchanger la place des différentes cartes jusqu'à ce que ca roule... Si ça continue de foirer, tente une "bonne" désinstallation des drivers (avec nettoyage manuel de la base de registre) et ré-installe. les derniers drivers en provenance du site M AUDIO pour ma part, j'utilise la version 5.10 sous Windows XP... En dernier ressort, essaie de voir avec ton vendeur qu'il te vérifie la carte, elles ne sont malheureusement pas super fiables si j'en juge par mon expérience personnelle (la mienne marche bien, mais c'est la 3ème en 6 mois, les deux premières sont reparties chez le constructeur)...


Errare humanum est

J'engage mes potes Séb Métrot, Gilles Raffelsbauer et encore Bernard Chavonnet à bien vouloir nous préciser les éventuelles erreurs qui se seraient glissées dans cet exposé, lequel n'est pas le fait d'un programmeur, mais d'un musicien / ingé-son et donc ne repose que sur ce que j'ai "cru" comprendre de ces phénomènes :-)


Ce que Sébastien a immédiatement fait !


Quel talent ce Serial P !!! J'ai juste une chose à ajouter : plus la latence est faible plus le processeur va recevoir de messages de la carte son pour le prévenir qu'il doit remplir un nouveau buffer de son. La seule méthode que la carte son a pour prévenir le buffer est de lancer une IRQ - Interupt ReQuest (requête d'interruption). Le proc devrait à ce moment-là interrompre le travail en cours pour répondre à la carte son, cela signifie probablement un changement de tâche (il n'est pas forcément en train de bosser sur Cubase mais sur une autre application ouverte à ce moment-là), et même pire, un changement de niveau de protection. Pour faire simple, il existe plusieurs niveaux de fonctionnement pour différencier les tâches de l'OS / Drivers et les tâches lancées par l'utilisateur. Une IRQ ne peut être traitée que par l'OS ou un Driver. Donc si le proc bosse sur une tâche Utilisateur à ce moment-là, il devra changer de contexte pour passer en mode protégé OS, traiter l'IRQ, puis repasser en mode Utilisateur, ce qui prend énormément de temps. Ca ajoute donc encore à la latence et ça explique en partie pourquoi réduire la latence implique une plus grande consommation du processeur.

Petite info éventuellement intéressante pour ceux qui ne sont pas sur PC : ça fonctionne partout pareil, c'est à dire même sur MAC, il y a un équivalent aux IRQs, la seule différence étant qu'elles sont cachées de l'utilisateur, ce qui est très bien pour 90 % de la population mais les problèmes d'IRQs partagées existent aussi sur MAC et comme on n'a pas moyen de savoir quel connecteur PCI partage son IRQ avec quel autre, il faut tester toutes les configs possibles.

Haut de page
Serial P et Sébastien Métrot, Le couple que tout l'univers nous envie... pas ;op, le 14-04-2002

Page vue 32719 fois