General Information ------------------- cdcd takes a different approach from conventional console (or X) based CD players, in that it doesn't keep with the display-oriented paradigm. Conventional computer-based CD players resemble traditional physical CD players. This is fine, if your user interface consists of 10 buttons. However, computers have keyboards, so why not use them? Besides, it's certainly a waste of a console or an xterm to have a traditional CD player open anyway. cdcd works in two ways, accepting commands directly off the command line or in a query mode similar to other UNIX programs. To pass a command to cdcd, simply run cdcd with the command as the arguement (e.g. cdcd play). This is great for using cron and cdcd together to make a CD alarm clock. Or, you can run cdcd without arguments and you will be given the cdcd command prompt. For information regarding cdcd and new releases, visit http://libcdaudio.sourceforge.net/ . Installation ------------ For help with installation, please see the file INSTALL. Usage ----- Preliminary note: this file is less often updated than the source files, so you may see some changes between the outputs shown here and the outputs you get. After cdcd is installed, type 'cdcd'. You should receive a prompt like this: cdcd x.x.x, Copyright (C)1998-99 Tony Arcieri, 2001 Fabrice Bauzac Distributed under the GNU General Public License. See file COPYING for details. Using libcdaudio x.x.x Enter ? for help. cdcd> Enter a command, for example, help: cdcd> help Available commands: !, ?, access, close, debug, device, edit, eject, exit, ext, ff, getvol, help, info, list, next, open, pause, play, prev, quit, refresh, resume, rew, rndplay, setvol, sites, slot, status, stop, submit, tracks, verbose, and version. For more specific help, type `help <command>'. cdcd> As you can see, the command will perform its function, and then return you to the command prompt. You can receive help on specific items by passing an argument to the help function: cdcd> help play Usage: play [starttrackname/track #] [endtrackname/track #] [min:sec] By default, starts at the beginning of the CD. You may specify tracks using either the number of the track or a section of the track's name. The disc will play from where it starts to the end of the disc or a track you specify. You may also specify a position within the first track to start. cdcd> By default, play starts at the beginning of the CD. You may specify tracks using either the number of the track or a section of the track's name. The disc will play from where it starts to the end of the disc or a track you specify. You may also specify a position within the first track to start. To play a CD, you can simply type 'play', or if you prefer, 'play <trackname>', or 'play track#.' You may also specify a track at which to end play, and also a time within the track to start. Here are a few examples: cdcd> play 5 This would play track #5 and stop at the end of the disc. cdcd> play Time This would play the first song on the disc with "Time" as a part of its name and stop at the end of the disc. cdcd> play Time 5 This would play the first song on the disc with "Time" as part of its name and stop at track #5. cdcd> play Time 3:30 This would play the first song on the disc with "Time" as part of its name and start 3 minutes and 30 seconds into the song and stop at the end of the disc. cdcd> play 3 5 3:30 This would play from track 3 to track 5 and start 3:30 into track 3. cdcd> play 3 "Us and Them" 5: This would play from track 3 to the first song on the disc with "Us and Them" as part of its title and start 5:00 into track 3. cdcd> play 5 5 This would play track 5 and stop at the end of track 5; an easy way to play only a single track. cdcd> play 3:30 This would set the postition within the current song to 3:30. Some commands put you into a cdcd subshell. For example, type: cdcd> sites cdcd/sites> Then you can ask for some help to see the available commands: cdcd/sites> ? Available commands: .., ?, add, del, display, exit, help, move, quit, and refresh. For more specific help, type `help <command>'. cdcd/sites> You can use the special command `..' to return one level up in the shells hierarchy. cdcd/sites> .. cdcd> If you are in interactive mode and are finished, simply type `quit' and RETURN, or C-d (^D, Control + D). The CD will continue playing: cdcd> quit $ You can also pass commands to cdcd right off the command line: $ cdcd info Album name: The Dark Side Of The Moon Album artist: Pink Floyd Total tracks: 9 Disc playing: 07:37 of 42:59 Playing: Time 03 00:01 of 07:05 $ CDDB Interface -------------- As of libcdaudio-0.4.2 (and cdcd-0.3.2), cdcd supports the CD Database system, which allows retrieval of CD information off of the Internet. The CDDB interface is on by default. Whenever a command is invoked that uses CD database information (e.g. play, ext, info, infoall) libcdaudio will search in the local cache (located under ~/.cddb) first, and if it is unable to locate information for the current CD, it will connect to a CDDB server and attempt to retrieve it. If this is the first time you've used a particular CD with cdcd, you may notice a 5-10 second delay with the previously mentioned commands. This is because cdcd is connecting to the CDDB server and retrieving disc information. As soon as this has been completed, the command will no longer block, and you will be given the shell prompt or cdcd command prompt again. Perhaps you don't like automated CDDB operation. You can enable or disable verbose, manual CDDB operation using the verbose command: cdcd> verbose on cdcd> From now on, any command that uses the CDDB code will tell you exactly what it is doing: cdcd> info Trying cddbp://www.cddb.com:8880/ Connection established. Retrieving information on 770f0d19. Inexact match for 770f0d19. Please choose from the following inexact matches: 1: The Beach Boys / Made In U.S.A. 2: None of the above. > 1 Downloading data... Album name: Made In U.S.A. Album artist: The Beach Boys Total tracks: 25 Disc length: 64:15 Stopped cdcd> Of course, all of that will only happen the first time you use the disc with cdcd. Normally the CDDB information will simply stay cached in ~/.cddb. As of libcdaudio-0.4.3, a caching system compatible with XFreeCD and other CD players is used. This allows you to read CD information from discs played using these other players. As of libcdaudio-0.4.4, extended information is supported. In cdcd, you can display extended information (if it is available) using the ext command. CD-ROM Changer Support ---------------------- Linux 2.1 and 2.2 users with CD-ROM changers may take advantage of the CD-ROM changer functions within cdcd. To use your CD-ROM changer with cdcd, there are only two functions you must know, list and seldisc: cdcd> list Disc 1: 42:59 Pink Floyd / The Dark Side of the Moon Disc 2: 44:28 Pink Floyd / Wish You Were Here Disc 3: 42:39 Led Zeppelin / IV cdcd> The list command displays the contents of your CD-ROM changer. To choose a particular disc from the CD-ROM changer, use the slot command: cdcd> slot 1 Controlling CDDB Operation -------------------------- As of libcdaudio 0.6.1, cdcd uses a radically different CDDB interface. If you previously generated a ~/.cddbrc you should delete it. All CDDB operations use specific URLs for the server. To use the CDDB server cddb.cddb.com that operates on port 8880, you should use the following URL: cddbp://cddb.cddb.com:8880 If instead, you wished to use the HTTP server www.cddb.com port 80, use: http://www.cddb.com:80/~cddb/cddb.cgi Notice /~cddb/cddb.cgi on the end. This is the path to the actual CDDB CGI, and must be used with any HTTP URL. To automatically update the CDDB server list, use the 'sites/refresh' command. Any further CDDB operations will pull entries from this list. If the first server fails, it will automatically go on to the next one, until it has exhausted the whole list. Tuning Readline --------------- You can easily add shortcuts for usual commands, by tweaking your ~/.inputrc file. Here is an example: ~/.inputrc: ----- $if cdcd "\e[[A": "open\n" # F1 will open the CD tray "\e[[B": "close\n" "\e[[C": "play\n" "\e[[D": "prev\n" "\e[[E": "next\n" "\C-xw": "prev\n" # C-x w will select the previous track "\C-xx": "play\n" "\C-xc": "pause\n" "\C-xC": "resume\n" "\C-xv": "stop\n" "\C-xb": "next\n" $endif ----- Remember: to type C-x w, hold down Control, then type x once, then release the Control key, and type w once. Bugs ---- All bug reports should be sent to noon@users.sourceforge.net. cdcd has been tested under many versions of Linux, and FreeBSD 3.0. If you do experience problems either compiling or while operating cdcd, please send the following: * The version of cdcd you are using. * The version of libcdaudio you are using. * Your platform type and release. * A complete list of errors that occurred either during the compile (make >& errors) or a detailed description of what happened while cdcd was in operation. * Any other information you believe is relevant. Patches ------- If you think you can do something better than the existing code, by all means, send me the patch! Send all patches to noon@users.sourceforge.net. Be sure to include your name so I can credit your code. If the patch fixes a bug, it would be nice if you send the patch along with the bug report. A few final words ----------------- cdcd is distributed under the GNU General Public License, included in this package under the top level directory in the file COPYING. libcdaudio is distributed under the GNU Library General Public License, either included in this package as libcdaudio/COPYING.LIB or if obtained seperately, under the top level directory of libcdaudio in the file COPYING.LIB.