Journal MPD_sima: Client MPD non interactif en version 0.13

8
2
fév.
2015

Une petite auto-promo sur ce client utilitaire pour le lecteur MPD précédemment évoqué sur LinuxFr.org.

MPD_sima permet l'ajout automatique de titres dans la file de lecture. Les titres sont choisis parmi les recommandations de services web (si présentes dans la médiathèque gérée par MPD).

Pas de nouveauté majeure dans cette nouvelle version, il s'agit surtout d'une consolidation des évolutions précédentes et de correctifs divers.

En particulier:

  • une meilleure gestion des identifiants MusicBrainz quand ils sont présents dans les tags
  • amélioration du moteur de recherche dans la bibliothèque locale de MPD, désormais des artistes avec plusieurs alias ou bien mal orthographiés peuvent être agrégés et remontent comme suggestions.

Installation

Le paquet python est disponible sur python package index, un paquet debian (testing/jessie) est disponible sur mon dépôt APT.

Bonne écoute :)

  • # Très intéressant

    Posté par . Évalué à 1.

    Salut,

    Merci pour ce logiciel que je ne connaissais pas. Je pense que je vais le suivre et participer, il me semble vraiment sympa !

    Un truc que je n'ai pas bien saisi, pour qu'il puisse utiliser MusicBrainz il faut générer une empreinte avec AcoustID pour chaque fichier ?
    Et ensuite à partir de cette empreinte, il est capable d'identifier des fichiers à la sonorité similaire ?

    Si c'est le cas tu aurais un générateur d'empreinte AcoustID sous linux à recommander ?

    Merci encore,

    • [^] # Re: Très intéressant

      Posté par (page perso) . Évalué à 2.

      Un truc que je n'ai pas bien saisi, pour qu'il puisse utiliser MusicBrainz il faut générer une empreinte avec AcoustID pour chaque fichier ?

      Pour qu'il puisse utiliser les ID MusicBrainz, il faut uniquement que le tag soit servi par MPD (cf. metadata_to_use dans mdp.cfg). Par défaut MPD expose tous les "tag" qu'il connaît et qui sont dispos dans les fichiers. Pour vérifier, jouer un fichier contenant des ID MusicBrainz et interroger MPD, avec netcat par ex:

      # (en utf-8)
      # La sortie doit afficher des tags MUSICBRAINZ_*
      printf 'currentsong\nclose\n' | nc localhost 6600

      MPD_sima est un client MPD qui exploite uniquement les informations déjà contenues dans les fichiers, en particulier les tag title, artist, album, albumartist et leurs équivalents musicbrainz. À partir de ces informations il interroge des services web (lastfm ou echonest) pour trouver les artistes similaires. Cette opération est facilitée par l'utilisation d'identifiants uniques que sont les ID musicbrainz.

      L'étape d'édition des tags des fichiers de la médiathèque est complètement indépendante de MPD_sima. C'est un travail à faire par ailleurs.
      Le calcul des empreintes AcoustiID est une méthode pour identifier un morceau de musique et ensuite renseigner les tags des associés. Le logiciel de MusicBrainz Picard fonctionne ainsi.
      Les empreintes AcoustID sont un équivalent acoustique des fonctions de hachage mathématique.

      Dans tous les cas MPD_sima n'utilise pas du tout les AcousticID, de plus il ne détermine pas lui même les similarités mais utilise un service de recommandation externe.

      D'ailleurs le calcul des AcousticID ne permet pas de déterminer des similarités entre différent titres, il permet uniquement d'identifier un morceau de musique à partir de fichiers différents (par ex. un même enregistrement compressé en MP3, vorbis audio, FLAC ou non compressé).

      AcoustID est un logiciel libre si tu désires jouer avec les empreintes. Cependant je te conseille d'utiliser un taggeur tel que Picard si tu veux simplement renseigner les ID musicbrainz.

      MPD_sima devrait cependant fonctionner convenablement sans les ID musicbrainz.

      • [^] # Re: Très intéressant

        Posté par . Évalué à 1.

        Ah j'ai confondu avec MusicIP qui générait des PUID que MusicBrainz a utilisé à une époque.
        Ces PUIDs permettaient eux d'identifier des musiques similaires (c'était apparemment vraiment révolutionnaire à l'époque).

        Merci d'avoir éclairci !

        • [^] # Re: Très intéressant

          Posté par . Évalué à 2.

          En fait c'est plus compliqué que cela.

          MusicIP avait :

          • un utilitaire "genpuid" qui pouvait analyser la chanson (données MUSICMAGIC DATA et MUSICMAGIC FINGERPRINT)
          • un utilitaire "MusicIP Mixer" qui à partir des analyses, pouvait identifier les titres similaires

          Les analyses pouvait être stockées directement dans les tags de la chanson (tags MUSICMAGIC DATA et MUSICMAGIC FINGERPRINT) ou bien être stockées dans une base de données.
          Cependant une analyse de chanson est très lourde en charge CPU (certains rapportent une durée de presque 80% du temps de la chanson par exemple) et il était possible de juste faire un hash/fingerprint "PUID" de la chanson et de demander au serveur central de MusicIP si quelqu'un n'avait par hasard par déjà fait le travail.

          Là où c'était révolutionnaire c'est que tout pouvait être fait hors-ligne si nécessaire (l'analyse et les recommandations).

          J'aurais bien aimé comprendre comment marchait l'algorithme de recommandations ainsi que l'analyse de musique. Apparemment les gens sont très agréablement surpris, ce qui est vraiment étonnant pour un truc tout automatique.
          Malheureusement tout est proprio, closed-source, blindé de brevets et abandonné (même si des valeureux arrivent encore à le faire fonctionner).

          Si kaliko/MPD_sima s'ennuie, faire du reverse-engineering sur "MusicIP Mixer" serait un beau défi et une superbe évolution de son logiciel (du reverse-engineering sur "genpuid" je pense que c'est trop difficile).

          • [^] # Re: Très intéressant

            Posté par (page perso) . Évalué à 2.

            Il y a bien un projet ouvert et similaire, mirage [0], de la recommandation faite uniquement à partir du signal audio.

            J'ai vu deux implémentations sur deux lecteurs audio

            • Banshee, l'implémentation originale [0]
            • MPD via le client autoqueu [1]

            L'un comme l'autre semblent abandonnés, je n'ai pas fait de recherches récentes sur des projets similaires.

            À l'ère du "big data" et du "cloud" je pense que les projet ouverts et collaboratifs sont plus prometteurs.
            Je pense en particulier à acousticbrainz [2] que j'ai présenté précédemment ici même.

            En ce qui concerne MPD_sima, j'ai toujours eu dans un coin de la tête de partir sur des solutions à base de MIR plutôt que taper sur un web service, j'ai l'impression que le futur pourra être un mélange des deux, la direction que prend acousticbrainz àmha.

            Il n'y a pas de véritable feuille de route pour MPD_sima. Uniquement se faire plaisir en écrivant un programme me permettant de prendre plaisir à écouter ma médiathèque finement renseignée :D

            [0] http://hop.at/mirage/
            [1] https://launchpad.net/autoqueue
            [2] http://acousticbrainz.org/

  • # Lien foiré

    Posté par (page perso) . Évalué à 2.

    Tiens, je remarque que j'ai foiré un lien dans mon journal, quand je parlais de « client […] précédemment évoqué sur LinuxFr.org. » je voulais lier vers quelque chose comme ça plutôt: http://linuxfr.org/tags/mpd_sima/public /o\

  • # Intéressant mais…

    Posté par (page perso) . Évalué à 1.

    Ça a l'air super intéressant, mais j'ai essayé de l'installer via pip et je me cogne une erreur à l'installation de python-musicpd :

    Downloading/unpacking python-musicpd>=0.4.1 (from MPD-sima)
      Downloading python-musicpd-0.4.2.tar.bz2
      Running setup.py egg_info for package python-musicpd
        Traceback (most recent call last):
          File "<string>", line 16, in <module>
          File "/tmp/pip-build-root/python-musicpd/setup.py", line 12, in <module>
            with open('README.rst', encoding='UTF-8') as file:
        TypeError: 'encoding' is an invalid keyword argument for this function
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
    
      File "<string>", line 16, in <module>
    
      File "/tmp/pip-build-root/python-musicpd/setup.py", line 12, in <module>
    
        with open('README.rst', encoding='UTF-8') as file:
    
    TypeError: 'encoding' is an invalid keyword argument for this function
    

    Une idée ?

    • [^] # Re: Intéressant mais…

      Posté par (page perso) . Évalué à 1.

      Je pense que c'est un problème python 2/3, peux tu donner les commandes que tu as exécutées et la version de l'interpréteur python ?

      Cela ressemble typiquement à une installation de python-musicpd avec python2.

      • [^] # Re: Intéressant mais…

        Posté par . Évalué à 1.

        J'ai réussi à l'installer sur Debian Wheezy, par contre c'est vrai qu'il faut faire attention à 2-3 trucs. En particulier comme Python 3.3 n'est pas dispo, on ne peut pas utiliser le script automatisé de création de virtualenv.
        @kaliko : si tu veux je t'envoie ce qu'il faut faire pas à pas et tu pourras le mettre dans ton fichier INSTALL ?

        • [^] # Re: Intéressant mais…

          Posté par (page perso) . Évalué à 1.

          En effet, sur Debian/Wheezy il faut passer par la création du virtualenv à la main.

          Je pourrais faire un backport de mpd-sima (celui de python3-musicpd existe déjà), mais Wheezy est en fin de vie, je me suis concentré sur la prochaine stable Jessie.

          Je veux bien tes commentaires par rapport aux instructions de INSTALL :)

          • [^] # Re: Intéressant mais…

            Posté par . Évalué à 1.

            Avec root :

            1. apt-get install python3 python3-pip virtualenvwrapper

            Avec user :

            1. (disconnect and reconnect for virtualenvwrapper)
            2. git clone http://git.kaliko.me/sima.git
            3. mkvirtualenv --python=/usr/bin/python3 sima
            4. pip-3.2 install -e sima

            Ensuite pour faire fonctionner sima avec user :

            1. workon sima
            2. mpd-sima
      • [^] # Re: Intéressant mais…

        Posté par (page perso) . Évalué à 1.

        Oui c'est ça je suis sous Fedora pour Python 3 c'est la commande python3. J'ai téléchargé direct les sources et installé avec python3 setup.py install.

        • [^] # Re: Intéressant mais…

          Posté par (page perso) . Évalué à 1.

          C'est python3 setup.py install qui t'as rendu une erreur :/

          Quelle est ta version de python ? python3 --version

          Je te conseille plutôt de suivre les instructions de INSTALL, à savoir de passer dans un virtualenv, ou bien si tu as python >= 3.3 sur Fedora, l'exécution de ./vinstall.py devrait passer.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.