NAME CompactPlayer DESCRIPTION CompactPlayer is a CD Audio player for SCSI CD-ROMs, similar to MCDP, YACDP, CDPD, or CDP. CompactPlayer uses the ClassAct GUI toolkit and is compatible with MCDP's CD index files. In fact, MCDP had a heavy influence on CompactPlayer, in particular the SCSI routines. COPYRIGHT AND DISCLAIMER CompactPlayer is Copyright © 1995 Osma Ahvenlampi ClassAct is Copyright © 1995 Phantom Development COMPACTPLAYER IS PROVIDED "AS IS". BY USING COMPACTPLAYER, YOU ACCEPT THE RESPONSIBILITY FOR ANY DAMAGE OR LOSS THAT MAY OCCUR DURING OR BECAUSE OF ITS USE, DIRECTLY OR INDIRECTLY. THE FITNESS OF COMPACTPLAYER FOR ANY USE OR PURPOSE IS NOT GUARANTEED. THE AUTHOR IS NOT, AND CAN NOT BE HELD LIABLE FOR ANYTHING. CompactPlayer is GIFTWARE. If you like CompactPlayer, please send a small gift (a chocolate bar, your own program, $5, or even just a postcard) to me. My address is in the end of this document. By doing this you encourage further development of quality Amiga programs. COMPATIBILITY CompactPlayer has been developed and tested on an Amiga 3000 and Toshiba XM3601B, using AmigaOS 3.1. The SCSI chip used was the -4PROTO model. Compatibility with other CD-ROM devices is unknown. Due to notorious incompatibility between various so-called "standard" SCSI-2 devices, especially CD-ROMs, it is very likely that this program will have problems with some installations. It may even lock up the whole SCSI bus, forcing you to reboot. You have been warned. However, I hope this works for you, because it IS a rather neat little program ;) USAGE CompactPlayer understands the following tooltypes or command line arguments: DEVICE The SCSI device driver to use. Default: scsi.device UNIT The SCSI ID of the CD-ROM. Default: 6 PUBSCREEN The screen to open the interface on. INDEXPATH The directory where the CD descriptor files reside. XPOS,YPOS The initial coordinates of the interface. TINYFONT The small proportional font used. PANELFONT The nonproportional font used for the status panel. Other than that, insert a CD, press the "play" button. ;) The status panel gadget displays the following information: First line: ("xx xx:xx xx:xx xx:xx xx:xx") - The number of tracks on the CD, or the current track when playing. - Current playing of this track. - Remaining time on this track. - Current playing time from the beginning of the CD. - Total lenght of the CD. Second line: The artist name of the CD. Third line: The CD title or the name of the current track. Fourth line: a graph displaying the relative lenghts of the tracks on the CD, with a plotted line above it displaying the parts that have been played. In the lower right corner is a small icon displaying the current status of the player. Possible icons are "play", "stop", "paused", empty, and a question mark signifying that CompactPlayer thinks the CD tray is ejected. See the note below about the latter. Below the status panel is a simple row of normal tape deck controls. The "rewind" and "fast forward" buttons have two modes. When not playing, they will select the track where playing should begin, when playing they function as seek buttons, seeking on the CD at 10 times normal speed. On the right is a listview of the CD tracks. Selecting a title will make CompactPlayer seek to that track and start playing. Above the listview are buttons for bringing up the title and program editor windows. Unfortunately the program editor is as of now still unimplemented, but the title editor exists. In the title editor you will see two string gadgets for the artist and CD names, and below them a listview of the tracks on the CD and a string gadget for editing the track titles. Select a track and type in the name. After filling all the information about the CD, press the Save Titles button to save the titles in a file in the directory set with the INDEXPATH tooltype. CompactPlayer will now recognise the CD when inserted and display the names of the tracks instead of just numbers. In the menus is available a third window for selecting the device used by CompactPlayer to access the CD-ROM. In this window, choose the SCSI device to which the CD-ROM is connected, wait a while for CompactPlayer to scan the SCSI bus, and then choose the CD-ROM from the device list on the right. After this, click on "Use this". CompactPlayer is also keyboard controllable. The keys are: Space -- Play/Pause, load tray if ejected. Enter -- Stop/Eject T -- Open title editor Cursor Up -- Select previous track Cursor Down -- Select next track Cursor Left -- Seek backwards Cursor Right -- Seek forwards CompactPlayer interface can be zoomed to only the panel gadget, or iconified completely using the title bar gadgets. AREXX PORT CompactPlayer also has an ARexx interface. The commands understood are: PLAY TRACK/N Play (selected track) STOP Stop playing PAUSE Pause playing RESUME Resume playing after a pause EJECT Eject tray LOAD Load tray QUIT Exit CompactPlayer ACTIVATE Uniconify CompactPlayer, bring it to front. DEACTIVATE Iconify CompactPlayer. NOTE ABOUT CD TRAY EJECTION CompactPlayer supports retracting the CD tray when it has been ejected. However, to my best knowledge it is not possible to query a CD-ROM drive whether the tray is out or not via standard SCSI-2 commands. Because of this CompactPlayer keeps track of this internally, which will not work 100% if you use the manual controls on the CD-ROM drive. This means that CompactPlayer could think that the tray is out when it is not, and vice versa. For SCSI-2, there seems to be no difference between ejected CD tray and empty CD-ROM drive. If someone knows more about this, I'd like to hear about it. AUTHOR Osma Ahvenlampi Osma Ahvenlampi Rekipellontie 2 F 55 00940 Helsinki Finland A BLATANT PLUG Don't forget to check out Voodoo, the definitive Amiga email program. A demo version of Voodoo is now available on the World Wide Web at http://www.niksula.cs.hut.fi/~oahvenla/voodoo/, and by FTP at ftp://ftp.warped.com/pub/amiga/voodoo/. ANOTHER ADVERTISEMENT If you're a developer, consider using the ClassAct toolkit for your programs! ClassAct makes GUI development a breeze. More information is available at http://www.pcnet.com/~caldi or by sending email to caldi@pcnet.com. The source code to CompactPlayer has been included to assist evaluating ClassAct. It will not compile without the ClassAct developer kit. It is not documented too much, but should be pretty easy to read anyhow. HISTORY 1.7 Number keys select track. Utilised the V41 layout.gagdet NoDispose attribute for better main window zoom. Um, what the hell? V40 graphics.library/WritePixelLine8() erases the source array while writing it to the rastport? Nice feature. Double-caching the source to avoid that crap. Fixed a bug in the status panel gadget that made it die on native displays. I only tested it on CyberGraphX... 1.6 Added a partial cd.device interface. It's very buggy though, I wasn't able to abort a play command with it, although I tried to follow the autodoc instructions. Thus, I didn't finish it. Localised the interface. Made the main window zoomable. Converted the title list editor to use in-place listview edit. Added an ARexx port. Wasn't setting rastport draw mode in the status panel gadget, so some renders didn't work. Editing disc title doesn't reset status panel when disc is playing. Reset artist and disc titles for new discs. 1.5 Added a device/unit selection window, iconification, and a simple menu. 1.4 Added SCSI device type checking, fixed another memory free problem. 1.3 Converted to use the ClassAct WindowClass. 1.2 Was freeing some memory twice, how nasty of me. 1.1 Eject uses SCSI direct, because TD_EJECT was dangerous with some controllers. Implemented a kludge that retries a play operation until it succeeds. At least the Toshiba XM3601B I have has a tendency to abort PLAY_AUDIO silently just after a media change.