Ripper et encoder un CD audio en ligne de commande

Petit mémo pour me rappeler comment ripper et encoder un CD audio en ligne de commande. C’est un comble, avec 4 ordinateurs à la maison, je n’ai aucun lecteur/graveur de CD en état de fonctionnement, sauf sur le Mac Mini (headless) qui sert de media center/serveur de fichiers sous Fedora 20.

Les outils nécessaires seront :

On commence par obtenir les informations sur le lecteur CD :

$ cdparanoia -vsQ

Qui affiche des données de ce type pour le lecteur CD de mon vieux Mac Mini :

cdparanoia III release 10.2 (September 11, 2008)

Using cdda library version: 10.2
Using paranoia library version: 10.2
Checking /dev/cdrom for cdrom...
        Testing /dev/cdrom for SCSI/MMC interface
                SG_IO device: /dev/sr0

CDROM model sensed sensed: PIONEER DVD-RW  DVR-K06 Q617

Checking for SCSI emulation...
        Drive is ATAPI (using SG_IO host adaptor emulation)

Checking for MMC style command set...
        Drive is MMC style
        DMA scatter/gather table entries: 1
        table entry size: 131072 bytes
        maximum theoretical transfer: 55 sectors
        Setting default read size to 27 sectors (63504 bytes).

Verifying CDDA command set...
        Expected command set reads OK.

Attempting to set cdrom to full speed...
        drive returned OK.

Table of contents (audio tracks only):
track        length               begin        copy pre ch
===========================================================
  1.    91377 [20:18.27]        0 [00:00.00]    no   no  2
  2.    72852 [16:11.27]    91377 [20:18.27]    no   no  2
  3.    77950 [17:19.25]   164229 [36:29.54]    no   no  2
TOTAL  242179 [53:49.04]    (audio only)

Pour info, il s’agit de l’album « Requiem for the 3 Kharites » de YRSEL (experimental ritual ambient drone).

On continue avec l’extraction des pistes, en ajoutant l’option -B :

$ cdparanoia -B
cdparanoia III release 10.2 (September 11, 2008)


Ripping from sector       0 (track  1 [0:00.00])
          to sector  242178 (track  3 [17:19.24])

outputting to track01.cdda.wav

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

outputting to track02.cdda.wav

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

outputting to track03.cdda.wav

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

Done.

Je me retrouve avec 3 fichiers WAV. Pour les convertir en mp3, j’utilise lame. Personnellement j’encode toujours en 320kbps avec le preset insane :

$ lame track01.cdda.wav track01.cdda.mp3 --preset insane
LAME 3.99.5 32bits (http://lame.sf.net)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 20094 Hz - 20627 Hz
Encoding track01.cdda.wav to track01.cdda.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (4.4x) 320 kbps qval=3
    Frame          |  CPU time/estim | REAL time/estim | play/CPU |    ETA
 46642/46642 (100%)|    1:05/    1:05|    1:05/    1:05|   18.553x|    0:00
--------------------------------------------------------------------------------------------------------------------------------
   kbps        LR    MS  %     long switch short %
  320.0       98.4   1.6        84.4   6.8   8.8
Writing LAME Tag...done
ReplayGain: -6.9dB

Répéter pour les autres pistes, voir faire un script qui prend en charge tout ça automatiquement. Je m’y attellerai peut-être un de ces jours si j’en ai le temps. mon problème ici étant de simplement ripper mes CD à distance pour les récupérer dans Musicbee.

Petit bonus, pour éjecter le CD en ligne de commande :

$ eject -r