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
gollark: The current implementation has... several problems:- it keeps cached data even if osmarks.tk is updated- it intercepts requests to dynamic stuff like IncDec and Isso, which is normally fine but makes it break oddly in offline mode- it seems to re-request everything all the time.
gollark: I should probably fix the service worker it uses for offline mode, though.
gollark: Died?
gollark: Okay, infipage is back up, links to IncDec are coming soon.
gollark: I wonder if the offline caching thing works at all.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.