Use cdrecord directly from the command line to create your own audio CDs.
There are a lot of advanced GUI programs for Linux that make it easy to burn your own audio CDs from files you have on your computer. Almost all of these programs, however, still function as a frontend for cdrecord—the command-line CD-burning Swiss Army knife. While GUIs are nice, for basic audio CDs, you’ll find that it’s almost as easy to burn the CD directly from the command line. This hack walks you through the process of preparing and burning your own audio CD from standard audio files you might have on your system.
The first step to burn an audio CD is to prepare the audio files. In the past audio files had to be converted to CDDA format for cdrecord to recognize them, but nowadays cdrecord works equally well with WAV files. Depending on the format of your audio files, you will use different tools to convert them to WAV files. Converting from autio format to another is discussed in [Hack #35] .
Once your audio files are ready, the next step is to discover
which CD-ROM device cdrecord will use. Run
cdrecord with the -scanbus
argument and
cdrecord will probe and detect any CD burners on
your system and which device entry to use. The exact method to use will
vary depending on whether you use the 2.4 or 2.6 kernel series. The 2.4
kernel series required that CD burners use SCSI emulation with the ide-scsi
module, so your IDE CD burner on /dev/hdc might be
accessed through /dev/scd0 instead. Most modern
distributions that still use 2.4 will turn on SCSI emulation for you so
you shouldn’t have to worry about setting it up. In the 2.6 kernel
series you no longer have to use SCSI emulation and can write directly
to the IDE device, but you have to tell cdrecord
about this fact. To scan for IDE CD burners with 2.4 kernels (or if you use SCSI CD
burners), run this:
$ cdrecord -scanbus
If you use the 2.6 kernel, add the dev=ATA
: option:
$ cdrecord dev=ATA: -scanbus
In either case, you will see output much like the following:
scsibus1: 1,0,0 100) 'MATSHITA' 'DVD-RAM UJ-822S ' '1.01' Removable CD-ROM 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) * 1,6,0 106) * 1,7,0 107) *
In my case, my DVD writer is listed with the device number
1,0,0
. If you had more than one
CD-ROM drive installed, you would need to choose which one you wish to
use by the extra device descriptions cdrecord
outputs. Once your device number is identified, change to the directory
containing the WAV or CDDA files you want to burn. If you use a 2.4 kernel,
run:
$ cdrecord -v dev=1,0,0 -audio
track01.wav track02.wav track03.wav
If you use a 2.6 kernel, modify the dev
argument slightly:
$ cdrecord -v dev=ATA:1,0,0 -audio
track01.wav track02.wav track03.wav
If you have converted files from some other audio format into WAV, add the -pad
option to cdrecord
so that it will ensure the WAV is padded to be a multiple of 2,352
bytes—a cdrecord requirement.
In both examples, replace the dev
argument with the device number for your
CD drive. This command tells cdrecord to burn
track01.wav, track02.wav, and
track03.wav to an audio CD. If your WAV or CDDA
files are already in order in the directory, you can also use a shell
glob (like *.wav) instead of typing out each file
manually. This example uses TAO (Track At Once) recording, which means that each audio
track will be spaced by two seconds of silence. If you want more or less
of a gap in between tracks you will need to resort to the more
complicated DAO (Disk At Once) method if your drive supports it.
Because of the many extra steps it involves, if you want to go the DAO
route I recommend you use a graphical CD-burning tool as decribed in
[Hack
#40] .
Some cdrecord examples list a speed option,
which you can use to set the recording speed. By default
cdrecord will attempt to use the fastest speed it
can detect for your CD writer, but if you want to purposely slow it
down (perhaps because of a slow system) add the speed=2
option, but replace 2 with the speed
at which you wish to write.