Grip/GCD ======== Grip is a gtk-based cd-player and cd-ripper. It has the ripping capabilities of cdparanoia builtin, but can also use external rippers (such as cdda2wav). It also provides an automated frontend for MP3 encoders, letting you take a disc and transform it easily straight into MP3s. The CDDB protocol is supported for retrieving track information from disc database servers. Grip works with DigitalDJ to provide a unified "computerized" version of your music collection. GCD is the cd-player only version of Grip. Because Grip and GCD share much of their functionality, this file documents both of them. If you installed only GCD, you should ignore the bits that talk about "ripping" and "encoding" of tracks. Requirements ============ To use Grip/GCD, you must have: o GTK+ (see http://www.gtk.org) o POSIX thread support (http://pauillac.inria.fr/~xleroy/linuxthreads) o a net connection (if you want to use CDDB lookup) o a CD player (surprise, surprise) Grip is designed to work closely with DigitalDJ, my SQL-based mp3 jukebox system (although it does not require it). DigitalDJ can be obtained from: http://www.nostatic.org/ddj Installation ============ If you obtained Grip or GCD from the RPM distribution then they are already installed. If you have the source distribution, you need to compile it. Edit the Makefile and the header file config.h to correspond to your system. If you are compiling GCD, just type "make gcd". If you are compiling Grip, you need to decide whether to compile grip with cdparanoia builtin or not. To build with cdparanoia: o if you downloaded the grip source distribution *with* cdparanoia included, you are set. if not: o get the cdparanoia source distribution o unpack it somewhere o make a symbolic link "cdparanoia" in the grip source directory that points to it (ie: ln -s /usr/src/cdparanoia-III-alpha9.5 cdparanoia) o cd to the cdparanoia directory o configure it ("./configure") o do "make lib" o cd back up to the grip directory o type "make" and then "make install" To build *without* cdparanoia: o type "make gripnopar" o if you want GCD compiled as well, type "make gcd" o type "make install" Running Grip/GCD ================ Grip's usage is: grip [-d ] [-s] [-l] -d Use as cd-rom device -s Launch in "small" (cd-only) mode -l 'local' mode -- don't try to use CDDB -v Verbose (debug) mode GCD's usage is: gcd [-d ] [-f] [-l] -d Use as cd-rom device -f Launch in "full" (track-display) mode -l 'local' mode -- don't try to use CDDB -v Verbose (debug) mode The most handy way to launch Grip/GCD is from your window manager's doc. A dock icon (gripicon.tif/gcdicon.tif) is included with the distribution. Grip's operation should be pretty self-explanatory. Tracks to rip are selected with the right mouse button. To select all tracks on the disc, click the "Rip" column label. When you select "Rip" or "MP3-encode" from the "Rip" page, Grip will rip or rip/encode the tracks you have selected. If you select "Rip partial track", only the current select of the current track will be ripped or encoded. Start/End sector values are ignored if partial track ripping is not enabled. Grip and GCD used to be installed as setuid root. This was for several reasons. First, most people have their systems configured such that their user accound does not have access to the cd drive. Secondly, cdparanoia requires access to both the cd device and (for scsi drives) the generic scsi device (usually /dev/sg). Despite this, I no longer install the programs setuid root. This means that you will have to set the permissions correctly on the appropriate devices, or run the program as root. ************************************************************************** ******************************** IMPORTANT! ****************************** ************************************************************************** If you have trouble with Grip or GCD, read the "Common Questions" section. I'm getting bogged down in email these days. This being said, I do appreciate feedback on Grip. If, after reading through this document carefully, you still have a question, or have a feature request, feel free to email me. Do read the file TODO first, however, to check whether it's already on my list. ************************************************************************** ******************************** IMPORTANT! ****************************** ************************************************************************** Configuring Grip/GCD ==================== The 'Config' menu allows you to configure your ripping program and your CDDB database. Rip/Encode/ID3 options are only available in Grip. Here are the options: CD options: o Don't interrupt playback on exit/startup: If this is not selected, Grip will stop play when it starts and when it stops. o Rewind when stopped: If selected, Grip will rewind to the first track when play is stopped. o Startup with first track if not playing: If this is not selected, Grip will begin with whatever track the cd-player played last. o Reshuffle before each playback: If selected, Grip will re-randomize the tracks each time playback begins when in shuffle-play mode. o Work around faulty eject: Try this if Grip is having trouble ejecting your cds. Rip Options: o Ripper: This allows you to select one of the preset rippers. This will fill in sensible default parameters for calling the ripper. If you select "grip (cdparanoia)", Grip will use its builtin version of cdparanoia (only available if paranoia has been compiled in). If the builtin ripper is selected, the following options are available: o Disable paranoia: Disables all paranoia checking. o Disable extra paranoia: Only cdda2wav-style overlap checking will be done. o Disable scratch detection: Do not look for scratches. o Disable scratch repair: Disable scratch repair (still detect) o Ripping executable: This should be the full path to the program you want to use to rip tracks with. o Ripping command-line: These are the arguments that will be passed to the ripping program. The '%' switches are translated as follows: o %t - Track to be ripped o %b - Begin sector to be ripped (0 is start of track) o %e - End sector of track o %f - Filename to put .wav data to o Rip file format: This specifies the format of the filename to write ripped data to. The '%' switches are translated as follows: o %n - Name of track being ripped o %t - Number of track being ripped o %a - Artist of current track o %A - Artist of the current disc o %d - Name of current disc o %b - Begin sector to be ripped (0 is start of track) o %e - End sector of track o %c - cdrom device o %i - CDDB discid in hex format o %g - ID3 genre tag as a number o %G - ID3 genre tag as a word Adding a '*' between the '%' and the switch will cause underscoring of the field to be skipped. o Rip 'nice' value: The 'nice' (priority) level to run the rip at. o Max non-encoded .wav's: The maximum number of non-encoded .wav files grip will keep around before pausing ripping. o Auto-rip on insert: If selected, Grip will automatically select all tracks and begin ripping when a new (ie: no local disc data) disc is inserted. o Beep after rip: If selected, Grip will "beep" after ripping is finished. o Auto-eject after rip: If selected, Grip will automatically eject the disc when ripping is finished. o Auto-eject deleay: Specifies the number of seconds to wait before auto-ejecting. This is useful for some drives that are slow to spin down. o Wav filter command: This command will be run after ripping but before encoding. It can be used to call a program to maniuplate the .wav file in some way (such as doing normalization). It accepts a single switch, %f, which translates as the ripped .wav file. MP3 options: o Encoder: This allows you to select one of the preset rippers. This will fill in sensible default parameters for calling the encoder. o MP3 executable: This should be the full path to the program you want to use to MP3-encode tracks with. o MP3 command-line: These are the arguments that will be passed to the MP3 encoder. The '%' switches are translated as follows: o %b - Encode bitrate (kbits/sec) o %f - Filename of the .wav data to be encoded o %o - Filename to save mp3 data to o MP3 file format: This specifies the format of the filename to write MP3 data to. The '%' switches are the same as those used in the rip file format. o Delete .wav after encoding?: If selected, this option will (surprise!) delete the ripped .wav file after encoding. o Insert into SQL database: If selected, and DigitalDJ is installed, Grip will place the song information into DigitalDJ's song database. o Create .m3u files: If selected, Grip will create .m3u playlist files for each cd that is ripped. o M3U file format: The file format of the .m3u file. The '%' switches are the same as those used in the rip and encode file formats. o Encoding bitrate (kbits/sec): Specifies the bitrate that the MP3s should be encoded at. This will only work if the '%b' option is used in the MP3 command-line. o Number of CPUs to use: This is the number of simultaneous encode processes allowed. If you have an SMP system, increase this number to use more processes. Note that Grip must be restarted for changes in this option to take effect. o MP3 'nice' value: The 'nice' (priority) level to run the MP3 encode at. ID3 options: o ID3 Executable: The full path to the program that will add ID3 tags to an MP3 file o ID3 Command-line: The arguments to be passed to the ID3 program. The % switches are translated as: o %n - Name of track o %t - Number of track o %a - Artist of current track o %A - Artist of the current disc o %d - Name of current disc o %g - ID3 genre tag as a number o %G - ID3 genre tag as a word o %y - Year of track o %f - Name of the MP3 file o Add ID3 tags: If selected this option will cause ID3 tags to be added to each MP3 file after it is encoded. CDDB options: o Primary/Secondary CDDB server: These are your servers for looking up disc information over the net. If the disc is not found on the primary server, the secondary server will be checked. o DB server: The address of the CDDB server you wish to use. o DB CGI path: The path to the script on the server that handles HTTP requests. This is generally "~cddb/cddb.cgi" or "cgi-bin/cddb.cgi". o DB Submit email: The email address to send CDDB submissions to. o Perform CDDB lookup automatically: If selected, Grip will always try to look up an unknown disc. If not selected, lookup must be initiated manually. Proxy options: o Use proxy server: If selected, CDDB requests will be sent through an HTTP proxy (useful for people behind firewalls). o Get server from 'http_proxy' env. var: If set, Grip will try to read the http server/port information from the environment variable "http_proxy", which should take the form "http://server:port". o Proxy server: The address of the HTTP proxy server to be used. o Proxy port: The port to talk to the proxy on. Misc options: o Email address: The email address to be used as a reply address when submitting CDDB entries and bug reports. o CD update program: This program will be run whenever a disc is put in the drive. All sensible '%' switches can be used. I use this to call a program that generates a web page that tells what CD I'm currently playing. o Do not lowercase filenames: If selected, Grip will not lowercase filenames. o Characters to not strip in filenames: Specifies a list of characters that Grip should not strip when creating filenames. If left blank (recommended) Grip will only allow alphanumeric characters. o Keep application minimum size: If selected, Grip will always try to keep its window a the minimum size possible. Common Questions ================ Q: When I try to rip a track, I get X I/O errors. What gives? A: This seems to be a problem with non-thread-safe systems. Make sure your system is safe for threads. This often seems to be associated with libc5. Q: I just get a message saying that the program can't access my drive. This makes it hard to do much. Help! A: Your user account must have access to the cd device. See the "Running Grip/GCD" section for more information on this. Q: I can play cd's fine, but my ripper can't access the drive. Why not? A: Rippers (cdparanoia, at least) need access to the generic scsi device as well. See the "Running Grip/GCD" section for more information on this. Q: The progress bar doesn't seem to be completely accurate when doing an MP3 encode. Why can't it get it right? A: The progress bar is done based on the size of the output file. If you have the kbits/sec set properly, Grip should estimate the size properly. Note that if you use variable bitrate encoding (supported by encoders like LAME and xing) Grip has no way to accurately guess the file size. Q: When I encode tracks, the MP3 progress bar never does anything. What happened to progress? A: If your MP3 encoder doesn't accept an output filename (like BladeEnc), or you haven't passed it one on the command-line, then it might not be outputting to the file Grip expects. Make sure that your MP3 file format is set to what your encoder is actually producing. Q: When Grip looks up disc information, it works, but says "Error saving disc data". Why? A: Grip saves local copies of disc track information in the directory "~/.cddb". It must be able to create or access this directory. Q: How come I don't get any scrollbars in the track display? A: You are using a version of Grip compiled for gtk+ v1.0.x on a system that has gtk+ v1.2.x installed. You need to either get a binary compiled for the development series of gtk+, or compile Grip yourself. Q: When my buddy runs Grip, he gets those nifty LCD icons showing rip/encode/CDDB status, but I don't. What makes him so special? A: He's using a more recent version of gtk+ than you are. Due to bugs in gtk+ v1.0.x, I don't support the icons under it. Upgrade your gtk+! Q: I can't get Grip to rip any tracks! This makes it less than useful... A: Grip won't rip tracks unless you tell it what to rip. Use the right mouse button to select tracks for ripping. Q: I was listening to a CD in Grip and it sounded horrible! What's up? A: Perhaps you are listening to country music... CDDB notes ========== I have declined to sign a license agreement with Escient, the company who owns "www.cddb.com" and runs the CDDB server "us.cddb.com". Their license would (among other things) have required me to place advertisements in Grip and restrict you, the user, to use only their databases. I am against this commercial use of the track information submitted by users such as yourself. For this reason, I encourage you to use free servers, such as "freedb.freedb.org". License and Disclaimer ====================== Grip and GCD are Copyright (c) 1998 by Mike Oliphant. Grip and GCD may be used and distributed under the terms of the GNU General Public License. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. These programs are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this distribution; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. Acknowledgments =============== Thanks go to: o Everyone involved in GTK development for a wonderful GUI o Tony Arcieri, for libcdaudio, which formed the basis of Grip's low-level cd control and CDDB access routines o Monty, for cdparanoia and the paranoia library o Heiko Eissfeldt for cdda2wav o Tord Jansson for BladeEnc o Mike Cheng, Mark Taylor and all the others who have worked on LAME o Ti Kan, for the xmcd button bitmaps, many of which I use in modified form o Everyone has contributed code to Grip (see the CREDITS file) o mp3.com for hosting nostatic.org o Everyone else who has given me feedback and helped test Grip --- Mike Oliphant (oliphant@gtk.org) http://www.nostatic.org/grip