Gapless Audio CD Creation from MP3s
Introduction
Some albums are meant to be played without any silent gap between tracks -- especially live albums. Furthermore, when you copy a regular album that has gaps, the ripped audio files will actually include this gap at the end of each track -- to burn these tracks with a gap will actually increase the length of silence between tracks. Therefore, in almost all cases, you are better off burning all your CD backups gaplessly.
Here is an easy way to burn a gapless audio CD from the shell using cdrdao.
Setup
Install the lame and cdrdao packages.
Optional: Let us configure cdrdao to use our CD burner. Open up /etc/cdrdao.conf
(as root), and enter the /dev entry for your burner in this format:
write_device: "/dev/cdrw"
Decode the MP3s
First of all, copy all the songs you want on the CD to a folder. If necessary, rename them to reflect the order you want the tracks to be laid out (such as 01.mp3, 02.mp3, etc). Now we are going to decode all the mp3s into uncompressed wav files. Take note that a full album can take up more than 800MB in wav files alone.
mkdir wav for file in *.mp3 ; do lame -s 44.1 --decode "$file" "wav/${file%.mp3}.wav" ; done
Create a Table of Contents file
Once finished, let us make a Table of Contents file that describes the layout of the CD.
cd wav { echo "CD_DA" for file in *.wav ; do echo "TRACK AUDIO" echo "FILE \"$file\" 0" done } > toc
Optionally, if you would like to insert a 2-second gap between certain tracks, you can edit the toc file and insert this line between the TRACK AUDIO and FILE lines for that track:
PREGAP 00:02:00
Of course, you can change the gap length to any time you desire.
Burn
Finally, all we have to do is burn the CD.
cdrdao write toc
Some people prefer to burn audio CDs at a low speed for higher quality. Here is an example for burning at 8x:
cdrdao write --speed 8 toc