» 28 Juin 2009 0:33
Bonjour Bruckner,
Les extractions que tu obtiens sont "offsettées" (décalées). Offset est le terme employé pour désigner le décalage de position sur les CD audio.
La première cause d'offset est le lecteur. Chaque mécanique utilise un point de référence différent pour débuter la lecture. Par exemple si le rip iTune a été réalisé sur un lecteur de CD-ROM Plextor, et le rip EAC sur un graveur de DVD Pioneer, au même ordre de lecture envoyé par le programme, l'ensemble mécanique + pilotes répondra par des données décalées. De même si les deux rips sont effectués par le même programme, mais en faisant appel aux deux lecteurs différents.
Mais dans ton cas, tu peux avoir un décalage sur la même mécanique en raison de l'usage d'EAC. EAC a été au départ conçu dans l'optique de faire des copies parfaites. Or, les graveurs comme les lecteurs gravent les données à une position plus ou moins arbitraire. Tous ces offsets entre mécaniques s'étalent en gros dans un intervalle d'un millier d'échantillons.
Andre Wiethoff, l'auteur d'EAC, voulait d'une part que lorsqu'il rippe un CD avec deux mécaniques, s'il en remplace une un jour, par exemple, pouvoir les comparer bit à bit, et surtout, il voulait que lorsqu'il grave un CDR, puis le relise, il obtienne le même wav, sans décalage.
Il s'est alors lancé dans un travail énorme de recensement, avec l'aide de ses utilisateurs, des "read offset" et "write offset" de tous les lecteurs et graveurs possibles, en se basant sur des CD de référence dont le démarrage était connu du logiciel, et en incluant un bouton de soumission des résultats en ligne dans EAC. Le travail a été incroyablement perturbé par le fait que les usines de CD, lorsqu'elles refont un pressage d'un album donné, décalent elles aussi les données ! Le décalage entre deux exemplaires d'un même CD peut atteindre 3000 échantillons. Or pour que la base de données grandisse vite, il fallait utiliser des CD populaires. Mais ce sont justement les CD les plus populaires qui présentent le plus de variations d'un pays à l'autre, d'une usine à l'autre, d'une réédition à l'autre, tandis que les plus petits pressages existent en une seule version.
La communaité d'utilisateurs, majoritairement des geeks et des nerds, a joué le jeu à fond, et une base de donnée a rapidement été construite.
Après quelques années, lorsque le mécanisme était bien rodé, Andre a inclus un wizard dans le package d'installation d'EAC. C'est-à-dire une série de boîtes de dialogue qui guident l'utiliateur lors de l'installation. Le programme, depuis lors, cherche à identifier le lecteur présent dans l'ordinateur et recherche son offset dans sa base de donnée. Je ne sais plus s'il le corrige automatiquement dans la version de base d'EAC ou s'il le fait seulement avec l'extension AccurateRip. Comme j'ai toujours utilisé cette extension, quand j'installe EAC, si le lecteur est dans sa base de donnée, l'offset est corrigé après la reconnaissance d'un CD de référence (pour vérifier si le constructeur du lecteur n'a pas changé de mécanique entre deux séries du même modèle), et si le lecteur n'est pas dans la base de données, après la reconnaissance de trois CD de référence concordants (pour être sûr de ne pas tomber sur des pressages d'offset différents de ceux de la base de données).
Par conséquent, ton EAC corrige peut-être automatiquement un offset de la mécanqiue, ce qu'iTunes ne sait pas faire.
Pour le savoir, dans EAC, en mode expert (les options sont cachées en mode beginner), va dans le menu EAC / Drive options, dans l'onglet offset/speed, et regarde si la case à cocher "Use read sample offset correction" est activée, et si justement tu n'as pas la valeur +6 renseignée dans le champ correspondant.
Si la valeur est présente, mais grisée, c'est probablement que tu as l'extension AccurateRip d'installée. Elle requiert impérativement la correction d'offset, car elle génère la signature CRC des plages extraites et la compare avec une base de donnée en ligne de toutes les signatures obtenues par les utilisateurs d'AccurateRip (extension qui se greffe également sur dbPowerAmp et quelques autres logiciels). Elle permet de vérifier qu'il n'y a pas un seul bit de différence entre le wav que tu obtiens, et celui obtenu par les autres utilisateurs dans le monde qui ont rippé la même plage sur le même CD.
S'il n'y a pas concordance, on ne peut rien en déduire. Cela peut être une erreur de lecture, mais c'est beaucoup plus probablement que les pressages ne concordent pas. S'il y a correspondance, il est quasiment certain que les deux rips sont parfaits. Mais pour cela, tous les utilisateurs d'AccurateRip doivent ripper avec le même offset exactement, et comme ils n'ont pas tous les mêmes mécaniques, la correction est forcée par le logiciel.
La raison pour laquelle les mécaniques ne lisent pas à partir du même endroit est obscure. On a eu dit que dans le passé, les mécaniques n'étaient pas fiables et lisaient en ne partant pas toujours du même endroit. J'ai constaté cela sur un graveur Yamaha 6416s, mais c'était exceptionnel. Dans la base de données de SatCP, sur plusieurs dizaines de drives, seuls un ou deux Yamaha présentaient un offset variable d'une lecture à l'autre du même CD.
On a dit aussi que la norme Red Book qui définit le format de donnée du CD n'était pas explicite sur ce point, et qu'il y avait une ambiguïté sur l'endroit exact où enregistrer le premier octet du premier échantillon. De sorte que les constructeurs, dans le doute, auraient chacun décidé de prendre plus ou moins d'avance lors de la lecture pour être sûrs de ne rien rater.
Il faut savoir que les données audio sont entrelacées dans le sillon du CD. Mélangées, en quelque sorte, afin, en cas de zone illisible, de disperser les données illisibles dans plusieurs blocs de données audio, chacun pouvant s'auto-réparer si un seul, voire deux octets sont manquants. Or, les index indiquant le démarrage de chaque page ne sont pas entrelacés, eux ! D'où une écriture assez folklorique dans le flux de donnée, avec un bloc de données contenant des informations audio en provenance d'emplacements divers, et portant l'indication "début de la plage 1". Toutefois, si on réfléchit un peu, il n'y a guère d'autre façon de procéder que de partir du principe que c'est le premier octet du bloc portant l'indication plage 1 qui appartient au premier échantillon du flux audio de la plage 1.
Il est amusant de noter que lorsqu'EAC corrige l'offset, ce n'est pas le résultat obtenu ! Andre n'avait en effet aucun moyen de savoir quelle mécanique donne une bonne référence. Quand il a conçu EAC, il a utilisé une autre astuce. Il avait trouvé des commandes logicielles qui ordonnent au lecteur de lire au-delà de la dernière plage, ou en amont de la première (option overread into lead-in / lead-out dans EAC). Il était obligé de faire cela pour ne perdre aucune donnée lorsqu'il corrige l'offset, et obtenir des copies parfaites. Pour la petite histoire, EAC a été le seul logiciel jamais capable d'utiliser des commandes d'overwrite lors de la gravure, pour graver au-delà de la dernière plage, ou en amont de la première (car rappelez-vous, les graveurs sont décalés aussi. Il faut donc corriger la gravure si on veut un résultat parfait, et ordonner au graveur de déborder de ce qu'il croît être le bout du CD si on ne veut pas tronquer un petit morceau. Rappelez-vous aussi qu'EAC permet non seulement de ripper, mais de graver). Et EAC ne les active effectivement que pour un antique modèle de graveur 4x de marque Teac.
Les mécaniques réagissent assez diversement à ces commandes d'overread. Certaines acceptent jusqu'à un certain point, puis renvoient des données nulles au-delà. Certaines ne renvoient que des données nulles.
Andre a donc utilisé un lecteur capable d'overread pour examiner les données audio qui se trouvent au-delà de la dernière plage. Il a fini par trouver des CD enregistrés depuis des sources analogiques, avec un bruit de fond visible en numérique, et qui s'arrêtait net un certain nombre d'échantillons après la fin de la dernière plage, ou du moins la fin de ce que son lecteur croyait être l'emplacement de la dernière plage. Il a cependant trouvé plusieurs emplacements différents selon la provenance des CD, ce qui tend à indiquer que les machines à graver les CD en usine ont de l'offset, elles aussi. Il a donc retenu comme valeur de référence celle qui revenait le plus souvent parmi ses CD.
On a su beaucoup plus tard que cette valeur n'était pas la bonne, et qu'elle était en fait à 30 échantillons de la valeur exacte. Plextor avait entre-temps sorti des graveurs de DVD sans offset, qui, par ironie du sort, se sont retrouvés affublés d'une read offset correction de +30 et d'un write offset de -30 dans EAC.
Mais Spoon disposait déjà de dizaines de milliers de CRC dans sa base de données AccurateRip. Il aurait fallu les détruire et reprendre la génération de la base à zéro avec le nouvel offset. De sorte qu'EAC est finalement resté réglé sur cet offset.
L'offset exact a été vérifié par une équipe de joyeux drilles du forum CD Freaks. Je ne sais plus s'ils ont utilisé le projet fou de l'un d'entre eux qui avait fabriqué un lecteur de CD virtuel en reliant la cellule optique d'un lecteur de CD à une carte d'acquisition haute fréquence, qui enregistrait les creux et les bosses du sillon, et avait écrit un logiciel qui effectuait tout le décodage NRZ, puis EFM, puis C1, puis C2 à partir de la succession de creux et de bosses. Il pouvait voir directement quelle donnée correspondait à l'index de plage 1 (en admettant que c'est le premier octet du bloc qui sert de référence). Ou s'ils ont eu accès aux encodeurs EFM des machines à graver dans les usines, et ont pu ainsi analyser l'emplacement des données pressées sur CD. Je me rappelle qu'ils ont travaillé sur les deux, mais je ne sais plus si leur vérification de l'offset absolu vient d'une des deux méthodes ou des deux.