XfreeCD v0.9.0 (c) 1998 by Brian C. Lane http://www.brianlane.com GTK2 version (2004) by Rimas Kudelis http://xfreecd.sourceforge.net
Hello!
Thanks for trying out XfreeCD. The first thing is that you need to have a copy of GTK+ v2.0 or later installed. This is the Gimp Toolkit, so if you have a recent version of Gimp installed you are ready to compile XfreeCD by typing make. If you don't have GTK+ then you need to download and install it. It is available from http://www.gtk.org/ and the install is pretty easy. I think, most of the linux distros have that by default.
Ok, so if you have GTK+ installed you can type make in the xfreecd directory to build xfreecd. Then copy the xfreecd binary it to your favorite location and run it. The standard place is in /usr/local/bin
The program initially uses /dev/cdrom to access the CD device. This can be changed in the setup dialog box (click on the question mark). It does not work with SCSI devices yet, but that's on my list of things to find other people to do <G>.
You also have to make sure you have read permission for the CD device. You can do this by executing chmod ugo+r /dev/hdc (or whatever your device is). Make sure you change the device itself, not a symlink like /dev/cdrom since that won't work.
Please read over the rest of this document!
What is xfreecd?
XfreeCD is a X windows program that looks like the frontpanel of a cd player. I stole the images from the win95 freeCD program. My thanks to Nate Smith for making his code freely available.
You can play CDs, move between tracks, adjust volume -- clicking the left button on the speaker icon increases the volume. Clicking the right button will decrease the volume. Right-clicking on the "play/pause" button will STOP the playback. You can display 4 different times on the display:
- Time elapsed on the track (icon has a plus and a 1/4 cdrom on it)
- Time remaining on the track (icon has a minus and 1/4 cdrom on it)
- Time elapsed on cdrom (icon has a plus and a full cdrom)
- Time remaining on cdrom (icon has a minus and a full cdrom)
The repeat key causes the cdrom to keep playing when it reaches the end of the cdrom. The question mark key opens a setup dialog box with 3 tabs for the different setup screens. The 'Setup' tab allows you to set the CD device to use and 3 other buttons:
- AutoPlay When this is selected XfreeCD will start playing
the CD if there is one in the drive. If a CD is already playing it doesn't disturb it.
- Eject when done When selected this will eject the CD when it is done
playing it if the repeat button on the front panel is not selected.
- Eject on exit When this is selected and you exit XfreeCD with
the CD stopped or paused it will eject the CD.
- Hide WM decorations When this is selected, XfreeCD will tell windowmanager
not to decorate its main window.
As of version 0.7.8 XfreeCD supports the internet CD database CDDB created by Ti Kan and Steve Scherf (Thanks Guys!). Select the CDDB tab from the setup menu to setup this option. The Local CDDB path is where it will store the CD info when it is downloaded from the internet or entered locally. A number of directories are created under this directory for the different categories of CDs (this is handles automatically, you don't need to create any directories yourself, just make sure you have the right permissions for the location you select).
The CDDB server is the internet site that you want to use to retrieve CD track names from. This should probably be geographicly near you for the best performance. Initially only cddb.cddb.com is selected. A list of the current sites can be downloaded by pressing the Refresh Servers button.
The CDDB Submit email address is the email address of the CDDB server to submit new CDs to. The default is xmcd-cddb@amb.org and the test address is test-cddb@cddb.cddb.com -- The test address will tell you if the submission would have been accepted or not. You can submit CD info from the Track Edit window by pressing the 'Send to Server' button. This uses the 'cat' and 'mail' programs, and they should be in your current PATH for it to work.
As of version 0.7.6 XfreeCD submissions to the cddb database are accepted! Now you can add that obscure CD of yours to the worldwide database.
If the CDDB support button is selected XfreeCD will first search the local database (it does this even if CDDB is not selected) for the current CD's unique discid. If that fails then it will attempt to connect to the CDDB server that you have selected and download the CD info. It will then store that data locally. CDDB submission is available even when CDDB download support is turned off.
To use the CDDB download feature you will need to have your internet connection online or be using a program like diald to automatically connect to the internet.
The track names are displayed by doing a left click in the main display window (the one showing the time and track #). Doing a right click in this window allows you to drag the XfreeCD window anywhere on your desktop.
At the bottom of the track list window is a button labeled 'edit tracks' Click on it and another window similar to the first will be opened. Here you can edit the track names and save the changes to the local database. You don't need to have the internet CDDB support enabled.
Version 0.7 is a complete rewrite of the code. The old code didn't run as well as I liked, the user interface was sometimes slow because it was waiting for a response from the low-level CD routines which can sometimes take a noticeable amount of time. And I wanted to add CDDB support without the 'freezing' of alot of X programs.
Some people requested track seeking (skipping forward a few seconds within the track). I tried to implement this, but it seems that the low level CD device drivers don't implement this function very well and I removed the option (It would crash often and leave the cd_control process with no way to kill it since it was frozen waiting for a kernel call to finish). I have tested other players and none of them implement this feature any better. If you want to add it yourself and can get it to work, I'd be happy to integrate it into the next release of XfreeCD.
If you do a 'ps' while running xfreecd you will notice 3 processes running. This is perfectly normal. One process handles the GTK+ user interface, another handles the low-level CD control and the third is the cddb internet interface.
In version 0.7.5 I have reduced the amount of static memory storage used for strings, so you should notice a slightly smaller memory foorprint. On my system a 'ps xm | grep xfreecd' shows:
v0.7.4
PID TTY MAJFLT MINFLT TRS DRS SIZE SWAP RSS SHRD LIB DT COMMAND
3183 p3 0 3 44 532 576 0 576 552 0 50 xfreecd 3182 p3 14 7 48 588 636 0 636 592 0 52 xfreecd 3181 p3 389 198 76 1500 1576 0 1576 1184 0 119 xfreecd
v0.7.5
PID TTY MAJFLT MINFLT TRS DRS SIZE SWAP RSS SHRD LIB DT COMMAND
3189 p3 0 3 40 500 540 0 540 516 0 43 ./xfreecd 3188 p3 14 5 48 532 580 0 580 556 0 43 ./xfreecd 3187 p3 408 169 80 1404 1484 0 1484 1184 0 96 ./xfreecd
Not a huge difference, but an improvement.
-geometry
XfreeCD now recognizes the -geometry command for x/y placement on the screen. Use the standard X geometry placement parameters. Width and Height are ignored. I use 'xfreecd -geometry +580-80' to place it at the end of my AfterStep Wharf bar.
The only small glitch with this is if you have titlebars on and use geometry the placement will be relative to the main XfreeCD window, without respect to the size of the titlebars.
Window Types
If you want to modify the way the XfreeCD windows look, you need to know the types of these windows. There are 5 types of windows associated with XfreeCD.
XfreeCD is the main window.
XfreeCDt is the Track List window.
XfreeCDet is the Edit Track list window.
XfreeCDp is the progress window while connecting to the internet CDDB server.
XfreeCDs is the setup window.
I run AfterStep, and to setup the main window without title bar or resize handles you add a line like this to the database file:
Style "XfreeCD" NoTitle, NoHandles
NOTE: As of version 0.9.0, main window is no longer resizable. Also, you can use XfreeCD's preferences dialog to hide title bar for the main window.
SCSI Support:
I don't have a SCSI CD drive, so it would be difficult for me to test any code I wrote. But it is possible for someone to modify the cd_control module to support SCSI drives, preferably through a user selectable button in the setup menu, not via compile time (I'm trying to make it easy to distribute this as a binary for those who don't have gcc installed on their system).
This is beta software and it may have memory leaks and other problems. Please report any problems or ideas to the sourceforge bugs page: http://sourceforge.net/tracker/?group_id=110695&atid=657224
Hall of Thanks
Fist of all - the original author, Brian C. Lane. Most of this README is written by him (so, in deed, almost everywhere in this file, "I" stands for Brian). He made this small cute app, and all I did was a few fixes for it compile with GTK2. Thanks, Brian!
I would like to thank all of the beta testers for their help, bug reports, and suggestions. If I have forgotten anyone, please let me know and I'll add you to the list.
Vincent Cautaerts (vincent@comf5.comm.eng.osaka-u.ac.jp) did the RPM package for RedHat users for v0.7.5 (I have taken over the rpm generation as of v0.7.6, so send any errors to me).
The guys at www.cddb.com for their strict requirements for submission to the database. They revealed several bug that have now been squashed.
Users of v0.7.6 for reporting the error 500 problem and forcing me to look over the code once again. I found the bug and squashed it!
Users of v0.7.7 who kept insisting that it was sigsegving after a cddb retrieval. I believed you! Really!
