Table of Contents
xmcd - CD digital audio player utility for X11/Motif
xmcd [toolkitoption ...] [-dev device] [-instcmap] [-remote] [-rmthost
hostname] [-help] [-debug level#] [-c device] [-X] [-o] [command [arg ...]]
Xmcd
is a program that allows the use of the CD-ROM, CD-R, CD-RW or DVD drive as
a full-featured stereo compact-disc player for the X window system. See cda(1)
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.
The Gracenote CDDB(tm) Music Recognition Service(sm) is supported by xmcd,
which allows the CD artist/title and track titles, and other information
associated with the loaded CD to be displayed. You may also add/modify and
submit information to the CDDB service. This release of xmcd supports the
enhanced Gracenote CDDB2(tm) service on selected platforms, and offers
much richer features and content than the "classic" CDDB service. Moreover,
CDDB2-supplied information is now in UTF-8 data format, providing localization
support. See "LOCALIZATION" below.
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 access online music reviews and go to the
official xmcd and Gracenote web sites, invoke the CDDB Music Browser(tm),
as well as CDDB-provided links to related content. Moreover, the browser
integration gives users the ability to manage Local Discography information
pertaining to their CD collections.
CDDA (CD digital audio) data extraction,
playback, save-to-file, and pipe-to-program are supported on certain platforms.
Full feature-specific pop-up help is available for all controls, indicators,
text input fields, and lists.
On systems with more than one CD 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 drives available.
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 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 level#
- Causes verbose debugging diagnostics to be displayed
on stderr. The level specifies the type of debugging messages desired:
1 General debugging
2 Device I/O debugging
4 CD information debugging
8 User interface debugging
16 Remote control debugging
You may add the values together to enable multiple debugging types (i.e.,
A value of 3 turns on both General and Device I/O debugging).
- -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 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.
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 the xmcd library directory specified during installation,
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/.xmcdcfg
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.
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 the first 10 seconds of each track.
- 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 | save track# ...>
- Clear, save or set
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.
- mode <standard | cdda-play | cdda-save | cdda-pipe>
- Selects the playback
mode. See "PLAYBACK MODES" below for details about the modes.
- jittercorr <on | off>
- Enable or disable CDDA jitter correction.
- trackfile <on | off>
- For cdda-save mode,
specifies whether a separate file should be created for each CD track.
- filefmt <raw | au | wav | aiff | aiff-c>
- Specifies the output audio file format if running in cdda-save or cdda-pipe
modes.
- outfile <template>
- Specifies the output audio file path name template
if running in cdda-save mode (default is audio.ext, where ext is dependent
upon the file format selected). See the help file for the CDDA output file
path template text box for a description on the special tokens that could
be used in the template.
- pipeprog <path [arg ...]>
- Specifies the external program
to which the audio stream will be piped to when running in cdda-pipe mode.
- window <modechg | iconify | deiconify | raise | lower>
- Xmcd window control. The modechg
command causes the 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 <level#>
- Set the debug
level. When debug level is non-zero, xmcd generates verbose debugging diagnostics
to be displayed on stderr. See the description for the -debug option above
for supported level values.
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.
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 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 UNIX/Open Desktop/Open Server 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 hardware configuration has changed.
If this is not done then xmcd will probably not operate correctly with
your CD drive.
WARNING: If xmcd is not correctly configured, you may cause
xmcd to deliver commands that are not supported by your CD 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).
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 information
and track programming functions are operated via the CD Information subwindow.
You open the subwindow by clicking the CD Information button (file cabinet
symbol) on the main window (See "CD DATABASE" below).
There is not a per-item
description of all the features here, because full on-line help is available
(See "ONLINE HELP" below).
For general information about xmcd,
click the wwwWarp (world symbol) button on the xmcd main window and select
'Xmcd help...' in the menu. 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.
You
can program xmcd to play only certain tracks, in a custom sequence. To do
so, invoke the CD Information window (by clicking the CD Information 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 or spaces,
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 Information window. You may
also Save a program sequence, so that the next time you load the same CD
the program will automatically be applied. The button will also delete
the saved program.
Unless explicitly disabled, xmcd will automatically
query the Gracenote CDDB Music Recognition Service for information about
the loaded CD. This information includes the artist/title, track titles,
genre, and much more, and is displayed on the CD Information window and
several of its sub-windows.
You may also add, modify or enhance the displayed
information, in the rare circumstance that CDDB does not have data pertaining
to your CD, or if the CDDB-supplied data is incomplete or in error. You
can then submit the changes back to CDDB.
You should perform a "submit"
operation (click the Submit button) after typing in the changed information
before ejecting the CD or exiting, or the information will be lost.
The
CD Information 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 information, once queried from CDDB, is stored
in a local cache and managed by the CDDB library. This reduces unnecessary
Internet connections to the CDDB servers. For backward compatibility, this
release of xmcd will also read the old-style local CD database files previously
generated by xmcd versions 1.x and 2.x. No capability is retained in this
release to write/update the old-style CD database files.
For more information
about Gracenote CDDB, read the CDDB file included with this release, and
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 drive'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.
This release supports the following user-selectable
playback modes (via the Options pop-up window):
- Standard playback
When playing an audio CD, the audio output is the analog "line out" connection
on the back of your CD drive. There should be an audio cable connecting
this output to your computer audio hardware CD input (or to an externally
amplfied speaker or stereo system). The audio output is also available
at the CD drive's front panel headphone connection, if so equipped. The
volume control slider bar on xmcd affect the CD drive's built-in volume control,
if the drive has such controls. This is the mode that previous releases
(xmcd version 1.x through 3.0) supported.
- CDDA playback
When playing a CD in this mode, xmcd extracts the CD digital audio data
off the CD drive over the data cable (e.g., SCSI or ATAPI/IDE). Then, it
sends the data to the DSP (digital signal processor) device in your computer's
audio hardware for real-time playback. The audio is typically heard through
the computer's built-in speakers. No signal is produced at the line-out or
headphone connections of the CD drive. The xmcd volume control slider bar
affects the computer's DSP device.
- CDDA save to file
When playing a CD in this mode, xmcd extracts the CD digital audio data
off the CD drive over the data cable (e.g., SCSI or ATAPI/IDE). Then, it
writes the data into a file of your choosing. The xmcd volume control slider
does not affect the data written to the output file. The output file format
can be selected to be one of the following:
Format Ext Description
------ ----- ---------------------------------------
RAW .raw Little-endian, 16 bit, 44.1 kHz, stereo
AU .au Big-endian, 16 bit, 44.1 kHz, stereo
WAV .wav Little-endian, 16 bit, 44.1 kHz, stereo
AIFF .aiff Big-endian, 16 bit, 44.1 kHz, stereo
AIFF-C .aifc Big-endian, 16 bit, 44.1 kHz, stereo
The file can be played later using an appropriate playback utility, or
converted to another format. This mode will typically run faster than real-time.
- CDDA pipe to program
When playing a CD in this mode, xmcd extracts the CD digital audio data
off the CD drive over the data cable (e.g., SCSI or ATAPI/IDE). Then, it
pipes the data stream to an external program that you specify. The output
format is selected as in the CDDA save to file mode. This mode can be used
with an external audio player or an MP3 encoder. The external program must
be capable of accepting audio data on its standard input, in one of the
formats listed above.
More than one of the three CDDA modes can be selected
at the same time. For example, if both the CDDA playback and the CDDA save
to file buttons are selected, the two functions will be performed simultaneously.
Note that on most systems, only one program can access the system's DSP
at a time, therefore you will likely not be able to select CDDA playback
and CDDA pipe to program at the same time, where the external program is
itself an audio player.
NOTE: The CDDA (CD digital audio) modes will function
only on CD drives that provides this capability, and only on some OS and
hardware platforms. See the RELNOTES file for details about platform support
and other CDDA related notes.
There is full localization support
in xmcd if it is compiled with X11R5 or later header files and libraries.
The "classic" CDDB service supplies data in the ISO Latin-1 format only,
multi-byte characters are not supported.
The CDDB2 service supplies data
is in UTF-8 data format, which is identical to ISO Latin-1 for single-byte
characters. Multi-byte character sets are also supported when xmcd is linked
with X11R5 or later. On platforms that provides the iconv(3)
function, xmcd
will attempt to convert UTF-8 strings to the default character set as specified
by the LANG environment variable. This conversion will occur only if the
system's list of locales also support UTF-8. Otherwise xmcd will display the
UTF-8 strings without modification. As distributed, xmcd is configured to
display in a generic family of X fonts denotes similar to the following:
-*-helvetica-bold-o-*--14-140-*
This will normally work correctly with English
and any ISO Latin-1 European character set, as long as your X display server
supports all the required fonts. To display in other languages, you must
set your LANG environment accordingly, and change xmcd to use the appropriate
fonts. That can be accomplished by modifying the various XMcd*classname.fontList
parameters in the XMCDLIB/app-defaults/XMcd file (system wide) or your $HOME/.xmcdcfg/XMcd
file (per-user). Be sure that the fonts you specify is actually supported
by your X display server. See xlsfonts(1)
and your X window system documentation
about font configuration.
Moreover, all titles and descriptions in xmcd
are configurable in the XMcd X resource file. US-English is distributed
by default, but the file may be modified to use any other language as desired.
See "X RESOURCES" above.
Not all platforms and CD drives support
all the features of 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)
, xauth(1)
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.
The LANG environment variable sets the default character set. See
"LOCALIZATION" above.
For the wwwWarp feature, xmcd invokes the Netscape
or Mozilla web browser to display the contents. Xmcd searches a number
of "standard" locations for the web browser executable. If you have multiple
browsers installed and would like to direct xmcd to use a particular executable,
or if your browser executable is installed in a non-standard location, then
you may set the BROWSER_PATH environment variable on the shell command
line to the web browser executable you desire.
An example:
(For Bourne Shell and Korn Shell users):
BROWSER_PATH=/usr/local/bin/netscape; export BROWSER_PATH
(For C Shell users):
setenv BROWSER_PATH /usr/local/bin/netscape
you may put the above command in your $HOME/.profile (sh/ksh) or $HOME/.cshrc
(csh) to set this automatically each time you log in.
The AUDIODEV environment
variable may be used to specify an alternate audio device when running
xmcd in the CDDA playback mode. The default audio device is write method
dependent as follows:
Linux/OSS write method: /dev/dsp
Solaris write method: /dev/audio
$HOME/.cddb2/*
$HOME/.xmcdcfg/*
XMCDLIB/app-defaults/XMcd
XMCDLIB/cdinfo/*
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/*
Xmcd/cda web site: http://www.amb.org/xmcd/
Gracenote web site: http://www.cddb.com/
Xmmix web site: http://www.amb.org/xmmix/
BladeEnc MP3 encoder: http://bladeenc.mp3.no/
Sox audio format conversion utility: http://www.spies.com/Sox/
cda(1)
,
X(1)
, xhost(1)
, xauth(1)
, Xsecurity(1)
, xlsfonts(1)
, bladeenc(1)
, sox(1)
Xmcd's README and INSTALL files
Ti Kan (xmcd@amb.org)
AMB Laboratories, Sunnyvale, CA, U.S.A.
Xmcd also contains code contributed by several dedicated individuals. See
the ACKS file in the xmcd distribution for information.
Comments, suggestions, and bug reports are always welcome.
Table of Contents