Journal Ma musique presque parfaite : Gonic + Ultrasonic

Posté par  . Licence CC By‑SA.
Étiquettes :
28
8
mar.
2023

Sommaire

Bonjour tout le monde,

J'ai presque tout vendu dans le titre, mais il y a quand même de quoi faire un journal. C'est parti !

Contexte

J'aime ma collection de musique. Je l'ai commencée du temps de Napster, et j'ai encore pas mal de fichiers qui datent de cette époque. Ils sont probablement très mal encodés, c'est pas grave, j'ai un bon déficit auditif, et ça me sert d'excuse.

Je n'aime pas dupliquer mes collections. À l'époque où j'ai eu des baladeurs (un Archos FM Recorder 20 Go, puis un Cowon D2, belle bête), j'avais l'intégralité de ma collection sur leur mémoire interne, et aussi sur mon ordinateur. À synchroniser à chaque fois, c'est un peu fatigant.

J'aime bien accéder à ma musique de partout. Pas forcément avec la même interface, mais au minimum avec la même organisation, typiquement par répertoire.

Historique

Au début, j'ai fait du sshfs et du nfs. C'est d'ailleurs toujours ce que je fais sur mon ordinateur personnel, NFS est très efficace.

Puis, j'ai utilisé Nextcloud après un passage avec ownCloud. Je ne regrette pas du tout, ça remplit très bien mon besoin. J'ai utilisé l'application Musique pour… ben… lire ma musique dans le navigateur. Ça marche très bien, ce n'est pas hyper pratique, mais au moins, c'est disponible presque partout. Et y a même un accès Webdav, au besoin.

Subsonic

J'ai découvert que l'application permet d'accéder à sa collection de musique via l'API Subsonic. Très rapidement, Subsonic est un serveur de média. Enfin, était. En version 6, ils ont fermé le code source auparavant ouvert, et depuis, il y a eu très peu de mise-à-jour. Mais l'écosystème a survécu. Je me suis penché là-dessus, parce que c'est ce qui m'a semblé le plus efficace pour y accéder depuis mes périphériques Android : l'ordiphone de ma femme et une tablette récupérée, dédiée à la maison.

Ultrasonic

C'est donc un client Android qui utilise l'API Subsonic, qui peut jouer les musiques directement depuis le serveur, tout en les téléchargeant dans un cache local pour de la lecture hors-ligne. Il n'y a pas de synchronisation, mais un simple cache, dont la taille est réglable, mais quand ça dépasse, les vieux fichiers sont supprimés.

Du son de partout

Et puis, je suis du genre à aimer pouvoir faire sortir le son de partout :

  • Le haut-parleur du téléphone / tablette

  • Mes enceintes d'ordinateur

  • Mon ampli dans le salon

Ce dernier point est important. Malgré mon audition déficiente, j'ai de bonnes enceintes, et quand j'ai envie de me faire plaisir, je veux pouvoir utiliser mon ampli avec n'importe quelle source : téléphone, tablette, ordinateur, mediacenter.

Pour ça, j'ai :

  • Un PulseAudio sur le serveur qui écoute en réseau. Comme ça mon ordinateur peut diffuser la musique vers le serveur
  • Un adaptateur Bluetooth sur le serveur. Comme ça, les téléphones et tablettes peuvent diffuser la musique vers le serveur
  • Un câble mini-Jack qui va du serveur vers l'ampli. Sortie son « basique ».
  • Le mediacenter étant un lecteur principalement de film, il est branché en HDMI + SPDIF sur l'ampli, donc lui, il fait sa popote dans son coin. Il accède au fichier par NFS.

Le problème

Ça marche tout ça, mais… c'est lent. Et parfois, l'application Nextcloud ne voit plus mes fichiers, ils ont tous disparu. Probablement parce que j'utilise un « montage externe » dans Nextcloud, qui pointe au même endroit que mes clients NFS, je ne sais pas. Mais pour avoir plongé dans le code de Nextcloud, en PHP, à chaque requête, ça fait à peu près ça :

  • Chargement de la liste des applications activées
  • Chargement de l'authentification
  • Lecture des fichiers en base de données, avec reconstruction complète des requêtes SQL qui ne sont pas gardées en mémoire
  • Lecture des fichiers musicaux concernés sur le disque, oui, à chaque fois

Ce n'est pas très efficace, mais c'est le modèle de PHP qui veut ça, on n'y peut rien.

De plus, le bluetooth est parfois un peu capricieux. Ça ne devrait pas, mais la connexion peut être un peu lente. Et puis honnêtement, quand on réfléchit, voilà le flux d'information : stockage du serveur -> téléphone via WiFi -> PulseAudio du serveur via Bluetooth -> Ampli. C'est un peu… inefficace.

Tests

J'ai testé tout un tas de truc, j'ai un peu oublié, mais en vrac :

  • MPD : c'est beau, ça marche, mais les clients sont un peu dur à installer, et les seuls moyens de diffuser sa musique ailleurs que sur la sortie son du serveur, c'est Icecast ou le serveur HTTP, qui a une latence horrible (genre 3 secondes). Icecast, c'est hors de question.
  • Mopidy : ben c'est un peu pareil que MPD. Les clients sont quand même mieux, mais ça ne fait que lire la musique sur le serveur.
  • MPD + MPD satellite sur Android + Client MPD sur Android : ça c'est bien usine à gaz. Notez bien que ça marche, mais j'ai aussi des enfants qui doivent s'en servir, c'est pas évident d'expliquer un truc pareil.
  • Kodi sur Android : Oui, voilà, avec l'accès Webdav c'est très lent. Avec un listing HTTP, c'est un peu moins lent. Genre ça ne prend que 5 secondes de naviguer dans un album en FLAC. Ahah.
  • VLC + DAVx⁵ : ça marche pas. J'ai pas réussi.
  • NFS sur Android, sans rooter son appareil, j'ai pas trouvé. C'est un peu ballot quand même… Mais la gestion des utilisateurs et du id mapping serait de toutes façons un cauchemar.

La solution : Gonic

Gonic est un serveur qui implémente l'API Subsonic, écrit en Go. C'est facile à installer, y a un binaire qu'on met où on veut, y a 3 paramètres à définir (au minimum), et ça indexe le répertoire, et voilà. Ah oui, c'est rapide. Je vois clairement la différence quand je navigue dans mes répertoires avec Ultrasonic.

C'est également le seul autre serveur que l'application Nextcloud qui permettait à Ultrasonic de naviguer dans un gros fichier audio (genre un livre audio de 10h pompé sur YouTube) sans l'avoir téléchargé en entier. Et même ça, c'était bien plus rapide avec Gonic qu'avec Nextcloud.

Et surtout, ils ont implémenté :

Le Jukebox

Ça, c'est la fonctionnalité que je n'avais jamais vue dans Subsonic. Ça permet, si le serveur Subsonic l'implémente, de faire jouer les musiques par le serveur sur sa sortie son, plutôt que sur l'appareil, et ce dernier sert donc de télécommande.

Gonic utilise une instance de mpv, qui est donc une dépendance optionnelle. C'est très efficace, car mpv lit quasiment tout et n'importe quoi (merci FFMPEG), et est tout à fait capable de sortir le son à travers le même PulseAudio déjà lancé.

Ultrasonic permet d'activer le mode Jukebox, et ça bascule en moins d'une demi-seconde, exactement au même endroit. Plus besoin du Bluetooth ! En tout cas pour ma musique.

Détails techniques

Comme j'aime bien segmenter mes services, j'ai quand même lancé Gonic de la manière suivante :

# /etc/systemd/system/gonic.service
[Unit]
Description=Gonic Subsonic API server
After=network.target

[Service]
Type=simple
DynamicUser=yes
Group=nas

StateDirectory=gonic
CacheDirectory=gonic
ConfigurationDirectory=gonic

Restart=on-failure
RestartSec=10

ExecStart=/usr/local/bin/gonic -config-path /etc/gonic/config

MemoryDenyWriteExecute=true

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/gonic.service.d/00security.conf
[Service]
SystemCallFilter=@system-service
PrivateDevices=yes
ProtectHome=yes
ProtectSystem=strict
PrivateUsers=yes
PrivateTmp=yes
NoNewPrivileges=yes
ProtectClock=yes
ProtectKernelLogs=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
ProtectProc=invisible
ProcSubset=pid
CapabilityBoundingSet=
RestrictRealtime=yes
ProtectHostname=yes
RestrictNamespaces=yes
LockPersonality=yes
RestrictSUIDSGID=yes
ProtectControlGroups=yes
RemoveIPC=yes
SystemCallArchitectures=native

C'est complètement verrouillé, ou presque. Group=nas permet d'accéder aux fichiers musicaux. La configuration de Gonic est la suivante :

> cat /etc/gonic/config 
cache-path /var/cache/gonic/
db-path /var/lib/gonic/music.db
music-path /media/nas/musique/
podcast-path /dev/null
jukebox-enabled
jukebox-mpv-extra-args --pulse-host=localhost

C'est assez spartiate. J'ai dû rajouter --pulse-host pour le Jukebox, parce que le serveur PulseAudio n'est pas lancé avec le même utilisateur que Gonic (qui est un utilisateur dynamique), donc ça passe par un flux réseau en localhost. C'est le seul point que j'aimerai améliorer, mais je ne suis pas sûr que ça soit possible.

Le futur : des clients Jukebox

Ultrasonic, c'est bien. Mais le mode Jukebox est buggé dans sa dernière version, j'ai dû revenir un cran en arrière (merci F-Droid pour ce genre de chose, c'est pratique).

Il y a pas mal de clients, mais c'est un peu la jungle :

  • Sonixd c'est du Electron natif. Sérieux, pourquoi c'est pas dans un navigateur ? Sinon, c'est un bon client, mais il ne gère pas le Jukebox

  • Jamstash est un vieux client HTML, mais qui marche encore. L'interface est un peu… à réviser, mais ça fait le travail. Sur mobile, c'est un peu laborieux. Le mode Jukebox est là, mais c'est On/Off

  • Tous les autres clients ont un défaut, soit ils ne sont pas libres, soit ils ne gèrent pas le jukebox, soit ils ne permettent pas de naviguer dans sa collection en utilisant les répertoires. Ma collection, c'est moi qui l'aie organisée. Avec des répertoires, comme j'aime bien. Na.

Bref, ça pêche un peu. J'ai d'autres choses à faire que rajouter ces fonctionnalités à des clients, même si ça me tente bien…

C'est quand même un peu brouillon ma rédaction. Mais si vous avez des questions, ou des idées, des critiques, je serai curieux de les partager !

  • # son qui sort partout

    Posté par  (Mastodon) . Évalué à 10.

    Pour avoir du son qui sort partout, mais de façon synchrone pour pas avoir d'effet echo, il y a snapcast qui marche très bien. C'est un peu comme du sonos mais avec le materiel que tu veux et un OS libre. Une raspberry pi zero w est assez performante pour envoyer le son sur un ampli.

    https://github.com/badaix/snapcast

  • # mpd + upmpdcli

    Posté par  . Évalué à 3.

    Ah cool, je vais regarder Gonic Ultrasonic.

    Pour MPD, j'utilise upmpdcli (https://www.lesbonscomptes.com/upmpdcli/) qui te permet de jouer de la musique locale, et gros plus pour moi de se connecter à un service de stream (Qobuz dans mon cas). Et aussi, on peut préconfigurer des radios. Donc MPD sur le server local, sortie son (cable) vers l'ampli. Je ne l'utilise que en local (pas de diffusion sur le réseau).

    Pilotage par une application Android (Bubbleupnp) ou iOS (LinnKazoo), ces applis n'étant pas libres. Et je n'ai pas encore trouvé d'appli qui permette de naviguer facilement dans sa collection (pas les répertoires).

  • # alternatives

    Posté par  . Évalué à 5.

    merci pour l'info ; ca me donne envie d'essayer Navidrome.

    • [^] # Re: alternatives

      Posté par  . Évalué à 3.

      Ah oui, Navidrome est bien utilisé aussi.

      Mais j'ai arrêté quand j'ai vu : https://github.com/navidrome/navidrome/issues/1502

      On ne peut pas parcourir sa collection par répertoire. Et apparemment, c'est dur à implémenter dans Navidrome.

      • [^] # Re: alternatives

        Posté par  (site web personnel) . Évalué à 2.

        Je suis sur Navidrome depuis un bon moment - rapide, simple. Mais il est vrai que je parcours ma musique par album ou artiste, jamais par répertoire - quelle idée! d'autant plus que pour étiqueter la musique il y a maintenant de supers moyens.

        Sur Android Subtracks est une excellente alternative mais sans mode hors ligne. Substreamer offre cela.

        Un souci sur Navidrome est que tout album incluant plusieurs artistes doit être étiqueté "compilation" - ou préciser un "album artist" unique, sinon Navidrome considère que ce sont des albums différents ( genre le white album de Jayz et celui des Beatles). Sauf qu'en pratique c'est un cas de figure très courant d'avoir un même album où plusieurs artistes sont présents. Principe un peu idiot donc. En pratique ce n'est pas bien gênant pour l'ajout d'albums, par contre au démarrage j'ai perdu un peu de temps.

        • [^] # Re: alternatives

          Posté par  (site web personnel, Mastodon) . Évalué à 3.

          je parcours ma musique par album ou artiste, jamais par répertoire - quelle idée! d'autant plus que pour étiqueter la musique il y a maintenant de supers moyens.

          Il y a divers autres usages mais quelle idée de ne pas faire comme toi :-)
          Parfois, j'aime écouter par exemple un genre donné pour une année donnée ; mais faudrait se restreindre uniquement à « par album ou artiste »

          que tout album incluant plusieurs artistes doit être étiqueté "compilation" - ou préciser un "album artist" unique, sinon Navidrome considère que ce sont des albums différents […]

          Si c'est l'album qui importe et que ton arborescence est organisée par conséquence, t'es bien content de pouvoir naviguer par répertoire.

          Bref, des choses complémentaires que certaines personnes veulent opposer :-(

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

    • [^] # Re: alternatives

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Merci pour la découverte !

      J'aime bien les webservices en Go, c'est facile à installer/lancer en userland via systemd, on ajoute un reverse proxy nginx pour le HTTPS, et ça roule !

  • # Merci...

    Posté par  (site web personnel) . Évalué à 2.

    …pour ce journal que je voulais écrire mais pas le temps :)

    J'écoute depuis très longtemps ma musique avec MPD, et depuis quelques temps avec Ultrasonic.

    Ma musique est sur mon Raspberry, à peu près 15Gio dans un dossier. J'en ai fait un montage externe dans Nextcloud, j'ai installé l'application "Music", et voilà!

    Là où MPD pouvait lire tout et n'importe quoi, j'ai quelques fichier qui ne passent pas avec Music. Bon, ce sont des concerts en vidéo, ou des extractions en m4a parce que je ne voulais pas réencoder… Je ne connaissais pas Gonic, il faudra que je teste.

    Un point qui m'embête plus est la gestion des fichiers. Comme toi j'aime bien ranger mes fichiers dans des dossiers, eh bien dans Ultrasonic je n'arrive pas à m'y retrouver. Du coup je prépare des playlists dans "Music", que je peux écouter dans Ultrasonic.

    Sinon, est ce qu'il existe un client desktop pour le protocole subsonic?

    Un LUG en Lorraine : https://enunclic-cappel.fr

  • # Outils de gestion de bibliothèques musicale

    Posté par  (site web personnel) . Évalué à 2.

    Bonjour,

    Merci pour cette découverte !

    Concernant les outils pour diffuser de la musique, je connaissais aussi:

    • Ampache qui est censé être compatible Subsonic, mais est malheureusement assez lent et complexe à mettre en place.
    • Koel qui est léger, assez facile à mettre en place, mais peine si la bibliothèque musicale a trop de fichiers.

    Pour ce qui est de l'organisation des fichiers musicaux, je recommande Picard par Musicbrainz qui est capable de détecter le titre d'un morceaux et de récupérer ses métadonnées depuis la base de données communautaire MusicBrainz. Il est particulièrement efficace pour organiser les fichiers en albums.

    Enfin, mon petit script personnel de conversion des fichiers audio (en bash) qui à l'intérêt de conserver les métadonnées et l'organisation des fichiers: mussync-tools Je l'utilise pour convertir une bibliothèque en FLAC vers du MP3 ou MP4 pour utilisation dans des smartphones et autres lecteurs portables.

    • [^] # Re: Outils de gestion de bibliothèques musicale

      Posté par  . Évalué à 2.

      Je ne connaissais pas Koel, merci, ça a l'air d'être assez abouti. Mais… c'est du PHP. Je n'ai rien contre le langage, mais contre son modèle d'exécution, qui est inefficace par conception (chaque requête est complètement indépendante des autres, aucune mémoire).

  • # Ma petite stack perso

    Posté par  . Évalué à 1.

    Merci pour ce journal ! Perso j'utilise le serveur Navidrome sur mon Raspberry Pi (le tout premier modèle et ça marche niquel !) et le client DSub sur mon Android et Clementine sur mon PC, je suis hyper satisfait de l'ensemble aussi :)

  • # nom d'un autre logiciel partagé

    Posté par  . Évalué à 4.

    Merci pour cet article, intéressant.

    Je partage la solution que j'ai enfin trouvé y a quelques mois.

    • moode audio sur un raspberry pi3 (cela suffit pas besoin d'un pi4), connecté pour l'instant à un NAS, à terme je pense mettre un disque ssd directement au raspberry pi.
    • lien vers le site : https://moodeaudio.org/

    Pourquoi moode audio ?
    - répond à mon besoin simplement, oui la réponse est facile, mais je n'avais pas trouvé une solution qui me convenait avant,
    - fourniture d'une image raspberry pi toute prête à utiliser,
    - mise à jour du logiciel depuis l'interface web (facile),
    - permet de lire des fichiers (tous formats !) stockés en local ou via NAS ou NFS ou sshfs,
    - permet d'écouter des radios y compris celles qui ne sont pas encore référencées par défaut c'est très facile à ajouter,
    - permet d'écouter la musique :
    * soit un périphérique directement connecté au raspberry,
    * soit via le bluethooth vers une chaine hifi (j'y ai mis un WTX-700),
    * soit sur le téléphone y a un player, fonctionne en local via le wifi local ou via VPN à distance,
    * soit via un casque bluethooth bien sûr,
    - support via forum très efficace directement par le développeur
    - info sur mastodon (https://fosstodon.org/@moodeaudio) bascule de twitter depuis quelques mois

    Cordialement

    • [^] # Re: nom d'un autre logiciel partagé

      Posté par  . Évalué à 2.

      Vu tout ce que ça fait je comprends que ça soit une image ISO pour l'installer mais… je n'aime pas trop rajouter des ordinateurs pour une seule fonction. J'ai un serveur qui marche très bien, je vais l'utiliser, et il paraît que c'est plus green IT.

      • [^] # Re: nom d'un autre logiciel partagé

        Posté par  . Évalué à 1.

        Bonjour,
        Je comprend tout à fait.
        J'ai réutilisé un raspberry pi 3, consommation <5W

        Pour info à propos de la nouvelle mise à jour prochaine de moode audio (une à trois par an)
        https://moodeaudio.org/forum/showthread.php?tid=5352

        En cherchant un peu, certains installent d'autres logiciels en // de moode audio (cf : https://moodeaudio.org/forum/forumdisplay.php?fid=9)

        J'ai pas testé une installation des packages sans utiliser l'image rpi

        $ dpkg -l |grep moode
        rc aloop-5.15.28 0.1-1moode1 armhf Patched aloop driver with 384kHz support.
        rc aloop-5.15.32 0.1-1moode1 armhf Patched aloop driver with 384kHz support.
        ii aloop-5.15.84 0.1-1moode1 armhf Patched aloop driver with 384kHz support.
        hi alsa-cdsp:armhf 1.2.0-1moode1 armhf ALSA CamillaDSP "I/O" plugin
        hi alsacap 1.0.1-1moode1 armhf Alsacap was originally
        ii ashuffle 3.12.8-1moode1 armhf ashuffle is an application for automatically shuffling your MPD library in a similar way to a more standard music player's "shuffle library" feature.
        rc ax88179-5.15.28 2.0-1moode1 armhf Patched ax88179_178a driver with Allo usbridge_sig suppport.
        rc ax88179-5.15.32 2.0-1moode1 armhf Patched ax88179_178a driver with Allo usbridge_sig suppport.
        ii ax88179-5.15.84 2.0-1moode1 armhf Patched ax88179_178a driver with Allo usbridge_sig suppport.
        hi bluez-alsa-utils 3.0.0-2moode1 armhf Bluetooth Audio ALSA Backend (utils)
        ii boss2-oled-p3 1.0.0-1moode1 all This Allo BOSS2 OLED application that runs on Python 3.x .
        hi camilladsp 1.0.3-1moode1 armhf A flexible tool for processing audio
        hi camillagui 1.0.1-1moode1 all CamillaGUI is a web-based GUI for CamillaDSP.
        hi caps 0.9.26-1moode1 armhf C* Audio Plugin Suite
        hi libasound2-plugin-bluez:armhf 3.0.0-2moode1 armhf Bluetooth Audio ALSA Backend (plugins)
        ii libnpupnp1 4.1.1-1moode1 armhf UPnP library, based on Pupnp code, but extensively
        hi librespot 0.4.2-1moode1 armhf An open source client library for Spotify, with support for Spotify Connect
        ii libupnpp6 0.21.0-1moode1 armhf C++ layer over libupnp.
        hi moode-player 8.2.5-1moode1 all moOde audio player
        hi mpd 0.23.11-1moode1 armhf Music Player Daemon
        ii nqptp 1.1.0~git20220930.c71b49a-1moode1 armhf nqptp is a daemon that monitors timing data from any PTP clocks – up to 64 – it sees on ports 319 and 320.
        rc pcm1794a-5.15.28 0.1-1moode1 armhf Patched pcm1794a driver with 384kHz support.
        rc pcm1794a-5.15.32 0.1-1moode1 armhf Patched pcm1794a driver with 384kHz support.
        ii pcm1794a-5.15.84 0.1-1moode1 armhf Patched pcm1794a driver with 384kHz support.
        ii python3-camilladsp 1.0.0-1moode1 all A library for communicating with CamillaDSP
        ii python3-camilladsp-plot 1.0.2-1moode1 all A library for validating, evaluating and plotting configs an
        hi python3-libupnpp 0.20.1-1moode1 armhf libupnpp UPnP library interface for Python3
        rc rtl88xxau-5.15.28 5.6.4.2-1moode1 armhf RTL8812AU/21AU Wireless drivers
        rc rtl88xxau-5.15.32 5.6.4.2-1moode1 armhf RTL8812AU/21AU Wireless drivers
        ii rtl88xxau-5.15.84 5.6.4.2-1moode1 armhf RTL8812AU/21AU Wireless drivers
        ii runonce 0.1.0-1moode1 all Service for running scritp once after boot. Place files to run once in /etc/runonce.d. The files are runned after systemd multi-user.target.
        hi shairport-sync 4.1.1-1moode1 armhf AirPlay audio player
        hi squeezelite 1.9+git20210102.78fef68-3moode1 armhf lightweight headless Squeezebox emulator - ALSA version
        hi trx 0.6-1moode1 armhf simple toolset for broadcasting live audio
        hi udisks 1.0.5-1moode1 armhf storage media interface
        hi udisks-glue 1.3.5-1moode3 armhf simple automount daemon with support for user-defined actions
        hi upmpdcli 1.5.12-1moode1 armhf UPnP Media Renderer front-end to MPD, the Music Player Daemon

    • [^] # Re: nom d'un autre logiciel partagé

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Perso je suis team volumio. Ça tourne très bien sur un pi2 avec un DAC HifiBerry et le petit boîtier métal qui va bien (plus vendu pour le pi2 apparemment).

      L'UI web fait le job, elle est responsive, toussa. Il y a plein de plugins, on peut faire du podcast, ça gère les webradio nativement avec une grosse liste de base.

      Bon, ils poussent pas mal leur modèle commercial depuis un moment, mais la version communautaire sans abonnement fait très bien le taf.

  • # Une alternative plus "sociale" à Subsonic

    Posté par  . Évalué à 3.

    Hello, merci pour cette dépêche et tous ces commentaires forts instructifs !

    Après avoir essayé des serveurs du genre, je suis tombée sur Funkwhale, qui propose sa propre API ainsi qu'une API compatible Subsonic (pas parfaite, mais qui fonctionne à peu près avec Ultrasonic).

    Le gros + de Funkwhale, c'est qu'il utilise ActivityPub, le protocole du Fediverse, et permet de lire les musiques des serveurs Funkwhale de ses copaines en s'abonnant à leurs libs, depuis son compte, sur son serveur. Dans un groupe d'ami·es, on est une petite dizaine sur 5 serveurs différents, et on découvre plein de musique en écoutant les un·es chez les autres, je recommande !

    On a fait un script crado pour fédérer les playlists, qui ne le sont pas encore nativement, et un autre encore plus crado pour reconstruire après-coup une arborescence de fichiers selon les métadonnées, pour partager la musique avec des partages réseaux ou avec le réseau P2P Soulseek. Un régal 😋

Suivre le flux des commentaires

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