Description: ----------- Ok, here goes. This utility was designed and implemented by Nathanael Hoyle. Original version made in July of 2001. Its purpose is to verify the proper function of CDROM drives and the proper readability of discs. It also functions as a fully capable CD ripper. Features: * Queries the status of the CDROM drive and displays the results. Useful for diagnosing a malfunctioning drive. * Can reset a drive internally without a reboot. * It will display the type of any disc present. (Helps to figure out for instance that you burned your cd full of wav files as DATA, not as audio tracks). * Completely analyzes audio CD's. (And audio tracks of mixed mode cd's.) - When the --readtest option is selected, the program will exhaustively read every audio track (assuming that a valid audio CD is present, and the drive is working thus far) a SINGLE FRAME at a time. This is NOT the easy way of reading the tracks. To give you an idea, there are 75 distinct frames per second that are being read independently. *** As of 0.93, cdstatus can read in multiple frame chunks if you are trying to speed up a rip rather than check operation and look for scratches. Use --readchunk x to read x frames at once. Keep it sane, larger valuesuse more memory. - As of version 0.92, it can write output files to either .wav files or .raw files. The difference is that the .wav file will be created with a full, proper, wave header, and should be playable and usable by almost every audio application. The .raw file will contain ONLY the audio data, and is useful for performing a true check of whether the data was read properly, versus a backed up copy of the file. (Due to the fact that wave files may be "sub-chunked" differently, two programs may create slightly different .wav files, but .raw files should always be identical.) Use the --waveout sub-option of --readtest to get .wav files. Tracks will be named either trackXX.raw, or trackXX.wav, according to type, where XX is the track number. As of 0.93 tracks can be given different names via --basename . * New in 0.94a: CDDB lookup and auto file-naming support. See below. Options: -------- With no options, version info is displayed followed by basic information about the status of the drive, cd if present, and the tracks on said cd, as well as volume levels of cd drive. --reset Causes the drive to perform a reset. You will almost certainly need to be root to perform this operation. --readtest --rip Performs exhaustive read analysis for audio cd's. Will retry failed reads up to the max retries chosen by the user (default 3, override with --retries X), if so chosen. --rip has been added as an alternate command for --readtest --waveout Now the default --readtest mode, --waveout will create .wav files instead of .raw. files. You may still obtain .raw files via --rawout Specifying --waveout is now redundant, but for historical reasons, it won't break anything. Use of this option automatically sets --readtest. --rawout Causes ripped tracks to be written in the original .raw format, which is headerless and not directly playable without providing some information to the player application. Use of this option automatically sets --readtest. --start X Begin readtest/rip at track X (default is 1) --stop X Stop readtest/rip at track X (default is last track on cd) --outputdir /path/ Place output files in /path/ instead of the default of the current working directory. --basename somename Output files are created with file names based on somenameXX.wav (where XX is the track number) instead of trackXX.wav. --readchunk X Use this to read the track data (--readtest) at some alternate number of frames per read. Normally this is 1 to allow exact detection of errors on the disc surface, however --readchunk 25 would read 25 frames at once. This improves performance up to some system dependent value (i.e. the ideal setting will depend on your system) but it gives up the fine-grained error detection. --retries X Perform X retries of failed reads. Default is 3. --version Displays version and copyright info, then exits. --help Displays brief usage summary and exits. --cddb calculates disc id and contacts freedb server to retrieve album info and track listings --format "format spec here" only valid when used with --cddb, this option allows you to specify an output format for the filenames from the cddb info for the cd. Example: "#Artist#/#Album/#Artist#-#Album#-#TrkNum#-#TrkName#" Could be: The Beatles/The White Album/The Beatles-The White Album-13-Rocky Raccoon note that you may use any characters EXCEPT #, spaces, or other ones disallowed by the filesystem in your format specification. Incorporating a slash (/) in the spec will create directories and subdirectories if relevant. this does not replace --outputdir. If you used --outputdir /home/myusername/music with the above example, you would end up with files in /home/myusername/music/The Beatles/The White Album/ The format used in the example above is the default format when --cddb is used without an explicit format string. The directory specified in --outputdir should already exist, but the others will be created as needed. One more time: DO NOT USE SPACES in your format string. Thank you. Also, the " in the example are NOT just for show. You MUST enclose the format spec pattern inside quotes or the program will seg-fault. Licensing: ---------- Please read the LICENSE file. Other: ------ For the curious, NO code has been re-used or pulled in from any other source, program, or person. This work in its entirety is the original creation of its author, Nathanael Hoyle. Proviso: As of version .94a, I did use the code on www.freedb.org as a starting point for my code for calculating the cddb disc id. It is re-written to inline the second function and use fewer variables, hopefully running faster overall. Kudos to their documentation team. Final Notes: ------------ Please send any feedback. I am asking that those of you who have a moment, please take it and write an email with your impressions, suggestions, ideas, complaints, comments, etc. These go a long way to encouraging further work and making it worthwhile. Thanks. Thanks, Nathanael Hoyle nathanaelhoyle@users.sourceforge.net