2. CD audio

2.1. Préparation des pistes

[Note]Note

Toutes les commmandes sont adaptées pour Bash.

  1. Rassembler tous les fichiers MP3 dans un répertoire.

  2. Si vos fichiers MP3 proviennent de DOS/Windows, ils doivent avoir des extensions en majuscule. Vous pouvez convertir tout le nom du fichier en minuscule, ou simplement l'extension. Pour mettre tout en minuscule, taper :

    for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done

    pour convertir les extensions :

    for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done
  3. Si quelques fichiers contiennent des espaces, les convertir en 'underscore' (_):

    for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
  4. Convertir ces fichiers en WAV avec la commande :

    for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done

    Quand vous décodez des fichiers MP3 échantillonnés à 22kHz, en sortie de mpg123, le son peut être déformé. Pour remédier à cela :

    for i in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w `basename $i .mp3`.wav $i; done

    Mpg123 doir être présent dans n'importe quelle distribution Linux, mais si vous ne le possédez pas, vous pouvez l'obtenir ici : http://www.mpg123.de/.

    NOTE : J'ai remarqué qu'avec quelques fichiers MP3, mpg123 rendait un son distordu. J'ai d'abord pensé que les MP3 étaient de mauvaise qualité, mais je les ai testés avec un autre lecteur, et il n'y avait pas de problème. J'ai alors cherché un autre lecteur de MP3 capable de les convertir en WAV, et j'ai trouvé celui-ci : MAD mp3 decoder disponible à http://www.underbit.com/products/mad/. Avec madplayer, la ligne de commande est :

    for i in *.mp3; do madplay -o `basename $i .mp3`.wav $i; done

    Il y a un autre moyen de réaliser cette conversion. Quelques fichiers MP3 décodés semblent apparement présenter des troubles aussi bien avec mpg123 que avec madplay. Le décodeur lame, qui possède un mode de décodage, semble très bien gérer les cas difficiles (lame peut être obtenu à http://lame.sourceforge.net) :

    for i in *.mp3; do lame --decode $i `basename $i .mp3`.wav; done

    NOTE : La commande `basename $i .mp3`.wav remplace les extensions MP3 en WAV. Il y a 101 façons de le faire, en voici une : `echo "$1" | sed 's/\.mp3$/.wav/'`

  5. Exécuter "file *.wav" et noter les fichiers dont les caractéristiques s'affichant diffèrent de 16 bits, stéréo, 44100Hz

  6. Si des fichiers présentent des caractéristiques différentes, les convertir avec les spécifications ci-dessus. Par exemple, pour convertir le fichier piste01.wav afin d'obtenir une fréquence d'échantillonnage de 44,1Khz, vous pouvez utiliser :

    sox track01.wav -r 44100 piste01-new.wav resample

    Où, si la commande ci-dessus introduit des parasites durant la conversion de fichiers mono :

    sox track01.wav -r 44100 -c 2 piste01-new.wav

    Sox est tellement populaire qu'il est certainement installé par défaut dans toutes les distributions Linux, et peut être obtenu à l'adresse suivante : http://www.spies.com/Sox/. Cependant, les options en ligne de commande sont quelque peu hardues à comprendre pour un utilisateur débutant (moi), aussi, regarder à http://www.spies.com/Sox/sox.tips.html pour des astuces sur l'utilisation.

  7. Normaliser vos fichiers WAV afin d'éviter des différences trop importantes entre les niveaux de volume sonore. J'utilise un programme de Chris Vaill (), appelé normalize - il peut être obtenu depuis http://www.cs.columbia.edu/~cvaill/normalize/.

    J'utilise la syntaxe suivante (-m est utilisé pour le mode mixage pour lequel le son des fichiers doit être aussi fort que possible) :

    normalize -m *.wav

2.2. Graver vos CD

On trouve beaucoup de programmes pour créer des CD à partir de fichiers WAV. J'utilise cdrecord pour graver en ligne de commande, et XCDROAST pour le mode graphique. Pour cdrecord, vous devez savoir quel périphérique SCSI est votre graveur. Si vous utilisez un graveur ATAPI, utilisez l'émulation SCSI (module ide-scsi du noyau). Disons que votre graveur ATAPI est sur le second bus IDE, en position maître. Par conséquent, il doir exister un fichier /dev/hdc. Pour préciser au noyau que l'on veut considérer ce périphérique comme du SCSI, ajoutez la ligne suivante dans le fichier /etc/lilo.conf :

append=" hdc=ide-scsi"

Aussi, si votre noyau ne charge pas automatiquement le module ide-scsi, il faut ajouter insmod ide-scsi dans votre fichier rc.local (ou un équivalent). Une fois que votre graveur est reconnu comme étant un périphérique SCSI, lancez cdrecord --scanbus pour voir quels sont les paramètres de votre périphérique. Sur ma machine, l'exécution de la commande m'affiche les informations suivantes :

	scsibus1:
	1,0,0 100) 'IOMEGA ' 'ZIP 250 ' '51.G' Removable Disk
	1,1,0 101) 'HP ' 'CD-Writer+ 7100 ' '3.01' Removable CD-ROM
      

Alors, la commande cdrecord devra contenir dev=1,1,0 pour spécifier quel périphérique utiliser. Voici la commande complète sur mon système :

cdrecord dev=1,1,0 -eject speed=2 -pad -audio *.wav
[Note]Note

L'option -pad est necessaire car toutes les pistes sur le CD audio doivent être ajustées à la valeur correcte des données, ce qui n'est pas toujours le cas avec les fichiers MP3.

2.3. Graver un CD en DAO

DAO, (Disc-At-Once, NdT : cela signifie que la gravure s'effectue sans que le laser ne fasse de pause), est à l'heure actuelle la seule méthode pour graver un CD sans la pause de 2 secondes entre les pistes. C'est très utile pour réaliser des mixages pour des soirées. Le programme cdrdao, est disponible depuis SourceForge, http://sourceforge.net/projects/cdrdao/.

Le programme cdrdao utilise un fichier de description appelé TOC (Table Of Contents soit Table Des Matières). Il y a deux moyens de créer un tel fichier. Le premier consiste à utiliser un script shell fourni avec les sources de cdrdao dans le répertoire contrib), appelé generate_toc.sh. Il prend une liste de fichiers .wav en paramètre, et crée un fichier cd.toc. Le deuxième moyen est de créer un fichier semblable, à la main, avec l'éditeur de votre choix. Voici un exemple qui parle de lui-même :

	CD_DA
	
	TRACK AUDIO
	AUDIOFILE "mix-01.wav" 0
	
	TRACK AUDIO
	AUDIOFILE "mix-02.wav" 0
	
	TRACK AUDIO
	AUDIOFILE "mix-03.wav" 0
	
	TRACK AUDIO
	AUDIOFILE "mix-04.wav" 0
	
	TRACK AUDIO
	AUDIOFILE "mix-05.wav" 0
      

Le 0 (zéro) après le nom des fichiers wav signifie : démarrer depuis le début du fichier. Il peut y avoir un second nombre qui indique la taille (en temps) du fichier à graver. Xcdroast crée le même fichier TOC, on trouve des exemples dans le répertoire testtocs des sources de cdrdao.

Cdrdao utilise par défaut le périhérique /dev/cdrecorder, qui doit être un lien vers le graveur. Si le fichier de votre périphérique est /dev/scd0, créer le lien symbolique (en tant que root) de la façon suivante :

ln -s /dev/scd0 /dev/cdrecorder

Admettons que votre fichier TOC soit nommé cd.toc, la commande pour graver le CD est simple :

cdrdao write cd.toc

2.4. Logiciel

Il y a de nombreux logiciels disponibles, ils peuvent automatiser le processus de création de CD à partir de fichiers MP3. Voici une liste non exhaustive de programmes disponibles :