Beets1, ou “Betteraves” en anglais, et un petit logiciel Open Source en ligne de commande qui permet à celui qui le maîtrise de gérer son audiothèque. Son nom est un jeu de mot avec “beats”, signifiant “battements”, utilisé fréquemment pour désigner des morceaux de musique.
C’est un logiciel très puissant, qui harmonise les métadonnées, gère les images de couverture d’album, trie et range les fichiers automatiquement. Il est connu et apprécié des audiophiles qui grâce à lui maintiennent l’ordre dans de larges collections musicales.
Hélas, il est vraiment très capricieux, et le configurer me prend à chaque fois des jours entiers. Quand j’y arrive, je n’y touche plus et reste tremblant à espérer que rien de casse.
Hélas, il finit toujours par casser… une mise à jour malheureuse, un changement de système… La dernière fois à été si pénible que j’ai cessé de l’utiliser pendant près d’un an.
Mais ma bibliothèque musicale commençait à être très en désordre, et j’y suis revenu. J’ai tenté une approche différente qui s’est révélée surprenamment fructueuse et facile ! ce qui me rend optimiste pour la suite de mon usage.
Je documente ici mon processus, à visée d’aide-mémoire personnel.
🤔 Une collection en local ?
À l’heure des plateformes de streaming, il peut sembler étrange de conserver une collection de fichiers numériques physiquement présents sur sa machine. Pourtant, c’est la méthode que j’ai choisis, et elle me convient si bien que je n’ai aucun abonnement, Spotify ou consort.
Elle m’offre la sérénité d’être affranchi d’un abonnement et des caprices des maisons d’édition, et la satisfaction un peu snob d’une consommation de média à la fois plus écologique2 et plus éthique3. Et cela satisfait ma collectionnite chronique.
- sources et références : 📂 doc officielle (en anglais)
L’installation
jusqu’à maintenant, j’ai toujours installé beets via le gestionnaire de paquet de la distribution que j’utilise.
J’ai compris avec le recul que ceci était la source de tout mes problèmes. Je n’arrivais jamais à installer ni à configurer les extensions et les dépendances dont j’avais besoin.
Il s’avère bien plus simple d’utiliser pip (en l’occurrence, pipx qui permet une meilleure compartimentation des programmes, et donc moins de conflits au niveau du système.). C’est d’ailleurs la solution proposée dans la doc officielle.
J’ai donc fait :
pipx install beets
Et voila : beets est accessible via la commande beet (sans “s”).
Mais cela ne suffit pas. La vraie puissance de ce petit logiciel réside dans ses extensions (plugins). Et ce sont ces derniers qui m’ont jusque alors posé problème.
Les plugins
La vraie difficulté est d’installer et gérer les plugins. Ou plutôt, c’était une difficulté tant que j’utilisais le gestionnaire de paquet comme méthode d’installation principale, car il fallait “deviner” le nom de paquet de ces extensions et espérer qu’elle soit disponible dans les repos de ma distribution, dans une version compatible avec les autres. Franchement galère, et c’est ceci qui m’a un temps détourné de Beets.
Avec pipx, les choses sont plus simples. Tous les plugins y sont disponibles, compatibles entre eux. Inconvénient : il faut installer d’un coup le logiciel et toutes ses extensions. En ajouter une signifie tout réinstaller… je n’ai pas réussi à faire fonctionner pipx inject qui permet en théorie d’ajouter des extensions sans tout réinstaller.
Pipx doit souvent être installé par vos soins car généralement absent du système par défaut. C’est très simple car il est fréquemment présent dans les repos, et donc accessible via les gestionnaires de paquets.
Un certain nombre de plugin sont présents par défaut dans l’installation de base, mais certaines me semblent indispensables. À vous de choisir les vôtres : la doc propose une petite liste des extensions disponibles, et explique lesquelles doivent être installées ou simplement activées.
Donc, la commande d’installation que j’utilise est :
pipx install 'beets[chroma, fetchart, embedart, lastgenre]'
Quelques instants plus tard, la commande est disponible et enrichie des extensions désirées.
Configuration
On y accède et on l’édite via beet config -e.
Franchement, il y a tant d’options que les documenter ici serait idiot. Mieux vaut se référer à la page de doc qui est très complète et présente les options par défaut.
à titre purement indicatif, voici ma config :
directory: /home/jab/Musique
asciify_paths: yes
art_filename: cover
color: yes
plugins: chroma musicbrainz deezer spotify bandcamp edit fetchart embedart lastgenre convert
lastgenre:
auto: yes
whitelist: yes
force: yes
count: 3
embedart:
auto: yes
convert:
auto: yes
format: ogg
edit:
itemfields: track title artist album genre
albumfields: artist album genre
import:
write: yes
move: yes
resume: ask
languages: fr en
match:
strong_rec_thresh: 0.10
distance_weights:
data_source: 2.0
artist: 3.0
album: 3.0
media: 1.0
mediums: 1.0
year: 1.0
country: 0.5
label: 0.3
catalognum: 0.5
albumdisambig: 0.5
album_id: 5.0
tracks: 2.0
missing_tracks: 0.7
unmatched_tracks: 0.6
track_title: 3.0
track_artist: 2.0
track_index: 1.0
track_length: 2.0
track_id: 5.0
medium: 1.0
La bonne nouvelle, c’est qu’une fois réglée selon vos désirs, vous n’aurez plus besoin de modifier votre configuration. Vous pourrez la sauvegarder dans un coin et la partager entre vos différents systèmes. Et si un jour vous la modifiez, Beets se chargera pour vous de mettre votre bibliothèque à jour pour refléter ces changements.
Usage
Beets peut faire de nombreuses chose et permet de finement gérer votre collection musicale. Obtenir des statistiques, éditer des métadonnées…
Mais moi je ne l’utilise que pour une seule chose : importer les fichiers afin qu’ils respectent un format et une arborescence précise, et que leurs métadonnées soient cohérentes entre elles.
Ainsi, mes fichiers se rangent tout seul sous le format /artiste/album/titre au format ogg.
Pourquoi ai-je choisi le format OGG ? d’abord parce que c’est un format libre (ce que le mp3 n’est pas), et qu’il divise environ par 3 le poids de mes fichiers audio. Je n’ai pas décelé de différence quand à la qualité du son. Peut-être les audiophiles seront-ils choqués par ce sacrilège, mais le FLAC est vraiment trop lourd.
Beets s’occupe aussi à l’importation de récupérer le genre musical et de l’ajouter aux métadonnées, ainsi que de rechercher la pochette de l’album si elle manque. J’utilise beaucoup les genres musicaux pour regrouper ensembles plusieurs morceaux au moment de l’écoute.
Tout ceci se fait très simplement via la commande :
$ beet import /chemin/vers/mon/album/
Le logiciel se charge de reconnaître l’album et d’en rechercher la source sur différentes plateformes afin de faire coïncider au mieux les caractéristiques. S’il a un doute, il me demande d’en confirmer le résultat. Le reste est automatique.
import est vraiment la seule commande que j’utilise régulierement. Je n’ai jamais eu besoin des autres, hormis peut-être edit qui permet de modifier les métadonnées des fichiers en registrés.
En conclusion
Je suis très heureux d’avoir trouvé une façon fiable et reproductible d’installer beets et ses extensions. Je présume que la solution est sous mes yeux depuis le début via pip, mais que j’étais trop dogmatique pour envisager autre chose que le gestionnaire de paquet officiel de ma distribution. Cette rigidité maintenant corrigée, je suis très heureux re retrouver l’usage de ce petit programme que j’affectionne.
Évidemment, il demande un grand effort d’apprentissage. Il est en ligne de commande, et rien que cela est un grand obstacle à qui n’a pas l’habitude. Ensuite, la configuration et la gestion des fichiers est tout sauf intuitive. Pourtant, une fois le cap franchit, c’est un vrai atout.
Si vous être audiophile et conservez une collection de fichiers sur votre machine, n’hésitez pas à y jeter un œil. Après une sauvegarde bien conduite de vos données, cela va sans dire.