7 min de lecture
Pourquoi les tags de tes fichiers musicaux sont faux
Un fichier audio ne sait pas ce qu'il contient. Il porte un titre, un artiste et une pochette parce que quelqu'un, un jour, les a écrits dedans. Et ce quelqu'un pouvait se tromper.
C'est la première chose à comprendre avant de passer un week-end à réparer une bibliothèque à la main : les métadonnées d'un morceau ne sont pas une propriété du son. Ce sont des notes laissées à côté.
Ce qu'il y a vraiment dans le fichier
Un MP3 n'est pas qu'un flux audio : il traîne un petit bloc de texte, le tag ID3, collé en tête ou en queue de fichier. Les autres formats ont leur équivalent : les commentaires Vorbis pour FLAC et Opus, les atomes ilst pour l'AAC en conteneur MP4. Le principe ne change pas : des paires clé-valeur, plus une image.
TITLE=Nocturne
ARTIST=Ensemble Vireo
ALBUM=Marées basses
DATE=2019
TRACKNUMBER=4Rien là-dedans n'est vérifié, et rien ne relie ce texte au son qui suit. Tu peux écrire Symphonie n° 9 sur trois minutes de silence : aucun lecteur ne protestera, aucun scanner ne le remarquera. L'étiquette est sur la boîte, pas dans la boîte.
Une bibliothèque musicale, c'est un mur d'étiquettes que personne n'a jamais relues.
D'où viennent les étiquettes
Elles ont presque toujours l'une de ces quatre origines, et chacune a sa manière de mentir.
- Un CD extrait. Le logiciel calcule un identifiant à partir de la longueur des pistes et interroge une base : historiquement CDDB, aujourd'hui MusicBrainz. Deux disques qui ont par hasard le même découpage donnent le même identifiant, et le mauvais album gagne.
- Le nom du fichier. Beaucoup d'outils supposent
Artiste - Titre.mp3et découpent au premier tiret. Un artiste dont le nom contient un tiret, un titre qui en contient un, un fichier nommé01 - piste 01.mp3, et la règle produit des ordures avec la même assurance. - La page d'où vient le fichier. Le titre d'une page web n'est pas un titre de morceau : c'est une accroche. D'où les
(Official Video),HD,[Lyrics]et majuscules hurlantes qui traversent toute une collection. - Une main. La plus fiable des quatre, et celle qui ne passe pas à l'échelle. Personne ne tague trois mille morceaux sans se lasser au bout de cinquante.
Les cinq façons dont ça casse
Les dégâts sont toujours les mêmes, quel que soit le point de départ. Si tu ouvres ta propre collection maintenant, tu en trouveras au moins trois.
- Le champ « artiste de l'album ». Sur une compilation, chaque piste a son artiste, mais l'album n'en a qu'un. Les outils qui ignorent
ALBUMARTISTfont exploser l'album en dix-huit albums d'une piste. C'est la panne la plus courante de toutes. - L'encodage. ID3v2 admet plusieurs encodages de texte. Un tag écrit en latin-1 puis relu en UTF-8 donne
Björkau lieu deBjörk, et le fichier reste cassé jusqu'à ce que quelqu'un le retape. - Les invités.
feat.,ft.,featuring, entre parenthèses, après une virgule, dans le titre ou dans l'artiste. Six écritures pour un même fait, et six artistes distincts dans la liste. - Les rééditions. Remaster, édition anniversaire, réédition avec deux titres en plus : même album, dates et numéros de piste différents. Triée par année, ta discographie devient un mensonge.
- Les vides. Pas de date, pas de numéro de piste, pas de pochette. Un lecteur qui range par album affiche alors un ordre alphabétique, ce qui n'est l'ordre de personne.
Pourquoi chercher le titre ne répare rien
Le réflexe est d'envoyer le texte du tag à une base de données et de prendre le premier résultat. Ça échoue exactement là où on a besoin que ça marche : quand le texte de départ est faux.
Une recherche par texte hérite de l'erreur qu'elle est censée corriger. Elle ne distingue pas deux morceaux homonymes de deux groupes différents, ni un enregistrement studio de sa version live, ni un original de sa reprise. Pire : elle répond toujours quelque chose. Sur mille fichiers, ces réponses plausibles mais fausses sont invisibles, jusqu'au jour où tu cherches un morceau et où il n'est nulle part.
Une empreinte plutôt qu'un nom
L'autre approche part du son. Un outil comme Chromaprint analyse les deux premières minutes du morceau, en tire l'énergie répartie sur les douze demi-tons de la gamme, image après image, puis compresse cette suite en une empreinte compacte.
$ fpcalc -length 120 morceau.mp3
FILE=morceau.mp3
DURATION=241
FINGERPRINT=AQADtEmiKFKSJIeS5Hkg5X...Cette empreinte décrit ce qu'on entend, pas ce qu'on a écrit. Elle survit au ré-encodage, au changement de débit, à une normalisation du volume, à quelques secondes de silence en tête. Le même enregistrement en FLAC et en AAC donne, aux arrondis près, la même signature.
Il reste à savoir à quoi elle correspond. AcoustID tient ce registre : des millions d'empreintes, chacune reliée à un enregistrement de MusicBrainz, l'encyclopédie musicale ouverte. On y récupère un identifiant stable, et avec lui le titre exact, l'artiste crédité, l'album, l'année de parution, la place dans le disque et la pochette.
Ce n'est plus une recherche, c'est une reconnaissance : le fichier n'a plus son mot à dire sur ce qu'il prétend être.
Ce que l'empreinte ne fait pas
Trois limites, à connaître avant de croire à la magie.
- Elle identifie un enregistrement, pas une œuvre. Un live, un remix, une session acoustique sont d'autres enregistrements et reçoivent d'autres identifiants. C'est voulu, et c'est justement ce qu'une recherche par titre ne sait pas faire.
- Elle ne trouve que ce qui a déjà été soumis. Une autoproduction confidentielle, l'enregistrement d'un concert local, un morceau paru la veille : pas d'empreinte dans la base, pas de réponse. La base est ouverte, on peut l'alimenter.
- Elle ne juge pas. Le genre, l'humeur, la note que tu mets à un disque ne sont dans aucun spectre. Ces champs-là resteront les tiens, et c'est très bien.
Le faire soi-même
Rien de tout ça n'est propriétaire. fpcalc vient avec Chromaprint, et beets est le gestionnaire de bibliothèque qui met l'ensemble bout à bout : il calcule les empreintes, interroge AcoustID, propose la correspondance, écrit les tags et range les fichiers.
$ pip install "beets[chroma]"
$ beet config -e # ajouter chroma à la liste des plugins
$ beet import ~/Musique/à-rangerCompte une soirée pour la première configuration, et une certaine patience avec les cas que beets te demande de trancher toi-même. C'est un excellent outil, écrit par des gens qui ont pensé à tout, mais il vit dans un terminal, et il faut vouloir y vivre aussi.
Ce qu'on gagne
Des tags justes, ce n'est pas de la maniaquerie. C'est ce qui fait qu'une collection reste lisible quand elle change de machine, de logiciel ou de décennie. Les fichiers, eux, ne se perdent pas : ce sont les catalogues qui se perdent. Un morceau correctement nommé et correctement rangé se retrouve avec ls, dix ans plus tard, sans l'application qui l'avait importé.
C'est la seule forme de possession qui compte pour une bibliothèque musicale : pouvoir l'ouvrir sans rien demander à personne.