mirror of https://github.com/tLDP/LDP
170 lines
7.1 KiB
Plaintext
170 lines
7.1 KiB
Plaintext
|
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
|
||
|
<article>
|
||
|
|
||
|
<artheader>
|
||
|
<title>Linux MP3 CD Burning mini-HOWTO</title>
|
||
|
<author>
|
||
|
<firstname>Greg</firstname>
|
||
|
<surname>Wierzchowski</surname>
|
||
|
<affiliation>
|
||
|
<address><email>greg.wierzchowski@usa.net</email></address>
|
||
|
</affiliation>
|
||
|
</author>
|
||
|
|
||
|
<pubdate>2001-05-29</pubdate>
|
||
|
<abstract>
|
||
|
<para>A complete recipe for creating audio CDs from MP3 files.</para>
|
||
|
</abstract>
|
||
|
|
||
|
<revhistory>
|
||
|
<revision>
|
||
|
<revnumber>1.0</revnumber>
|
||
|
<date>2001-05-29</date>
|
||
|
<authorinitials>GW</authorinitials>
|
||
|
<revremark>Initial Release.</revremark>
|
||
|
</revision>
|
||
|
</revhistory>
|
||
|
</artheader>
|
||
|
|
||
|
|
||
|
<sect1 id="intro"><title>Introduction</title>
|
||
|
|
||
|
<para>
|
||
|
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.
|
||
|
</para>
|
||
|
|
||
|
<para>
|
||
|
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.
|
||
|
</para>
|
||
|
|
||
|
<sect2 id="copyright"><title>Copyright and License</title>
|
||
|
<para>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
|
||
|
<ulink url="mailto:greg.wierzchowski@usa.net"><citetitle>greg.wierzchowski@usa.net</citetitle></ulink>.
|
||
|
</para>
|
||
|
</sect2>
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="prepare"><title>Preparing the Tracks</title>
|
||
|
<para>
|
||
|
<note><title>Note</title><para>All commands assume bash shell</para></note>
|
||
|
</para>
|
||
|
|
||
|
<orderedlist>
|
||
|
<listitem><para>Collect all MP3 files in one directory. </para></listitem>
|
||
|
|
||
|
<listitem><para>If any filenames contain spaces, first convert them to underscores: </para>
|
||
|
<programlisting>
|
||
|
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done </programlisting>
|
||
|
</listitem>
|
||
|
|
||
|
<listitem><para>Convert them to WAV with the command: </para>
|
||
|
<programlisting>
|
||
|
for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done </programlisting>
|
||
|
<para><citetitle>Mpg123</citetitle> should be present in any Linux
|
||
|
distribution, but if you don't have it, get it at
|
||
|
<ulink url="http://www.mpg123.de/">http://www.mpg123.de/</ulink>.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para><emphasis>NOTE:</emphasis> 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 I searched for another MP3 player that
|
||
|
could write WAV files to disk, and found this one: <citetitle>MAD mp3 decoder</citetitle> at
|
||
|
<ulink url="http://www.mars.org/home/rob/proj/mpeg/">http://www.mars.org/home/rob/proj/mpeg/</ulink>.
|
||
|
With <citetitle>madplayer</citetitle>, the command line is: </para>
|
||
|
<programlisting>
|
||
|
for i in *.mp3; do madplay -o `basename $i .mp3`.wav $i; done </programlisting>
|
||
|
<para>
|
||
|
<emphasis>NOTE:</emphasis> The <command>`basename $i .mp3`.wav</command> command
|
||
|
replaces MP3 extensions with WAV. There are 101 ways to do that, here's
|
||
|
the alternative: <command>`echo "$i" | sed 's/.mp3/.wav/g'`</command>
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>Run "<command>file *.wav</command>" and check the
|
||
|
output for any files different from 16 bit, stereo 44100 Hz.</para></listitem>
|
||
|
|
||
|
<listitem><para>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: </para>
|
||
|
<programlisting>
|
||
|
sox track01.wav -r 44100 track01-new.wav resample</programlisting>
|
||
|
<para><citetitle>Sox</citetitle> is so popular, that it's probably installed
|
||
|
by default with any Linux distribution, and can be obtained from
|
||
|
<ulink url="http://www.spies.com/Sox/">http://www.spies.com/Sox/</ulink>.
|
||
|
However, the command-line options are somewhat cryptic for the casual
|
||
|
user (me). Look at
|
||
|
<ulink url="http://www.spies.com/Sox/sox.tips.html">http://www.spies.com/Sox/sox.tips.html</ulink>
|
||
|
for some tips on usage.
|
||
|
</para></listitem>
|
||
|
|
||
|
<listitem><para>Normalize your WAV files, to avoid drastic differences in volume
|
||
|
levels. I use a program by Chris Vaill (<email>cvaill@cs.columbia.edui</email>), called
|
||
|
<command>normalize</command> - it can be obtained from
|
||
|
<ulink url="http://www.cs.columbia.edu/~cvaill/normalize/">http://www.cs.columbia.edu/~cvaill/normalize/</ulink>
|
||
|
</para>
|
||
|
<para>
|
||
|
I use the following
|
||
|
syntax (-m is for mix mode, where all files should be as loud as
|
||
|
possible):</para>
|
||
|
<programlisting>
|
||
|
normalize -m *.wav</programlisting>
|
||
|
</listitem>
|
||
|
</orderedlist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="burning"><title>Burning Your CD</title>
|
||
|
<para>
|
||
|
There are many programs to create CDs from WAV files. I use <command>cdrecord</command> for
|
||
|
command-line burning and <command>XCDROAST</command> for gui. For <command>cdrecord</command>,
|
||
|
you have to know
|
||
|
what SCSI device your CD-writer is. If you're using ATAPI writer, use SCSI
|
||
|
emulation (kernel module ide-scsi). Let's assume, that your ATAPI cdwriter
|
||
|
is on the second IDE bus as a master. Thus, it will have <filename>/dev/hdc</filename> device
|
||
|
file. To instruct the kernel that you want to treat it as a SCSI device, add
|
||
|
the following line to <filename>/etc/lilo.conf</filename>: </para>
|
||
|
<programlisting>
|
||
|
append=" hdc=ide-scsi"
|
||
|
</programlisting>
|
||
|
|
||
|
<para>
|
||
|
Also, if your kernel doesn't automatically load ide-scsi module, add
|
||
|
"insmod ide-scsi" into your <filename>rc.local</filename>
|
||
|
(or equivalent) file. Once you have our CD-writer recognized as a
|
||
|
SCSI device, run "<command>cdrecord --scanbus</command>" to
|
||
|
find out what's the "dev" parameter to cdrecord. On my system, the
|
||
|
output looks like the following: </para>
|
||
|
<programlisting>
|
||
|
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
|
||
|
</programlisting>
|
||
|
|
||
|
<para>
|
||
|
So, the <command>cdrecord</command> command line will contain "dev=1,1,0" to specify the
|
||
|
device. Here is the complete command on my system: </para>
|
||
|
<programlisting>
|
||
|
cdrecord dev=1,1,0 -eject speed=2 -pad -audio *.wav
|
||
|
</programlisting>
|
||
|
|
||
|
<note><title>NOTE:</title><para> 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. </para></note>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</article>
|
||
|
|