---
name: "xmcd"
section: "1"
platform: "linux"
package: "xmcd"
version: "2.6-23"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/xmcd"
---

# xmcd(1)

CD digital audio player utility for X11/Motif

## NAME

xmcd - CD digital audio player utility for X11/Motif

## SYNOPSIS

**xmcd** \[*toolkitoption ...\] \[-dev device\] \[-instcmap\]* *\[-remote\] \[-rmthost hostname\] \[-help\]* *\[-debug\] \[-c device\] \[-X\] \[-o\]* *\[command \[arg ...\]\]*

## DESCRIPTION

*Xmcd* *is a program that allows the use of the CD-ROM, CD-R or CD-RW drive as* *a full-featured stereo compact-disc player for the X window system.* *See* *[cda(1)](/cda/1.md)* *for the command-line CD player.* *xmcd* *and* *cda* *uses the same configuration and support files.*

*Most of the features found on "real" CD players are available in* *xmcd,* *such as shuffle and repeat, track programming functions,* *a numeric keypad and track warp slider for direct track access.* *Additional functions include sample play, A to B segment play,* *volume control, balance control, etc.  Several automation* *options are also available on CD load, eject, play completion* *and program exit.  A Channel Routing feature allow you to* *select from several stereo or mono routing options.  The* *volume control slider taper characteristics can also be* *altered.*

*Multi-disc changers are also supported.  There are buttons* *to switch to the next or previous disc in the changer, as well* *as a way to specify a specific disc via the keypad.  You can* *select to play only a single disc or auto-play all discs in* *normal or reverse order.*

*A CD database feature allows the CD artist/title and* *track titles, and other associated general purpose text to be* *maintained and loaded as the program is started or when a* *CD is inserted.  The CD database contents can be on your* *local system or queried from a remote CD database server host.* *There are a number of worldwide Internet public CD database servers* *in operation, serving in both CDDBP (CD database protocol) and* *HTTP (Hyper-text transport protocol).  Xmcd supports both of* *these protocols.*

*Xmcd* *provides the ability to drive a web browser and* *search for web sites related to the currently playing* *CD artist or track.  You may also drive the web browser via* *xmcd* *to access online music reviews and go to the official* *xmcd* *and* *CDDB* *web sites.  Moreover, the browser integration gives* *users the ability to manage local discography information* *pertaining to his or her CD collection.*

*Full feature-specific pop-up help is available for* *all controls, indicators, text input fields, and lists.*

*On systems with more than one CD-ROM or CD-R drive, multiple* *invocations of* *xmcd* *can be used to operate each drive independently.*

*Xmcd* *is designed to be easy to use, as the main window is* *purposely made to resemble a real CD player front panel.* *All other pop-up windows are also designed to be as* *intuitive as possible.  Moreover, while the use of a mouse* *is natural with* *xmcd,* *all functionality can also be operated via the keyboard.* *This is in conformance to the guidelines published in the* *OSF/Motif Style Guide* *from the Open Software Foundation.*

*Many functions on a running* *xmcd* *session can be "remote controlled"* *from the command line via the -remote option.  See the OPTIONS* *section below.*

*The internal architecture of* *xmcd* *is designed to be easily portable to many UNIX operating* *system variants, and adaptable to the myriad of CD-ROM drives* *available.*

## OPTIONS

*All standard Xt Intrinsics* toolkit options are supported (such as -*display*, -*geometry*. -*iconic*, etc.). In addition, *xmcd* supports the following options:

- *-dev device*

  Specifies the path name to the raw CD-ROM device.  If this option is not used, the default device to be used is the first drive set up with the *xmcd* configuration program (See below).

- *-help*

  Causes command line usage information to be displayed on *stderr*.

- *-debug*

  Causes verbose debugging diagnostics to be displayed on *stderr*.

- *-instcmap*

  Causes *xmcd* to install its own colormap.  This may be desirable if *xmcd* is to be used at the same time as other color-intensive applications, which would otherwise cause *xmcd* to be unable to allocate all its needed colors.  Note that when running on an X display that does not support many concurrent colormaps, this may cause other windows to change colors when *xmcd* has the input focus.

- *-remote*

  Causes a command to be sent to another running *xmcd* process. The command and appropriate arguments are specified at the invoking shell (or shell script) as command-line arguments, After the command is delivered, the "sender" *xmcd* process exits, and the "receiver" process responds by executing the command. In effect, the sender becomes a remote control for a running *xmcd* session.  See "COMMANDS" below for a list of supported commands.

  The sender *xmcd* process can be invoked on the same host or on a different host than the receiver *xmcd* process.  By default, the sender will attempt to locate an *xmcd* process running on the same X display (determined by the DISPLAY environment variable or the -*display* option), and controlling the same default CD-ROM device.  You may specify the device via the -*dev* option to override the default.  Use of the -*dev* and -*rmthost* options on the sender's command line can resolve ambiguities when there are multiple *xmcd* clients displaying on the same X server.

- *-rmthost hostname*

  This may be used with the -*remote* option to specify the host on which the receiver *xmcd* client must be running.

- *-c device (Solaris only)*

  Same as the *-dev* option.

- *-X (Solaris only)*

  Causes the **exitOnEject** parameter to be set to True.

- *-o (Solaris only)*

  This option has no effect.

The *-c, -X* and *-o* options are provided only on the Solaris platform for compatibility with the *action\_workman.so* auto-startup program, running under the Solaris Volume Manager (*vold*). See the README file in the *xmcd* distribution about configuring *xmcd* for the Solaris Volume Manager.

## X RESOURCES

*Xmcd* has many adjustable X resources to customize its look and feel, as well as its behavior.  Notably, the colors of virtually every feature on *xmcd*'s windows can be changed, as well as the text fonts.  All text labels can also be changed (for example, to another language).

There are too many resources to list here, but the resource names and their defaults (plus descriptive comments) can be found in the **XMCDLIB***/app-defaults/XMcd* file (where XMCDLIB is typically */usr/lib/X11/xmcd*). It is not recommended that you change values in the **XMCDLIB***/app-defaults/XMcd* file, unless you want the changes to be forced upon all users of *xmcd* on the system.  Instead, make a copy of this file, change the copy as you see fit, then place it in your home directory.  Your custom resource settings will then override the defaults when *xmcd* is subsequently started.  Alternatively, you may also place specific resources you wish to override in the *.Xdefaults* file in your home directory.

## COMMANDS

You may specify a command as an xmcd command line argument, to make xmcd execute the command after initial startup. For example, the following command starts *xmcd* and then begins playing at track 4:

**xmcd play 4 &**

If the -*remote* option is used, then the command is sent to another running xmcd process for execution (See "OPTIONS" above).

The supported commands are:

- *stop*

  Stop playback.

- *play \[track# \| min:sec \| track#:min:sec\]*

  Start playback.  You may also specify the starting track number, and/or the starting minute and second offset.

- *pause*

  Pause the playback.  You may resume the playback by using either the *pause* command again, or the *play* command.

- *sample*

  Start sample playback.  This will play each track for 10 seconds.

- *disc \<load \| eject \| prev \| next \| disc#\>*

  Perform a disc operation:  Load or eject the CD, or change to another disc on a multi-disc changer.

- *track \<prev \| next \| track#\>*

  Perform a track operation: Change to the previous or next track, or a specified track number.

- *index \<prev \| next\>*

  Perform an index operation: Change to the previous or next index.

- *lock \<on \| off\>*

  Enable or disable the caddy (or disc tray) lock.  When enabled, pressing the eject button on the drive will not eject the CD.

- *shuffle \<on \| off\>*

  Enable or disable shuffle (random play) mode.

- *repeat \<on \| off\>*

  Enable or disable repeat mode.

- *program \<clear \| track# ...\>*

  Set or clear a track program sequence.  Track numbers may be space or comma-separated.

- *volume \<value# \| linear \| square \| invsqr\>*

  Volume control operation.  You can specify a numeric value to set the volume level (The range is 0 to 100), or change the volume control's taper characteristic: linear, square, or inverse-square.

- *balance value#*

  Balance control.  The value should be between 0 and 100.   50 is center, 0 is full-left, and 100 is full-right.

- *route \<stereo \| reverse \| mono-l \| mono-r \| mono \| value#\>*

  Channel routing control.  Use one of the appropriate keywords, or a value as follows:

  ```
  0	Normal stereo
  1	Reverse stereo
  2	Mono-L
  3	Mono-R
  4	Mono-L+R
  ```

- *time \<elapse \| e-disc \| r-trac \| r-disc\>*

  Change the time display mode.  Select from elapsed track time, elapsed disc time, remaining track time, or remaining disc time.

- *on-load \<autolock \| noautolock \| none \| spindown \| autoplay\>*

  Enable or disable options when a CD is loaded.  The *autolock* option causes the caddy or disc tray to be automatically locked,  The *spindown* option will cause the CD to stop after loading to conserve the laser and motor.  The *autoplay* option will cause the CD to automatically start playing after loading.  The *none,* *spindown* and *autoplay* options are mutually-exclusive.

- *on-exit \<none \| autostop \| autoeject\>*

  Enable or disable options when *xmcd* exits.  The *autostop* option will cause xmcd to stop playback, and the *autoeject* option will cause xmcd to eject the CD.  Use *none* to cancel these options.

- *on-done \<autoeject \| noautoeject \| autoexit \| noautoexit\>*

  Enable or disable options when *xmcd* is done with playback.  The *autoeject* option causes xmcd to eject the CD.  The *autoexit* option will cause xmcd to exit.

- *on-eject \<autoexit \| noautoexit\>*

  Enable or disable options when *xmcd* ejects a CD.  The *autoexit* option will cause xmcd to exit after ejecting the CD.

- *changer \<multiplay \| nomultiplay \| reverse \| noreverse\>*

  Enable or disable multi-disc changer options.  The *multiplay* option specifies that *xmcd* plays all discs in sequence.  The *nomultiplay* option will cause xmcd to stop after the current disc is done. The *reverse* option implies *multiplay,* except that the disc order is reversed.

- *window \<modechg \| iconify \| deiconify \| raise \| lower\>*

  *Xmcd* window control.  The *modechg* command causes the *xmcd* main window to toggle between the normal mode and basic mode.  In normal mode, all controls and indicators are available.  In basic mode, *xmcd* shrinks to a smaller size and only basic controls are shown. The *iconify,* *deiconify,* *raise* and *lower* commands cause the *xmcd* window to change as specified.

- *quit*

  Causes xmcd to exit.

- *debug \<on \| off\>*

  Enable or disable debug mode.  When debug mode is enabled, *xmcd* generates verbose debugging diagnostics to be displayed on *stderr*.

Some of these commands, when used in start-up mode, do not perform a meaningful function.  For example, the "*track prev*" command is not useful just after xmcd startup.  It is more appropriate to use this command in the remote control mode.

## DEVICE CONFIGURATION

The X resources described in the previous section affect the general appearance and behavior of *xmcd.* There are two additional configuration files which are used to adapt *xmcd* to your site requirements.  The first of these contain common parameters, and the second contain configurable parameters that must vary on a per-drive basis.  For example, in some cases *xmcd* must operate the drive differently depending upon the brand and model of the drive.  Thus, there must be a separate configuration file for these parameters *per-device*. The common parameters file is **XMCDLIB***/config/common.cfg* and the device-specific parameters file is **XMCDLIB***/config/***DEVICE** (where XMCDLIB is typically */usr/lib/X11/xmcd* and DEVICE is the base name of the raw device special file for the CD-ROM drive ; e.g., */usr/lib/X11/xmcd/config/rcd0*). A configuration program **XMCDLIB***/config/config.sh* is provided to make maintaining these configuration file easy (Note: on SCO systems the configuration program can also be invoked as "*mkdev xmcd*").

You should always use the configuration program to set the configuration parameters when installing *xmcd* for the first time, or when the CD-ROM hardware configuration has changed.  If this is not done then *xmcd* will probably not operate correctly with your CD-ROM drive.

**WARNING:** If *xmcd* is not correctly configured, you may cause *xmcd* to deliver commands that are not supported by your CD-ROM drive. Under some environments this may lead to system hang or crash.

You can override some of the device-specific configuration parameters by adding your own configuration files. *Xmcd* will also look in the **HOME***/.xmcdcfg/common.cfg* and **HOME***/.xmcdcfg/***DEVICE** files for common and device-specific parameters (where HOME is your home directory and DEVICE is as specified above).  Parameters found in this file will override the system defaults (except those parameters that cannot be overridden; see the comments in the **XMCDLIB***/config/device.cfg* for details).

## USING XMCD

The basic functions of *xmcd* are designed to operate the same way as on a real stereo CD player. The pictorial symbols used on the main window buttons are intended to illustrate the function in a non-language-specific manner.  If enabled, a small "tooltip" will appear after a short delay, when you position the mouse cursor over any xmcd main window feature. The tooltip contains textual description of the feature.

The CD database and track programming functions are operated via the CD Database/Track Program Editor pop-up subwindow. You activate the subwindow by clicking the **BCD database/track programming** button (file cabinet symbol) on the main window (See "CD DATABASE" below).

There will not be a per-item description of all the features, because full on-line help is available (See "ONLINE HELP" below).

## ONLINE HELP

For general information about *xmcd,* click the **help** (question mark symbol) button on the *xmcd* main window.  You can also get specific help information about each button, control, indicator, text entry area, selection list by positioning the mouse cursor over the desired item, then clicking the third mouse button. A pop-up window will appear, containing the relevant help text.

## TRACK PROGRAMMING

You can program *xmcd* to play only certain tracks, in a custom sequence. To do so, invoke the CD Database window (by clicking the **CD database/track programming** button on the main window).  Select the desired track by clicking on the entry in the **Track list,** and click the **Add** button to add to the play sequence.  Notice that the track number appears in the **Program sequence** text field.  You can also type the track numbers, separated with commas, directly in the **Program sequence** field.  Repeat until all desired tracks have been entered, then click the **Play/Pause** button (on the main window) to start the program play.

When a program sequence is defined, the **prog** indicator in the main window display area "illuminates". To erase the program sequence, click the **Clear** button on the CD Database/Program Editor window.

## CD DATABASE

The CD Database feature of *xmcd* allows you to enter the CD artist/title, track titles, other free-form text (such as band information, lyrics, etc.) associated with the disc and tracks, and a track play program.  After this information is typed in and saved to a database file, it will automatically appear on the *xmcd* CD Database window the next time you insert the same CD.

You must perform a "save" operation (click the **Save** button) after typing in the database information before ejecting the CD or exiting, or the information will be lost.  If this is the first time this CD database entry is being stored, you will be asked to select a category (rock, classical, jazz, etc.) under which to classify the CD.  The category is used by *xmcd* to determine the actual directory in the filesystem to write the database file.

You must type the CD information into the database because the CD's table of contents (TOC) contains only the number of tracks and the starting address of each track, but not the actual disc and track titles.

The CD database window should prove to be intuitive to use. You may use the on-line help system to obtain specific help information about the various buttons and items.

The CD database information is stored in text files, one per CD, in a designated directory (category).  The path of this directory is **CDDBDIR***/***CATEGORY**, where CDDBDIR is the top level directory of the local CD database. CDDBDIR is typically /usr/lib/X11/xmcd/cddb and CATEGORY is the category name selected when **Save** is performed.  See the description of XMCD\_CDDBPATH in the ENVIRONMENT section below.

You may view the list of directories that *xmcd* will search for CD database files by clicking the **About...** button and viewing the pop-up information window.

The file name of each CD database entry is a hexadecimal representation of a special "magic" number computed by *xmcd* based on the number of tracks, track timings, and other available information about this CD.  This method is used because there is no reliable unique CD identifier to be found on the CD itself (the CD standard allows for a readable IPC/barcode but very few CDs actually contain such information).

Since different pressings of the same CD may sometimes contain slightly different track timings, the resultant magic number computed by *xmcd* on these CDs will be different.  Thus, if you load a CD that is not the same one that a CD database entry was created with (but is actually the same CD title), *xmcd* may not recognize it and display the database information automatically when you insert the CD.  In this event, you can search the CD database and find the appropriate entry, and establish a "link" to it.  To do so, click the **Link** button, and select the appropriate category on the popup window. *Xmcd* will then present another pop-up window containing a list of all CD database entries in the specified category (that has the same number of tracks as the currently inserted disc).  Select the appropriate entry and a link will be made in the CD database.

The **Link** feature alleviates the need to type in CD database information again and avoids duplicate CD database entries.

A master CD database of hundreds of thousands of CD titles is available for Internet access. *Xmcd* has the ability to query a remote CDDB *server* host for CD database information.  If your system is connected to the Internet, you can configure your xmcd *client* to query the server.  The **cddbPath** parameter or the XMCD\_CDDBPATH environment variable is used to configure the use of a remote server.  See the ENVIRONMENT section below for details.

You may configure *xmcd* to communicate with the CD database server in either CDDBP or HTTP protocols.  The CDDBP protocol is the standard CD database protocol developed for use by *xmcd* and other clients.  The HTTP protocol is intended for users who are behind a firewall that allows HTTP traffic (for web access) but blocks the normal CDDBP port.  Proxy servers are also supported under the HTTP mode.

You are encouraged to contribute to this database by sending CD database entries (that you typed in) to the master CD database.  To do so, you click the **Submit...** button on the CD database/Track Program Editor pop-up subwindow. Clicking this button causes the CD database entry (associated with the currently loaded CD) to be sent to the *CDDB* master server. You should use this feature only if your computer is configured to send Internet electronic mail.  You can send a CD database entry only after you first save it to your local CD database.

For more information about *CDDB,* visit the *http://www.cddb.com* web site for details.

While *xmcd* is running, the file **/tmp/.cdaudio/curr.***nnnn* (where nnnn is the hexadecimal representation of the CD-ROM's device number) contains the device node path, CD database category and disc identifier information pertaining to the currently loaded CD. Other applications may read this file to identify the currently loaded disc.

## ENVIRONMENT

Several environment variables are currently recognized by *xmcd,* and are described as follows:

- **XMCD\_LIBDIR**

  This parameter is the directory path under which *xmcd*'s configuration files, help files, and CD database files are located. The default value of XMCD\_LIBDIR on Debian is */usr/share/xmcd* and is set automatically.

- **XMCD\_CDDBPATH**

  This is used to override the **cddbPath** common configuration parameter, which is a list of CD database category directories to be used under **$XMCD\_LIBDIR***/cddb*.  Also, remote CD database hosts can be specified.

  **rock;classical;jazz;newage;soundtrack;misc**

  This string will cause *xmcd* to search the following directories for CD database files:

  **XMCDLIB***/cddb/rock*\
   **XMCDLIB***/cddb/classical*\
   **XMCDLIB***/cddb/jazz*\
   etc.

  You may also specify absolute path names in the XMCD\_CDDBPATH entries.  Example:

  **rock;classical;/home/john/industrial;~john/punk;~/cddb/jazz**

  You may also specify a remote CD database server hosts which *xmcd* can use to query CD database information.  The syntax is in URL form:

  	*protocol*://*hostname*\[*:port*\]/*path*

  The *protocol* is either "cddbp" or "http", depending on which protocol you want *xmcd* to use to communicate with the remote server.  The *hostname* can be a fully qualified host name or an IP number. The *port* number is optional (the default is 888 for *cddbp* and 80 for *http* ) and the path is used only in the *http* mode.

Example:

**country;folk;cddbp://abc.fubar.com;http://xyz.snafu.com/~cddb/cddb.cgi**

- **HOME**

  This is used to determine your home directory. *Xmcd* first tries to obtain your home directory from the */etc/passwd* file. If that is not found, then it uses what is defined in the HOME environment variable.  The home directory path is used by *xmcd* to locate the *.xmcdcfg* directory.

## NOTES

Not all CD-ROM drives support all features that appear on *xmcd.* For example, some drives do not support a software-driven volume control.  On these drives the *xmcd* volume control slider may have no effect, or in some cases it is made to function as a mute control (i.e., it will snap to the full-off or full-on positions only).  Similarly, the **caddy lock**, **eject** and **index search** buttons found on *xmcd* may not have any effect on drives that do not support the appropriate functionality.

The remote control feature (using the -*remote* option) is governed by the standard display server  security mechanisms of the X window system.  In order for an *xmcd* sender client to communicate with a running *xmcd* receiver client, the sender must have the appropriate access permissions to the receiver client's X display. See *[xhost(1)](/xhost/1.md),* *[xauth(1)](/xauth/1.md)* and *Xsecurity(1)* for more information.  If logging is enabled, remote control activity is logged by the xmcd receiver client in the $HOME/.xmcdcfg/remote.log file for each xmcd user.

## FILES

$HOME/.xmcdcfg/∗\
 XMCDLIB/app-defaults/XMcd\
 XMCDLIB/cddb/∗\
 XMCDLIB/discog/∗\
 XMCDLIB/doc/∗\
 XMCDLIB/config/config.sh\
 XMCDLIB/config/common.cfg\
 XMCDLIB/config/device.cfg\
 XMCDLIB/config/.tbl/∗\
 XMCDLIB/config/∗\
 XMCDLIB/help/∗\
 BINDIR/xmcd\
 MANDIR/xmcd.1\
 /tmp/.cdaudio/∗

## RELATED WEB SITES

Xmcd/cda home page: *http://metalab.unc.edu/tkan/xmcd/*\
 CD database server page: *http://www.cddb.com/*\
 FreeDB database server page: *http://www.freedb.org/*\
 Xmmix home page: *http://metalab.unc.edu/tkan/xmmix/*

## SEE ALSO

[cda(1)](/cda/1.md), [cddbcmd(1)](/cddbcmd/1.md), [wm2xmcd(1)](/wm2xmcd/1.md), X(1), [xhost(1)](/xhost/1.md), [xauth(1)](/xauth/1.md), Xsecurity(1),\
 Xmcd's README and INSTALL files\
 Xmcd web site: http://metalab.unc.edu/tkan/xmcd/\
 CDDB web site: http://www.cddb.com/\
 FreeDB web site: http://www.freedb.org/

## AUTHOR

Ti Kan (*ti@amb.org*)\
 AMB Research Laboratories, Sunnyvale, CA, U.S.A.

*Xmcd* also contains code contributed by several dedicated individuals. See the README file in the *xmcd* distribution for information.

Comments, suggestions, and bug reports are always welcome.
