URL: https://linuxfr.org/users/nhrx/journaux/quelques-nouvelles-de-mpdc Title: Quelques nouvelles de MPDC Authors: nhrx Date: 2013年01月05日T02:26:20+01:00 License: CC By-SA Tags: mpd, musique, id3_tag, étiquette, client_logiciel et xmms Score: 18 Il y a un peu plus d'un mois, je présentais dans mon journal _[Des collections à la XMMS2 pour MPD, ou comment voir ses playlists comme des ensembles mathématiques](http://linuxfr.org/users/nhrx/journaux/des-collections-a-la-xmms2-pour-mpd-ou-comment-voir-ses-playlists-comme-des-ensembles-mathematiques)_ une nouvelle manière originale de considérer sa bibliothèque musicale, en se basant sur le modèle des ensembles mathématiques. J'avais également présenté les bases de [MPDC](http://nhrx.org/mpdc/), un client en CLI (ou presque) pour [MPD](http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki) qui implémente ces idées. Voici mes dernières avancées. ### Davantage de données avec Lastfm La principale limitation que je voyais à ce concept était que les musiques telles qu'on les possède sur notre ordinateur ne sont que très peu décrites au final : artiste, album, titre, date, à la rigueur le genre, et dans la plupart des cas, c'est tout. Alors que le concept pouvait paraître séduisant sur le papier, il arrivait (et il arrive toujours !) d'être frustré quand on se trouvait dans l'impossibilité d'écrire une requête qui traduise nos envies, car le but de MPDC est justement d'éviter de devoir aller chercher ses musiques à droite et à gauche. Pour aller plus loin, [oao](http://linuxfr.org/users/oao) m'avait [conseillé](http://linuxfr.org/users/nhrx/journaux/des-collections-a-la-xmms2-pour-mpd-ou-comment-voir-ses-playlists-comme-des-ensembles-mathematiques#comment-1412077) de me pencher sur les _ensembles flous_ en posant ce problème :> Si je veux du jazz, de la musique d'ambiance et de la musique que j'apprécie, l'intersection stricte risque d'être quasi nulle, alors que certaines chansons correspondent un peu aux trois critères. Dans cette situation, les tags ne suffisent plus et il me fallait donc une autre source d'information plus complète et peu contraignante à l'utilisation. J'ai opté pour [Lastfm](http://lastfm.fr/), un site communautaire où il est entre autres possible d'éditer les fiches des artistes et albums en leur ajoutant des tags. Bien que ces tags ne soient pas toujours pertinents car attribués par la communauté (il y a beaucoup de « masterpiece », « best band ever », etc.), ils ont le mérite d'être souvent assez nombreux. L'autre avantage de Lastfm, c'est que même les petits artistes qui ne dépassent pas le millier d'auditeurs peuvent être représentés et on peut espérer qu'avec le temps, leur nombre de tags augmente. Un autre point positif : l'API de Lastfm peut corriger les fautes mineures dans l'orthographe du nom d'un artiste ou d'un album. Puisque télécharger des tags pour toutes les musiques n'est pas envisageable, MPDC se limite aux tags des artistes et des albums, les stocke en cache et est capable de les utiliser en parallèle aux tags « classiques » des fichiers, exactement de la même manière. Deux nouvelles requêtes s'ajoutent donc (« trouver les musiques des artistes qui possèdent le tag X » et « trouver les musiques des albums qui possèdent le tag Y ») et l'implémentation est quasi-transparente pour l'utilisateur. Alors que je n'avais aucune musique taggée « genre = jazz », Lastfm est capable de me trouver une trentaine d'artistes qui, dans sa base de données, possèdent ce tag. Alors qu'avant MPDC n'aurait pas pu calculer l'intersection entre « genre = jazz » et « genre = ambient » (un fichier audio ne contient qu'une information sur le genre), Lastfm me retourne une dizaine d'artistes qui partagent ces deux tags dans ma bibliothèque. Puisque Lastfm a souvent tendance à être large dans ses tags — après tout, la musique est un domaine très subjectif —, il y a toujours moyen de recouper les résultats de ces requêtes pour les affiner. Le principal inconvénient de cette méthode est qu'elle met de côté les artistes (et leurs albums) peu connus, qui n'ont pas ou peu de tags. Mais elle résout une grande partie du problème et j'en suis pour l'instant plus que satisfait. ### ...et des recommandations Autre bonne nouvelle : les tags de Lastfm sont pondérés, c'est-à-dire que certains sont censés décrire mieux que d'autres l'artiste ou l'album. Cela permet par exemple de calculer assez facilement des indices de similarité entre les artistes/albums. Bien que les algorithmes de Lastfm soient bien plus évolués (ils prennent également en compte les statistiques d'écoute et les goûts des membres), il serait trop long de passer par l'API pour cela. MPDC calcule donc lui-même ces similarités et j'ai fait en sorte qu'il soit possible, disons, de trouver les N artistes ou albums les plus similaires à une collection « favoris » : il s'agit de ceux qui correspondent le mieux à la tendance générale de la collection. Là encore, la pertinence des résultats dépend avant tout du nombre de tags et de leur qualité pour chacun des artistes et des albums. ### Autres changements Un autre point intéressant à noter est que les collections sont maintenant des ensembles ordonnés (avant, les musiques étaient systématiquement triées de la même manière avant toute utilisation), ce qui facilite entre autres la gestion des playlists natives de MPD avec MPDC, puisqu'il y a conservation de l'ordre. Ces derniers temps, j'ai essayé de rendre le programme plus agréable à utiliser, notamment en rendant la présentation des musiques personnalisable lorsque l'on demande à lister le contenu d'une collection : couleurs, liste des tags affichés, etc. Pour les collections qui contiendraient beaucoup d'éléments, il est possible de passer par un pager (par défaut, less). J'ai également ajouté quelques petites fonctionnalités à droite et à gauche : possibilité d'exclure des musiques particulières lorsque l'on utilise des fonctions qui retournent des musiques choisies aléatoirement, ajout de commandes... Le projet est toujours en développement actif et pour la suite, je compte avant tout essayer de simplifier au maximum la [documentation](http://nhrx.org/mpdc/) (que je n'ai pas pu traduire pour le moment) et consolider ce qui a déjà été fait. Ensuite, j'essaierai de voir si je ne peux pas jouer davantage avec les poids des tags de Lastfm pour améliorer notamment la recherche de similarités. Voici deux screens qui montrent comment on peut concrètement utiliser MPDC (sur le premier, la collection « relax » est un exemple de collection qui s'appuie sur les tags de Lastfm) : [](http://nhrx.org/mpdc/static/images/screen1.png) [](http://nhrx.org/mpdc/static/images/screen2.png)