Où sommes nous ?

Ajouter des tags a des MP3

Pour faciliter la lecture par Android Auto.

Comme tout le monde, j'ai converti toute ma CDthèque en numérique, en l'occurrence en MP3 pour garantir que le résultat passe sur toutes mes machines. Mais il a fallu que je change de voiture et là, les choses se sont compliquées : elle a évidement une prise USB, mais elle est monopolisée par mon smartphone pour pouvoir utiliser Android Auto et surtout Waze pour le plus grand bien de mon permis .

Mass storage USB

Lorsqu'une cléf USB "mass storage" est connectée, l'autoradio n'a qu'à afficher les répertoires et fichiers qui y sont présents (ça dépend évidemment du dit autoradio et en tout cas, c'est ce que faisait celui de ma C5).

$ ls ~/Musiques/Prohom/nov_2000/
"01 _a oublie d'aimer.mp3"  "03 pas d'id_e.mp3"           '05 ne plus y panser (live).mp3'
'02 le miroir et moi.mp3'   '04 le dernier des cons.mp3'  '06 georges (live).mp3'

Pratique, facile, pas besoin de modifier quoi que ce soit.

Android Auto

Lorsqu'Android Auto est lancé, il prend le pas sur l'USB et seul alors le streaming depuis le téléphone est possible.

Malheureusement, à l'heure où j'écris ces lignes, Android Musique ne tient pas compte des files systems et on peut se retrouver avec des centaines voir millier de morceaux classés dans inconnu : franchement pénible pour retrouver LA musique que les gamins veulent ABSOLUMENT écouter pour partir en vacances dans le calme.

Les tags ID3

Conscient dés l'émergence du MP3 que le couple Répertoire / Nom du fichier ne suffisait pas pour qualifier un média, des développeurs ont eu l'idée de rajouter des méta-données aux fichiers MP3, décrit sur la page Wikipedia qui leurs est consacrée.

Comme on peut le voir, la dernière évolution en date ID3v2, permet beaucoup de choses comme par exemple indiquer la date de publication, inclure les paroles voir la pochette. Je ne vais ici me focaliser que ce qui m'intéresse pour sélectionner ma musique lorsque je conduis, à savoir le groupe, le titre. Le reste n'est qu'accessoire.

Gestion des tags MP3 sous Linux (en ligne de commande)

Les logiciels de conversion CD vers MP3 remplissent généralement les méta données ... si ce n'est pas le cas, changé en .

bPI ~/Musiques/Prohom/nov_2000 $ mutagen-inspect 01 _a oublie d'aimer.mp3 
-- 01 _a oublie d'aimer.mp3
- MPEG 1 layer 3, 128000 bps (CBR, LAME 3.98.1+, -b 128), 44100 Hz, 2 chn, 231.09 seconds (audio/mp3)
COMM==XXX=By Xcfa
COMM=ID3v1 Comment=eng=By Xcfa
TALB=nov 2000
TCON=Rock & Roll
TDRC=2000
TIT2=_a oublie d'aimer
TLEN=231093
TPE1=Prohom
TRCK=1
TSSE=LAME 32bits version 3.98.2 (http://www.mp3dev.org/)

Le problème vient surtout des morceaux récupérés depuis internet sur Youtube par exemple.

bPI ~/Musiques/Nightwish&Tarja $ mutagen-inspect Innocence.mp3
-- Innocence.mp3
- MPEG 1 layer 3, 320000 bps (CBR), 48000 Hz, 2 chn, 328.13 seconds (audio/mp3)
APIC=other, "Album cover" (image/jpeg, 8953 bytes)
TSSE=Lavf57.56.101

Comme on le voit, seule la "pochette" a été fournie, en l'occurence par l'image de présentation de la vidéo. Parfois, le Titre est rempli avec le nom de la vidéo, l'Artiste lui n'est jamais indiqué : nous allons nous en servir par la suite.

Légal, pas légal de récupérer de la musique ainsi ... mouai, les vidéos viennent  des comptes officiels des artistes donc on se retrouve dans le même cas que lorsqu'on enregistrait sur cassette ce qu'il passait à la radio (séquence nostalgie) et les ayant-droits rapaces se gavent déjà avec la taxe sur la copie privée que l'on paye ... ben sur quasiment tout.

De plus, lorsqu'un artiste me plait, j'achète généralement le CD. De plus, le son est largement meilleur, Youtube écrasant bien les dynamiques.

Vu le nombre de morceaux à traiter, mon but est d'automatiser autant que faire ce peux tout le processus :

Logiciel à installer

Mutagen est à la base une librairie qui permet de manipuler les tags des fichiers MP3 et vient avec des compagnons qui permettent aussi de le faire d'un shell.

L'installation sous Gentoo se fait par

emerge -va mutagen

On dispose des commandes suivantes

mutagen-inspect

Affiche les tags définis dans un fichier comme on a pu le voir précédement.

$ mutagen-inspect fichier

mid3v2

mid3v2 est simplement la boite à outils de Mutagen. Sans options, il affiche simplement la liste des tags présents (du coup, totalement redondant avec mutagen-inspect ) :

$ mid3v2 BATTLE BEAST - Black Ninja.mp3 
IDv2 tag info for BATTLE BEAST - Black Ninja.mp3
APIC=other, "Album cover" (image/jpeg, 35600 bytes)
TSSE=Lavf57.56.101

Avec ces nombreuses options, on peut changer les tags d'un fichier, les plus intéressants étant

-a "ARTIST", --artist="ARTIST"
                        Set the artist information
-A "ALBUM", --album="ALBUM"
Set the album title information
-t "SONG", --song="SONG"
Set the song title information

Par exemple avec la ligne

$ mid3v2 -t "Black Ninja" BATTLE BEAST - Black Ninja.mp3

Notre fichier gagne un titre

$ mutagen-inspect BATTLE BEAST - Black Ninja.mp3 
-- BATTLE BEAST - Black Ninja.mp3
- MPEG 1 layer 3, 320000 bps (CBR), 44100 Hz, 2 chn, 243.64 seconds (audio/mp3)
APIC=other, "Album cover" (image/jpeg, 35600 bytes)
TIT2=Black Ninja
TSSE=Lavf57.56.101

mid3cp

Copie les tags d'un fichier dans un autre ... mais à quoi ça peut bien servir ????

Et bien, comme je le disais plus haut, le son des vidéos de Youtube est généralement très bas et je le normalise avec Audacity ... mais les tags disparaissent dans la manoeuvre. Et comme c'est encore mieux d'avoir la pochette avec le MP3, mid3cp me permet de la récupérer dans mes fichiers corrigés.

@Mouai ~/Téléchargements $ for i in *
> do
> mid3cp "$i" "../Musique/$i"
> done

Mon scripts de mise à jour : updtags

Voici mon script qui me permet de mettre à jour mes musiques (note, je l'améliore de temps en temps, n'hésitez pas à revenir sur cette page.

#!/bin/bash

#determine the album's name as last directory level
if [ -z "$ALBUM" ]
then
    ALBUM=$( basename "$( pwd )" )
fi
echo "Album = '$ALBUM'"

#determine the title
TIT2=$( mutagen-inspect $1 | grep 'TIT2=' )
SEP='-'

if [[ $TIT2 == *'~'* ]]
then
    SEP='~'
#elif [[ $TIT2 != *-* ]]
#then
#    echo "Separator not found ... NO CHANGE"
#    exit 0
fi

if [ -z "$TITLE" ]    # From the tags
then
    TITLE=$( echo "$TIT2" | cut -d$SEP -f2 | sed 's/_/ /g;s/^ *//;s/ *$//' )

    if [ -z "$TITLE" ]    # From the file title
    then
        TITLE=$( echo "$1" | cut -d'.' -f1 | sed 's/_/ /g;s/^ *//;s/ *$//' )
    else
        # remove unneeded words
        TITLE=$( echo "$TITLE" | sed 's/ Videoclip//gI;s/ lyrics//gI' )
    fi
fi
echo "Title = '$TITLE'"

#the group name
if [ -z "$GROUPE" ]    # From the tags
then
    GROUPE=$( echo "$TIT2" | cut -d$SEP -f1 | cut -d'=' -f2 | sed 's/_/ /g;s/^ *//;s/ *$//' )
fi
echo "Groupe = '$GROUPE'"

# build the command line
OPTS="mid3v2"

if [ -n "${GENRE}" ]
then
    OPTS="$OPTS -g "$GENRE""
fi

if [ -n "${ALBUM}" ]
then
    OPTS="$OPTS -A "$ALBUM""
fi

if [ -n "${TITLE}" ]
then
    OPTS="$OPTS -t "$TITLE""
fi

if [ -n "${GROUPE}" ]
then
    OPTS="$OPTS -a "$GROUPE""
fi

OPTS="$OPTS "$1""

echo "=>" $OPTS
eval "$OPTS"

Si le champ TIT2 du MP3 existe, s'il contient un '-' ou un '~', GROUPE et TITLE sont extraits de la forme GROUPE - TITRE.

Si TIT2 n'existe pas dans le MP3, le TITLE devient le nom du fichier sans son extension.

ALBUM est déterminé par le nom du répertoire dans lequel se trouve le fichier.

Chacun des champs GROUPE, TITLE et ALBUM peuvent être écrasés en ligne de commande. Ainsi

$ ALBUM="Best Of" updtags truc.mp3

signifie que ALBUM est forcément "Best Of" quel que soit le contenu de TIT2.

Enfin, GENRE contient le ... genre de musique et ne peut être fourni que par la ligne de commande.

Un exemple d'utilisation :

cd "Musiques/The Dance/"
for i in *; do echo $i; GENRE=9 GROUPE="Within Temptation" ~/bin/updtags "$i"; done

Avec la copie des tags originaux

Lorsque je récupère les chansons, elles ont généralement besoin d'un passage dans Audacity pour supprimer les blancs, remonter le son et éventuellement faire des coupures. Dans la bataille, on perd parfois les tags initiaux (par exemple, l'imagette de la pochette).

Voici le script que j'utilise qui non seulement met à jour le titre et l'artiste, mais après avoir récupéré ce qui pouvait l'être.

#!/bin/bash

if [ ! -f "$1" -o ! -f ~/Téléchargements/"$1" ]; then
    echo "$1 n'existe pas dans le répertoire courrant ou ~/Téléchargements"
    exit
fi

mid3cp ~/Téléchargements/"$1" "$1"
~/bin/updtags "$1"

Il doit être lancé depuis le répertoire dans lequel se trouve le morceau retouché, l'original devant être dans ~/Téléchargements


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.