DiscId

DiscId

Le DiscId est un identifiant calculable pour tout CD Audio. Cet identifiant est un nombre dont la valeur dépend du nombre de pistes sur le CD, et de la position de chaque piste.

Lors de l'extraction des pistes audio-numériques d'un CD audio, il est souhaitable que le nommage des fichiers obtenus soit fait à partir du nom de l'album, des titres des chansons, etc... Afin d'automatiser ce renommage il faut :

  • une base de données contenant les informations : nom et genre de l'album, titres des pistes, année de parution...
  • un identifiant propre à chaque album, servant de clé pour accéder à la base données.

Le DiscId est l'identifiant utilisé pour accéder aux bases de données CDDB et FreeDB, accessibles sur Internet. Il est utilisé par de nombreux logiciels pour nommer les fichiers audio-numériques. Les informations obtenues peuvent également être écrites dans les fichiers musicaux, sous forme de tags.

le DiscId est un nombre entier, codé sur 32 bits, représenté en hexadécimal sur 8 caractères (au besoin, il faut ajouter des caractères "0" en tête).

Il ne faut pas confondre le DiscId et l'ISRC. Ce dernier est attribué par un organisme officiel, de plus il y a un code ISRC par piste alors que le DiscId identifie l'ensemble du CD. De même le DiscId n'a aucun rapport avec le code-barres du CD.

Sommaire

Comment est-il calculé ?

Pour calculer le DiscId il faut disposer des informations suivantes :

  • la durée totale du disque ;
  • le nombre de plages du disque ;
  • la position de chaque plage, depuis le début du disque.

La durée de chaque plage doit être exprimée au format MSF (Minute/Second/Frame). La TOC du CD doit donc être lue dans ce format.

La durée totale du disque est la différence entre l'offset (la position) du lead-out (ensemble des blocs non-utilisés du CD) et l'offset de la première plage (usuellement 2 secondes).

Le calcul du DiscId ne tient compte que des minutes et des secondes : le nombre de frames est inutilisé.

L'algorithme est expliqué dans un howto téléchargeable sur le site de freedb.

Écrire un logiciel qui calcule le DiscId suppose de pouvoir lire la TOC du CD. Cette structure ne se présente pas sous la forme d'un fichier qu'on pourrait accéder par exemple depuis l'explorateur Windows. Il faut pouvoir accéder au CD à un plus bas niveau.

Exemple de calcul

La position de chaque plage doit être convertie en secondes, puis il faut faire la somme des chiffres de la durée obtenue. Ci-dessous un exemple pour l'album The Seeds Of Love de Tears For Fears, dans une édition comportant 4 plages supplémentaires (bonus).

plage  position (mn:sec)   position en secondes   position : somme des chiffres 
1 00:02 2 2
2 06:33 393 15
3 15:05 905 14
4 21:25 1285 16
5 26:16 1576 19
6 31:49 1909 19
7 38:02 2282 14
8 45:10 2710 10
9 49:37 2977 25
10 52:54 3174 15
11 57:32 3452 14
12 61:05 3665 20
13 = lead-out  65:22 3922


Il faut en premier calculer la somme de la dernière colonne (uniquement les plages, pas le lead-out) : S = 183.
Puis il faut calculer la durée totale du disque : T = position du lead-out - position de la première plage = 3920.
On a également besoin du nombre de plages : N = 12.

Le DiscId se calcule alors avec la formule suivante :

DiscId = ((S modulo 255) * 16777216) + (T * 256) + N

Avec notre exemple on obtient 3071234060, soit B70F500C en hexadécimal : c'est le DiscId de l'album.

Ce calcul n'est pas trivial. La première plage n'est pas forcément à l'offset 00:02, une piste de données peut décaler le lead-out, etc... Le site www.freedb.org (voir les Liens externes, ci-dessous) met à disposition une image de test utilisable pour valider une application calculant le DiscId. Il faut graver cette image sur un CD vierge puis comparer le DiscId calculé avec celui indiqué dans le fichier texte fourni.

Le DiscId est-il unique ?

Non ! Du fait de l'algorithme utilisé, deux disques différents peuvent avoir le même DiscID. L'algorithme pouvant être apparenté à une fonction de hachage, c'est un problème classique de collision.

Inversement, 2 éditions différentes d'un même disque peuvent avoir des DiscId différents.

Le MCI de Windows contient un bug se produisant lors de l'extraction d'un CD Extra (c'est-à-dire avec une ou plusieurs pistes de données) : les plages de données sont ignorées. Les logiciels utilisant cette interface peuvent donc calculer un DiscId incorrect pour de tels CD. Cela provoque l'apparition de plusieurs DiscId pour le même CD dans les bases de données FreeDB et CDDB.

Tags ID3

Dans la version 2.30 des tags ID3, il n'existe pas de tag pour enregistrer le DiscId dans un fichier mp3. Par contre il est possible de stocker toute la TOC du CD (804 octets) à l'aide du tag MCDI (Music CD Identifier). La documentation officielle de l'ID3 indique clairement que le lien avec les bases CDDB/FreeDB doit être fait via le tag MCDI. Il est donc peu probable qu'un tag "DiscId" apparaisse un jour.

A noter qu'il existe un tag pour l'ISRC, nommé "TSRC" : cet identifiant est réellement unique, contrairement au DiscId, ce qui explique peut-être qu'il ait son propre tag.

Voir aussi

Article connexe

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article DiscId de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • DiscID — Le DiscId est un identifiant calculable pour tout CD Audio. Cet identifiant est un nombre dont la valeur dépend du nombre de pistes sur le CD, et de la position de chaque piste. Lors de l extraction des pistes audio numériques d un CD audio, il… …   Wikipédia en Français

  • CDDB — CDDB, short for Compact Disc Database, is a database for software applications to look up audio CD (compact disc) information over the Internet. This is performed by a client which calculates a (nearly) unique disc ID and then queries the… …   Wikipedia

  • CDDB — (que significa Compact Disc Database, Base de datos de Discos Compactos en español) es una base de datos para que programas de ordenador obtengan información sobre un audio CD a través de Internet. Esto se lleva a cabo mediante un identificador… …   Wikipedia Español

  • Loïc Leferme — Infobox Person name = Loïc Leferme image size = 1 caption = birth date = 28 August 1970 birth place = Malo les Bainscite news | last = Henry | first =Michel | coauthors = | title = La mer engloutit Leferme | work = Libération.fr | pages = |… …   Wikipedia

  • In Deep — Infobox Album Name = In Deep Type = studio Artist = Tina Arena Released =Start date|1997|8|18 Recorded = Genre =Pop Length = Label =Columbia Producer =Mick Jones, David Tyson Reviews =*Allmusic Rating|3|5 [http://www.allmusic.com/cg/amg.dll?p=amg …   Wikipedia

  • August Neo — August Ago Neo (February 12, 1908 in Vihterpalu, Estonia ndash; August 19, 1982 in Aarhus, Denmark) was an Estonian wrestler and Olympic medalist.Neo competed at the age of 28 for Estonia in the 1936 Summer Olympics in Berlin, Germany and won the …   Wikipedia

  • Are We Really Happy with Who We Are Right Now? — Infobox Album | Name = Are We Really Happy With Who We Are Right Now? Type = Album Artist = Moneen Recorded = Audio International, Ojai, California; The Eye Socket, Venice, California Released = June 17, 2003 Genre = Emo, Indie rock Length =… …   Wikipedia

  • Psi Com — Infobox musical artist Name = Psi Com Img capt = Img size = 200 Landscape = Background = group or band Alias = Origin = Los Angeles, California Genre = Gothic rock Years active = 1983 1985 Label = Mohini Records Triple X Records Associated acts …   Wikipedia

  • Jamie Murray — Infobox Tennis biography playername = Jamie Murray nickname = Stretch, J Muzz, Jamz country = United Kingdom residence = Dunblane datebirth = birth date and age|1986|2|13|df=y placebirth = Dunblane, Scotland height = height|m=1.90 weight =… …   Wikipedia

  • Thomas Garrigus — Infobox Person name = Thomas Garrigus image size = caption = birth date = November 9 1946 birth place = Hillsboro, Oregon death date = death date and age|2006|12|29|1946|11|9 death place = Plains, Montana death cause = resting place = resting… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”