Archiviare un cd audio in modo che sia possibile, a partire dal backup, masterizzare un cd perfettamente uguale all’originale e convertire facilmente le tracce nei formati ogg ed mp3.
Ogni cd viene archiviato utilizzando:
Usare un unico file per l’audio, unitamente alla presenza del tocfile/cuefile, consente di ricreare un cd identico all’originale (inclusi i pre-gap!).
Il cuefile, a differenza del tocfile (utilizzato solo da cdrdao) è uno standard de-facto per descrivere il layout di un cd audio, e consente al backup di essere utilizzato da molti programmi differenti su diversi sistemi operativi. La differenza sostanziale tra tocfile e cuefile è solo nel formato, le informazioni in essi contenute sono le stesse.
La versione aggiornata di questo documento è scaricabile all’indirizzo http://www.infocomstore.com/acdbhowto/. La versione PostScript è disponibile all’indirizzo http://www.infocomstore.com/acdbhowto/howto.ps.
Copyright © 2004 Michele Conte.
This manual is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.
A copy of the GNU General Public License is available on the World Wide Web at http://www.fsf.org/copyleft/gpl.html. You can also obtain it by writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Tutti i marchi e i marchi registrati appartengono ai loro legittimi proprietari.
comando_parte_2
equivale a: comando_parte1 comando_parte_2
Grazie a tutte le persone che mi hanno aiutato a imparare, in particolare a tutti gli amici del canale #linux-it della rete irc Freenode.
Hanno contribuito a vario titolo a questo documento: Domenico “aleph” Delle Side, Gianluca “acaso” Dei Rossi, Eugenia Franzoni.
Questo non è un howto introduttivo. Una conoscenza generale di GNU/Linux, sapere come installare dei programmi o masterizzare un cd, sono tutte cose che vengono date per scontate (e che sono già ben trattate in altri documenti).
Lo scopo di questo howto è quello di spiegare come “mettere insieme i pezzi” per realizzare un buon backup dei propri4 cd audio.
Questi sono i programmi utilizzati:
cdrdao read-cd --device /dev/hdc --paranoia-mode 3 file.toc
cdrdao legge il contenuto del cd audio, creando un file data.bin e un tocfile col contenuto del cd.
cd-discid /dev/hdc > cddb_id.txt
(opzionale) L’id CDDB del disco viene archiviato nel dile cddb_id.txt per eventuali usi futuri.
cdrdao read-cddb file.toc
cdrdao scarica le informazioni relative al cd dal server CDDB e le aggiunge al tocfile, pronte per essere usate come informazioni CD-Text nella masterizzazione. Queste informazioni sono: il nome del cd, il nome del cantante/esecutore del cd, il nome e il cantante/esecutore di ogni traccia.
Una volta scaricate le informazioni CDDB sarà bene dare un’occhiata al tocfile, per controllare che non ci siano errori di battitura (gli utenti italiani che contribuiscono al database CDDB spesso sono piuttosto sbadati...). Come ulteriore raccomandazione, è bene controllare che ogni stringa (titolo di canzone, nome del cd, cantante) non oltrepassi il limite di 160 caratteri.
A questo punto possiamo convertire il tocfile in un cuefile. Per fare questo usiamo l’utility cueconvert, del pacchetto cuetools:
cat file.toc \
| perl -npe ’s/\\([0-7]{3})/chr(oct($1))/ge; s/\\\"//g’ \
| cueconvert -t toc -f - -t cue -f filetmp.cue
Questo comando esegue tre operazioni:
Qualche altra piccola modifica al cuefile che abbiamo generato, per avere il file “definitivo” da archiviare:
grep -v ’(SIZE_INFO|MESSAGE)’ filetmp.cue \
| sed -e ’s/data\.bin/data\.flac/’ > data.flac.cue
rm filetmp.cue
Purtroppo cueconvert non è esente da bug. Il grep sopra è un workaround a un piccolo bug che produce cuefile non standard. L’ultimo comando di sed trasforma l’indicazione del nome del file (contenente l’audio estratto dal cd) da data.bin a data.flac (ossia il nome che avrà il file dopo la compressione).
Visto che uno dei nostri obiettivi è avere un backup multipiattaforma, convertiamo6 il cuefile nel formato dei file di testo di Microsoft Windows©, per evitare che qualche (stupido) programma possa non riconoscerlo:
unix2dos data.flac.cue
Ed ora il tocco finale: la compressione lossless7. Flac è libero, efficiente, affidabile e multipiattaforma. Dopo la compressione la dimensione del file sarà (mediamente) il 60% dell’originale (dal 40% al 70%, a seconda del tipo di musica).
flac --cuesheet=data.flac.cue --endian=big --channels=2 --bps=16 --sample-rate=44100 --sign=signed data.bin
Tutti questi parametri sono richiesti perché il file data.bin, estratto da cdrdao, è un file wave grezzo (senza le intestazioni wave). L’opzione --cuesheet inserisce il cuefile all’interno del file flac (senza i titoli, quindi il cuefile andrà comunque conservato). man flac per i dettagli.
flac -d data.flac -o data.wav
Decomprime il file con l’audio, creando il nuovo file wave data.wav. La decompressione è necessaria perché cdrdao e cdrecord hanno bisogno di leggere l’audio da masterizzare da un file wave.
A questo punto, per masterizzare, è possibile usare sia il tocfile (da preferire se si masterizza con cdrdao) che il cuefile (per tutti gli altri programmi).
cat file.toc | sed -e ’s/data\.bin/data\.wav/’ > filetmp.toc
cdrdao write --device /dev/hdc --speed 2 filetmp.toc
Il tocfile fa ancora riferimento al file data.bin, ossia al file creato da cdrdao durante l’estrazione dell’audio dal cd. Visto che adesso il file con l’audio da masterizzare si chiama data.wav è necessario modificare il tocfile.
Il primo comando quindi crea un nuovo tocfile “aggiornato” (che dice al programma di masterizzazione di prendere l’audio dal file data.wav). Il secondo comando masterizza il cd.
cat data.flac.cue | sed -e ’s/data\.flac/data\.wav/’ > filetmp.cue
Il cuefile originale punta ancora al file compresso (data.flac). Questo comando crea un nuovo cuefile “aggiornato”.
cdrdao write --device /dev/hdc --speed 2 filetmp.cue
cdrdao è compatibile anche coi cuefile. Ovviamente questo comando è riportato solo per completezza. Avendo a disposizione il tocfile, il file con le informazioni nel formato “nativo” di cdrdao, non ha senso usare il cuefile per masterizzare con cdrdao.
cdrecord dev=ATAPI:1,0,0 speed=2 cuefile=filetmp.cue -v -text -dao
Comando per masterizzare il cd audio con cdrecord. L’opzione cuefile dice a cdrecord di leggere il file filetmp.cue per sapere come masterizzare il cd e da quale file prendere l’audio. L’opzione -text indica di scrivere le informazioni CD-Text. L’opzione -dao è usata per masterizzare il cd in modalità Disk-at-once (senza pause tra le tracce).
Si possono ottenere rapidamente i file mp3 delle tracce audio codificando l’intero cd in un unico file mp38. Usando l’ottimo mp3splt sarà poi possibile suddividere il file creato nelle singole canzoni, senza perdità di qualità e con la massima precisione, visto che i tempi di “taglio” delle varie tracce sono ottenuti dal cuefile.
flac -d -c data.flac | lame --preset standard - out.mp3
mp3splt -c data.flac.cue out.mp3
mp3splt si occupa sia di rinominare opportunamente i file mp3 delle singole tracce audio, sia di aggiungere alle tracce i tag id3v19 con i dati presi dal cuefile (cantante, titolo, album).
Nello stesso modo si possono ottenere i file ogg (mp3splt supporta anche il formato ogg/vorbis).
metaflac --export-cuesheet-to=- data.flac
flac -d data.flac -o track.wav --skip=03:08.45 --until=07:55.17
Il comando estrae l’audio che va da 03:08:45 a 07:55:17, e lo memorizza nel file track.wav, in formato wave.