summaryrefslogtreecommitdiff
path: root/doc/icedax
diff options
context:
space:
mode:
Diffstat (limited to 'doc/icedax')
-rw-r--r--doc/icedax/FAQ296
-rw-r--r--doc/icedax/Frontends34
-rw-r--r--doc/icedax/HOWTOUSE101
-rw-r--r--doc/icedax/NEEDED10
-rw-r--r--doc/icedax/OtherProgs2
-rw-r--r--doc/icedax/README549
-rw-r--r--doc/icedax/THANKS36
-rw-r--r--doc/icedax/TODO41
-rw-r--r--doc/icedax/cdda_links4
-rwxr-xr-xdoc/icedax/tracknames.pl245
-rw-r--r--doc/icedax/tracknames.txt34
11 files changed, 1352 insertions, 0 deletions
diff --git a/doc/icedax/FAQ b/doc/icedax/FAQ
new file mode 100644
index 0000000..815f579
--- /dev/null
+++ b/doc/icedax/FAQ
@@ -0,0 +1,296 @@
+Frequently Asked Questions
+
+Status
+======
+
+
+Q: What is the copyright status of icedax?
+
+A: icedax is software copyrighted by Heiko Eissfeldt and others, and
+ released under the General Public License from the Free Software
+ Foundation (see file GPL).
+
+Compilation
+===========
+
+
+Q: What are the requirements to run icedax?
+
+A: All operating systems that are supported by wodim should also be able to
+ run icedax. Currently DOS and Windows are not covered.
+ Requirements of previous versions of icedax have been cut down for the
+ sake of portability. Features like fork(), realtime scheduling, or shared
+ memory are all optional now. You need Cmake and its dependencies, an
+ ANSI C compiler and a C library to build icedax
+ on a supported operating system. To run icedax, a SCSI transport
+ implementation for the os, a cdrom or cd burner device to read from, and
+ at least say 65K of memory for buffers are needed.
+
+
+Q: Why does it not compile under Linux, although I am using the newest kernel?
+
+A: There have been changes in the generic driver by Douglas Gilbert, that are
+ in its first release not compatible with the scsi library from Joerg
+ Schilling. We are working on this problem...
+ In the meantime better do not use this variant, use the older one instead.
+
+
+Q: Why does it not compile using standard make?
+
+A: Like wodim, icedax uses the cmake system, which requires a
+ sophisticated make program like GNU make.
+ Pure posix make functionality is not enough.
+
+Setting Up (for now Linux only)
+===============================
+
+
+Q: Should I use scsi emulation or the eide driver for my ATAPI cdrom drive?
+
+A: Scsi emulation is preferred, since it enables icedax to use more commands
+ and is often the only way to get special information like track titles with
+ cd-text. The emulation module is called ide-scsi, the eide module is called
+ ide-cd.
+
+
+Q: How can I use my parallel-port-connected cdrom with icedax?
+
+A: Under Linux there is a driver, that makes this device under SCSI
+ emulation available. For more information see the wodim documentation.
+
+
+Q: How do I check, if the current Linux kernel does support generic SCSI?
+
+A: run 'cat /proc/devices | grep "21 sg"' and see, if a line with 'sg' appears.
+ If it does not appear, the current kernel is not able to use the generic_scsi
+ interface. If you have generic SCSI support compiled as a module, see next
+ question, otherwise you need to recompile the kernel and enable generic SCSI.
+ You might try to use the 'cooked_ioctl' interface as a last resort, but then
+ you need to supply a cdrom device with -D (like -D/dev/cdrom). In this case
+ icedax completely relies on the cdda reading methods from the kernel
+ driver, so it might not work (due to unsupported).
+
+
+Q: How do I load the generic SCSI module by hand?
+
+A: run 'insmod sg' and check the result (see above).
+
+
+Q: How do I find the device setting for my drive?
+
+A: Under Linux use the script scan_scsi.Linux. It prints the available devices
+ and their respective device option to be used.
+ Be aware of the fact that the generic device naming may change whenever the
+ devices on the SCSI bus change (present or not present).
+
+General usage (sampling)
+========================
+
+
+Q: How do I record the whole cd, each track in a seperate file?
+
+A: Use the '-B' option. This will automagically create a file for each track.
+
+
+Q: How do I record the whole cd into one file?
+
+A: Just extend the default recording time from one track to a big enough
+ time in seconds to cover the whole cd (like -d99999).
+
+
+Q: How do I record successive tracks (a track range) into seperate files?
+
+A: Use the '-B' option and -t<first tracknumber>+<last track number>.
+
+
+Q: How do I record successive tracks (a track range) into one file?
+
+A: Use -t<first tracknumber>+<last track number>.
+
+
+Q: How do I record different tracks into seperate files with individual file
+ names?
+
+A: Use the supplied script 'readmult'. For usage see the comments at the
+ beginning of the script.
+
+
+Q: How can I get the highest speed out of icedax?
+
+A: See the file README. There is a section about performance and what is
+ influencing it.
+
+
+Q: How can I burn audio cds with icedax and wodim on-the-fly?
+
+A: This has not been tested very well, so caveat emptor. It is possible to
+ use icedax and wodim with pipes, _but_ there are several issues.
+ 1.: The cd drive may become too slow to keep wodim's buffer happy, when
+ a scratch on the audio cd is encountered, and several retries take place.
+ 2.: Currently there is no way to carry individual track information from
+ icedax to wodim. Several information bits are available very late
+ but are needed in advance from wodim.
+ 3.: Some operating systems have limitations in multiple SCSI accesses and
+ other resources (shared memory). icedax and wodim may block each
+ other, or might fight over limited resources.
+ For these reasons it is not recommended to burn on-the-fly with icedax.
+
+Frontends
+=========
+
+
+Q: Which frontends for icedax are available?
+
+A: See the file 'Frontends'. There are command line and graphical frontends.
+
+Album and track titles
+======================
+
+
+Q: Does icedax support titles from cd extra (aka cd plus aka enhanced cd)?
+
+A: In general, yes. In order to get this information, icedax needs to read
+ a data sector from the second session of the cd. This requires multisession
+ support and the capability to read XA sectors. The titles are printed on the
+ screen and written into the inf files, then.
+
+
+Q: Does icedax support titles from cd-text?
+
+A: Newer versions support the most important features of cd-text like titles
+ and creators. Non-supported are currently 16-bit characters, so asian
+ titles etc. are currently not available.
+
+
+Q: Does icedax support CDDB ids?
+
+A: Yes, while it does not make CDDB lookups itself, it supplies an cddb file
+ with the table of contents and the cddb id. For cddb lookups see the
+ perl script tracknames.pl and tracknames.txt. If the titles are known to
+ icedax, it fills the titles itself in the cddb file.
+
+
+Q: What is the MCN?
+
+A: The media catalog number is an unique id for the audio cd release. It is
+ similar to the ISBN for books, but unfortunately it is included only on
+ some audio cds.
+
+
+Q: What is the ISRC?
+
+A: The International Standard Record Code is an unique id for a track. Like the
+ MCN (see above) it is an optional item.
+
+MP3 coding
+==========
+
+
+Q: Does icedax support on-the-fly mp3-coding?
+
+A: Yes. As of version 1.9alpha I integrated the LAME encoding engine as a new
+ output format.
+ To support external encoders, I added two scripts. The trick
+ is to avoid big temporary files. There are three versions (cdda2mp3.file,
+ cdda2mp3.pipe, and cdda2mp3.fifo), the first using files, the second uses
+ pipes, and the last uses a named pipe (also called fifo). The examples
+ use the Fraunhofer encoder 'l3enc', which is a commercial product and has
+ to be purchased seperately. Other encoders should be usable in a similar way.
+
+Conversions
+===========
+
+
+Q: How do I create a file suitable for cd burning?
+
+A: If you are using wodim, you can produce cdr or wav files. To select
+ cdr files, use -Ocdr, to select wav files use -Owav (the default).
+ Audio files that have been recorded with a length not a multiple of the
+ audio sector size 2352 bytes, should be used with wodim's -pad option.
+
+
+Q: How do I convert a wav file into a cdr file (my other cd burning program
+ does not accept wav format)?
+
+A: Use 'dd if=wavfile of=cdrfile conv=swab ibs=44 skip=1 obs=2352'
+
+
+Q: How to convert cdr to wav?
+
+A: Use sox, the sound utility. It supports other formats as well.
+
+Specials
+========
+
+
+Q: Does icedax support the pre-emphasis bit?
+
+A: If the table of contents marks a track as pre-emphasized, the corresponding
+ inf file will have this information, too. That enables a cd burning program
+ to retain the state of the track.
+
+
+Q: Can icedax undo the pre-emphasis effect in the samples?
+
+A: Yes, if the -T option is given (and cd quality is selected),
+ icedax filters the samples with the reverse emphasis on-the-fly. This has
+ been checked with a sine sweep from a pre-emphasized test cd.
+
+
+Q: My cdrom delivers the stereo channels swapped. How can I undo this?
+
+A: Use the -cs option.
+
+
+Q: Does icedax support indices?
+
+A: Yes, but since there are positioning problems with a lot of drives,
+ information might be inaccurate. A start index can be specified with the
+ -i option. To get all indices, use the -v7 option.
+
+
+Q: Can icedax avoid including the pre-gap region at the end of the track?
+
+A: Currently not. This might be added later, but is not easily done.
+
+
+Q: How can I get all information about the cd without writing files?
+
+A: Use the -J option, which switches analysis to the max, and aborts after
+ the report.
+
+
+Q: Can icedax display/save the graphics on my CD+graphics disc?
+
+A: No, this is not planned. A seperate X11 program could do that probably
+ better.
+
+
+Q: Can icedax read the audio portion from my CD-I/Video-CD/DVD mpeg streams?
+
+A: No, these are special formats, which require much more effort.
+
+User support/feedback
+=====================
+
+
+Q: icedax is great. How can I support you to encourage further development?
+
+A: Look into the file NEEDED. Also constructive criticism and feedback is
+ appreciated.
+
+
+Q: I want to port cdrkit (wodim/genisoimage/icedax) to a new platform (like
+ DJGPP,cygwin,os/2). How should I proceed?
+
+A: It would be convenient to have a unix like environment (like cygwin provides)
+ A shell, and a make program would be needed to first create smake (in order
+ to make the makefile system working). Another critical component is autoconf.
+ Once that is running, os dependent interfaces and the SCSI library should be
+ adjusted. For the makefile system and the scsi library please contact Joerg
+ Schilling.
+
+
+Q: icedax sucks. Are there other alternatives available?
+
+A: Yes, for Linux you might try 'cdparanoia' from Monty (see README file).
diff --git a/doc/icedax/Frontends b/doc/icedax/Frontends
new file mode 100644
index 0000000..779af6e
--- /dev/null
+++ b/doc/icedax/Frontends
@@ -0,0 +1,34 @@
+This file lists additional free frontend software to be combined with icedax:
+
+graphical frontends
+===================
+
+BurnIT (http://sunsite.auc.dk/BurnIT/)
+ by Jesper Petersen
+ a Java based frontend for cdrecord and icedax/cdparanoia
+
+Grip (http://www.ling.ed.ac.uk/~oliphant/grip)
+ by Mike Oliphant
+ a GTK+ Frontend for audio extraction and MPEG 1 Layer 3 conversion
+ (incl. CDDB support)
+ requires libcdaudio (also by Mike Oliphant)
+
+Krabber (http://members.tripod.com/~fehlfarben/download.html)
+ by Adrian Schroeter
+ a KDE frontend for cdparanoia and MPEG 1 Layer 3 conversion
+ (incl. CDDB support)
+
+script frontends
+================
+
+Cdr Create/Duplicate/Rip (ftp://ftp.burdell.org/pub/)
+ by David Cantrell
+ a ncurses based Perl script for CDDA to MPEG 1 Layer 3 conversion
+ (incl. CDDB support)
+ requires xmcd
+
+Ripenc rip encoder (http://www.asde.com/~mjparme/index.htm)
+ by Michael J. Parmeley
+ a shell script frontend for CDDA extraction and MPEG 1 Layer 3
+ conversion
+ (incl. CDDB support)
diff --git a/doc/icedax/HOWTOUSE b/doc/icedax/HOWTOUSE
new file mode 100644
index 0000000..1ab9d77
--- /dev/null
+++ b/doc/icedax/HOWTOUSE
@@ -0,0 +1,101 @@
+Icedax User guide
+=================
+
+NOTE: expressions in angle braces have to be substituted with
+ the corresponding numerical values.
+ For example: <delay in seconds> has to be substituted
+ with the numerical value to be used.
+
+Common tasks
+============
+NOTE: The examples used here depend on proper default settings for interface
+method and devices as specified in the Makefile. They can be overriden with
+command line parameters, but here I choose to focus on simple examples.
+
+Copy complete audio CDs
+
+1. Copy an audio CD into wav files one per track.
+
+ icedax -B
+
+ will produce the sample wav files (one per track)
+ audio_01.wav
+ audio_02.wav
+ ...
+
+ and the corresponding description files
+ audio_01.inf
+ audio_02.inf
+ ...
+
+2. Same as above but include MD-5 type signatures
+
+ icedax -B -M<length>
+
+
+3. Same as above but use other file name ('party_cd.wav')
+
+ icedax -B -M<length> party_cd.wav
+
+
+Copy single tracks
+
+1. Copy one track (eg track 6) into a wav file.
+
+ icedax -t6
+
+ will produce a wav file including track 6
+
+ audio.wav
+
+ and
+
+ audio.inf
+
+
+Copy parts of tracks
+
+1. Copy from given start time to end of track
+
+ icedax -t6 -o<delay in 1/75 seconds>
+
+ will record track 6 starting at track time <delay>/75 seconds
+ from track beginning upto the end of track.
+
+2. Copy from given start time and record for a given time
+
+ icedax -t6 -o<delay in 1/75 seconds> -d<time to record in seconds>
+
+ will record track 6 starting at track time <delay>/75 seconds
+ from track beginning for <time to record in seconds> seconds.
+
+
+
+Copy tracks into a pipe
+
+ icedax -t6 -Oraw - | audio_compressor
+
+ will feed the audio samples (in big endian format) of track 6
+ into a secondary program audio_compressor.
+(See also script cdda2mp3(.new) for a suggestion, how to process all tracks of
+an audio cd with a MPEG-Layer3 encoder (not included here).)
+
+
+Miscellaneous
+
+1. Use icedax as a cd player
+
+ icedax -eN -t6
+
+ will copy the audio samples into a sound card (if sound card support
+ is compiled in) and will not write any file.
+
+
+
+2. Get complete information on the cd
+
+ icedax -v63 -Nd0.01
+
+ will try to find out a media catalog number and track related
+ information (ISRCs) in addition to indices. For CD-Extra discs
+ limited support exists to retrieve additional information.
diff --git a/doc/icedax/NEEDED b/doc/icedax/NEEDED
new file mode 100644
index 0000000..361cc29
--- /dev/null
+++ b/doc/icedax/NEEDED
@@ -0,0 +1,10 @@
+Here I list some things, which would be very helpful for the further
+development of cdrtools/icedax, but I currently have no access to.
+User support for the acquisition of these items is appreciated :-)
+
+Access to all 'coloured books' from Philips/Sony
+(Red/Yellow/Green/Orange/White/Blue,...).
+
+CD-extra discs with a lot of features/entries in the data sectors (SUB_INFO*).
+
+CD-text discs with a lot of features/entries.
diff --git a/doc/icedax/OtherProgs b/doc/icedax/OtherProgs
new file mode 100644
index 0000000..8c6fa41
--- /dev/null
+++ b/doc/icedax/OtherProgs
@@ -0,0 +1,2 @@
+dagrab works with ioctls, includes cddb lookups
+cdparanoia has sophisticated jitter correction
diff --git a/doc/icedax/README b/doc/icedax/README
new file mode 100644
index 0000000..4b65532
--- /dev/null
+++ b/doc/icedax/README
@@ -0,0 +1,549 @@
+Hi dear cdrom drive users,
+
+This README describes hardware related matters as well as the installation of
+icedax, the sampling utility.
+
+This icedax utility comes with the Cdrkit project. Cdrkit is a spinoff from
+cdrtools. However, the cdrtools developers are not involved in the
+development of this spinoff and therefore shall not be made responsible for
+any problem caused by it. Please do not try to get support for this program by
+contacting the original authors.
+
+Requirements
+============
+
+For SCSI cdroms and CD-writers, as well as SCSI-emulated ATAPIS and parallel
+ port drives
+1s. kernel support for SCSI, the host adapter, SCSI cdroms and the
+ generic SCSI interface (if under Linux). You need to have the proper device
+ descriptors (get them under Linux with the MAKEDEV script from /dev).
+
+For ATAPI cdroms under Linux
+1a. kernel support for the ATAPI cdrom driver or alternatively ide-scsi
+ emulation. You need to have the proper device descriptors (get them
+ with the MAKEDEV script from /dev).
+
+For parallel port cdroms under Linux
+ With newer kernels icedax uses the same parallel port access
+ as does wodim. Please refer additionally to the wodim documentation.
+ There are generally two drivers to access the cdrom through the parallel
+ port: the ATAPI cd emulation (called pcd), and the SCSI device emulation
+ (called pg). The pcd driver does NOT support cdda reading (kernel 2.2.12),
+ while the pg driver has no restriction. So you have to use pg for that.
+
+
+For cdrom drives with proprietary busses under Linux
+1p. Please check the CDROM-HOWTO for features of the respective
+ drivers. The sbpcd driver is very demanding due to the lack of
+ interrupts.
+
+optionally currently for Solaris and all platforms running 4fronts
+OpenSoundSystems:
+2. kernel sound card support.
+
+
+Recommendations for higher throughput on Linux SCSI systems
+===========================================================
+
+Higher throughput will give better chances for non-interrupted
+sampling. This should avoid typical interruption errors (cracklings
+at buffer boundaries).
+
+1. Increase SG_BIG_BUFF to (128*1024) in /usr/src/linux/include/scsi/sg.h
+ (and recompile your kernel and boot it :-).
+NOTE: Some kernel configurations will lead to 'out of kernel memory' errors.
+ If you encounter this message regularly, better leave SG_BIG_BUFF at
+ 32768.
+
+1a.There is a patch for multiple sg device access under Linux. It uses
+ up to 128 K buffer for each device. See here:
+ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha/sg*
+
+2. Ensure your harddisk has write cache enabled (For SCSI hard disks I
+ switched it on with the scsiinfo program from tsx-11.mit.edu), but
+ enable this only if it is correctly working ;-)
+
+This has boosted the throughput of icedax considerably.
+
+
+Supported interfaces
+====================
+
+Non SCSI drives (Linux only):
+ ATAPI:
+ The greatest group nowadays are ATAPI (EIDE) cdrom drives.
+ Support is only limited by the drive. Kernel and icedax
+ are ready for them (unless the drive uses a very uncommon method).
+
+ Newer kernels can do an scsi emulation for ATAPI devices.
+ This interface is supported.
+
+ Parallel port interface:
+ There is a driver that maps the parallel port driver to an generic
+ scsi like driver. Should work with newer kernels.
+
+ Proprietary interfaces:
+ Older drives with proprietary interfaces are supported only
+ if the kernel driver allows reading cdda audio data via ioctl().
+ Currently only Eberhard Moenkeberg's sbpcd and Corey Minyard's
+ cdu31a driver do allow this. The sbpcd driver of kernels earlier than
+ 2.0.30 and 2.1.57 needs a patch before satisfying output can be
+ obtained (see README.sbpcd).
+
+SCSI drives:
+ For these drives the SCSI library from Joerg Schilling is used.
+ Thus we need kernel support (compiled-in or as a module) for it.
+ The generic SCSI interface allows multi sector transfers (max. 128 KB)
+ which lowers cpu load considerably.
+
+ ** NEW **
+ I added a script 'scsi_scan.linux' to find the generic devices for all
+ SCSI CDROM- or WORM-type drives.
+
+Configuration
+=============
+
+There are some adjustable parameters in the beginning of the Makefile
+(which is called local.cnf.in) . They describe default settings of icedax:
+
+INTERFACE: How the cdrom is accessed. Choose one method for INTERFACE.
+DEVICE: The default cdrom device is set in DEF_DEVICE.
+
+SOUND FILE FORMAT DEFAULTS:
+The default format can be 'wav', 'sun pcm au', 'aiff', 'aifc', or
+'raw bigendian samples'.
+It is determined by the Makefile variable DEF_TYPE.
+
+AUDIO FILENAME:
+The default filename is given by DEF_FILE. Unless 'cdr' format is being used,
+this name is appended with '.wav', '.au', '.aiff' or '.aifc'.
+
+RATE: the default rate is given by setting DEF_UNDERSAMPLING to the divisor
+for the audio cd sampling frequency (44100 Hz).
+
+ RATE = 44100 Hz / DEF_UNDERSAMPLING
+
+DEF_UNDERSAMPLING can be any multiple of a half greater than one half.
+
+DYNAMIC: The default dynamic range of one sample in one channel is defined in
+DEF_BITS which can be one of 8, 12 or 16.
+
+CHANNELS: set DEF_CHANNELS to 1 for mono and 2 for stereo.
+
+RECORDING TIME: set DEF_TIME to the amount of seconds to record (or 0 for
+the whole track).
+
+SOUND DEVICE: set SOUND_DEVICE to the device name of your sound card.
+ The line containing HAVESOUND should be
+ uncommented also, if you want the option to hear
+ what you record.
+
+All of those values can be overridden by command line parameters.
+
+
+Compiling icedax
+==================
+
+Adjust the Makefile (named local.cnf.in) for your cdrom interface and
+device setting first.
+
+Then type
+ make
+and as root
+ make install
+
+This will compile icedax and copy the binary to /usr/local/bin and the
+man page to /usr/local/man/man1 (defaults).
+
+
+Privileges
+==========
+
+You can setgid the binary, if you want to allow access to a CDROM's
+scsi_generic interface for icedax but not for arbitrary programs.
+Giving away permissions to send SCSI commands directly to a device is
+not something you want to do lightly on a multi-user server system.
+The setgid privileges will only be used to access the scsi generic
+interface; for cooked_ioctl, the setgid privileges are not necessary
+and they are simply dropped.
+
+Previous versions of icedax had to be setuid to root. Such privileges
+are no longer necessary and will be dropped if present.
+
+Select device
+=============
+
+By default icedax uses the generic SCSI interface and a device tripel for
+SCSI bus, id, and lun.
+This setting can be overridden by specifying '-Iinterface' and
+'-D cdromdevice'.
+The following command line example uses the generic_scsi interface and the
+SCSI device with bus 1, id 2 and lun 3:
+icedax -Igeneric_scsi -D1,2,3
+
+The shell script 'scan_scsi.linux' will report the generic devices for
+all SCSI cdrom drives.
+
+If you need to use another interface, check the device setting also as they
+need to fit together.
+Here is an example for an ATAPI cdrom using the cooked_ioctl interface and
+the cdrom device /dev/hdb:
+icedax -Icooked_ioctl -D/dev/hdb
+
+
+Features
+========
+
+I added an optional on-the-fly correction for pre-emphasized samples
+(available for original CDDA format only).
+If the -T option is given, the samples will be filtered before they
+are written to disk. The samples then have a linear frequency response again.
+
+When recording in mono, both channels are summed with halved amplitude.
+
+Undersampling is done by summing several samples with reduced amplitude to
+prevent overflows. This damps higher freqencies as well. Compared to
+exact resampling icedax does not use a very sophisticated (expensive)
+filter algorithm. It currently uses quadratic interpolation for
+noninteger subsampling factors.
+
+Sampling can be aborted by pressing the Interrupt-Key (eg control-C)
+at anytime. Unless streaming to a pipe, the wav header will be updated
+to contain the actual length of the sample. The same will happen, if
+disk space becomes exhausted.
+
+Fast options
+============
+
+The options can also influence the performance greatly.
+The fastest case is given when the samples don't need to be changed from
+their original form or analysed, that is the output format uses the same
+parameters as the drive: 16-bit samples, stereo at 44100 Hz sample rate
+AND with the same endianess (-Cbig and -Ebig, or -Clittle and -Elittle).
+To be sure all parameters can be given explicitly on the command line.
+This avoids an analysis of icedax.
+
+icedax -P0 -q -S<maximum speed>
+run as root will read with maximum speed and copy its output into the
+wav file, taking advantage of realtime scheduling as well.
+
+For throughput testing the additional option -N can be used. Write
+operations will be suppressed then.
+
+Options that slow down initially
+================================
+-v<level> needs some time for analysis before the actual sampling starts
+
+Options that slow down during sampling
+======================================
+-P1 causes overlap reading, the slowdown depends on the amount of jitter
+-e synchronous output to a sound card slows down to onefold speed
+
+Options that need more cpu power
+================================
+-p<rate> resamples the output send to the sound card
+-M<count> calculates checksums
+-T on-the-fly preemphasis filtering
+-F checking for extremal samples
+-G checking for differences in both channels
+-C<endianess> if a conversion is required (see below)
+-E<endianess> if a conversion is required (see below)
+-Oaudiotype if a conversion is required (see below)
+-c 1
+-c s
+-m
+-b 8
+-b 12
+-a <not 1>
+-r <not 44100>
+
+When are one or two endianess (byte order) conversions required?
+================================================================
+There are three stages where the endianess matters:
+1.) on the input side the cd drive can deliver in two flavors (called F1).
+ When the flavor is unknown, icedax needs to find out the endianess.
+ A simple voting method is used. Successive samples are compared in both
+ flavors and the flavor with the statistically smaller changes is taken.
+ The flavor can be defined with the -C option, avoiding the analysis.
+2.) For any calculation with samples (and echoing to the sound card),
+ the samples are needed in the byte order of the machine (in this case
+ I set 'need_host_order' to yes). The flavor of the machine endianess
+ is called F2.
+3.) Finally, there are two flavors of output sound formats (called F3):
+ wav uses little endian samples
+ cdr and au use big endian samples
+ If the samples currently in memory have the wrong endianess a
+ (possibly second) conversion is required.
+
+This gives the following table:
+F1 F2 need_host_order F3 conversions
+little little no little 0
+little little yes little 0
+little little no big 1
+little little yes big 1
+little big no little 0
+little big yes little 2
+little big no big 1
+little big yes big 1
+big little no little 1
+big little yes little 1
+big little no big 0
+big little yes big 2
+big big no little 1
+big big yes little 1
+big big no big 0
+big big yes big 0
+
+
+Known problems
+==============
+
+1. Sound quality
+
+Audible errors caused by hesitations:
+
+When recording the same audio track twice, recordings can slightly differ.
+Furthermore depending on the firmware in the cdrom drive, positioning
+errors can be so severe that they cannot be easily corrected by icedax.
+This will unfortunately lead to audible errors.
+
+In this case some overlap or even underlap between successive portions
+is introduced from the cdrom drive.
+Here is this case demonstrated graphically:
+
+Sec 1 ... Sec n
+|----------------------| first read delivered
+ |------------------------| second read wanted
+ |------------------------| second read delivered
+ |-| extra bogus bytes
+ |-| missing bytes
+
+This is due to synchronisation problems between sectors inside the cdrom
+drive. When the drive has been forced to wait, these problems arise.
+
+Audio cds are lacking sector headers, so it's a difficult job to do the
+positioning right (in the firmware). The frequency of these errors is
+reduced when the reading process can continue undisturbed for longer periods.
+So, a high throughput is essential.
+
+You may want to fine-tune your update daemon to use shorter intervals
+(see 'man 8 update'). Shorter intervals are better because the update
+interruptions are shorter when not so much write requests can pile up.
+
+The plextor 4plexplus drive (PX-4XCE) and newer models, newer pioneer
+models as well as CD-writers with large buffers don't suffer from this
+errors. Here the default is to switch off overlap reading.
+
+If you cannot get good samples from your drives you might consider an
+alternative program. Monty's cdparanoia program goes to great lengths
+in order to seperate the good bits from the bad ones.
+
+2. The index scanner has caused timeouts on my toshiba 3401 due to fast
+ random accesses.
+
+3. Retrieval of media catalog numbers and International Standard Recording
+ Codes may fail due to firmware bugs.
+
+Audio Format Conversion
+=======================
+Currently wav, sun (au-pcm), Apple/SGI aiff/aifc, and raw formats are supported.
+
+I try to write correct wav files (little endian samples), but some
+cd-writers might swap them, which would result in sort of white noise
+instead of the original sounds. icedax has an endianness detector
+for these cases, but as for all automatics, it might fail on bizarre samples.
+
+Hint: icedax can be forced to use a given input endianness with the
+-C option (arguments are 'little', 'big' or 'guess').
+
+The sun format is a pcm variant, and uses big endian samples.
+The other more common sun format with logarithmically scaled samples (au)
+is not supported but can be obtained from sox's conversion.
+
+The raw format is like the sun format except it has no header. I
+changed the endianness to big endian samples in order to comply
+with popular cd burning software like the wodim program.
+
+The sound converter 'sox' can be used to obtain other sound formats.
+(Note however, that the current sox player and a newer sound driver do not
+harmonize well, use the player from the wavplay package instead (available
+at sunsite)).
+
+
+Feedback
+========
+
+Tested patches, any hardware information regarding drives as well as success/
+failure reports are always welcome at heiko@colossus.escape.de.
+
+
+known cdda capable drives
+=========================
+Check out these web pages for uptodate information:
+
+<http://www.tardis.ed.ac.uk/~psyche/pc/cdrom/CDDA.html>
+
+and
+
+<http://www.anime.net/~goemon/linux-cd/cdda-list.html>
+
+From a news posting from Björn Wiberg
+
+> The following table was generated using the CDROM.CFG file from Nero
+> v3.0.4.2.
+>
+> It shows different CD-ROM models and what speeds they can do DAE at. I
+> guess the values are "safe ones"; i.e. the speeds at which each drive
+> can perform DAE reliably.
+>
+> A value of "0x" means the drive doesn't support DAE.
+>
+> For your convenience, the maximum data transfer speed of the drives
+> (for reading conventional files and data from the CD-ROM) are also
+> included.
+>
+> Hopefully, this will help some of you who are looking for a good
+> CD-ROM drive to choose a model which seems fast enough both for data
+> and DAE.
+>
+> The models which support DAE:
+> (Sorted by DAE speed, data speed and model)
+>
+> CD-ROM model DAE Data Interface
+> ---------------------------------------------------------
+> PLEXTOR CD-ROM PX-32TS 16x 16x SCSI
+> TEAC CD-524E 14x 24x IDE
+> CREATIVE CD620E 12x 5x IDE
+> MITSUMI CD-ROM FX320S !B 12x 32x IDE
+> TEAC CD-532E 12x 32x IDE
+> HITACHI CDR-8335 12x 24x IDE
+> PIONEER CD-ROM DR-A02S 12x 24x IDE
+> TEAC CD-ROM CD-532S 12x 14x SCSI
+> PIONEER CD-ROM DR-A12X 12x 12x IDE
+> PIONEER CD-ROM DR-U06S 12x 12x SCSI
+> PLEXTOR CD-ROM PX-20TS 12x 12x SCSI
+> MITSUMI CD-ROM FX120T !B 11x 12x IDE
+> PIONEER CD-ROM DR-A04S 11x 32x IDE
+> PIONEER CD-ROM DR-U12X 10x 12x SCSI
+> HITACHI CDR-8330 9x 24x IDE
+> SONY CD-ROM CDU711 9x 14x IDE
+> MATSHITA CD-ROM CR-584 9x 12x IDE
+> MATSHITA CD-ROM CR-586 8x 32x IDE
+> CDM-T531 Ver1.041 8x 18x IDE
+> TEAC CD-516E 8x 16x IDE
+> TOSHIBA CD-ROM XM-6201TA 8x 16x SCSI
+> PLEXTOR CD-ROM PX-12CS 8x 12x SCSI
+> PLEXTOR CD-ROM PX-12TS 8x 12x SCSI
+> PIONEER CD-ROM DR-U10X 8x 10x SCSI
+> SONY CD-ROM CDU611 8x 10x IDE
+> FUNAI E285X 8x 8x IDE
+> MITSUMI CD-ROM FX810T4!B 8x 8x IDE
+> SONY CD-ROM CDU511 8x 8x IDE
+> SONY CD-ROM CDU571-Q 8x 8x IDE
+> TEAC CD-C68E 8x 8x IDE
+> MITSUMI CD-ROM FX400E !B 8x 4x IDE
+> HITACHI CDR-8130 7x 16x IDE
+> MATSHITA CD-ROM CR-585 6x 24x IDE
+> CREATIVE CD2422E MC102 6x 12x IDE
+> MATSHITA CD-ROM CR-508 6x 12x SCSI
+> IBM PD-1 LF-1195 6x 6x IDE
+> PLEXTOR CD-ROM PX-6XCS 6x 6x SCSI
+> LITEON CD-ROM LTN301 5x 32x IDE
+> LITEON CD-ROM LTN242F 5x 24x IDE
+> HITACHI CDR-7930 5x 8x IDE
+> ASUS CD-S340 4x 34x IDE
+> E-IDE CD-ROM 32X/AKU 4x 32x IDE
+> ATAPI CDROM 4x 24x IDE
+> LITEON CD-ROM LTN244 4x 24x IDE
+> PHILIPS PCA248CD 4x 24x IDE
+> TEAC CD-524EA 4x 24x IDE
+> LITEON CD-ROM LTN202 4x 21x IDE
+> ATAPI CD-ROM DRIVE-24X 4x 20x IDE
+> CREATIVE CD2423E NC101 4x 20x IDE
+> SAMSUNG CD-ROM SCR-2431 4x 20x IDE
+> TAE IL CD-ROM CDD-7240J 4x 20x IDE
+> TEAC CD-220E 4x 20x IDE
+> CREATIVE CD1620E SL970404 4x 16x IDE
+> LITEON CD-ROM LTN262 4x 16x IDE
+> TEAC CD-ROM CD-516S 4x 16x SCSI
+> ATAPI CD-ROM DRIVE 4x 15x IDE
+> BCD 16XA CD-ROM 4x 10x IDE
+> MATSHITA CD-ROM CR-506 4x 8x SCSI
+> SONY CD-ROM CDU311 4x 8x IDE
+> MATSHITA CD-ROM CR-504-J 4x 4x SCSI
+> MITSBISH CDRW226 4x 4x SCSI
+> SONY CD-ROM CDU625-S 4x 4x SCSI
+> SONY CD-ROM CDU-76S 4x 4x SCSI
+> SONY CD-ROM CDU77E 4x 4x IDE
+> PLEXTOR CD-ROM PX-4XCE 4x 4x SCSI
+> SONY CD-ROM CDU55E 4x 2x IDE
+> PIONEER CD-ROM DR-U24X 3x 24x SCSI
+> LITEON CD-ROM LTN204 3x 21x IDE
+> PIONEER CD-ROM DR-A01S 3x 20x IDE
+> PIONEER CD-ROM DR-A24X 3x 20x IDE
+> FUNAI E295X 3x 16x IDE
+> PIONEER CD-ROM DR-U03S 3x 12x SCSI
+> BTC 24X CD-ROM SLL24 3x 10x IDE
+> PLEXTOR CD-ROM PX-8XCS 3x 4x SCSI
+> CyberDrv CD-ROM TW240S 3x 3x SCSI
+> COMPAQ CRD-8320B 2x 32x IDE
+> LG CD-ROM CRD-8320B 2x 32x IDE
+> TOSHIBA CD-ROM XM-6202B 2x 32x IDE
+> CREATIVE DVD-ROM DVD2240E 2x 24x IDE
+> TOSHIBA CD-ROM XM-6102D 2x 24x IDE
+> BTC 16X CD-ROM SLL16 1x 10x IDE
+> NEC CD-ROM DRIVE:282 2x 8x IDE
+> HITACHI GD-2000 2x 4x IDE
+> MATSHITA CD-ROM CR-581 2x 4x IDE
+> NEC CD-ROM DRIVE:222 2x 4x SCSI
+> MATSHITA CD-ROM CR-8004 2x 2x SCSI
+> GoldStar CD-ROM CRD-8240B 1x 24x IDE
+> TOSHIBA CD-ROM XM-6102B 1x 24x IDE
+> CyberDrv IDE CD-ROM 120D 1x 12x IDE
+> I DE CD-ROM TW120D 1x 12x IDE
+> NEC CD-ROM DRIVE:464 1x 12x SCSI
+> TORiSAN CD-ROM CDR_U112 1x 12x IDE
+> TOSHIBA CD-ROM XM-5701TA 1x 12x SCSI
+> TOSHIBA CD-ROM XM-5702B 1x 12x IDE
+> CyberDrv SCSI CD-ROM 120S 1x 10x IDE
+> NEC CD-ROM DRIVE:463 1x 10x SCSI
+> COMPAQ DVD-ROM SD-M1002 1x 8x IDE
+> MATSHITA CD-ROM CR-583 1x 8x IDE
+> NEC CD-ROM DRIVE:462 1x 8x SCSI
+> TEAC CD-58E 1x 8x IDE
+> OPTICS_S 8622 SCSI 1x 8x SCSI
+> TOSHIBA CD-ROM XM-5602B 1x 8x IDE
+> TOSHIBA CD-ROM XM-3801TA 1x 7x SCSI
+> NEC CD-ROM DRIVE:461 1x 6x SCSI
+> IBM CDRM00203 1x 6x SCSI
+> TEAC CD-46E 1x 6x IDE
+> TEAC CD-56E 1x 6x IDE
+> TEAC CD-ROM CD-56S 1x 6x SCSI
+> TOSHIBA CD-ROM XM-5502TA 1x 6x IDE
+> TOSHIBA CD-ROM XM-3701TA 1x 6x SCSI
+> NEC CD-ROM DRIVE:502 1x 4x SCSI
+> TOSHIBA CD-ROM XM-1502BN 1x 4x IDE
+> TOSHIBA CD-ROM XM-5302TA 1x 4x IDE
+> TOSHIBA CD-ROM XM-5401TA 1x 4x SCSI
+> TOSHIBA CD-ROM XM-5402TA 1x 4x IDE
+> TOSHIBA CD-ROM XM-1502B 1x 4x IDE
+> TOSHIBA CD-ROM XM-3501TA 1x 4x SCSI
+> TOSHIBA CD-ROM XM-5301TA 1x 4x SCSI
+> TOSHIBA CD-ROM XM-5201TA 1x 2x SCSI
+
+known cdda uncapable drives
+===========================
+
+Pioneer DRM-602X, DRM-604X
+Teac CD-55A (panasonic bus)
+Philips CM206/10 serial RS-422
+ CM207
+ CM226/10 serial RS-422
+ CDD462/01 serial RS-422
+Orchid CDS3110
+
+Additions to the tables above are welcome.
+
+and now catch your sounds,
+Heiko heiko@colossus.escape.de (Original author)
+Changes for the Cdrkit project by Christian Fromme <kaner@strace.org>, Eduard Bloch
diff --git a/doc/icedax/THANKS b/doc/icedax/THANKS
new file mode 100644
index 0000000..801f7df
--- /dev/null
+++ b/doc/icedax/THANKS
@@ -0,0 +1,36 @@
+Cdda2wav development has been funded by
+
+Project MODE
+http://www.mode.net/
+
+and
+
+Fraunhofer Institut für integrierte Schaltungen (FhG-IIS)
+http://www.iis.fhg.de/
+
+Code for extraction of ISRC and MCN codes as well as MD5 signatures
+has been made possible by their contributions, thanks very much.
+
+Thanks to Rik Swusten of Plextor Europe for supplying a cd burner
+for development.
+
+Thanks to Ricoh for supplying a cd burner for development.
+
+Thanks to Sanyo for supplying a Burn-Proof cd burner with documentaion
+for development.
+
+More thanks goto
+Joerg Schilling (helped a lot to integrate his SCSI library)
+Aaron Newsome (which created an account on his machine for me to do testing)
+Christopher Montgomery (aka Monty, for his work on jitter correction)
+Zygo Blaxell (a lot of code improvements)
+Thomas Niederreiter (extensions for cd-writers)
+Piercarlo Grandi (rewrote of cdda2wav's man page)
+Stewart Addison (suggestions and a fine web page on cdda)
+Leland Olds (the cdda2wav debian maintainer)
+Francesco Chemolli (getopt_long patches)
+
+Thanks to all testers and finally Jim McLaughlin for supplying
+the first cdda-reader source code (that got me started).
+
+Heiko Eißfeldt
diff --git a/doc/icedax/TODO b/doc/icedax/TODO
new file mode 100644
index 0000000..5fb1fdd
--- /dev/null
+++ b/doc/icedax/TODO
@@ -0,0 +1,41 @@
+improved Indexscan without playing sectors
+use C2 pointers to reduce speed
+Solaris handling with volumed
+SunOS/Solaris and 512 byte sectors??
+setuid.c group ids on WinXP??
+
+stabilization:
+check all exit codes (exit with error if sync failed)
+new ioctl support for Solaris, FreeBSD-3.x, FreeBSD-4.x
+find cause of ringbuffer assertions (resource temporarily unavailable)
+
+new features:
+enable hidden (audio) track recording
+thread support
+more sound support
+CDIndex, CDDB lookups
+prepare for MP3 inclusion (lame)
+cut off silence at start and end of track
+interpolation for massive read errors
+
+internal:
+get cache setting/set cache to zero/reset cache size at the end...
+maybe add something for pioneer cd drives (spin up problems)
+develop a new transport to read cdda sectors with complete subchannels
+use index0 optionally to cut off the pregap portion
+detect type of hidden track (data/audio)
+implement capability to add a global shift
+enhance cd text:
+ increase buffer size
+ add tab semantics
+ support 16-bit characters
+ try fallback read text info from program area
+
+structural:
+plug-in infrastructure
+
+BeOS: cddbp support, sound support
+QNX: realtime support RR-scheduler message, sound support in lconfig Makefiles
+OS/2: sound support
+cygwin: sound support
+
diff --git a/doc/icedax/cdda_links b/doc/icedax/cdda_links
new file mode 100644
index 0000000..0371896
--- /dev/null
+++ b/doc/icedax/cdda_links
@@ -0,0 +1,4 @@
+http://www.escape.de/icedax/icedax.html
+http://www.geocities.com/SiliconValley/Bay/6893/multi.htm
+http://www.mp3.com/cdrom.html
+http://www.emi.u-bordeaux.fr/~morel/
diff --git a/doc/icedax/tracknames.pl b/doc/icedax/tracknames.pl
new file mode 100755
index 0000000..09f0fcf
--- /dev/null
+++ b/doc/icedax/tracknames.pl
@@ -0,0 +1,245 @@
+#!/usr/local/bin/perl
+# A quick perl hack to get rename files pulled in with icedax.
+# by billo@billo.com
+#
+use Socket;
+use IO::Handle;
+use Env qw(USER);
+use strict;
+no strict 'subs'; # can't get it to stop complaining about SOCK
+
+my $state = "header";
+
+my $global_album = "Artist / Title";
+my $global_title = "Title";
+my $global_artist = "Artist";
+my @global_tracks = ("") x 100;
+my $global_ntracks = 0;
+
+my @track_offsets = ();
+my $disc_id = 0;
+my $disc_time = 0;
+
+
+if ($#ARGV != 1)
+{
+ print "usage: cddbhack.pl CDDBHOST PORT < audio.cddb\n";
+ exit 0;
+}
+
+while (<STDIN>)
+{
+ if ($state eq "header")
+ {
+ if (/#\s[\s]*(\d[\d]*)$/)
+ {
+ push @track_offsets, $1;
+ } elsif (/#\s[\s]*Disc length:\s(\d[\d]*)/) {
+ $disc_time = $1;
+ $state = "discid";
+ }
+ } elsif ($state eq "discid")
+ {
+ if (/DISCID=(\w[\w]*)/)
+ {
+ $disc_id = $1;
+ last;
+ }
+ }
+}
+
+my $query_string = "cddb query $disc_id " . ($#track_offsets + 1);
+foreach my $offset (@track_offsets)
+{
+ $query_string .= " $offset";
+}
+$query_string .= " $disc_time";
+
+print "$query_string\n";
+
+my $host = $ARGV[0];
+my $port = $ARGV[1];
+
+my $iaddr = inet_aton($host);
+my $paddr = sockaddr_in($port, $iaddr);
+
+
+socket(SOCK, AF_INET, SOCK_STREAM, getprotobyname('tcp')) or die "socket: $!";
+
+connect(SOCK, $paddr) or die "connect: $!";
+
+autoflush SOCK 1;
+
+print "Connected.\n";
+
+my ($status, $result) = &resp(\*SOCK);
+
+if (int($status) != 201)
+{
+ print "Unexpected status.\n";
+ close(\*SOCK);
+ exit 0;
+}
+
+$host = `hostname`;
+
+$host =~ s/\n//g;
+
+&cmd(\*SOCK, "cddb hello $USER $host billo-scan 0.1");
+($status, $result) = &resp(\*SOCK);
+if (int($status) != 200)
+{
+ print "Unexpected status.\n";
+ close(\*SOCK);
+ exit 0;
+}
+
+&cmd(\*SOCK, "$query_string");
+($status, $result) = &resp(\*SOCK);
+if (int($status) != 200)
+{
+ print "Unexpected status.\n";
+ close(\*SOCK);
+ exit 0;
+}
+
+my ($ignore, $cat, $id, @rest) = split (" ", $result);
+
+
+
+my $read_string = "cddb read $cat $id";
+
+&cmd(\*SOCK, $read_string);
+&resp(\*SOCK);
+while (<SOCK>)
+{
+ if (/^\./)
+ {
+ # print $_;
+ # print "last line\n";
+ last;
+ } else {
+ &process($_);
+ # print $_;
+ }
+}
+
+&cmd(\*SOCK, "quit");
+&resp(\*SOCK);
+
+close(\*SOCK);
+
+&rename;
+
+exit 0;
+
+sub cmd
+{
+ my ($S, $cmd) = @_;
+
+ print "$cmd\n";
+ print $S "$cmd\r\n";
+}
+
+sub resp
+{
+ my ($S) = @_;
+ my ($code, $message);
+ while (<$S>)
+ {
+ if (/^(\d[\d]*)\s.*/)
+ {
+ # print "\n$1\n";
+ print "$_\n";
+ $code = $1;
+ $message = $_;
+ last;
+ }
+ sleep(1);
+ }
+ my @return_array = ($code, $message);
+ return @return_array;
+}
+
+sub process
+{
+ my ($line) = @_;
+
+ $_ = $line;
+ if (/^DTITLE=(.*)$/)
+ {
+ $global_album = $1;
+ $_ = $global_album;
+ if (m/([^\/][^\/]*)\s\/\s([^\/][^\/\n\r]*)/)
+ {
+ $global_artist = $1;
+ $global_title = $2;
+ }
+ print "$global_album\n";
+ print "$global_title\n";
+ print "$global_artist\n";
+ return;
+ }
+ if (/^TTITLE(\d[\d]*)=(.*)$/)
+ {
+ my $track = $1 + 1;
+ if ($track > $global_ntracks)
+ {
+ $global_ntracks = $track;
+ }
+ $global_tracks[$track] = sprintf ("%s-%02d-%s", $global_title,
+ $track, $2);
+ $global_tracks[$track] =~ s/\s$//g;
+ $global_tracks[$track] =~ s/'//g;
+ $global_tracks[$track] =~ s/\s/_/g;
+ $global_tracks[$track] =~ s/:/_/g;
+ $global_tracks[$track] =~ s/\?//g;
+ $global_tracks[$track] =~ s/\*//g;
+ $global_tracks[$track] =~ s/\\/_/g;
+ $global_tracks[$track] =~ s/\s/_/g;
+ $global_tracks[$track] =~ s/\//_/g;
+ print "Track match " . $global_tracks[$track] . "\n";
+ }
+}
+
+sub rename
+{
+ my $i = 1;
+
+ for ($i = 1; $i <= $global_ntracks; $i++)
+ {
+ my $track_name = $global_tracks[$i];
+ if ($track_name ne "")
+ {
+ my $file_name = sprintf("audio_%02d.wav", $i);
+ my $new_file_name = sprintf("$track_name.wav", $i);
+
+ my $mv_cmd = "mv '" . $file_name . "' '"
+ . $new_file_name . "'";
+ print "$mv_cmd\n";
+ `echo $mv_cmd >> rename.sh`;
+ }
+ }
+}
+
+sub unrename
+{
+ my $i = 1;
+
+ for ($i = 1; $i <= $global_ntracks; $i++)
+ {
+ my $track_name = $global_tracks[$i];
+ if ($track_name ne "")
+ {
+ my $file_name = sprintf("$track_name.wav", $i);
+ my $new_file_name = sprintf("audio_%02d.wav", $i);
+
+ my $mv_cmd = "mv '" . $file_name . "' '"
+ . $new_file_name . "'";
+ print "$mv_cmd\n";
+ `echo $mv_cmd >> unrename.sh`;
+ }
+ }
+}
+
+
diff --git a/doc/icedax/tracknames.txt b/doc/icedax/tracknames.txt
new file mode 100644
index 0000000..9a94e66
--- /dev/null
+++ b/doc/icedax/tracknames.txt
@@ -0,0 +1,34 @@
+Date: Fri, 2 Oct 1998 16:58:15 -0400
+From: Bill O'Donnell <billo@billo.com>
+To: heiko@colossus.escape.de
+Subject: CDDB/icedax quick lookup utility
+
+
+Hello, I just started using icedax to capture CD audio on Linux.
+It's working great on my 2.0.22 kernel with NEC CD-ROM DRIVE:273 (ATAPI).
+
+Anyway, I noticed that you're dumping out cddb query info, but not
+doing the query yet, so I hacked a quick perl program to do it.
+
+If you run with a default extraction like this:
+
+ icedax -B -D /dev/hda
+
+then run the program included something like this:
+
+ cddbhack.pl ma.us.cddb.com 8880 < audio.cddb
+
+It looks up the names, and creates a file "rename.sh" which can be
+used to rename all the audio_XX.wav files to a nice name.
+
+Anyway, thought you might find it useful, feel free to include in your
+next beta distribution or not. Sorry if I made any stupid perl
+mistakes, I only just learned it last week. I would have done it in C
+or python but I need to learn perl for another job...
+
+Cheers,
+
+-billo
+
+Bill O'Donnell Independent Software Developer
+billo@billo.com http://www.billo.com