Hello there. This is release 0.7 of xplay, a sound player for Sun Sparc machines, which can handle AIFF, .au, and some WAVE files. Binaries and full source are available (though on Solaris, you're better off compiling if you can). The program is offered without warranty on basically freeware terms --- see below for disclaimers and full legalese. Files in this directory include: *) xplay-0.7.tar.Z --- compressed tar of the source code. *) xplay-0.7-SunOS.Z --- compressed SunOS binary *) xplay-0.7-Solaris.Z --- compressed Solaris binary; note that this is compiled against an obsolete Motif release, and you're better off compiling from source if you can. Changes from 0.6 ---------------- 1) Added Solaris support (thanks to Achim Held & Jay Novello for working the kinks out). 2) Added "Stay" toggle, to selectively disable the end-of-play timeout. 3) End-of-play timeout disabled if the "save" dialog box is up. 4) Fixed EOF detection for raw u-law files. Changes from 0.5 ---------------- 1) Added imake support 2) Added volume slider 3) Fixed NASTY bug on Sparc 5's and 10's. Features -------- Aside from AIFF and WAVE support, xplay has three major advantages over, say, /usr/demo/SOUND/play: 1) It adapts the input to the available hardware, doing rate-conversion and converting stereo to mono as required for basic hardware, while taking advantage of the capabilities of the more advanced hardware on Sparc 10s and 5s. This time for sure :-). 2) It has a gui which allows you to pause and rewind, thereby giving you as much control over sound playback on your $10,000 workstation as you already had on your $20 walkman. (If you don't like the gui, you can easily set XPlay.geometry in your X resources, to make it pop up in an out-of-the-way corner of your screen). 3) It can read sound piped to it from other programs, without stuttering. This allows, Web browsers such as Netscape to play sound straight off the Net, without saving it to a file first --- a boon when the files in question are, say, entire radio programs from the Internet Multicasting Service. See the included man page for more information on the interface and options, and on how to use the streaming feature. Compilation ----------- Xplay requires a compiler which understands prototypes; both gcc and acc are known to work. As of this release, there is an Imakefile, and using it is the recommended procedure; the old Makefile is still distributed, however, for those allergic to Imake. (It still gives me the sniffles). The Imakefile has one nonstandard quirk --- if Imake on your system has been configured to use a 'cc' which does not understand prototypes, you MUST uncomment the lines in the Imakefile which override that default. Also, if you're on Solaris, be sure that the code will be compiled with -DSVR4. (Imake should do this for you automatically, but it can't hurt to check). After that, it's the usual routine: % xmkmf -a % make To use the old Makefile (distributed as Makefile.prev), similarly edit the pathnames, and whatever other options may be needed (again, CC, DESTDIR, and sometimes LIBS are popular, and -DSVR4 must be added to CFLAGS on Solaris), and then do % make -f Makefile.prev Installation ------------ The Imakefile generates separate targets to install the program and the man page, so if you're using it (and you already have generated a Makefile with xmkmf), you should do the following: % make install % make install.man If you're not using Imake, Makefile.prev has an `install' target. If you've set the pathnames correctly, it will do the right thing: % make -f Makefile.prev install Porting ------- The intent was to keep Sun-specific code in the file `play.c'; it contains, in particular, everything that talks directly to the audio device driver. Unfortunately, `convert.c' knows more than it should about the capabilities of the underlying hardware. Similarly, `gui.c' contains all the X-specific code (and therefore, in particular, all the Motif dependancies, if you want to port it to a different widget set). Known trouble spots elsewhere: *) the code in `file.c' uses POSIX-style non-blocking I/O. Support for this may not be universal. *) `grok-aiff.c' has an obvious byte-order dependancy in the function IFF_read_extended. *) There is a subtler byte-order dependancy in `grok-au.c', which knows that the file headers of a .au file contain longs in native byte order. Copyright and Disclaimer ------------------------ This program is copyright 1994, 1995 by Robert S. Thau. The program may be redistributed for noncommercial purposes only, so long as all source files contain a prominent notice of when they were last changed, and who changed them. Xplay works for the author, but it is offered as is, and NO WARRANTY IS OFFERED OF SUITABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE; use at your own risk. In general, if your livelihood might ever depend on this program, treat it as if it was thrown together by an overstressed grad student over a couple of weekends. Final word ---------- Share and Enjoy. Robert Thau, rst@ai.mit.edu