428 lines
20 KiB
Plaintext
428 lines
20 KiB
Plaintext
Linux MP3 CD Burning mini-HOWTO
|
||
|
||
Greg Wierzchowski
|
||
|
||
<greg@draxen.org>
|
||
|
||
2001-05-29
|
||
Revision History
|
||
Revision 1.11 2004-08-21 Revised by: GW
|
||
Fixed a typo.
|
||
Revision 1.10 2004-07-14 Revised by: GW
|
||
Fixed revision numbering to be in sync with CVS.
|
||
Revision 1.9 2004-07-14 Revised by: GW
|
||
Small updates, added new sub-section.
|
||
Revision 1.8 2003-09-12 Revised by: GW
|
||
Cleanup, update, fixes and minor layout change.
|
||
Revision 1.7 2002-04-26 Revised by: GW
|
||
Divided into two sections: existing material to section "audio", new section
|
||
"data" on data CDs. Misc. additions.
|
||
Revision 1.5 2001-11-19 Revised by: GW
|
||
Fixed omission in Disc-At-Once burning section.
|
||
Revision 1.4 2001-11-17 Revised by: GW
|
||
Added Disc-At-Once burning section.
|
||
Revision 1.3 2001-09-02 Revised by: GW
|
||
Added another example of decoding MP3 files with lame.
|
||
Revision 1.2 2001-07-12 Revised by: GW
|
||
Minor layout changes; Added Translations subsection into Credits.
|
||
Revision 1.1 2001-06-12 Revised by: GW
|
||
Minor cleanup; Regexp fix for MP3 to WAV name conversion example.
|
||
Revision 1.0 2001-05-29 Revised by: GW
|
||
Initial Release.
|
||
|
||
|
||
A complete recipe for creating audio and data CDs from MP3 files.
|
||
|
||
-----------------------------------------------------------------------------
|
||
Table of Contents
|
||
1. Introduction
|
||
1.1. Copyright and License
|
||
|
||
|
||
2. Audio CDs
|
||
2.1. Preparing the Tracks
|
||
2.2. Normalisation
|
||
|
||
|
||
3. Burning Your CD
|
||
4. Burning a DAO CD
|
||
5. Software
|
||
6. Data CDs
|
||
7. CD Burning Resources
|
||
8. Credits
|
||
8.1. Translations
|
||
8.2. Other Credits
|
||
|
||
|
||
|
||
1. Introduction
|
||
|
||
This mini-HOWTO was created because of my experience with burning music CDs
|
||
and lack of some specific information about sound normalization on the
|
||
Internet. I usually burn music CDs as a mix - different songs from different
|
||
sources.Very often volume level between songs varies greatly. This is the
|
||
first obstacle. Second, many of the files on the Internet are not
|
||
CD-compatible (16 bit, stereo, 44.1 kHz) and have to be converted. There are
|
||
many programs to burn music CDs from MP3 files, and many of them do the
|
||
conversion transparently. But I haven't seen a single tool that also
|
||
normalizes the volume, so that's why I worked out my own CD-burning recipe.
|
||
|
||
If you you just want to make a CD filled with music, and not be bothered with
|
||
all of the details, I have good news for you: Kees Cook (<kees@outflux.net>)
|
||
put together a tool based on this HOWTO, which automates all of the tasks
|
||
outlined here. His program can be obtained from [http://outflux.net/unix/
|
||
software/mp3cd/] http://outflux.net/unix/software/mp3cd/. Thanks, Kees!
|
||
|
||
This HOWTO is just about one thing - putting MP3 music on a CD, so that you
|
||
can listen to it. For in-depth information about MP3 files, please look at
|
||
The Linux MP3 HOWTO by Phil Kerr, located at [http://www.tldp.org/HOWTO/
|
||
MP3-HOWTO.html] http://www.tldp.org/HOWTO/MP3-HOWTO.html. For information
|
||
about CD creation in general as well as CD burners, refer to CD-Writing-HOWTO
|
||
by Winfried Trümper, available at [http://www.tldp.org/HOWTO/
|
||
CD-Writing-HOWTO.html] http://www.tldp.org/HOWTO/CD-Writing-HOWTO.html. Also,
|
||
look at the CD Burning Resources section for more information.
|
||
|
||
I'm assuming you wish to burn a CD with the collection of songs you obtained
|
||
from different sources, all varying quality, but you want to get the
|
||
best-sounding CD possible. This mini-HOWTO outlines the steps that may help
|
||
you.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.1. Copyright and License
|
||
|
||
This document is copyright 2001 by Greg Wierzchowski and is released under
|
||
the terms of the GNU Free Documentation License, which is hereby incorporated
|
||
by reference. Send feedback to greg@draxen.org.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2. Audio CDs
|
||
|
||
2.1. Preparing the Tracks
|
||
|
||
Note Note
|
||
<EFBFBD> All commands assume bash shell
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.1. Filename Cleanup
|
||
|
||
1. Collect all MP3 files in one directory.
|
||
|
||
2. If any filenames contain spaces, first convert them to underscores:
|
||
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
|
||
|
||
This first step is important because, even if unix itself allows spaces
|
||
in filenames, most programs get confused by them.
|
||
|
||
3. If your MP3 files came from DOS/Windows, they may have uppercase
|
||
extensions. You can convert whole names to lowercase or just extensions.
|
||
For everything lowercase do:
|
||
for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
|
||
|
||
to convert just extensions:
|
||
for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done
|
||
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
2.1.2. Conversion
|
||
|
||
The CD Audio specification requires wave files that are 16 bit, stereo, 44.1
|
||
kHz. MP3 files often have different parameters, but we need to convert them
|
||
to WAV first, anyway.
|
||
|
||
We have several choices for the conversion process.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.2.1. mpg123 and mpg321
|
||
|
||
Originally, there was only mpg123. However, it uses a proprietary licensing,
|
||
and now there's an open source replacement - mpg321. Both commands use the
|
||
same syntax:
|
||
for i in *.mp3; do mpg321 -w `basename $i .mp3`.wav $i; done
|
||
|
||
When decoding 22khz MP3 files the output of mpg123 may be distorted. I don't
|
||
know how well mpg321 deals with this problem. If you're converting with
|
||
mpg123, use:
|
||
for i in *.mp3; do mpg123 --rate 44100 --stereo --buffer 3072 --resync -w `basename $i .mp3`.wav $i; done
|
||
|
||
|
||
Mpg123 can be obtained from [http://www.mpg123.de/] http://www.mpg123.de/.
|
||
|
||
Mpg321 is available from [http://mpg321.sourceforge.net/] http://
|
||
mpg321.sourceforge.net/.
|
||
|
||
NOTE I noticed that with some MP3 files mpg123 output was distorted. At first
|
||
I thought that MP3's were bad, but then I checked with another player and
|
||
they sounded OK. So mpg123 is not my converter of choice.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.2.2. MAD
|
||
|
||
Another MP3 player/decoder, and the one I prefer, is madplay. It's available
|
||
from [http://www.mars.org/home/rob/proj/mpeg/] http://www.mars.org/home/rob/
|
||
proj/mpeg/. With madplayer, the command line is:
|
||
for i in *.mp3; do madplay -o `basename $i .mp3`.wav $i; done
|
||
|
||
Unfortunately, madplay also had problems with some of MP3 files I had. I
|
||
don't think there's a problem with the decoder, but rather with it handling
|
||
broken MP3 files.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.2.3. Lame
|
||
|
||
The lame encoder, which has a decoding mode, seems to handle difficult cases
|
||
very well (lame can be found at [http://www.mp3dev.org/mp3/] http://
|
||
www.mp3dev.org/mp3/) :
|
||
for i in *.mp3; do lame --decode $i `basename $i .mp3`.wav; done
|
||
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.2.4. OGG files
|
||
|
||
Well, this HOWTO is about MP3 files, but OGG standard is an alternative which
|
||
many people prefer over MP3 because of the licensing. To deal wit OGG files,
|
||
you need to use:
|
||
for i in *.ogg ; do ogg123 -d wav -f `basename $i .ogg`.wav $i; done
|
||
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.2.5. Converting other formats
|
||
|
||
Nico Genimakis sent me an email about using mplayer to covert audio in many
|
||
different formats to WAV with automatic resampling to 44100Hz. Mplayer is
|
||
known to be able to read almost anything, and it can convert your .ogg, .mp3,
|
||
.flac, .wma etc.
|
||
|
||
usage (in this example converting WMA files):
|
||
for i in *.wma ; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm -waveheader $i; done
|
||
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1.3. Conversion Notes
|
||
|
||
NOTE: The `basename $i .mp3`.wav command replaces MP3 extensions with WAV.
|
||
There are 101 ways to do that, here's the alternative: `echo "$1" | sed 's/
|
||
\.mp3$/.wav/'`
|
||
|
||
After the conversion, run "file *.wav" and check the output for any files
|
||
that differ from 16 bit, stereo 44100 Hz.
|
||
|
||
If there are files with different characteristics, convert them to the above
|
||
specs. For example, to convert file track01.wav to obtain sample rate 44.1
|
||
kHz, you could use:
|
||
sox track01.wav -r 44100 track01-new.wav resample
|
||
|
||
|
||
or, if the above introduces static when converting mono files:
|
||
sox track01.wav -r 44100 -c 2 track01-new.wav
|
||
|
||
|
||
Sox is so popular, that it's probably installed by default with any Linux
|
||
distribution, and can be obtained from [http://www.spies.com/Sox/] http://
|
||
www.spies.com/Sox/. However, the command-line options are somewhat cryptic
|
||
for the casual user (me). Look at [http://www.spies.com/Sox/sox.tips.html]
|
||
http://www.spies.com/Sox/sox.tips.html for some tips on usage.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.2. Normalisation
|
||
|
||
Normalisation is a process during which all the sound files are brought to
|
||
the same relative loudness level. I use a program by Chris Vaill (<
|
||
cvaill@cs.columbia.edu>), called normalize - it can be obtained from [http://
|
||
www.cs.columbia.edu/~cvaill/normalize/] http://www.cs.columbia.edu/~cvaill/
|
||
normalize/
|
||
|
||
I use the following syntax (-m is for mix mode, where all files should be as
|
||
loud as possible):
|
||
normalize -m *.wav
|
||
-----------------------------------------------------------------------------
|
||
|
||
3. Burning Your CD
|
||
|
||
There are many programs to create CDs from WAV files. I use cdrecord for
|
||
command-line burning and XCDROAST for gui. For cdrecord, you have to know
|
||
what SCSI device your CD-writer is. If you're using ATAPI writer, with older
|
||
kernel, use SCSI emulation (kernel module ide-scsi). As of kernel 2.6, you
|
||
can use ATAPI directly, without SCSI emulation, by prepending ATAPI: to the
|
||
device specification. Let's assume, that your ATAPI cdwriter is on the second
|
||
IDE bus as a master. Thus, it will have /dev/hdc device file. To instruct the
|
||
kernel that you want to treat it as a SCSI device, add the following line to
|
||
/etc/lilo.conf:
|
||
append=" hdc=ide-scsi"
|
||
|
||
Also, if your kernel doesn't automatically load ide-scsi module, add insmod
|
||
ide-scsi into your rc.local (or equivalent) file. Once you have our CD-writer
|
||
recognized as a SCSI device, run cdrecord --scanbus to find out what's the
|
||
"dev" parameter to cdrecord. On my system, the output looks like the
|
||
following:
|
||
scsibus1:
|
||
1,0,0 100) 'IOMEGA ' 'ZIP 250 ' '51.G' Removable Disk
|
||
1,1,0 101) 'HP ' 'CD-Writer+ 7100 ' '3.01' Removable CD-ROM
|
||
|
||
So, the cdrecord command line will contain dev=1,1,0 to specify the device.
|
||
Here is the complete command on my system:
|
||
cdrecord dev=1,1,0 -eject speed=2 -pad -audio *.wav
|
||
|
||
And, with kernel 2.6:
|
||
cdrecord dev=ATAPI:1,1,0 -eject speed=2 -pad -audio *.wav
|
||
|
||
Note NOTE
|
||
<EFBFBD> The -pad argument is neccessary, because all audio tracks on the CD must
|
||
be adjusted for the proper data length, which is not always the case
|
||
with mp3 files.
|
||
|
||
Another way, would be to convert WAV files with sox into CDR format
|
||
before burning:
|
||
sox file.wav file.cdr
|
||
-----------------------------------------------------------------------------
|
||
|
||
4. Burning a DAO CD
|
||
|
||
DAO, Disc-At-Once, is as of now the only method for burning a CD without a
|
||
2-second pause between the tracks. It's useful for burning party mixes. The
|
||
program for burning CDs in DAO mode is cdrdao, available from SourceForge,
|
||
[http://sourceforge.net/projects/cdrdao/] http://sourceforge.net/projects/
|
||
cdrdao/.
|
||
|
||
The cdrdao program uses description files called TOC (Table Of Contents, of
|
||
course). There are two ways to create such file. First is to use a shell
|
||
script, distributed with cdrdao source (in contrib directory, called
|
||
generate_toc.sh. It takes a list of .wav files as an argument and produces a
|
||
cd.toc file. Second way is to simply create such file yourself in a text
|
||
editor of your choice. Here is a self-explanatory example:
|
||
CD_DA
|
||
|
||
TRACK AUDIO
|
||
AUDIOFILE "mix-01.wav" 0
|
||
|
||
TRACK AUDIO
|
||
AUDIOFILE "mix-02.wav" 0
|
||
|
||
TRACK AUDIO
|
||
AUDIOFILE "mix-03.wav" 0
|
||
|
||
TRACK AUDIO
|
||
AUDIOFILE "mix-04.wav" 0
|
||
|
||
TRACK AUDIO
|
||
AUDIOFILE "mix-05.wav" 0
|
||
|
||
The 0 (zero) after the wave filename means start from the beginning of the
|
||
file. There can be a second number providing the length (time) of file to
|
||
record. The xcdroast creates similar TOC files, there are also examples in
|
||
testtocs directory of cdrdao source.
|
||
|
||
The cdrdao by default uses the device /dev/cdrecorder, which should be a link
|
||
to the cdwriter device. Assuming your cd recorder device file is /dev/scd0,
|
||
create the link (as root) as follows:
|
||
ln -s /dev/scd0 /dev/cdrecorder
|
||
|
||
Then, assuming that the TOC file is named cd.toc the command to burn the cd
|
||
is simply:
|
||
cdrdao write cd.toc
|
||
-----------------------------------------------------------------------------
|
||
|
||
5. Software
|
||
|
||
There are some programs available, that can automate the process of creating
|
||
CDs from MP3 files. Here is arbitrarily selected list:
|
||
|
||
<EFBFBD><EFBFBD>*<2A>burnmp3 - Program to automate burning with DAO method. [http://
|
||
richardsnow.bizland.com/burnmp3/] http://richardsnow.bizland.com/burnmp3
|
||
/.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>mp32dao - a script from cdrdao distribution, in the contrib directory.
|
||
[http://cdrdao.sourceforge.net/] http://cdrdao.sourceforge.net/.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
6. Data CDs
|
||
|
||
Note Note
|
||
<EFBFBD> This section is a work in progress, you're looking at initial, very
|
||
sparse version.
|
||
|
||
With increasing popularity of CD/MP3 players burning data CDs for listening
|
||
purposes become practical. The advantage is definitely being able to squeeze
|
||
ten times more music onto one CD (a very approximate figure).
|
||
|
||
First I would recommend the filename cleanup steps outlined at the beginning
|
||
of this document. Conversion to WAV is, obviously, not needed here. To
|
||
normalize MP3 files without losing quality by conversions, use mp3gain. This
|
||
program is available from [http://www.maazl.de/project/mp3/mp3gain.html]
|
||
http://www.maazl.de/project/mp3/mp3gain.html or [http://
|
||
mp3gain.sourceforge.net/] http://mp3gain.sourceforge.net/ (but this second
|
||
site seems to contain Windows-oriented version). You'd need to issue the
|
||
command:
|
||
mp3gain -r -c *.mp3
|
||
|
||
As far as burning is concerned, MP3 data CD-s are just a standard data CD's
|
||
(ISO9660) with MP3 files on it. All MP3-CD players I know accept CD-s with
|
||
directories in them, and I usually burn CD with Joliet extension and they
|
||
work just fine. So to burn such a CD under linux, you first need to create an
|
||
ISO image an then burn it on the CD as in the example below:
|
||
mkisofs -J -o /tmp/mymp3s.iso /home/greg/mp3s/
|
||
cdrecord dev=1,0,0 speed=16 -eject /tmp/mymp3s.iso
|
||
|
||
That's it!
|
||
-----------------------------------------------------------------------------
|
||
|
||
7. CD Burning Resources
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Burning CDs on Linux: [http://www-106.ibm.com/developerworks/linux/
|
||
library/l-cdburn.html] http://www-106.ibm.com/developerworks/linux/
|
||
library/l-cdburn.html
|
||
<EFBFBD><EFBFBD>*<2A>CD Burning from the command line: [http://freeunix.dyndns.org:8088/site2/
|
||
howto/Burn_em_Baby.shtml] http://freeunix.dyndns.org:8088/site2/howto/
|
||
Burn_em_Baby.shtml
|
||
<EFBFBD><EFBFBD>*<2A>Comprehensive Burning Tutorial: [http://www.yolinux.com/TUTORIALS/
|
||
LinuxTutorialCDBurn.html] http://www.yolinux.com/TUTORIALS/
|
||
LinuxTutorialCDBurn.html
|
||
<EFBFBD><EFBFBD>*<2A>CD Mastering Guide: [http://debianlinux.net/~jama/howto/
|
||
cd_mastering_steps.html] http://debianlinux.net/~jama/howto/
|
||
cd_mastering_steps.html
|
||
|
||
-----------------------------------------------------------------------------
|
||
8. Credits
|
||
|
||
Special thanks to all the people who contribute to the Linux community and
|
||
who made this HOWTO possible.
|
||
-----------------------------------------------------------------------------
|
||
|
||
8.1. Translations
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Im Eunjea - Translated this document to Korean, URL is [http://
|
||
kltp.kldp.org/eunjea/mp3_burning/] http://kltp.kldp.org/eunjea/
|
||
mp3_burning/.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Mendel L Chan - Translated this document to Chinese, URL is [http://
|
||
www.linux.org.tw/CLDP/mini/MP3-CD-Burning/] http://www.linux.org.tw/CLDP/
|
||
mini/MP3-CD-Burning/.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Chie Nakatani - Translated this document to Japanese, URL is [http://
|
||
www.linux.or.jp/JF/JFdocs/MP3-CD-Burning/index.html] http://
|
||
www.linux.or.jp/JF/JFdocs/MP3-CD-Burning/index.html.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Laszlo Daczi - Translated this document to Hungarian, URL is [http://
|
||
tldp.fsf.hu/HOWTO/MP3-CD-Burning-hu/index.html] http://tldp.fsf.hu/HOWTO/
|
||
MP3-CD-Burning-hu/index.html.
|
||
|
||
<EFBFBD><EFBFBD>*<2A>Alix - Translated this document to French, available at French TLDP site
|
||
[ http://www.traduc.org] http://www.traduc.org.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
8.2. Other Credits
|
||
|
||
I have had a great response to the previous releases of this HOWTO. So many
|
||
people contributed, that I decided to change this section slightly in order
|
||
to list all of the names. So, I'd like to thank:
|
||
|
||
Greg Ferguson, Rob Russell, Terry Davis, Chris Vaill, Jamie Kellogg, Tom
|
||
Panning, Adam Buckley, Ilia Lobsanov, Giuseppe "Cowo" Corbelli, Florent
|
||
Fievez, Piero Ottuzzi, Kees Cook, Andrew Newman, David DeVault, Nico
|
||
Genimakis, Jan-Erik Stromquist.
|
||
|
||
And, most of all, I'd like to thank my lovely wife, Marta, for her love,
|
||
support and understanding
|