

====== Présentation ======

Vous possédez une belle quantité de CD musicaux et vous aimeriez pouvoir en disposer sur votre PC ou votre portable sans devoir à chaque fois manipuler des boîtes en plastique. Vous vous apprêtez donc à transférer ceux-ci de l'étagère où ils dorment au disque dur de votre machine.\\
Se pose alors inévitablement le choix d'un logiciel et d'un format de compression.

Ce tutoriel est une réponse possible.

Conçu en trois parties (**présentation**, **utilisation**, **configuration**) il conviendra à tout type de lecteur.\\
° Le //simple curieux// se contentera de la partie [[#présentation|présentation]] ;\\
° le //curieux-teste-tout// se précipitera sur [[#utilisation|utilisation]] ;\\
° le //curieux-perfectionniste// tentera de démêler les arcanes de la [[#configuration|configuration]] !\\

//**abcde**// (= **a** **b**etter **cd** **e**ncoder !) s'utilise en console.\\
Il est donc totalement indépendant de tout environnement graphique (Gnome, Kde, Xfce, E17, ...) et s'utilise de la même façon sur toutes les distributions Linux.\\
Mais cela ne le réserve pas pour autant aux seuls geeks des cavernes.

La preuve ...

^  niveau  ^  pré-requis  ^  mots-clés  ^  difficulté  ^  testé sur  ^
| débutant\\ ↓\\ avancé\\ <del>expert</del>\\ <del>guru</del>\\ | __pour l'utilisation :__\\ → maniement basique de la console :\\ \\ __pour l'édition des tags :__\\ → commandes de base de l'éditeur //vim// :\\ **i** **Suppr** **Esc** **:** **w** **q** et **!** \\ (expliquées dans ce tuto) ;\\ \\ __pour la configuration :__\\ → un minimum d'anglais informatique. |  cddb\\ compression\\ console\\ encodage\\ éditer\\ fichiers audio\\ oggvorbis\\ tag | <del>nulle</del>\\ \\ moyenne\\ \\ <del>forte</del> |  OpenSuSE 10.2\\ \\ //(devrait fonctionner sur toutes les distributions)//  |


À l'origine, //**abcde**// a été développé par [[http://lly.org/~rcw/abcde/page/|Robert Woodcock]]. Il est depuis peu repris par [[http://www.hispalinux.es/~data/abcde.php|J. Climent]], sous licence GPL bien évidemment.

//**abcde**// possède l'essentiel des caractéristiques d'un encodeur de qualité :\\
→ accès aux serveurs de type //cddb// par wget ;\\ 
→ support de nombreux formats d'encodage : oggvorbis, flac, pmc, mp3 (//oggvorbis// est l'encodage par défaut).\\ 
→ possibilité d'édition des "tags" avec l'éditeur //vim// intégré.\\ 
→ rapidité, qualité de l'encodage, stabilité ;

Pour OpenSuSE 10.2, le package //**abcde**// se trouve sur le DVD (ou les CDs) d'installation, rubrique //Productivité → Multimédia → Son → Utilitaires//.\\ 
Les utilisateurs d'autres distributions se réfèreront à leur packager habituel.

Du fait qu'il se lance en console, //**abcde**// ne dispose pas d'entrée dans le menu.

Ouvrez une console et tapez //abcde// :

<code>
ee@pc-hp:~> abcde
cd-discid: /dev/cdrom: CDROMREADTOCHDR: Input/output error
abcde error: CD could not be read. Perhaps there's no CD in the drive?
ee@pc-hp:~>
</code>

Hum, hum ... insérez un CD (non-vierge) et recommencez :

<code>
ee@pc-hp:~> abcde
Grabbing entire CD - tracks: 01 02 03 04 05 06 07 08 09 10 11 12 13
Selected: #1
---- Hubert-Félix Thiéfaine / Scandale mélancolique ----
1: Libido moriendi
2: Scandale mélancholique
3: Gynécées
4: Confessions d'un never been
5: Le jeu de la folie
6: Last exit to paradise
7: L'étranger dans la glace
8: Les jardins sauvages
9: Télégramme 2003
10: Loin des temples en marbre de lune
11: La nuit de la samain
12: When Maurice meets Alice
13: That angry man on the pier
Edit selected CDDB data? [y/n] (n):
Is the CD multi-artist? [y/n] (n):
</code>

Ah ! c'est mieux !

Remarquons plusieurs choses (en dehors de la belle faute d'orthographe sur le morceau n° 2 !) :

→ Sans options (options que nous étudierons plus bas, dans [[#configuration|configuration]]), taper //abcde// puis appuyer sur la touche //Entrée// encodera l'intégralité du contenu de votre CD, morceau par morceau (ici, 13 morceaux) ;\\
→ Vous avez la possibilité d'éditer les entrées pour les "tagger" à votre guise (nous l'éditerons plus après) : //y// pour oui, //n// pour non (par défaut, la réponse est //n//) ;\\
→ Vous pouvez spécifiez s'il s'agit d'un CD "multi-artiste" (pratique pour les compilations) ; ici ce n'est pas le cas (nous en verrons un plus loin) donc //n// ;

À ce stade, si vous appuyez sur la touche //Entrée//, //**abcde**// extraira puis encodera le tout en moins de dix minutes (en //.ogg// par défaut) !\\ 
Joli, non ?

Non ?!?\\
Alors, affinons tout cela ... suivez le guide !


====== Utilisation ======


== Préalable ==

Lorsque vous lancez //**abcde**//, celui-ci cherche un fichier //.abcde.conf// (fichier caché) dans le répertoire ///home/votre_login//.\\
Ce fichier, il faudra le créer et ce sera l'objet de la section suivante.
En l'absence d'un tel fichier, //**abcde**// utilise le fichier par défaut, à savoir : ///etc/abcde.conf//. 

La configuration de ce fichier n'étant pas intuitive (voire un peu rébarbative), j'ai préféré passer de suite à une première utilisation pour bien montrer le potentiel d'//**abcde**// et éviter ainsi de vous ennuyer trop vite (si ce n'est déjà fait ... non ? c'est bon ? on continue ? OK!)

Une première utilisation se contentera donc du fichier par défaut (les fichiers encodés se trouveront dans le répertoire ///home/votre_login/artiste)//.

//(note : en fin de rubrique //configuration// je vous laisse un exemplaire de mon propre fichier pour vous aider à démarrer.)//



=== Extraire et encoder ===

Désormais pourvu d'un fichier de configuration (personnalisé ou par défaut), l'utilisation d'//**abcde**// devient un jeu d'enfant !\\ 
Reprenons l'exemple de départ (magnifique album, au demeurant, que je vous encourage vivement à écouter) :

<code>
ee@pc-hp:~> abcde
Grabbing entire CD - tracks: 01 02 03 04 05 06 07 08 09 10 11 12 13
Selected: #1
---- Hubert-Félix Thiéfaine / Scandale mélancolique ----
1: Libido moriendi
2: Scandale mélancholique
3: Gynécées
4: Confessions d'un never been
5: Le jeu de la folie
6: Last exit to paradise
7: L'étranger dans la glace
8: Les jardins sauvages
9: Télégramme 2003
10: Loin des temples en marbre de lune
11: La nuit de la samain
12: When Maurice meets Alice
13: That angry man on the pier
Edit selected CDDB data? [y/n] (n):
Is the CD multi-artist? [y/n] (n):
</code>

Là, nous sommes dans le cas de base : vous entrez le CD dans le lecteur, vous tapez //abcde// dans la console, vous répondez non aux deux questions (vous vous souvenez ?) et vous laissez faire.

Mais plusieurs autres possibilités s'offrent à vous :

° Supposons que vous n'aimiez que le morceau n° 8 ? Ou bien que vous n'aimiez pas le n° 4 ? Ou encore : vous aimez les n° 1, 2 et 3, mais pas le 4, le 5, mais pas le 6, du 7 au 12, mais pas le 13 ?\\
Ben vous êtes exigeants, vous dites donc !\\
Et vous avez raison ! //**abcde**// n'encodera que vos fichiers préférés **à condition de le lui signaler au lancement** ... c'est peut-être là sa seule (relative) faiblesse (pas de retour possible autre que la fermeture de la console !) ...

Exemples :

° Vous ne souhaitez que le morceau n° 8 ?
<code>
ee@pc-hp:~> abcde 8
</code>
admirons le résultat :
<code>
Grabbing tracks: 8
abcde: attempting to resume from /home/ee/abcde.b90b7f0d..
Grabbing track 8: Les jardins sauvages...
cdparanoia III release 9.8 (March 23, 2001)
(C) 2001 Monty <monty@xiph.org> and Xiphophorus

Report bugs to paranoia@xiph.org
http://www.xiph.org/paranoia/

        Couldn't disable kernel command translation layer
Ripping from sector  122084 (track  8 [0:00.00])
          to sector  136934 (track  8 [3:18.00])

outputting to /home/ee/abcde.b90b7f0d/track8.wav

 (== PROGRESS == [                              | 136934 00 ] == :^D * ==)

Done.


Encoding track 8 of 13: Les jardins sauvages...
Opening with wav module: WAV file reader
Encoding "/home/ee/abcde.b90b7f0d/track8.wav" to
         "/home/ee/abcde.b90b7f0d/track8.ogg"
at quality 3,00
        [ 99,9%] [ 0m00s remaining] |

Done encoding file "/home/ee/abcde.b90b7f0d/track8.ogg"

        File length:  3m 18,0s
        Elapsed time: 0m 44,1s
        Rate:         4,4894
        Average bitrate: 108,5 kb/s

Tagging track 8 of 13: Les jardins sauvages...
Finished.
</code>

Joli, non ?

Ah ... quand même !

° Pour les autres cas de figures :

→ //abcde 1-3 5-13// : encodera tous les morceaux sauf le 4 ;\\
→ //abcde 1-3 5 7-12// : encodera tous les morceaux sauf le 4 et le 6 ;\\
→ //abcde// : encodera tous les morceaux (équivalent à //abcde 1-13//) ;\\
→ //abcde 3-8// : n'encodera que les morceaux 3, 4, 5, 6, 7 et 8 ;\\ 
→ //abcde -1// : encodera l'intégralité du CD en un seul fichier (pratique pour les "live", entre autre ...) ;\\

=== Edition des tags ===

Comme dit précédemment, //**abcde**// vous donne la possibilité d'éditer les tags (les entrées "artiste", "genre", "titre de l'album", "titre du morceau") de vos CDs.
Le principe est simple : //**abcde**// récupère le //discid// de votre CD et effectue une requête auprès d'un serveur //cddb// pour obtenir les informations du CD (les tags) ; //**abcde**// les affiche et vous offre le choix de les éditer ou non.\\ 
<code>
Edit selected CDDB data? [y/n] (n):
</code>
Si vous optez pour non, tapez //n// et //**abcde**// lancera alors la phase d'extraction-encodage.

Si vous répondez oui, tapez //y// et vous serez alors basculé sur l'éditeur //vim// qui vous permettra de modifier à loisir les entrées.

== fonctionnement de vim ==

Avant toute chose, sachez que vous pourrez toujours vous échappez (touche //Echapp// ou //Esc//) si d'aventure vos premières tentatives ne se passaient pas bien (perte du curseur, erreur de touche, ...).\\
Il y a (en plus de la touche //Entrée//, de la touche //Suppr// et des 4 flèches directionnelles) 6 touches à connaître : \\
→ **i** : (comme //insert//) permet de passer en mode insertion (vous verrez le mot //insertion// en bas de l'écran) ;\\
→ **Echapp** : permet de sortir du mode insertion (le mot //insertion// disparaitra) ;\\
→ **:** : permet de passer d'autres commandes une fois sorti du mode insertion ;\\
→ **w** : (comme //write//) permet d'enregistrer les modifications (réfléchir deux fois avant d'utiliser cette touche !) ;\\
→ **q** : (comme //quit//) permet de quitter l'éditeur //vim// ;\\
→ **!** : permet de quitter **sans** enregidtrer les modifications ;

Ces touches s'utilisent seules (**i**, **Echapp**) ou en combinaison (**:wq** ou **:q!**).

Concrètement, vous avez sélectionné //y//, vous basculez en mode édition ;\\
appuyez sur **i** ;\\
déplacez vous à l'aide des flèches directionnelles vers l'entrée à modifier ;\\
supprimer les caractères indésirables avec la touche //Suppr// (ne faites pas //Entrée// !!) et insérez les nouveaux caractères ;\\
vos modifications faites, appuyez sur **Echapp** pour sortir du mode insertion ;\\
utilisez une des deux combinaisons :\\
→ **:wq** si vous êtes satisfait : vos modifications seront enregistrées ;\\
→ **:q!** si vous n'êtes pas satisfait : vos modifications ne seront pas enregistrées ;\\
dans les deux cas vous quitterez l'éditeur et reviendrez sur la liste des entrées (modifiées ou non) de //**abcde**// ;\\
appuyez sur //Entrée// et l'extraction-encodage-taggage débutera !

Finalement, c'est tout simple !!

=== Cas particuliers ===

== Multi-artist ==

Comment tagger correctement un CD en cas d'artistes multiples (compilations, bandes originales de films, concerts style Live-Aid, ...) ?

//**abcde**//, très gentiment, vous le demandera dans tous les cas :
<code>
Is the CD multi-artist? [y/n] (n):
</code>
et dans la plupart des cas, vous répondrez //n// !

En effet, lorsque c'est le cas, //**abcde**// reconnait la multiplicité des artistes et le message devient :
<code>
Looks like a Multi-Artist CD
1) Artist / Title
2) Artist - Title
3) Title / Artist
4) Title - Artist
5) Artist: Title
6) Title (Artist)
7) This is a single-artist CD
Which style of multiple artist entries is it? [1-7] (1):
</code>
Entrez simplement le n° correspondant à ce que vous préférez puis //Entrée// et c'est parti !\\ 
(//**attention** : il semble que seule l'option 1 soit prise en compte ; les autres m'ont donné des résutats aussi divers que bizarres !//)

== Multiple exact matches ==

Il peut arriver que plusieurs track-lists existent ;\\
//**abcde**// vous les proposent ;\\
<code>
Multiple exact matches:
#1 ---
.......
.......
#2 ---
.......
.......
</code>

repérez le numéro de celle qui vous convient le plus ;\\
appuyez sur la touche **q** //(q comme quit)// ;\\
//**abcde**// vous demande votre choix ;\\
entrez le numéro correspondant puis //Entrée// ;\\
vous pouvez maintenant éditer cette liste ou passer directement à l'extraction-encodage.


====== Configuration ======

=== Le fichier .abcde.conf ===

//**abcde**// possède par défaut un fichier de configuration dans le répertoire ///etc// sous le simple nom de //abcde.conf//.

Il est plus que recommandé de ne pas toucher directement au fichier ///etc/abcde.conf// ;\\
faites-en une copie cachée dans votre répertoire ///home// :

(en root)\\
<code>
cp /etc/abcde.conf /home/votre_login
</code>

Renommez ce fichier en //.abcde.conf// puis changez le de propriétaire (passez-le de root à vous !) :

(toujours en root) renommez le fichier :\\
<code>
mv abcde.conf .abcde.conf
</code>

changez le propriétaire :\\
<code>
chown votre_login:users .abcde.conf
</code>

sortez du mode root (tapez //exit//) et vérifiez le nouvel état de //.abcde.conf// :
<code>
ls -l
</code>

devrait vous renvoyer quelque chose d'approchant :
<code>
-rwxr-xr-x   1 votre_login   users     492 avr 12 07:00 .abcde.conf
</code>

=== Configuration du fichier .abcde.conf ===

Ouvrez //.abcde.conf// avec votre éditeur favori :

(extrait)\\
<code>
# System defaults for abcde version 2.2.x
# Nothing in this file is uncommented by default.
#
# If you wish to override these system-wide settings, create your own
# .abcde.conf file in your home directory.

# CDDB options

# If you wish to use a different CDDB server, edit this line.
# If you just wanted to use a proxy server, just set your http_proxy
# environment variable - wget will use it correctly.
#CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi"

# The CDDB protocol requires hello information, including a valid username
# and hostname. If you feel paranoid about giving away such info, edit this
# line - the format is username@hostname.
#HELLOINFO="`whoami`@`hostname`"

...
...
...
</code>

Pas de panique !\\
Vous remarquez que l'ensemble du fichier est composé de paragraphes formatés à l'identique ; un # devant chaque ligne, et la (ou les) dernière(s) ligne(s) en majuscules : là se trouvent les options sur lesquelles vous pourrez bâtir votre propre fichier de configuration.

Nous n'allons pas détailler l'ensemble des options (la plupart de celles proposées par défaut sont excellentes !) mais juste de quoi comprendre comment tout cela fonctionne.\\
Et, rassurez-vous, je vous livrerais mon propre fichier (une dizaine de lignes, pas plus !) ... il vous servira le temps que vous affiniez le vôtre.

→ Les 7 premiers paragraphes concernent les réglages //cddb//. Il s'agit d'un serveur (sur Internet) chargé de recenser tous les disques existants selon leur numéro //discid// et de proposer en retour à des logiciels comme //**abcde**// une track-list (artiste, album, n° de piste, titre du morceau ...) la plus fiable possible.\\
//**abcde**// se connecte à son équivalent OpenSource : [[http://fr.wikipedia.org/wiki/Freedb|freedb]].\\
Personnellement, je ne touche à rien dans cette section.\\
Néanmoins :\\
° si vous avez de la place sur le disque dur vous pouvez vouloir conserver les tracks-lists ; basculez alors l'option CDDBCOPYLOCAL à "y" et attribuez-lui un dossier : CDDBLOCALDIR="$HOME/.cddb ;\\
° si vous souhaitez enrichir la base freedb de vos propres listes (après édition), basculez NOSUBMIT à "y" ;

→ Certains des paragraphes suivants nécessiteront un peu de personnalisation ;

° ne changez les lignes XXXENCODERSYNTAX que si vous savez pertinemment que votre distribution (ou vous-même) n'utilisez pas le programme par défaut pour l'encodage en ogg, en mp3, en flac, etc ... Si cette phrase ne vous dit rien, ne touchez à rien !

° une option intéressante est PADTRACKS ; par défaut, la valeur est "n" ce qui permet d'avoir des numéros de piste à deux chiffres (comme 01, 02, 03, etc ...) ;

° la valeur de "nice" (qui permet à un processus d'être plus ou moins prioritaire en utilisation CPU) est fixée à 10 par défaut ... raisonnable (lire absolument la man page de nice  avant de changer cette valeur) ;

° ne changez aucune des lignes au paragraphe //Paths of programs to use// (à moins de parfaitement savoir ce que vous faites ...) ;

° le paragraphe suivant //Options to call programs with// permet d'ajuster finement les valeurs des programmes utilisés : demande une connaissance approfondie des-dits programmes (voir les documentations correspondantes) ; on peut, sans dommage, ne pas s'attarder sur cette section ;

° //actions to take// permet de lister et d'ordonner les enchaînements d'actions opéré par //**abcde**// ; par défaut, celles-ci sont fixées à :\\
//cddb// (contacter le serveur freedb), //read// (lire les données du CD), //encode// (extraire des fichiers .wav et les encoder - par défaut en .ogg), //tag// (écrire les tags, qu'ils fussent édités ou non), //move// (déplace les fichiers encodés d'un répertoire temporaire à leur répertoire de destination - tel que mentionné plus loin), //clean// (efface les fichiers .wav devenus inutiles) ;\\  sachant que certaines actions nécessitent au préalable l'éxécution d'autres actions ... le choix est en fait assez restreint et les valeurs par défaut sont sensées.

° OUTPUTDIR vous permet de spécifier le répertoire de destination des fichiers encodés (par ex : /home/votre_login/musique);

° OUTPUTTYPE permet de sélectionner un ou plusieurs formats d'encodage (alors séparés par une virgule); par défaut, ogg ;

° la section //Output filename format// indique comment personnaliser l'usage des variables OUTPUT (extension), GENRE, ALBUMFILE, ARTISTFILE, TRACKFILE ET TRACKNUM pour avoir, en sortie d'encodage, des fichiers bien classés (dans votre OUTPUTDIR) et donc facilement retrouvable ; l'exemple proposé (//${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}//) donne quelque chose du genre :\\ /home/votre_login/OUTPUTDIR/Artiste-Album/n°_de_piste.titre.extension ; pas très fun ... à vous d'imaginer ce qui vous convient !

° presque en fin de fichier figure une option à priori ésotérique :\\ 
<code>
mungefilename ()
{
    echo "$@" | sed s,:,\ -,g | tr \ /\* __+ | tr -d \'\"\?[:cntrl:\]
}
</code>
étrange, n'est-il pas ?\\ 
En fait, il s'agit de ne pas éliminer certains caractères comme les guillemets ou les points d'interrogation et de ne pas convertir les espaces en caractère //underscore// (le _ sous le 8) ce qui donne meilleure allure aux titres des fichiers !

° la dernière option intéressante est la possibilité (ou non) d'éjecter le CD en fin d'extraction ; fixez EJECT à "y" ou "n".

=== Un fichier .abcde.conf prêt à l'emploi ===

Comme promis voici mon fichier : à vous de l'adapter à vos besoins !

<code>
## fichier de configuration pour ABCDE (/home/ee/.abcde.conf)
## d'après /etc/abcde.conf, with a little help from :
## http://www.trustonme.net/didacticiels/310.html

CDROMREADERSYNTAX='cdparanoia'

OGGENCODERSYNTAX='oggenc'

KEEPWAVS='n'

OUTPUTDIR='/home/ee/ogg'
OUTPUTTYPE='ogg'
OUTPUTFORMAT='${ARTISTFILE}/${YEAR} - ${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'

## donne "/home/ee/ogg/Thiéfaine/2005 - Scandale Mélancolique/01 - Libido Moriendi.ogg"
## adaptez à votre goût !

PADTRACKS='y'

EJECTCD='y'

mungefilename ()
{
echo "$@" | sed s,:,\ -,g | tr / _ | tr -d \"\?\[:cntrl:\]
}
</code>

Enjoy !

====== Compléments ======

__abcde :__

→ la page originale : http://lly.org/~rcw/abcde/page/ ;\\ 
→ la page actuelle : http://www.hispalinux.es/~data/abcde.php ;\\ 
→ un tuto sur [[http://www.trustonme.net/|Trustonme]] : http://www.trustonme.net/didactels/310.html ;\\ 
→ la page de manuel : en console //man abcde//.