diff options
Diffstat (limited to 'doc/icedax')
-rw-r--r-- | doc/icedax/FAQ | 296 | ||||
-rw-r--r-- | doc/icedax/Frontends | 34 | ||||
-rw-r--r-- | doc/icedax/HOWTOUSE | 101 | ||||
-rw-r--r-- | doc/icedax/NEEDED | 10 | ||||
-rw-r--r-- | doc/icedax/OtherProgs | 2 | ||||
-rw-r--r-- | doc/icedax/README | 549 | ||||
-rw-r--r-- | doc/icedax/THANKS | 36 | ||||
-rw-r--r-- | doc/icedax/TODO | 41 | ||||
-rw-r--r-- | doc/icedax/cdda_links | 4 | ||||
-rwxr-xr-x | doc/icedax/tracknames.pl | 245 | ||||
-rw-r--r-- | doc/icedax/tracknames.txt | 34 |
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 |