Sommaire
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 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, un client en CLI (ou presque) pour MPD 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 m'avait conseillé 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, 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 (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) :
# Tags multiples
Posté par Paul . Évalué à 5.
Très sympa ce client. Pleins de bonnes idées.
Ça n'est pas tout à fait vrai. Ça dépend des formats, mais en ogg vorbis en en flac, tu peux mettre plusieurs tags ayant le même libellé, et MPD les voit tous.
Est-ce que tu utilises les stickers de MPD ? Ou un cache local ? Juste par curiosité.
[^] # Re: Tags multiples
Posté par nhrx . Évalué à 3. Dernière modification le 05 janvier 2013 à 10:46.
Merci pour la précision sur les tags multiples, je n'ai jamais rencontré ce cas mais je ferai des essais car je ne pense pas que MPDC sache les gérer correctement dans l'état actuel.
Non, je n'utilise pas les stickers de MPD, les fichiers de cache se trouvent tous dans
~/.cache/mpdc
. D'ailleurs, j'ai oublié de le préciser, mais je compte prochainement m'occuper de la gestion des profils, notamment afin que plusieurs fichiers de cache puissent cohabiter sans s'écraser entre eux à chaque nouvelle connexion vers un autre serveur MPD.# Intéressant
Posté par dave_null (site web personnel) . Évalué à 1.
C'est très intéressant l'idée d'exploiter Last.fm de manière assez aboutie.
Par contre j'imagine qu'il faut avoir une bonne collection de musiques sur son ordinateur (et en bonne qualité, il faut de l'espace disque). À ton avis est-ce qu'il est possible de reprendre les mêmes idées pour s'en servir avec Spotify ?
Il y a déjà Last.fm dans Spotify, mais c'est vraiment très minimaliste, et les suggestions deviennent inutiles si on prend l'habitude d'écouter plein de choses nouvelles.
[^] # Re:Intéressant
Posté par Juke (site web personnel) . Évalué à 2.
Il est peut etre possible de porter le boulot de l'auteur sur mopidy.
[^] # Re: Intéressant
Posté par nhrx . Évalué à 1.
Je ne connais pas bien Spotify mais je ne pense pas qu'il soit possible de rechercher des musiques en utilisant des expressions ensemblistes et en spécifiant des tags de recherche (c'est vrai que ce serait assez intéressant étant donné que le répertoire de musiques est quasi-infini). J'ignore également quelles informations leur algorithme utilise, s'il peut prendre directement en compte d'autres tags que les classiques artiste/album/titre/genre, et comment marche leur système de recommandations, mais dans tous les cas, on ne peut pas « injecter » les idées de MPDC dans Spotify sans passer par des « hacks » comme l'évoque Juke.
# Note: zsh
Posté par Reventlov . Évalué à 2.
Bonsoir.
Je ne suis pas inscrit sur Github, alors je poste ici: avec zsh, la commande mpdc-playlist re g"electronic" renvoie
Il faut utiliser la syntaxe suivante:
Je ne sais pas si c'est à considérer comme une erreur ou non.
En tout cas, merci pour ce programme, les "modifiers" sont particulièrement utiles.
[^] # Re: Note: zsh
Posté par nhrx . Évalué à 3.
Merci pour le retour ! Ce comportement est normal car il est nécessaire d'entourer tous les arguments d'apostrophes ou de guillemets dès qu'ils deviennent un peu trop tordus, notamment lorsqu'ils contiennent eux-mêmes des quotes ou des espaces, des parenthèses, des « | », etc.
Par exemple,
mpdc-playlist re all
fonctionne, tout commempdc-playlist re favoris-relax.une_playlist
oumpdc-playlist : next
. Par contre, on a besoin d'échapper pourmpdc-playlist re "all-(favoris+relax)"
ou encorempdc-playlist : "random on"
.En utilisant la petite boîte GTK quand c'est possible, toutes ces contraintes disparaissent car ce qui est tapé est transmis tel quel au programme, sans que le shell ne transforme l'expression.
[^] # Re: Note: zsh
Posté par Paul . Évalué à 3.
Histoire de centraliser les retours, je me permets de poster ici, même si ça n'a rien à voir avec zsh.
La commande
mpdc-database lastfm update artists
s'est très bien passée, mais dès que je lancempdc-database lastfm update albums
voici ce que j'ai :J'utilise mpdc-git sur AUR (Arch Linux).
[^] # Re: Note: zsh
Posté par nhrx . Évalué à 1.
Merci pour ce retour, je viens de corriger ça dans la version git.
[^] # Re: Note: zsh
Posté par Paul . Évalué à 3.
Ça fonctionne très bien maintenant.
En revanche mpdc part du principe qu'un
album
appartient à unartist
, ce qui fait que pour les compilations, on a un beau[warning] LastFM error: Album not found
. Il faudrait plutôt utiliser le tagalbumartist
.[^] # Re: Note: zsh
Posté par nhrx . Évalué à 1.
En effet, ce serait bien plus cohérent. Merci pour le conseil, je m'en occuperai en priorité.
# Organisation de la musique ?
Posté par Dreamkey . Évalué à 3.
Je profite de ce journal pour demander un truc : comment organisez-vous votre musique sur votre disque dur ? Est-ce que c'est en vrac dans un dossier ?
J'avais fait un classement avec un dossier par artiste, mais aujourd'hui ça ne convient pas, j'ai pas mal de remix, des artistes qui s'associent sur une seule musique, des "sessions" où plusieurs DJs mixent à la suite… Un classement par genre ne me convient pas car, comme dit plus haut, c'est subjectif, mais si en plus un artiste change de style plusieurs fois, je ne pourrais pas mettre tous ses titres dans un seul dossier.
[^] # Re: Organisation de la musique ?
Posté par Dinosaure (site web personnel) . Évalué à 1.
Pour mon cas, j'ai fait un chroot
/mpd
(poursftp
) contenant un dossiertorrent
(je télécharge que en torrent) contenant tout les musiques en vrac. Ensuite, j'ai un dossiermusic
qui, à coup deln
est bien organiser et c'est ce dossier que MPD lit. Je pense que c'est le meilleur, je garde une organisation par artiste et dès que j'ai des albums à coup de .feat, je dis merci le lien symbolique. Il y a donc peut être des doublons dans la BDD de MPD mais jamais de doublons de fichier.[^] # Re: Organisation de la musique ?
Posté par coïn . Évalué à 2.
Une organisation Année/Titre de l'album/*.mp3 le tout correctement tagger.
Pourquoi par année ? ben ca permet de répartir un peu la quantité de dossier. Année et titre de l'album, c'est factuel :)
[^] # Re: Organisation de la musique ?
Posté par Paul . Évalué à 5. Dernière modification le 06 janvier 2013 à 11:57.
Je pense que pour avoir une organisation efficace, il faut raisonner en bibliothèque physique. Ce qui signifie organiser en dossiers/sous-dossiers comme on organiserait en meubles/étagères. Et taguer correctement toutes les pistes, avec au moins artist, title, tracknumber, album, albumartist. Et composer et grouping dans le cas de musique classique.
Dans albumartist, je mets soit la même chose que dans artist si c'est un album « normal », c'est-à-dire toutes les pistes par la même personne, soit quelque chose de représentatif dans le cas où les artists ne sont pas les mêmes sur toutes les pistes (coffrets, compilations, BO, etc.). À adapter pour les artistes qui changent de groupe en restants les mêmes. Par exemple, pour tous les albums ayant pour artist « Bob Marley & The Wailers » ou « The Wailers », l'albumartist est systématiquement « Bob Marley ». Pareil pour Jimi Hendrix ou ceux qui changent de nom (la Ruda [Salska] par exemple).
Ensuite j'organise pas tout à fait de la même manière (mais dans le même Musique) selon le type de publication. En gros, et avec quelques exemples :
Les albums studios, les lives, les EP, les singles sont dans Musique/$albumartist/$date - $album/[$discnumber-]$tracknumber. $title
$discnumber n'apparait que si >1.
Les BO sont dans Musique/Soundtracks/$date - $album/[$discnumber-]$tracknumber. $artist - $title
Pour les compilations, c'est du cas par cas, mais en gros c'est Musique/$albumartist/$date - $album/[$discnumber-]$tracknumber. $artist - $title
Ici albumartist dépend de la compilation, par exemple pour un album de reprises d'un mec connu, albumartist sera le nom de ce mec. Si c'est des compilations issues de radios ou de label, albumartist sera le nom de la radio ou du label.
Dans le cas de coffret, soit c'est des compilations et je fonctionne comme les compilations en rajoutant un dossier du nom du coffret entre albumartist et album, soit c'est des discographies complètes et je les éclates pour les traiter en albums individuels.
Pour le classique c'est le bordel, le tag grouping aide beaucoup mais quasi aucun lecteur audio ne le prend en charge correctement. Ça représente l'œuvre musicale dont fait partie le mouvement. Par exemple pour un CD des Quatre Saisons de Vivaldi, dans album je vais mettre « Les Quatre Saisons », dans title le nom du mouvement (allegro, largo, etc.) et dans grouping le nom de l'œuvre, par exemple « Concerto nº 1 en mi majeur, op. 8, RV 269, « La primavera » (Le Printemps) ».
L'organisation va donner en gros Musique/Classique/$albumartist/$album ($composer)/$tracknumber. $grouping - $title
Mais là je suis très flexible.
Respecter cette organisation me permet d'utiliser un lecteur audio qui accède à la musique en mode « système de fichier » mais qui est également capable de faire des recherches sur les tags.
Je déteste les lecteurs qui imposent le classement par tags que je ne choisis pas et qui impose le même classement pour toute la musique. Je trouve ça inutilisable.
J'utilise donc pour lire la musisque MPD avec ncmpcpp, sonata ou mpdc ; j'utilise pour taguer la musique ex falso en mode manuel ou beets en mode automatique (à retoucher quasi systématiquement).
Pour les pistes ayant plusieurs artists, tout va bien, MPD gère les tags multiples sur une même piste. On peut mettre autant d'artists qu'on veut.
[^] # Re: Organisation de la musique ?
Posté par obcd . Évalué à 3.
J'utilise beets (http://beets.radbox.org/) pour tagger et organiser ma musique. Tout est synchronisé avec Musicbrainz, ce qui fait que les tags s'améliorent avec le temps. En plus beets permet de récupérer les pochettes des albums, les paroles, les genres de last.fm et beaucoup d'autres trucs.
Une fois que tout est bien taggé, j'utilise musiccabinet pour lire ma musique (http://dilerium.se/musiccabinet/). Le logiciel utilise les données de last.fm pour jouer des radios thématiques (genre, radio de l'artiste), les chansons les plus jouées selon last.fm de chaque artiste, donner des recommandations etc.
# Quelques propositions d'ajouts
Posté par Paul . Évalué à 3.
Bonjour nhrx,
j'ai pensé à quelques (gros) ajouts qui pourraient être intéressants pour mpdc, mais je n'ai toujours pas de compte github.
MPDC a en quelque sorte apporté à MPD les listes de lecture intelligentes qu'on retrouve dans d'autres logiciels, en améliorant leur utilisation. Maintenant, on peut imaginer des critères de sélection qui ne soient pas sur les tags des chansons, mais sur les données de lecture elles-mêmes. Par exemple, un système de notation des chansons pour prioriser celles qu'on apprécie le plus, ou encore un compteur de lecture pour faire des collections sur ce qui est rarement écouté. Dans le même genre d'idées, pourquoi pas la date de dernière lecture, pour pouvoir créer la collection « bien noté mais plus écouté depuis 2 ans » ? Ou encore la date d'ajout à la BDD, pour faire des collections sur les chansons récemment ajoutées, ou encore une collection « ajouté en 2012 ».
Je suppose que pour tout ça, il faudrait utiliser les stickers, et que pour la plupart de ces idées il faudrait que ce soit carrément MPD qui écrive dans les stickers pour rque ce soit efficace. Faudrait donc tater le terrain du côté des dev de MPD, ce qui risque d'être un peu compliqué. J'imagine.
[^] # Re: Quelques propositions d'ajouts
Posté par nhrx . Évalué à 1.
Merci pour ces propositions. Cependant, je ne compte pas (en tout cas pour le moment) faire de MPDC un daemon ni alourdir le programme en faisant ce genre de statistiques qu'il faudrait mettre à jour à chaque utilisation. Mais je reconnais que cela pourrait être pratique, d'ailleurs je crois me souvenir avoir vu quelques clients qui proposaient ce genre de fonctionnalités. Je regarderai tout de même ce qu'il est possible de faire avec la BDD existante de MPD.
Pour le système de notations, ça pourrait être implémentable mais il faudrait d'abord que j'ajoute au parser des tests de supériorité/infériorité pour que ce soit intéressant (note >= 4, et pourquoi pas étendre le système au tag « date »). Pour rassembler des chansons que l'on apprécie, on peut aussi utiliser des collections.
Sinon, je viens de mettre à jour la version Git de MPDC et les recommandations issues de Lastfm utilisent maintenant en priorité le tag « albumartist » au lieu de « artist » (il peut être nécessaire de supprimer le fichier de cache
~/.cache/mpdc/1/albums_tags.mpdc
et de remettre à jour).[^] # Re: Quelques propositions d'ajouts
Posté par Paul . Évalué à 2.
Oui il faudrait que ce soit MPD qui intègre tout ça.
Super, merci beaucoup
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.