The advantage of audio_burn is that you can mix and match audio file types and get a nice uniform sounding cd.
Latest release is audio_burn-0.0.9.tar.gz (04-09-2004). audio_burn-0.0.9-1.i386.rpm (04-09-2004).
All Redhat/Fedora RPM (and src RPM) packages are provided by Lorenzo Prince and can be downloaded here.
Debian (.deb) packages are provided by Scott Berry and can be downloaded here. Be sure to also checkout the audio_burn page on Freshmeat for more project information or new features.
What are people saying about audio_burn?
"This program was the only one I've been able to use successfully to burn my mp3->cdda. Works great, simple, console-based. Neat."
--MSilveira on Freshmeat.net
audio_burn is a command-line audio cd burning application written in C. It uses libaudioburn (also written in C) for all of the real work - which in turn uses several other Free Software packages and utilities such as:
For some reason I want an old release! Where can I get it?
audio_burn-0.0.8.tar.gz (02-29-2004) - Binary RPM (02-29-2004) - Binary .deb (02-29-2004)
audio_burn-0.0.7.tar.gz (01-08-2004) - Binary RPM (01-08-2004) - Binary .deb (02-29-2004)
audio_burn-0.0.6.tar.gz (12-07-2003) - Binary RPM (12-07-2003)
audio_burn-0.0.5.tar.gz (09-06-2003) - Binary RPM (11-26-2003)
Why audio_burn? What's wrong with cdrecord?
Nothing! audio_burn actually uses cdrecord internally. The advantage of audio_burn is that you can mix and match audio file types and get a nice uniform sounding cd. For example:
./audio_burn /tmp/foo.mp3 /tmp/bar.ogg /tmp/baz.wav
will decode foo.mp3, bar.ogg, and resample baz.wav (if not in the correct .wav format for cd audio), normalize all of them to each other (for a uniform sounding cd) and then burn the tracks to an audio cd that can be played in most audio cd players. Only .wav, .ogg, and .mp3 files are supported at this time. That's probably all that will ever be supported (unless volunteers help out). These three cover my needs at the moment, so until that changes...
Do I need to be root to run audio_burn?
Yes, and no. If you do not run audio_burn as root, you must make the binary owned by user root and set the set ID bit. For example:
[ 'su -' to root ]
chown root /usr/local/bin/audio_burn
chmod 4755 /usr/local/bin/audio_burn
will set the appropriate permissions to allow the program to use cdrecord for burning cds. This way, you can run audio_burn as a normal user, but it will run with root permissions so that it can burn cds with cdrecord normally.
NOTE: Thanks go to Ryan Lortie for correcting this example, as it previously said to use the permission mask 4777, which is a security problem.
An alternative is to run audio_burn as root directly.
Why does it complain about ogg files when I try compiling audio_burn?
You will need the vorbis development packages for your distribution. For Debian based systems, this is "libvorbis-dev". It also helps to have the vorbistools (such as "oggdec" for ogg decoding). This is included on Debian in the "vorbis-tools" package.
The ogg dev tools should be the only part that compilation complains about if you don't have it. At run-time, it may complain that you do not have certain utilities installed (listed above, such as normalize, sox, mpg321, etc). Be sure to install those if you'd like to use that functionality, or else use the command line switches to better guide audio_burn.
Is there any documentation for libaudioburn? I'd like to use it in my own audio burning application.
Well, currently no. The best place to look at how to use the library is in the code of audio_burn (audio_burn.c), or the header files of the library code. For more details, don't fear to dig into the C code contained in libaudioburn.
That's not very professional. Free Software has high standards to live up to and libaudioburn is cruft!
You're probably right. I banged this code out in 3 days and tested it for about 2. It works for me! No but really, the code is released under the GPL and you're welcome to modify it or fix it. I'd appreciate knowing about it if there are problems though.
audio_burn ate my cd-burner and set my toaster on fire!
Again, you're probably right. No software is perfect. ;-)
My god, man! What are all of these command line options?!
When you run audio_burn with no arguments (or with the -h or --help option) you will see somthing similar to the following:
audio_burn VERSION Copyright 2003, 2004 (C) Neill Miller
Usage: audio_burn [OPTIONS] file1 file2 file3 ...
Available OPTIONS are:
-h, --help : prints this help message and exits
-V, --version : prints the version and exits
-v, --verbose : prints out verbose output during run-time
: NOTE: required for -v output to cdrecord
-d, --device=N : use specified device number for cd burning
-t, --tmpdir=X : use specified tmpdir for processing files
-s, --simulate : simulates the burning (data is not written)
-g, --gracetime=S : set the time in sec. before starting to write
-D, --dao : use session at once mode (DAO)
-e, --eject : eject the cd upon completion
-C, --copies=M : will burn M copies of the same cd in a row
--speed=N : sets the preferred burning speed
--burnfree : enables burnfree mode in cdrecord
--atapi : uses ATAPI device support in cdrecord
--atapi-dev=/dev/X: uses specified ATAPI device for cdrecord rather
--noresample : disables use of sox for wav resampling
--nonormalize : disables use of normalize
--nooggdec : disables use of oggdec for ogg decoding
--nompgdec : disables use of mpg321 for mp3 decoding
--norecord : disables use of cdrecord for cd burning
--nocleantmp : disables removal of temporary files
--saveconfig : saves options to ~/.audioburnrc file on exit
--cdlength=M : specifies target cd length of M minutes
It may be useful to disable programs that you do not have installed
Most of the options *should* be self-explanatory.
The --atapi option is new with audio_burn 0.0.9. If specified, it causes audio_burn to use the ATA Packet Interface (ATAPI) support in cdrecord. This is mostly useful in the 2.6.x kernels, where it's often faster and more stable to use this mode. This is similar to running cdrecord with the dev=ATAPI:X,Y,Z option.
The --atapi-dev=/dev/X option is new with audio_burn 0.0.9. If specified, it causes audio_burn to use the ATA Packet Interface (ATAPI) support in cdrecord, but specifying a direct path to the device. This is similar to running cdrecord with the dev=/dev/X option. Some machines reportedly support this better than the --atapi option above, and some machines don't support it at all. YMMV. NOTE: This option CANNOT be used at the same time as the --atapi option above.
The --copies=M option is new with audio_burn 0.0.8. If specified, it causes audio_burn to specify the number of discs to burn in a row from the same source files. For example, --copies=10 will burn 10 discs, one after the other, while only decoding and normalizing the input files once before burning any discs.
The --gracetime=S option is new with audio_burn 0.0.8. If specified, it causes audio_burn to specify the gracetime of cdrecord. This option is particularly useful in conjunction with the --copies=M option to avoid pauses between each disc burned.
The --burnfree option is new with audio_burn 0.0.8. If specified, it causes audio_burn to enable the burnfree mode of cdrecord.
The --saveconfig option is new with audio_burn 0.0.8. If specified, it causes audio_burn to write a configuration file on program exit containing all of the options specified for that run of audio_burn. Subsequent runs will use these settings automatically so that they no longer need to be specified.
The --cdlength=M option is new with audio_burn 0.0.5. If specified, it causes audio_burn to compute and compare the total length of the tracks specific at startup against a M minute long audio CD. The default value for M is 74. Thus, if you specify files that add up to more than 74 minutes, audio_burn will warn you and exit. One example is to burn longer 80 minute CDs. To do this, use the --cdlength=80 switch.
The --nocleantmp option is new with audio_burn 0.0.2. If specified, it forces audio_burn to NOT remove temporary files created in the temporary directory. These temporary files are usually decoded and possibly normalized .wav files. If for some reason audio_burn could not properly complete after generating these files (which is time consuming), it would remove all of them and exit. With this option specified, you can force it NOT to remove them so that you can remove them later if you need to. Note that the temporary files can be passed directly to audio_burn for burning. This is faster because the files have already been decoded. Just an option...
The --device option specifies the number of device to use. This is an index into the enumerated list of devices returned by 'cdrecord -scanbus'. The first burner detected shows up as device 0. The second burner detected shows up as device 1, etc. cdrecord typically uses the 'scsibus,target,lun' notation to specify a device. audio_burn DOES NOT use this format. Instead it uses device indices (such as '--device=0', or '--device=1'). The first burner displayed by 'cdrecord -scanbus' is used by default in audio_burn, which is the equivalent of passing audio_burn the '--device=0' option.
The --tmpdir option will allow you to specify where audio_burn should put the temporary decoded or resampled .wav files that are ready to be burned. The default is "/tmp/".
The --simulate option will run through a full cd burn in a simulation mode (meaning that the laser will NOT be turned on). This causes audio_burn to set the -dummy flag on cdrecord to make sure no data is actually written to your cd media.
The --dao option is new with audio_burn 0.0.6. If specified, it causes the cd to be burned in session-at-once mode, sometimes called disc-at-once mode.
The --eject option causes the cd to be ejected when the burn is complete.
The --speed option tells cdrecord to burn the cd at the specified speed (i.e. 2 means burn at 2x speed, 4 means burn at 4x speed, etc). The default value should be the fastest possible value that your drive supports.
The --noresample option tells audio_burn to NOT resample wav files that are NOT in 44100Khz stereo format. Normally, audio_burn will resample wav files not in this format, as it's the standard cd audio format. This is particularly useful if you do not have "sox" installed on your system.
The --nonormalize option tells audio_burn NOT to normalize all of the tracks to each other. This is particularly useful if you do no have "normalize" installed on your system.
The --nooggdec option tells audio_burn to NOT use ogg decoding. This means that any .ogg files you try to burn will not work. This is particularly useful if you do not have "oggdec" installed on your system and do not ever want to burn .ogg files.
The --nompgdec option tells audio_burn to NOT use mpg321 for mp3 decoding. This means that any .mp3 files you try to burn will not work. This is particularly useful if you do not have "mpg321" installed on your system and do not ever want to burn .mp3 files.
The --norecord option tells audio_burn to NOT attempt to use cdrecord for cd burning. Needless to say, this means no audio cds can be written. Decoding and normalization will work properly (unless specified otherwise) and the program will exit. This is not particularly useful, other than for testing.
I'm opposed to command line applications. I have not the cognitive capacity to figure out all of the options. Is there some kind of fluffy/easy-to-use Graphical Interface for this program available?
There was one in the works by another developer...it may be here soon.
audio_burn is a simple command line audio burning application.
the goal is to provide all of the functionality needed to
quickly burn a mixed group of .wav, .mp3, and .ogg files
with one convenient application.
The functionality is provided by libaudioburn (which is
distributed with audio_burn).
audio_burn and libaudioburn have been authored and designed by
Neill Miller (email@example.com).
This software is Free Software (GPL).
libaudioburn uses some third-party applications to provide
the functionality that it provides.
Each of the utilities used are Copyright their respective authors.
NOTE: All utilties and code pieces used are Free Software (GPL/LGPL).
The utilities used are as follows:
Some modified code has been used from the following projects:
XMMS - http://www.xmms.org/ (GPL)
mpglib part of mpg123 - http://www.mpg123.de/ (LGPL)
These bits of code are copyright their respective owners, in addition
to myself for the modifications.
Thanks to all of the authors and contributors to all of the above
mentioned utilities and pieces of code.