Discographie en FLAC

Début 2025 je me suis lancé dans un grand chantier : reconstruire toute ma discographie au format FLAC, trier tous les doublons, combler les manques d'albums ou de titres, et surtout découvrir un maximum de nouveaux artistes via Bandcamp.

Pourquoi le FLAC ?

Simplement par choix et par volonté d'avoir une source "propre".

Autrefois les musiques se diffusaient principalement sur support CD-Audio, 44Khz, 16 bits. L'avènement du MP3 a rendu les choses plus facile avec la vente en ligne de musiques. Cela c'est fait au détriment de la qualité: un MP3 pleine "taille" (comprendre 320kbps, bitrate maximum du format) est -compressé avec pertes- et de moindre qualité que le CD-Audio. Je considère que cela est une belle régression dont nous ne nous sommes pas vraiment apercus consciemment.

Plusieurs sites de vente en ligne se limitaient même à du bitrate 192kbps tandis que d'autres proposaient du 320kbps de qualité très douteuse (on devine immédiatement les flags de compression axés sur la vitesse d'encodage lors de la création des fichiers). Sur certaines musiques à forte dynamique et large bande, les différences se font immédiatement ressentir par rapport au CD-Audio.

En reconstituant ma discographie je me suis donc tourné vers un format qui permettait non seulement de restituer ce que le CD-Audio nous apportait il y a 20 ans, mais qui pouvait également aller au delà: le FLAC.

La nouvelle Discographie

J'ai passé un certains temps à éliminer les doublons de mon ancienne collection: certains sont faciles à débusquer (à l'aide d'outils spécialisés), d'autres le sont moins car les musiques ne sont pas dans la même variante ou alors il s'agit d'une reprise... Au final j'ai probablement éliminé plus de 1500 fichiers que l'ont peut assimiler à des doublons.

Un an plus tard je travaille toujours encore activement sur la tâche de construction de la discographie version FLAC ! Il y a quelques mois la bibliothèque a passé le cap des 128 Go de stockage et 3500 fichiers FLAC.

Stockage

Très content de ma nouvelle organisation j'ai toutefois quelques réserves quand à l'espace disque grandissant occupé par la discothèque. En effet, je l'utilise sur différents supports:

  • Ordinateurs: fixe et laptop
  • Baladeur Fiio M21 (sur carte SD)
  • Voiture (sur clef USB)
  • Téléphone (mémoire fixe de 256Go)

Certains supports comme le téléphone n'ont pas de mémoire extensible et vu la taille de la discographie il me faut à présent trouver des alternatives pour continuer à stocker cette discographie sans impacter trop lourdement le stockage global de l'appareil.

De même, en voiture, le véhicule accepte les clefs USB mais seulement jusqu'à une certaine taille (à priori 128Go). Enfin, sur un laptop, imaginer à terme remplir plus de 200Go d'espace disque pour avoir accès à la discographie en mobilité ne s'avère pas être un bon choix. De plus, au regard de la qualité du chipset et de la sortie son sur le laptop, le FLAC semble inutilement surdimensionné.

L'OPUS Dei

Passé quelques temps à explorer les formats audio alternatifs et comparer les qualités et bitrates, j'ai opté pour un réencodage de toute la discographie afin de libérer de l'espace disque sur les supports les plus critiques: téléphone, voiture et un de mes laptops. Je choisi idéalement le format Opus.

  • OPUS pour le téléphone et laptop car ils disposent de lecteurs audio supportant ce format
  • MP3 pour la voiture qui dispose d'un lecteur plus conventionnel et ne semble pas bien se comporter avec des fichiers Opus. Dommage.

Pour convertir toute ma discographie j'utilise un script shell et l'encodeur officiel Opus:

#!/usr/bin/env bash

set -u

SOURCE="/nas/share/music"
DEST="/nas/share/music.opus"
BITRATE=160

# Extensions d'images (covers) à recopier
COVER_EXTENSIONS=(
    "jpg"
    "jpeg"
    "png"
    "webp"
)

# ------------------------------------------------------------
# Vérifications
# ------------------------------------------------------------

if ! command -v opusenc >/dev/null 2>&1; then
    echo "Erreur : opusenc n'est pas installé."
    exit 1
fi

if [[ ! -d "$SOURCE" ]]; then
    echo "Erreur : le répertoire source n'existe pas :"
    echo "$SOURCE"
    exit 1
fi

mkdir -p "$DEST"

# ------------------------------------------------------------
# Compteurs

converted=0
skipped=0
failed=0
covers_copied=0
covers_skipped=0

# ------------------------------------------------------------
# Comptage initial
# ------------------------------------------------------------

echo "Analyse de la bibliothèque..."
echo

total=$(find "$SOURCE" -type f -iname '*.flac' -print0 |
        awk -v RS='\0' 'END { print NR }')

current=0

echo "Source      : $SOURCE"
echo "Destination : $DEST"
echo "Bitrate     : ${BITRATE} kb/s"
echo "FLAC trouvés: $total"
echo
echo "------------------------------------------------------------"
echo

# ------------------------------------------------------------
# Conversion FLAC -> Opus
# ------------------------------------------------------------

while IFS= read -r -d '' file; do

    ((current++))

    relative="${file#"$SOURCE"/}"
    output="$DEST/${relative%.*}.opus"

    mkdir -p "$(dirname "$output")"

    echo "[$current/$total] $relative"

    # Si le fichier existe déjà, on ne le reconvertit pas.
    if [[ -f "$output" ]]; then
        echo "          -> déjà présent"
        ((skipped++))
        continue
    fi

    # Conversion vers un fichier temporaire.
    # Cela évite de laisser un .opus incomplet si opusenc échoue.
    tmp="${output}.tmp"

    rm -f "$tmp"

    if opusenc \
        --bitrate "$BITRATE" \
        "$file" \
        "$tmp"
    then
        mv "$tmp" "$output"

        echo "          -> OK"
        ((converted++))
    else
        echo "          -> ERREUR"
        rm -f "$tmp"
        ((failed++))
    fi

done < <(find "$SOURCE" -type f -iname '*.flac' -print0)

# ------------------------------------------------------------
# Copie des pochettes
# ------------------------------------------------------------

echo
echo "------------------------------------------------------------"
echo "Copie des pochettes..."
echo

for ext in "${COVER_EXTENSIONS[@]}"; do

    while IFS= read -r -d '' image; do

        relative="${image#"$SOURCE"/}"
        output="$DEST/$relative"

        mkdir -p "$(dirname "$output")"

        if [[ -f "$output" ]]; then
            ((covers_skipped++))
            continue
        fi

        if cp -p "$image" "$output"; then
            echo "Copie : $relative"
            ((covers_copied++))
        fi

    done < <(find "$SOURCE" -type f -iname "*.${ext}" -print0)

done

# ------------------------------------------------------------
# Résumé
# ------------------------------------------------------------

echo
echo "============================================================"
echo "Conversion terminée"
echo "============================================================"
echo
printf "FLAC convertis       : %d\n" "$converted"
printf "FLAC déjà présents   : %d\n" "$skipped"
printf "Erreurs              : %d\n" "$failed"
printf "Pochettes copiées    : %d\n" "$covers_copied"
printf "Pochettes existantes : %d\n" "$covers_skipped"
echo
echo "Destination : $DEST"
echo

if (( failed > 0 )); then
    exit 2
fi

exit 0

La plus longue tâche est l'encodage initial des 3500 fichiers. Cela aura pris environ 3h00 avec ma mahcine équipée d'un Ryzen série 3000. La suite pourra être faite par différentiel. Les fichiers MP3 pour le lecteur de la voiture seront générés avec un script similaire mais cette fois-ci basé sur l'encodeur ffmpeg.

Epilogue

A ce jour j'utilise cette discographie FLAC sur tous mes terminaux, quasiement tous les jours: dans la voiture, sur le téléphone, dans le salon...

La chaine Hifi du salon est alimentée par cette même bibliothèque disponible sur mon NAS.

En mobilité, je suis extrêmement satisfait de mon baladeur Fiio M21: la qualité audio est au rendez-vous et la puissance de sortie est impressionnante (même si je ne l'exploite pas) !

Je regrette une autonomie un peu juste (faute à un appareil fonctionnant sous Android) mais qui permet de tenir globalement 2 jours intensifs (à plus de 7h d'écoute par jour) sans recharge... et surtout sans vider la batterie de mon téléphone durant l'écoute !

Pour un meilleur confort d'écoute en mobilité j'ai fais l'acquisition en début d'année de 2 nouveaux casques: TRUTHEAR Hexa 1DD+3BA Hybird Intra-Auriculaires et beyerdynamic DT 270 Pro Casque de Studio Circum-aural. Ils sont tous deux sensationnels.

Concernant ma migration FLAC, il reste à ce jour encore ~600 fichiers MP3 de l'ancienne discographie que je dois retrouver sur les boutiques de vente en ligne de fichiers FLAC. Ce sont des albums ou artistes moins évidents à trouver (voir même introuvable en FLAC!). L'état d'avancement du projet est très satisfaisant pour ma part.

Je vous invite à suivre mes découvertes de nouveaux artistes sur Bandcamp en visitant mon profil: Bandcamp de kosmo