Musique dématérialisée

Voici un retour d’expérience sur la dématérialisation de la musique que j’ai entreprise chez moi. En couleur, les éléments que j’ai acquis et installés, en blanc les éléments que j’avais déjà dans un cadre classique de musique par CD.

Les grandes étapes sont :

  1. Savoir ce que l’on veut faire exactement, évaluer ce qu’il faut.
  2. Acheter le matériel et l’installer
  3. Transformer les CD en fichiers disponibles dans ce nouveau système.

Pour moi cela donnait :

  • Pouvoir écouter la musique sans fil et sans problème de coupure de transmission, dans n’importe quelle pièce de la maison
  • Pouvoir profiter du streaming et radio Internet avec le même système
  • Avoir une interface conviviale de choix des morceaux de musique
  • Ne pas être obligé d’avoir un ordinateur allumé pour écouter de la musique
  • Ne pas perdre en qualité d’écoute par rapport à ma bonne chaîne HIFI actuelle (basée sur lecteur de CD)
  • Pouvoir écouter cette musique depuis n’importe quel endroit en disposant d’Internet

Après moult recherches et écoutes, voici donc le schéma de l’installation à laquelle je suis finalement arrivé :

Musique dématérialisée

Lien intéressant : https://www.sonos.com/graphics/rn/FAQ825/sonos_music_primer.pdf

Stockage des fichiers numériques

Sonos lit les fichiers flac placés sur un répertoire réseau partagé par le protocole Samba : celui d’un PC (mais il faut qu’il soit allumé pour qu’on puisse accéder à son contenu) ou celui d’un NAS (toujours allumé et dispose généralement de fonction de veille automatique).

NAS choisi : Synology DS-213J avec deux disques durs Western Digital Red Desktop WD20EFRX (2To chaque) montés en miroir (RAID 1).

Une application (DSAudio) de ce NAS offre la possibilité d’écouter à partir d’un navigateur Web par Internet la musique stockée. On a donc l’équivalent d’un « cloud player ». Il faut juste paramétrer sur la box (avec adresse IP fixe) la redirection des connexions Internet vers le serveur NAS.

Diffusion des fichiers audios numériques

Système SONOS, composé d’un BRIDGE et d’un CONNECT. Extensible par la suite en ajoutant des CONNECT dans les pièces désirées.

En bref :

  • le BRIDGE permet d’être relié à Internet (radio notamment mais aussi streaming et quelques interfaces particulières comme avec Qobuz par exemple pour accéder aux fichiers achetés)
  • Un module CONNECT reçoit le flux numérique du BRIDGE. Il décode le format (FLAC dans mon cas). Puis il le convertit en signal analogique (fonction DAC, voir plus loin à ce sujet) pour l’ampli puis les hauts-parleurs. Cette fonction DAC intégrée peut être déroutée vers un DAC externe, de meilleure qualité (le DAC interne de SONOS n’est pas adapté pour une bonne chaîne HIFI). On utilisera alors un câble SPDIF coaxial ou optique pour aller vers le DAC externe.

Avantages de SONOS :

  • Extensible en multi-room, c’est à dire une musique contrôlable pour chacune des pièces où se trouve un CONNECT : la même musique partout ou une différente dans chaque pièce.
  • Simple à installer et configurer
  • interface de contrôle conviviale : ios, Androïd, MacOS, Windows… pas encore Linux, sauf si l’on utilise l’application DSAudio du NAS Synology, qui permet de diffuser la musique vers le système Sonos.
  • réseau wifi propre (canal différent de celui de la box) ne pesant pas sur le réseau wifi/box domestique et évitant donc les coupures
  • mises à jour logicielles automatiques par Internet

Limites :

  • Limité à une qualité CD (44,1 Khz/16bits), même en n’utilisant pas son DAC interne
  • DAC interne pas à la hauteur pour alimenter une bonne chaîne HIFI
  • SONOS ne peut indexer plus de ~60.000 fichiers musicaux (pistes).

Astuces :

  • Pour mettre à jour à la demande une bibliothèque musicale dans SONOS, aller dans « Gérer–>Mettre à jour la bibliothèque musicale maintenant ».
  • Attention, certaines opérations, d’étiquetage par exemple, ne changent pas la date de modification des fichiers flac. Dans ce cas ou pourra faire un « touch » sur les fichiers à ré-indexer et relancer l’indexation SONOS.
  • Si des fichiers musicaux n’apparaissent pas dans l’indexation SONOS, ni même en se déplaçant dans les répertoires de stockage via l’interface SONOS, passez un coup d’Easytag (expliqué précédemment) et ré-indexez dans SONOS : ils devraient réapparaître.

Conversion numérique–>analogique

Cette fonction de conversion est prise en charge avec plus ou moins de bonheur par tout lecteur CD. En dématérialisé, il faut donc qu’un nouveau composant matériel s’en occupe. C’est le DAC (Digital to Analogic Converter). Pour une bonne chaîne hifi, le DAC interne du SONOS CONNECT est limité et rend un son qui n’est pas à la hauteur de celui rendu par le lecteur CD.

Après écoute, j’ai choisi le DAC M2TECH YOUNG qui me donne un résultat tout à fait comparable voire meilleur que le lecteur CD Denon 2910 de ma chaîne.

Par contre pour d’autres pièces où la qualité de l’ampli et des hauts-parleurs ne le nécessite pas, le DAC interne du SONOS CONNECT suffit amplement.

Extraction du contenu des CD (Gnu/Linux Ubuntu)

Cette phase est capitale pour obtenir une bibliothèque musicale de bonne qualité et bien indexée. Elle est longue et fastidieuse mais permettra de retrouver les musiques suivant les tags que l’on aura défini. Si on ne les a pas définis ou s’ils ne sont pas fiables ou systématiques, l’indexation et donc la recherche dans votre bibliothèque musicale sera elle-même peu fiable et laborieuse. Le jeu en vaut donc la chandelle…

  • Format choisi : FLAC : format compressé par rapport au WAVE mais sans perte de qualité par rapport au CD (lossless). D’expérience le facteur de compression est d’à peu près 50% pour la même qualité.

Après de multiples essais de différents outils et procédures, le plus simple sur cet environnement Ubuntu est d’enchaîner deux phases :

  1. le rip + encodage Flac,
  2. puis la vérification et modification des tags FLAC pour une meilleure indexation dans la bibliothèque musicale.

Outil de rip du CD et d’encodage Flac

  • J’utilise le programme abcde (ligne de commande) qui extrait le CD et l’encode dans le format désiré en allant chercher les métadonnées sur un serveur ad hoc (par défaut CDDB). Cet outil est merveilleux de simplicité une fois bien configuré et permet une vraie industrialisation de la transformation des CD en flac. Il rippe le CD en Wave, encode en flac, récupère les informations CDDB avec lesquelles il initialise les tags FLAC, normalise le numérotage des pistes et le nom donné aux fichiers, et permet même de calculer sur l’ensemble des pistes rippées (donc tout l’album si on ne donne aucune piste à ripper) les tags flac d’égalisation des niveaux sonores (replaygain, voir plus loin).
    • insérez le CD, puis dans un terminal, tapez « abcde » tout simplement, en ayant au préalable modifié le fichier de configuration comme suit :
  • Modification du fichier de configuration /etc/abcde.conf :
    • PADTRACKS=y # permet d’avoir le n° de piste toujours sur deux chiffres pour un meilleur tri
    • INTERACTIVE=n # l’éventuelle amélioration des tags sera fait dans un deuxième temps, donc on prend le défaut, issu de CDDB
    • ACTIONS=cddb,read,encode,replaygain,tag,move,clean #permet de calculer les tags reaplaygain, voir astuce suivante
    • OUTPUTFORMAT=’${ALBUMFILE}-${ARTISTFILE}/${TRACKNUM}.${TRACKFILE}’
    • OUTPUTDIR=<le répertoire racine où seront rangés les flacs générés. Attention à ne pas mettre d’espace devant ou après le signe « = »>
    • OUTPUTTYPE=flac
    • MAXPROCS=2  permet d’encoder une piste rippée tout en rippant la piste suivante
    • EJECTCD=y # éjecte le CD après lecture et encodage
  • Dans le cas de multi-cd où l’on veut que le n° de piste (nom de fichier ET tag interne FLAC du n° de la piste) des CD 2, 3 etc. commence au numéro suivant le dernier n° de piste du CD précédent, ajouter l’option -T<n° de piste initial> (attention, c’est un T majuscule).
    • abcde -T8 : commence le rip et l’encodage en numérotant les pistes à partir de 8 et non de 1.

Astuces :

  • pour la musique classique, je crée un sous-répertoire par compositeur dans lequel je rippe les CD concernant ce compositeur. Cela permet de classer un peu mieux car les métadonnées « artistes » sont les interprètes et non le compositeur.
  • De très rares fois abcde échoue à générer un flac, au moment de l’étiquetage (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684343). Dans ce cas, je génère les flac avec Audex, puis je continue avec les tâches d’étiquetage exposées dans ce qui suit.

Les tags replaygain, ou comment égaliser intelligemment le niveau sonore

Lorsque vous avez sous les doigts toute votre bibliothèque musicale, vous pouvez écouter en séquence des fichiers issus de différents album et de différentes époques. On rencontre aussitôt un problème : le niveau sonore de chaque album diffère, ce qui force à ajuster régulièrement le volume pour rester dans un niveau sonore similaire. Ceci devient vraiment acrobatique si l’on écoute des pistes sans tenir compte de l’album : on ne quitte plus sa télécommande, ce qui est pénible.

A cela plusieurs solutions : soit égaliser le niveau sonore au moment de l’encodage, mais alors le fichier musical lui-même est modifié. Soit calculer des valeurs d’égalisation, par album pour garder les différences relatives de niveaux sonores dans un même album. Ces valeurs seront ensuite ajoutées dans le fichier en tant qu’étiquettes (appelés tags « replaygain ») qui seront interprétées à la volée par le décodeur du fichier musical, laissant donc ce fichier intact.
Pour plus de détails, voir http://moipetit.free.fr/spip.php?article158 ou bien http://forum.hardware.fr/hfr/VideoSon/Traitement-Audio/replaygain-limiter-cauchemar-sujet_51453_1.htm

La version 4.0 de Sonos gère très bien cette égalisation par tag replaygain mais seulement sur des flac.
On peut demander à abcde de le faire (ACTIONS inclut « replaygain »), ça évite d’avoir à le faire par la suite. Une autre méthode est aussi expliquée dans la suite.

Si avez une bibliothèque musicale qui mêle des flac et d’autres formats égalisés par tag replaygain, sachez que SONOS ne gère pas les tags sur les fichiers qui ne sont pas des flac. Vous aurez donc à l’écoute des changements de volume entre fichiers de formats différents (pas entre les flacs). Donc si vous avez par exemple des MP3 téléchargés en tant que source originale depuis les sites de téléchargement de fichiers musicaux, il peut être utile de les convertir en flac, rien que pour ça ! C’est ce que je fais. Vous trouverez en annexe un script bash (toujours pour Linux) que j’ai créé pour convertir un mp3 en flac, récupérer ses tags ainsi que sa jaquette, et qui une fois étiqueté avec les tags replaygain sera d’un niveau sonore cohérent avec les autres fichiers flac (je vous laisse installer les packages nécessaires sous ubuntu : eyeD3, metaflac, mid3v2, madplay et flac).

Attention, gardez quand même les mp3 d’origine, ceux-ci vont souvent inclure une signature prouvant votre achat. Or les transformations en wave puis en flac vont perdre cette signature.

Outil pour gérer les tags FLAC

Pourquoi cette phase ? Parce que les informations récupérées automatiquement du CD ou de CDDB ne sont pas toujours complètes, fiables ou correctes (typo). Il est donc hélas nécessaire de passer par une phase de vérification et de modification des tags des fichiers FLAC qui vont permettre une bonne indexation.

Après une certain nombre de tests d’outils et de procédures, j’utilise les deux suivants, dans l’ordre, le premier simple et rapide pour tagger, le second éventuellement pour vérifier si l’indexation par SONOS ne fonctionne pas comme voulu.

  • EX Falso : permet de lire, modifier, ajouter ou supprimer des tags FLAC, piste par piste ou par ensemble de pistes.
    • les tags utilisés pour l’indexation de la musicothèque (voir ci-dessous)
    • Si vous avez été amené à modifier des n° ou des titres de pistes : le renommage des fichiers suivant un format déterminé (j’ai choisi <n° de piste>. <titre> mais bon, hein, vous faites ce que bon vous semble…)
    • S’ils n’ont pas déjà été inclus par abcde lors du rip+encodage, EX Falso permet aussi de calculer les tags REPLAYGAIN (avec le greffon Replay Gain).
      • Sélectionner l’ensemble des fichiers de l’album (pour avoir une égalisation respectant les valeurs relatives des pistes d’un même album), puis clic droit « Replay Gain »
      • Il peut être utile de recalculer les tags replaygain dans cet outil dans le cas des albums multi-cd : copier toutes les pistes dans le même répertoire qui sera celui de l’album multi-cd, puis vérifier que le nom de l’album est le même pour toutes les pistes des différents CD, sinon le replaygain se fera toujours en suivant le nom de l’album, donc on en gardera un par CD au lieu d’en avoir un pour l’ensemble des CD. Le tag replaygain peut ensuite se recalculer sur l’ensemble des pistes de tous les CD en les sélectionnant toutes.
    • les jaquettes jpeg : avec le greffon « Download Album Art » ou bien par recherche sur le net si cela ne donne rien : Amazon, FNAC par exemple, et au pire vous scannez la jaquette !
      • sélectionner l’une des pistes de l’album, clic droit « Download Album Art »
      • Une fois le fichier « cover.jpg » proposé par ce greffon, le sauvegarder dans le répertoire où se trouvent les pistes.
      • Je n’ai trouvé qu’une solution pour inclure les couvertures : l’utilisation de metaflag comme dans ce script tout simple (en étant placé dans le répertoire où se trouvent les pistes et la couverture jpeg) :
        • for i in *.flac; do echo $i; metaflac --import-picture-from=cover.jpg "$i"; done
  • Pour recalculer les tags replay-gain sur un ensemble de fichiers flac, se placer dans le répertoire où ils se trouvent et taper la commande suivante :
    flac --replay-gain -f `ls *.flac`
  • EasyTag : dans les cas où les fichiers ont des problèmes de codage ou de nom qui les empêchent d’être correctement reconnus ou indexés par SONOS, le lancement de cet outil permet de détecter et corriger automatiquement les erreurs. Par contre il ne permet pas d’ajouter des tags et est moins simple d’utilisation que EX Falso. Ça peut être bien de le lancer sur sa bibliothèque musicale, il corrige des erreurs (tags ou noms de fichiers), vous enregistrez les corrections et vous ré-indexez dans SONOS. Je l’utilise toutefois rarement.

A titre d’exemple, voici les tags d’indexation que j’utilise pour un fonctionnement avec SONOS (https://sonos.custhelp.com/app/answers/detail/a_id/552/~/which-flac-tags-are-supported-by-sonos)

Musique classique : Tags Flac Classique

Musique pop :Tags Flac Pop

Annexe : script bash pour convertir un mp3 en flac, récupérer ses tags et sa jaquette (je vous laisse installer les packages nécessaires sous ubuntu : eyeD3, metaflac, mid3v2, madplay et flac)


#!/bin/bash
# Se positionner dans le répertoire de l'album où se trouvent les mp3 avant de lancer ce script


for mp3file in *.mp3
do
#conversion du mp3 en flac
echo "$mp3file"
rootFilename=`basename "$mp3file" ".mp3"`
echo "$rootFilename";
madplay -o wave:"${rootFilename}.wav" "${rootFilename}.mp3"
flac "${rootFilename}.wav"
rm -rf "${rootFilename}.wav"


#recopie des tags du mp3 vers le flac
mid3v2 -l "$mp3file" > toto.txt
while read ligne
do
echo $ligne
bool=`expr match "$ligne" 'TIT2='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2`
echo "title=${var}"
metaflac --set-tag="title=${var}" "${rootFilename}.flac"
fi
bool=`expr match "$ligne" 'TALB='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2`
echo "album=${var}"
metaflac --set-tag="album=${var}" "${rootFilename}.flac"
fi
bool=`expr match "$ligne" 'TCON='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2`
echo "genre=${var}"
metaflac --set-tag="genre=${var}" "${rootFilename}.flac"
fi
bool=`expr match "$ligne" 'TDRC='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2`
echo "date=${var}"
metaflac --set-tag="date=${var}" "${rootFilename}.flac"
fi
bool=`expr match "$ligne" 'TRCK='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2 | cut -d'/' -f 1`
echo "tracknumber=${var}"
metaflac --set-tag="tracknumber=${var}" "${rootFilename}.flac"
fi
bool=`expr match "$ligne" 'TCOM='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2`
echo "composer=${var}"
metaflac --set-tag="composer=${var}" "${rootFilename}.flac"
fi
bool=`expr match "$ligne" 'TPE1='`
if [ "$bool" != "0" ]
then
var=`echo "$ligne" | cut -d'=' -f 2`
echo "artist=${var}"
metaflac --set-tag="artist=${var}" "${rootFilename}.flac"
fi
done < toto.txt
rm -rf toto.txt


#Importation des jaquettes éventuelles du MP3
mkdir cover
eyeD3 -i ./cover "$mp3file"
cd ./cover
for jpeg in `ls`
do
metaflac --import-picture-from=$jpeg ../"${rootFilename}.flac"
rm -rf $jpeg
done
cd ..
rmdir ./cover
done
echo "Il reste à recopier tous les *.flac dans le répertoire cible."

8 réflexions au sujet de « Musique dématérialisée »

  1. Ping : Musique dématérialisée | m...

  2. Ping : Ripper des DVD | le blog de J-C Garnier

  3. Sonos effectivement ne permet pas d’indexer plus de 60000 fichiers dans sa bibliothèque musicale.Pour s’affranchir de cette limite une solution simple consiste par exemple à utiliser Foobar 2000 après l’avoir configuré en serveur Upnp.Il suffit alors de cocher dans Sonos l’option ‘autoriser les serveurs Upnp’ et la bibliothèque de Sonos devient alors inutile

    • Merci de l’info, ça m’intéresse : dans sonos, je ne vois pas comment le connecter au serveur multimédia du synology, qui est pourtant DLNA/UPnP. Je ne vois que « windows media server » ou « rapsody UPnP ». Une idée ?

      • Dans Sonos,j’ai coché la case ‘autoriser les serveurs Rapsody UPnP’-J’ai ajouté à Foobar 2000 les composants suivants:’foobar_upnp.fb2k’ , ‘foobar_discogs.fb2k'(pour une autre application me semble-t-il) etUpnp Media renderer_Output.fb2k_Foobar étant ouvert , »Foobar 2000 Media Server » apparait alors dans la colonne de droite « choisir une source musicale » de Sonos_Il ne reste plus qu’à utiliser foobar comme serveur et oublier la bibliothèque musicale de Sonos-

        • Hello Charlot et merci pour les astuces.
          Cela fonctionne très bien. Selon vous est-il possible d’employer Foobar pour piloter mon Sonos ?
          Je dois bien avouer que l’ergonomie de Foobar est bien meilleur que celle du logiciel Sonos.
          Merci d’avance,
          Nicolas

        • Je rebondis sur ce post en espérant que quelqu’un lise. J’arrive parfaitement à voir ma bibliothèque foobar2000 via sonos avec foo_upnp mais je ne peux ajouter qu’un seul titre à la fois à l’écoute. Si je veux ajouter un album il me faut cliquer sur chaque chanson… très frustrant. Une solution ?

Commenter