
============================================================================
                         EdPlayer version 1.1
                             by Ed Mackey
============================================================================

All new releases and upgrades of PD/Shareware/Freeware by Ed & Al Mackey
(such as EdPlayer) are uploaded FIRST to our official support BBS:
     ____   __          ___  ___  _____  __   
    /      /  \ |\  /| |__  |___)   |   /  \ |\ |            On-Line
    \____  \__/ | \/ | |___ |  \    |   \__/ | \|          Information
       __\______  ___       ___  ___  __                     Systems
     ____/ |     |__  |    |__  /    /  \ |\  /| |\  /|
           |     |___ |___ |___ \___ \__/ | \/ | | \/ |   Est. 10/17/87
           |
           |    Modem: (215) 464-6775       HST: (215) 464-4461

 Supporting:    Amiga/IBM/Mac/][gs/UNIX     Storage:    670 Megabytes
 Message Confs: 160+ (23 Specific Forums)   File Areas: 50+ (& Personal)
 Active Nodes:  8 (Soon to be 12 Nodes)     PCPursuit:  PAPHI
 Baud Rates:    3/12/24/48/96/14.4 (HST)    Graphics:   ANSI/IBM/SkyPix
 Online Doors:  30+ (6+ Categories)         Location:   Philadelphia, PA
 FIDOnet:       * Coming Soon *             Users from: U.S./Canada/Europe     

 Features:      Teleconferencing            Global 'GO' Commands
                Multi-Player Games          Inter-User Chatting
                Live Conference RPG's       ANSI & Skypix Pictures
                Areas on ALL Topics         Special Over & Under 18 Bases
                Friendly Staff              Over 500 Active Users

============================================================================

The sysop of Somerton is Eric Parkin, a good friend of mine.  If you call
his board in the evening or at night, there's a chance you might meet me
or Al (or both) messing around in the live teleconference area.  Such fun
it is to have a BBS that understands multitasking, and has so many phone
lines going into it.  It's running on an Amiga with a 25MHz '030.
But enough about that...  You came here to read about EdPlayer...

----------------------------------------------------------------------------

ORGANIZATION OF THIS FILE:
    This file is organized so that you don't have to read all of it at
once, but can skip to the part you want or need.  Aren't you glad??

I.   INTRODUCTION  -- Please read!!  Then you can fiddle with the buttons.
II.  THE BUTTONS   -- After you fiddled, read this if you don't "get it".
III. LED DISPLAY   -- What all the blinking things mean.
IV.  AREXX/TELLED  -- Another way of controlling EdP.  ARexx is OPTIONAL!
V.   ERROR CODES   -- Errors and POSSIBLE CAUSES!  Read if/when you get one.
VI.  WHEW!         -- This has my address and some useful info!

============================================================================

                          I N T R O D U C T I O N

============================================================================

Hello, and welcome to EdPlayer!!

First, distribution:  EdPlayer is shareware.  You can distribute it by any
means, including BBSs, PD disks, and FTP services like AB20, etc.  You can
also distribute EdPlayer with your own programs, as long as you include a
note that EdPlayer is freely distributable, and do not make any copyright
claims on EdPlayer.  If you want to distribute EdPlayer with a commercial
package, please contact me first (address at end of document).  I would
LIKE for you to keep this document with EdPlayer whenever possible, because
many important things are explained here (like EdPlayer's ARexx interface)
that aren't explained anywhere else.  However, if you MUST distribute
EdPlayer without this file, you may.  Also, note that if you distribute the
kd_freq.library, you MUST keep its DOC file with it.  This is explained
later in this file, in the "Buttons" section under "OPEN", the only button
that uses the kd_freq.library.

                    EdPlayer is copyright 1991 Ed Mackey.
----------------------------------------------------------------------------

BUT, what IS it??

EdPlayer is a music player.  It can play both NoiseTracker modules and
MED version 3.10 (or greater??) modules.  Note that SOME MED 3.00 modules
will work also, however, others will show up as "Unknown or corrupt module"
because MED 3.00 had a serious bug in the module-saving routines (it didn't
word-align the chunks sometimes, and caused other MED players to GURU, but
EdPlayer has a check for this and will only report a "corrupt module"
error).  To fix a MED 3.00 or earlier module, simply load it into MED 3.10
and save it back out as a MODULE.  As far as NoiseTracker modules go, I
have an early version of the NoiseTracker player (the same one I used in my
game MegaBall.  The source code said "Mahoney & Kaktus, Hallonsoft" and is
freely distributable to the best of my knowledge).

What EdPlayer can be used for:

I had MANY uses in mind as I was designing EdPlayer.  I wanted a music
player that could be used directly for entertainment, or multitask while
the user did word-processing or whatever, and also be able to run from both
ARexx and CLI scripts for use in IFF slide shows, presentations with
background music (AmigaVision, DVideo III, Director 2, etc.), music for
games written in AmigaBasic or other languages for which there are no
music-playing routines available, and basically any situation at all where
someone wants their Amiga to play some tunes.   ;->

----------------------------------------------------------------------------
Starting EdPlayer:  There are four ways to start EdPlayer...
 ---> (1) Workbench Icon.        Brings up some CD-player like controls.
      (2) CLI: "run EdPlayer"    Also brings up the CD controls.
      (3) CLI: "run EdPlayer -i" Brings up a tiny "iconified" WB window.
      (4) CLI: "run EdPlayer -h" NO user interface, ARexx port ONLY!

Note that I recommend using the "runback" command rather than "run" if you
have it, so that the CLI window itself can close before EdPlayer does.
NOTE: A simmilar effect can be achieved with "run <NIL: >NIL: EdPlayer".

Note that ALL 4 startup methods open the EDPLAYER message port, which can
accept instructions from AREXX (if you have it) as well as the "telled"
command explained below.
----------------------------------------------------------------------------

OK, now that you know how to run it, you can start playing with it even
before you finish reading these DOCs.  This is because there is an ONLINE
HELP FUNCTION that is self-explanatory.  However, this function includes a
lot of scrolling text, and so when you get tired of reading that, you can
come back here because ALL OF THE ONLINE HELP IS ALSO AVAILABLE HERE IN THE
DOCs.  Plus, some features, like the AREXX port, are ONLY described here in
the DOCs!!

============================================================================

              A N D   N O W ,   T H E   B U T T O N S :

============================================================================

If you're reading this, I hope you have tried playing with EdPlayer a bit. 
You know that there are a lot of buttons on the main panel that appears
when you run the program.  Here they are, left-to-right, slowly working
downward from the top.  (There are no keyboard equivalents for any of
these buttons in this release.  You'll have to use your mouse.  Sorry).

POWER:  This exits EdPlayer rather immediately.  No "Are you Sure?" prompts
        or anything, because they sometimes annoy me.  Of course, all the
        proper shutdown routines are run, such as unloading the current
        song, etc.  Note that the close gadget in the "iconified" WB window
        has this same function (see ICONIFY below).
        (ARexx/telled users: see KILL, SELF in ARexx section)

"T":  Tempo control.  NoiseTracker modules can have different tempos
      depending on whether you are in PAL or NTSC mode.  This button
      toggles between the two tempos, with the current status appearing in
      the LED display.  Note that this option is memorized "per song" in
      program mode (see PRG below).
      (ARexx/telled users: see PALM, NORM, NTSC in ARexx section)

HELP:  This is the "Online Help Function."  I call it "online" because you
       can get help while you are using EdPlayer.  (Of couse, this being an
       Amiga, you can multitask and get help from the DOCs while you are
       using EdPlayer too.  Oh, never mind.)  Anyway, you click here to
       turn help on, then click on the buttons you want help with, and then
       click here again to turn help back off.

"|<":  EJECTs current song, moves to previous program selection, and
       displays title of that selection.  You can use this to flip through
       a program, select where you want to start, and press PLAY to start.
       (see PRG below).
       (ARexx/telled users: see PREV in ARexx section)

">|":  Same as "|<" above, but moves to NEXT prg selection rather than the
       previous one.
       (ARexx/telled users: see NEXT in ARexx section)

PRG:  OK, now it's time to explain programs.  A "program" is a list of
      module filenames that EdPlayer can memorize, along with two options
      per name (PAL / NTSC and FADE / NO FADE).  When such a list exists,
      EdPlayer will attempt at the end of each song to load and play the
      next song in the program, using the options for that song.  The two
      buttons listed above this one scroll through the program.  Sorry, but
      in this version there is no "Random play" function.  I do plan to
      add it in a later version, however.  Now about the PRG button itself:
      Be careful with this button!!  It's main use is for ERASING the
      current program!  This is because CREATING programs is more easily
      done with the OPEN button described below.  If EdPlayer has a program
      in memory, the "PRG" LED will light up on the display.
      (ARexx/telled users: see JUKE, LOAD in ARexx section)

EJECT "^":  Unloads current song, freeing lots of CHIP memory.  Does NOT
            erase current program.
            (ARexx/telled users: see EJEC in ARexx section)

OPEN:  For this one, you need the kd_freq.library version 2.0 or higher in
       your LIBS: directory!  This library might have come with the
       EdPlayer archive, because its copyright notice is as follows:

>>If you want to use 'kd_freq.library' in any freely distributable program,
>>you may include the 'kd_freq.library' file as long as you also include the
>>'FR_User.DOC' file and mention 'Copyright 1990  Khalid Aldoseri'.

       Oh yes, the author of this library, Khalid Aldoseri, can be reached
       at the following address:
                        Khalid Aldoseri
                        P.O. Box 505
                        Manama, Bahrain.
                        Fax: (973) 694777
                      Compuserve 75166,2531
       And I almost forgot to mention that this library is Copyright 1990
       Khalid Aldoseri.  Now that you have the kd_freq.library, you can use
       the EdPlayer OPEN button to bring up it's file requester.  With this
       requestor, you should select the filename of a module you want to
       hear.  If there is no program, the song will load and begin to play.
       However, if there IS a program (even an empty one created with PRG),
       the song's name will be added to the program.  NOTE THAT A MUCH
       EASIER way to make programs is with the file requester's "Extended
       Select" feature.  To use this, hold down the SHIFT key and click
       several module filenames.  As you click them, they light up, and
       when you press "OK", ALL of the filenames will be added, in
       alphabetical order, to the END of the current program.  If no
       program exists when you use this feature, one will automatically be
       created.  To start any program, press PLAY.
***    NEW for EdP v1.1:  EdPlayer can now use the req.library if it can't
       find the kd_freq.library.  You have to be a little more careful
       with req, however:  it lets you specify drive names ("DF0:") instead
       of volume names ("MyMods1:") so if you have 30 disks and you
       program them all as DF0:something, you're going to be CONFUSED!!
       (ARexx/telled users: see LOAD, PLAY, JUKE in ARexx section)

PLAY "|>":  This button has many functions.  If no song is loaded, it will
            try to get a module name from the program and load & play it.
            If a song IS loaded, but not playing, it will ignore the
            program and play the current song.  If a song is ALREADY
            playing, this button will PAUSE it (either immediately or
            fade-to-pause, see FADE).  Finally, if a song is paused, and
            you press this, the song will continue, either immediately or
            fade-back-in (see FADE again).
            (ARexx/telled users: see PLAY, PAUS, CONT in ARexx section)

STOP:  This button has a square on it.  It stops the music IMMEDIATELY,
       regardless of the state of the "fade" light.  If you want a
       fade-out, fade to a PAUSE and then press STOP.  I made it this way
       because I found that in practice, when people press STOP, they just
       want the music to STOP right there because they're debugging or
       something, and fading is mostly for song changes in a program.
       NOTE that you can NOT continue after a STOP!  You must start again
       from the beginning of that song.  If you wanted to continue, you
       should have pressed PAUSE (a function of the PLAY button above).
       (ARexx/telled users: see STOP, FADE in ARexx section)

LOOP:  This button has a little curved arrow on it, signifying a loop.  It
       will toggle on and off the similar-looking LOOP LED on the display.
       When this LED is lit, the current song will loop to the beginning
       (or wherever the composer decided it would loop to) and keep
       playing.  In program mode, each song will come to an end, but the
       whole program will loop when it runs out of titles.  When this LED
       is NOT lit, the current song will end (either immediately or
       fade-to-stop, see FADE) and in program mode, the program will end
       when it runs out of titles (but it won't be erased).  Note that
       certain MED modules have a special "STOP" command ($FFE) encoded
       into the end of the song, and these modules will NEVER LOOP,
       regardless of this button.
       (ARexx/telled users: see LOOP, AUTO in ARexx section)

FADE:  This button has a triangle that is supposed to signify volume fading
       away (sort of).  Whenever you use PAUSE or CONTINUE, or when the
       song reaches an end just before a program change, the song can
       either stop/start immediately, or gradually fade out/in.
       NOTE the two kinds of music modules:
         1) The kind where the music comes to a nice stopping point at
            the end, and doesn't need to loop.
         2) The kind where the end of the score sounds like it should
            keep going!  Then it loops to somewhere in the middle.  These
            tunes appear to have NO stopping place, because anywhere you
            stop them makes it sound abruptly cut off.
       Most module players only handle the first kind of tune.  But with
       EdPlayer's FADE function, a song of the second type can loop when
       it reaches the end, and then fade to a stop in part of the song
       you already heard (where it will be after a loop, obviously).
       This puts a very nice pseudo-ending on an otherwise endless tune.
       HOWEVER, if you apply this to a song of the first type, you get
       something that sounds like it stops, re-starts, and then fades.
       A LOT of people reported this as a BUG!  Well, it's **NOT**!!!
       Just turn FADE OFF for those songs, with this nice FADE button!  The
       button toggles on and off the similar-looking FADE LED on the
       display.  When this LED is lit, EdPlayer will try to fade the song
       as mentioned.  When this LED is dark, EdPlayer will just do instant
       stops and starts.  If a song comes to an end, and LOOP is off (or
       program is on) and FADE is on, the song will LOOP anyway, but begin
       fading to a stop, and the program change will occour after the fade.
       Note that this button has NO effect on (1) the STOP button or (2)
       MED modules that have the special STOP effect ($FFE) encoded into
       them.  However, these MED modules WILL trigger program changes, of
       course.  SETTING the fade rate:  see the "PAUS" command in the
       ARexx section!!
       (ARexx/telled users: see PAUS, LOOP, AUTO, FADE in ARexx section)

FILTER:  This button looks like a dot with little waves coming out of it.
         It has a similar-looking FILTER LED on the display panel that
         shows the status of the Amiga's audio filter, which is also
         displayed by your Amiga's so-called "power" LED.  I have no clue
         why the Amiga's power LED does this.  If anyone knows please tell
         me.  Anyway, this button turns it on and off, however, this is THE
         most useless feature in all of EdPlayer, because the filter is
         also automatically handled by the music playing routines.
         (ARexx/telled users: You can't blink the filter!  Ha, ha!!
          You'll just have to live without this oh-so-useful function.)

ICONIFY:  This button looks like a WB 1.3 back gadget, but it's NOT the one
          in the title bar.  It gets rid of the CD-player like controls,
          saving a bit of CHIP mem, and produces a tiny "iconified" window
          on the WB screen.  This window has only two options: The close
          gadget will exit EdPlayer (see Power above), and the right mouse
          button, if pressed when the window is selected, will bring back
          the CD-player look.  Of course, all the EdPlayer functions remain
          in effect in this mode, like program changes and ARexx messages. 
          Plus, this mode saves a bunch of CPU time, because EdPlayer can
          sleep rather than updating the display every video cycle.  If you
          REALLY need to conserve memory, you should hide EdPlayer
          altogether and then close the WB screen, using one of the ARexx
          commands and then some utility for closing WB:
          (ARexx/telled users: see MENU, ICON, HIDE in ARexx section)

DISPLAY:  This button looks like two calculator 8's.  It toggles between
          four display modes, described in the LED Display section below.

MIDI:  This button is supposed to look like a MIDI plug.  Sort of.  Anyway,
       it toggles MIDI on and off.  The MIDI LED on the display shows the
       current status of MIDI.  When the light is off, your serial port is
       free for things like downloading, etc., and when the light is on,
       the serial port is allocated for MED modules to send MIDI data with.
       Note to midi.library users!!!!  See "MIDL" in ARexx section!
       (ARexx/telled users: see MIDI, MIDL, NOMI in ARexx section)

VOLUME SLIDE:  Well, what do YOU think it does?  It controls the volume of
               a piece of music.  Also, it might NOT be such a good idea to
               fuss around with this thing while the music is already
               trying to FADE in/out of its own accord due to the FADE LED.
               (ARexx/telled users: see VOLU in ARexx section)

INFO BAR:  You can click in the space between EdPlayer's "feet" to display
           the name and author info of the current song.  Also, this space
           shows other useful stuff like the online help, and the version
           info when you first start EdPlayer or when you come out of an
           Iconify or HIDE.  NOTE TO MODULE AUTHORS:  If you want to create
           some "author info" to appear in this bar whenever your module
           plays, there are 2 ways:  (1) For NT-MODs:  Create some
           instrument names preceded by a "#".  Each instrument name in the
           NT-MOD that starts with a # will be linked together (add your
           own spaces!) and displayed in the bar.  (2) For MED MODs:
           Create an "annotext" as the MED documentation describes.
           SPECIAL EFFECTS:  EdPlayer can handle some neat effects in the
           author info of a module (NT OR MED).  These effects all start
           with a <`> mark, NOT to be confused with the more ordinary <'>
           mark.  PLEASE NOTICE the difference between ` and ' !!!!
           The ` key, on my American keyboard, is in the top-left, just
           under the ESC key.
           Here are the effects:  (lowercase letters ONLY!)
                     `s  =  SLOW.  Text will scroll at 1/4 normal speed.
                     `n  =  NORMAL.  Text resumes normal scroll speed.
                     `f  =  FAST.  Text goes THREE TIMES normal speed!!

                     `r  =  RED.  Text from here on will be red.
                     `y  =  YELLOW
                     `g  =  GREEN
                     `t  =  TAN   (EdPlayer's tanish color used on buttons)
                     `p  =  ICKY, ICKY PURPLE!!
                     `w  =  WHITE, the default.

                     ``  =  ` (if you really want a ` mark to appear).

           To use any of these effects, just insert them in the author text
           of your module.  Note that using a ` mark at all will FORCE the
           text to scroll, even if it was short enough to fit all on the
           lo-res screen at once (NOT LIKELEY!!).

============================================================================

                           L E D   D I S P L A Y

============================================================================

Ah, such a complicated, confusing display.  Not really!  It's pretty simple
when you break it down.

OK, I'm going to start in the BOTTOM-LEFT, and go RIGHT.  You'd better be
looking at the display while you're reading this (I'm looking at it while
I write it)!  First, in the bottom-left, you see the PRG LED.  It's
probably dark, so look very closely.  It only lights up if you have a
"program" active (see PRG in the button section above).  Next, to the right
of PRG, is a little bent arrow.  This is the LOOP LED (see LOOP in the
button section).  To the right of that is the FADE LED which, by default,
is lit up when EdPlayer starts (see FADE in the button section above). 
Then there is the FILTER LED (again, see FILTER above).  Then there are two
LEDs that say "PAL" and "NTSC".  When EdPlayer starts, whichever mode you
are in should be lit up.  You can change this for tempo correction of
NoiseTracker modules, but they BOTH go dark for MED modules which need no
such correction.  To change it, see "T" (Tempo) in... you guessed it... the
button section, above.
----------------------------------------------------------------------------
AND NOW, THE LEDs which are *NOT* explained in the button section, above.
                      YEAH!!

To the right of PAL/NTSC you see something like a four-bar VU-meter.  As
the Amiga has four built-in voices, it shouldn't be too hard to figure out
what this does.  Fun to watch when playing a song!  To the right of that,
you see a few LEDs (we're now as far right as we can go)!  The "NT-MOD"
will light up when EdPlayer has a NoiseTracker module loaded, and
"MED 3.10" will light up when there is a MED module loaded.  "PAUSE" will
light up when in pause mode, and will BLINK when EdPlayer is FADEing to a
pause.  The "MIDI" light is special:  The whole MIDI thing lights up when
MIDI (direct or midi.library) is active, BUT, when a song is playing, the
five red dots (representing MIDI prongs on the end of a MIDI cable) will go
dark again, and BLINK as MIDI messages are passed out of EdPlayer!  I think
this is a neat effect during MIDI songs.
----------------------------------------------------------------------------
And finally, the digits.  These digits are controlled by the "Display"
button (which looks like two calculator 8's) and have FOUR MODES.

MODE 1:  Below the digits you see TRACK, POS, and TOTAL.  When a song is
         loaded, it's current position will be displayed above "POS",
         with the total number of positions being displayed above "TOTAL."
         Above "TRACK" you may see a program number, if this song is
         part of a program.  SPECIAL CASE:  If you are in a program, but no
         song is currently loaded, the "POS" will disappear, allowing
         "TRACK" and "TOTAL" to work together, displaying the current and
         total number of songs in the program, respectively.

MODE 2:  In this mode, you see LINE, POS, and PATT below the digits.  The
         "Pos" light is exactly the same as in mode 1, displaying the
         song's position.  The "LINE" shows a much more exact position
         inside the POS itself, and "PATT" shows the current pattern
         number being displayed.  This mode is for people who like to
         follow the progress of their songs through the player, and also
         for people like myself who just want to see all the busy, changing
         numbers going on.

MODE 3:  This mode just displays your Amiga's system time.  You can
         distinguish this mode by the "AM" or "PM" that lights up.  To set
         the time, just use the AmigaDOS "Date" command, or some other
         utility.  Actually, if you have a battery-backed-up clock in your
         Amiga, the time should already be set from your startup-sequence
         via the "SetClock Load" command.  Why am I explaining this?!
         Go read your Amiga's manual if you're confused!

MODE 4:  This mode just displays the system date, in MONTH, DAY, YEAR
         format.  You can distinguish this mode from the others because NO
         funny LEDs like "Track" or "AM" or even ":" or "/" come on.
         To set the date, see MODE 3 above.

Well that about wraps it up for the LED display.  Oh yes, if EdPlayer tries
to display a number greater than 99, two dashes "--" should appear instead.
Also, the two dashes appear above "TRACK" when there is a program, but no
selection in the program is "current".  Pressing PLAY at this point will
move the current selection to 01 if necessary before loading & playing.

Note that there is NO LIMIT on the number of songs in a program!!  NOT 99,
NOT 65536, OR ANYTHING LIKE THAT!  This is because I used Amiga exec's
wonderful doubly-linked lists to handle the list of names.  SO, you can
keep adding names to a program until your whole Amiga's memory is full of
nothing but filenames, and you may not have enough memory left to actually
load a song, but you will NEVER get a "Too many names in Program" error. 
Well, actually, if the memory allocation for the filename storage fails,
you can get an out-of-memory error from EdPlayer, but if you're THAT close
to being out of memory, you're probably headed for a GURU real soon!
Anyway, just thinking about typing all those millions of filenames makes my
fingers hurt!

============================================================================

                  A R E X X / T E L L E D   S E C T I O N

============================================================================

EdPlayer has a special message port.  This port is more than an ARexx port,
because it can accept both ARexx messages and special "EdPlayer" messages
in the same port.  The reason for this is that some unfortuneate people
still don't have ARexx!  What are you guys waiting for??

Anyway, included in this archive are two programs and their respective
source codes, called "Telled" (Telled.asm) and "cteled" (cteled.c).  The
two are almost identical:  Telled was written in Assembly, being as SMALL
as possible, for easy use in script files.  Cteled was written in Aztec C,
and is somewhat larger because it actually returns error messages on the
screen.  Both of these programs transmit the special "EdPlayer" messages so
that ARexx is not required.  Their source codes are provided in case you
want to write your own programs that transmit these messages.  However, it
is STRONGLY RECOMMENDED that you look up in your ARexx manual the proper
way of sending true ARexx messages, so that you know how to send messages to
other ARexx applications, not just EdPlayer.

For those of you making script files:  If you have ARexx, you'll almost
certainly want to make ARexx scripts instead of CLI scripts.  For that,
use an "address 'EDPLAYER'" type command.  Again, see your ARexx manual for
more details (Are they giving out ARexx manuals with new WB 2.0?  I sure
hope so!  Will someone with WB 2.0 please tell me how much ARexx 
documentation came with it?)  ANYWAY, for you people without ARexx, you're
stuck making CLI scripts!  For this, use "telled" or "cteled" as described
here:  NOTE!: the parameters are different.  Telled does NOT use quotes,
while cteled DOES:

CORRECT:
     >>>>   telled PLAY mod.cream of the earth
;Note that telled NEVER needs any quotes no matter how many spaces are
;in the line.

     >>>>   cteled "PLAY mod.cream of the earth"
;Note that cteled NEEDS quotes, and all parameters go in the SAME
;set of quotes, because EdPlayer will parse it, NOT cteled.

     >>>>   telled play mod.cream of the earth
;*** NEW for EdP v1.1: Commands are no longer case-sensitive,
;    EXCEPT the parameter on the "MIDL" command which needs to be
;    case-sensitive for looking up a midi_destination.

INCORRECT:
            telled "PLAY mod.test module"   ;telled NEVER needs quotes
                   X                    X

            cteled "PLAY" "mod.test module" ;put ALL in one set of quotes
                        X X

Well, I hope you can get the hang of that.  There should be some example
scripts in the archive, for more examples of sending commands.

----------------------------------------------------------------------------

Now it's time for a complete list of commands.  Note that you may give ANY
of these commands to EdPlayer by (1) using the CLI to issue "telled" or
"cteled" as shown above, or (2) send the commands via ARexx to the ARexx
port "EDPLAYER" (port name is all caps).

I'll list the commands in the order they were created.  Note that each one
is FOUR LETTERS.  Any needed parameters should follow the command, separated
from it by ONE SPACE.

Parameters in [<brackets>] are optional.

Parameters in <these things> are required!

LOAD <filename>
       This command is used to load a module into EdPlayer.  EdPlayer
       automatically figures out what module type it is, but does not yet
       start to play it.  This command can NOT be used with programs!  It
       erases the current program.  If you want to use programs, see JUKE
       below.  Anyway, LOAD will wait until the module finishes loading
       before it returns, so it can report if there was an error or not.
       Note:  ALWAYS use a FULL PATH with LOAD, because the current
       directory of EdPlayer may not match the current directory of the
       program sending the command.
***    NEW for EdP v1.1:  If you want to load a PP encrypted module, you
       can do this:   LOAD volume:path/modulename|password
       (Please note the LACK of spaces around the "|").
       If you don't give a password when needed, a password requester opens.

PLAY [<filename>]
       This command can be used with or without the parameter.  If it is
       given with no parameter, it will attempt to play the current song. 
       If there is a parameter, it will call LOAD first, and then PLAY.  
       This command will wait for the module to load, so it can report
       errors like LOAD does, but it will return once the song begins to
       play.  Note:  This is NOT the same as the PLAY button on the CD,
       because there is no PAUSE feature here, and neither is there
       auto-loading from the current program.  For these features,
       see PAUS, CONT, and NEXT.

STOP
       Stops the music immediately, just like the STOP button.

EJEC
       EJECts the current song, un-loading it from your CHIP mem.
       (Just like the EJECT button!)  Does nothing to your program.
       see ERAS

VOLU <volume>
       Sets the music's volume, and affects the volume slide on the CD
       player panel.  <volume> can be an integer from 0 to 64.
       see FADE

PAUS [<rate>]
       This will pause the music.  If there is no parameter, the music will
       pause immediately.  If there is a <rate>, then the music will fade
       to a pause.  Common <rate>s are:  1 = Very slow, 2 = slow,
       4 = initial default fade rate from CD panel, 8 = medium fast, 16 =
       fast. Integers from 1 to 32 usually work OK.  NOTE: Entering a new
       PAUSE rate may not affect the end-of-song fade-out rate, BUT, it
       WILL set a new default for the panel's rate for everything.  So next
       time someone uses the panel to fade something, it will happen in the
       last-used <rate>.  This side-effect on the panel goes for ALL
       EdPlayer commands that use <rate>, such as CONT, AUTO, FADE, etc.
       It is, in fact, the ONLY way to set the panel's fade rate!  Maybe
       in future versions there could be a slider or something so that the
       rate can be set from the panel itself?....
       see CONT.

CONT [<rate>]
       This will make the music continue, if it has been PAUSed.  If no
       <rate> is given, the rate from the last PAUS will be used.  For a
       description of <rate>s, see PAUS.

FADE [<rate>]
       This is for fading the song to a STOP.  You cannot continue after
       this!!  The <rate> works like in PAUS, except that if it is not
       specified, it defaults to 4, taking the panel's rate to 4 along
       with it, probably.  (Yet another feature that needs testing!)

AUTO [<rate>]
       This command is for automatically getting a song (or program) to
       stop at the end (this is the default when EdPlayer starts).  If no
       <rate> is specified, the song will stop immediately when it reaches
       the end, otherwise, the song will loop and start to fade to a stop
       at the specified <rate>.  During programs, it will set the fade-out
       rate at the end of each song, as well as telling the program not
       to loop.  If you set this rate but still want your program to loop,
       just issue a LOOP command afterwards.  For a descripton of <rate>s,
       see PAUS.

LOOP
       The current song or program will loop and keep playing, instead of
       stopping, when it reaches the end.  This is the opposite of AUTO.

KILL
       This has the same effect as pressing the "Power" button:  The
       current song STOPs, gets EJECted, the program is erased, and then
       EdPlayer exits the system, all very quickly.  It's a good idea to
       ask the user if he/she wants this before you send a KILL command.

JUMP <position>
       This is an interesting command.  It tells EdPlayer that on the next
       position change (a position currently shows up as "POS" on the
       CD panel), the music should jump to the specified position rather
       than just proceeding to the next one.  My brother created a perfect
       example of what this can be used for:  He wrote a module (in MED)
       that had several sections, each section ending in a $B command for
       looping.  Then he turned EdPlayer's LOOP on, and in a DeluxeVideoIII
       presentation, had EdPlayer start playing this song.  Of course, it
       got caught in the first looping section.  But then, as the
       presentation continued (it was more like a game actually), he sent
       JUMP commands to EdPlayer to play the different sections.  As the
       user moved from one part to the next, the music changed to match the
       current place in the game.  It was a really neat effect.  Anyway, if
       this DVideo game ever becomes playable, I'm sure he'll distribute
       it....

SELF [<rate>]
       This command works exactly like AUTO, except that at the end of the
       song's fade-out, EdPlayer KILLs itself (exits the system).  I don't
       think I ever updated this command for use with programs, because
       quite frankly I never found a use for it myself.  If you use it, and
       want it updated, tell me!  (SELF stands for SELF-destruct)
       (Updating would mean having it wait for the end of a program, rather
       than the end of a song, before the self-destruct.)

NORM
       This command is for controlling the tempo correction on NoiseTracker
       modules.  It sets it back to NORMal, with no correction.
       see NTSC, PALM

NTSC
       This command is like NORM, but if EdPlayer thinks your machine is
       running in PAL Mode, it will try to make NT modules sound like they
       are being played at NTSC tempo.  If you execute NTSC on an NTSC
       machine, EdPlayer should automatically call NORM instead.
       see NORM, PALM

PALM
       (PALM = PAL Mode)  This command is the opposite of NTSC:  If you
       have an NTSC machine, EdPlayer will try to make the modules sound
       like they are being played at PAL tempo.  If you call PALM on a PAL
       machine, EdPlayer should do a NORM instead.
       see NORM, NTSC

MENU
       This command will bring up EdPlayer's CD-like control panel if it's
       not visible, and redraw it if it is.  The EdPlayer version
       information will be re-displayed.
       see ICON, HIDE

ICON
       This command will close the CD display and create the iconified WB
       window that also appears when someone presses the "ICONIFY" button
       or starts EdPlayer with the -i option.  Selecting this WB window
       and pressing the right mouse button will bring back the CD panel.
       see MENU, HIDE

HIDE
       This command will remove EdPlayer's user interface altogether, as if
       you had started EdPlayer with the -h option.  This allows WB to be
       closed if necessary, but is not really recommended because the user
       has no way to undo this using the mouse alone.  It can only be
       undone with the MENU or ICON commands, above.
       see MENU, ICON

MIDI
       This is for direct MIDI on MED modules.  If any midi.library
       resources have been allocated, they are deallocated and the library
       is closed.  Then, EdPlayer tries to allocate the serial port for
       direct MIDI output, using the default MED MIDI routines.  This is
       the mode that the MIDI button on the panel uses.  Safe to call even
       when a module is playing, because a playing MED module will be
       paused VERY briefly during the allocation & init of the MIDI stuff.
       see NOMI, MIDL

NOMI
       NO MIdi.  Deallocates any and all MIDI-related resources, such as
       the midi.library or serial port.  Safe to call even when a module
       is playing.
       see MIDI, MIDL

MIDL [<midi_destination>]
       MIDi.Library.  If you own the midi.library by Bill Barton, you can
       use this command to take over MED's MIDI output:  Instead of
       allocating and directly controlling the serial port, EdPlayer will
       attempt to open the midi.library and create a "midi source" called
       EDPLAYER.  Then, if there is a parameter, EdPlayer will try to make
       a "Midi Route" from its source to a destination of the name
       specified in the parameter.  This means that if you do NOT give a
       parameter, you must create your own route with a Patch Bay before
       anything can happen.  The "standard" use of this command would be
       "MIDL MidiOut" because MidiOut is the standard midi.library output
       to the serial port.  However, there are more useful options if you
       are multitasking with other applications that use midi.library, and
       want to recieve MIDI data from EdPlayer.  For instance, if you had a
       MIDI monitor called "MidiMon", you could send Edplayer a
       "MIDL MidiMon" to monitor EdPlayer's MIDI output.  Like the other
       MIDI commands, it is safe to call MIDL even when a module is
       playing, and MIDL works differently based on what resources are
       already allocated.  For instance, if the serial port is allocated
       when you call MIDL, it will be dumped so that midi.library can open.
       Also, if midi.library was ALREADY open, MIDL won't close or re-open
       it or the EDPLAYER midi_source.  It will, however, erase the old
       midi route and make a new one, because routes can become useless if
       their destination disappears.
       NOTE that MIDL is CASE-SENSITIVE!  Use MidiOut, not MIDIout etc.
       see MIDI, NOMI

PREV
       EJECts current song, moves to previous song in program, and tries to
       load AND PLAY it.  PREV waits for the load to complete before
       returning, so it can result in all the usual load errors (file not
       found, out of mem, etc.) as well as the "no program" error.  Note
       that the PREV "|<" button on the panel does not work exactly like
       this, because it does not automatically try to load and play.
       see NEXT, JUKE

NEXT
       Exactly like PREV, but moves to NEXT program selection instead of
       previous one.  This command is typically used to start a program
       once it's programmed in.
       see PREV, JUKE

JUKE <filename>
       This is the way to make EdPlayer programs from an ARexx or CLI
       (telled) script.  Each call to JUKE adds the one <filename>
       parameter to the end of the current program.  It's a good idea to
       include the full path in this filename, because EdPlayer's current
       directory may not be the same one that the script file with the
       JUKEs is executing from.  Once a program is created (by a series of
       "JUKE"s), the program can be started by a call to "NEXT".  Note that
       calling PLAY will NOT start a program unless the first module is
       already loaded, because the command PLAY does not work exactly
       like the button PLAY.  So, you should start the program with NEXT.
***    NEW for EdP v1.1:  If you want to load a PP encrypted module, you
       can do this:   JUKE volume:path/modulename|password
       (Please note the LACK of spaces around the "|").
       If you don't give a password for a mod that needs it, a password
       requester opens each time the mod is loaded.  If you give a wrong
       password, you will get error #5, and no requester opens.
       see PREV, NEXT

*** NEW COMMANDS in EdP v1.1: ***

DCOL <decrunch color>
       If you have powerpacked modules, and if you're *NOT* using
       PowerPatch or some such stuff, then you can control the effect
       displayed by powerpacker.library when decrunching your files.
       Possible <decrunch color>s are the same as PP.lib uses:
         0 = flash palette 0 on all screens
         1 = flash palette 1 on all screens (EdPlayer's default)
         2 = flash the mouse pointer
         3 = do WEIRD FUNNY THINGS with the screen (I don't like this one)
         4 = NO decrunch effect.  It just sits there, quietly decrunching.

ERAS
       Nobody asked for this command, but I thought it would be more than
       useful...    It erases the current program.  POOF.  Gone.
       It does nothing to the current song however, so I suggest calling
       both ERAS and EJEC if you want a clean sweep!

============================================================================

                            E R R O R   C O D E S

============================================================================

When EdPlayer gets an error, usually from an ARexx or telled command, it
reports that error to the calling program.  If you use "telled", you will
not see an error message in your CLI window, although errors with numbers
10 or higher may cause your script to abort.  If you use "cteled", a
full error description should appear in your CLI window.  And finally, if
you use an ARexx script, the error number will appear in the script's
window (the script may halt for errors >= 10), but no discription will
appear.  In ALL these cases, however, if the CD panel is open when the
error occurs, an error number and description will appear in it.  This is
useful for debugging things like DVideoIII presentations which do not even
return the error number from a failed ARexx message.

If for some reason you CAN get an error number, but you would like a much
fuller description, here are the codes:

0  = No error.

5  = Incorrect PowerPacker Password.  If you have a module that is
     encrypted, and you give a wrong password, you get this!

6  = No program!  PREV or NEXT was called, but there is no program there
     to get the next songname from.

7  = Illegal JUMP.  Someone tried to use the JUMP command to jump to a
     pattern that wasn't in the song, and the command had to be ignored.

8  = Can't continue.  CONT was called, but the song was STOPped, and could
     not continue.

9  = Nothing to PLAY!  Someone issued a PLAY with no filename and no song
     currently loaded.  If you were expecting it to pull a filename from
     the program in this case, you're wrong.  Use NEXT!

10 = Syntax error.  The first four letters of the message did not make a
     valid command.  Perhaps they were lower-case, or maybe there were
     quotes in "telled" parameters.  Or maybe it was just garbage...

11 = MIDI not available.  If the MIDI command returns this, then your
     serial port is probably not free.  If the MIDL command returns this,
     then maybe you don't have midi.library in your LIBS: directory or
     something.

12 = File not found.  A very common error.  Check spelling & path!
     You must use a FULL PATH with EdPlayer, because EdPlayer's current
     directory may not match the controlling program's current dir!
     ALSO:  If you have two disks, both named "Empty" or both named
     "ST-00" or something, EdPlayer can't tell them apart!  You will
     end up seeing this error a lot.  RENAME your disks.  Make them UNIQUE!
     Also, don't let req.library use "DF0:" instead of a volume name!
     And, save yourself a headache:  Write the volume name of a disk
     ON ITS LABEL, so that when EdPlayer asks for it, you know which one
     it's asking for.

13 = Need PowerPacker.library.  EdPlayer came across a packed module,
     and you need to install powerpacker.library in your LIBS: dir.

14 = Disk error.  Maybe the file is corrupt, or there was a read/write
     error or something.

15 = Out of memory.  There is not enough CHIP RAM to load the module.
     I know that MegaBall 2.0 can load songs into FAST ram, but that is
     ONLY because there are five songs, and the group of them go into
     FAST together and get buffered into CHIP one song at a time.  This
     method will obviously not work with EdPlayer which only loads one
     song at a time anyway.  So we're stuck with CHIP RAM again.  :-(

16 = Unknown module type, or corrupt module.  Perhaps you are trying to
     play a MED 3.00 module with the MED 3.0 bug in it, or perhaps you
     are trying to play an earlier format of MED modules, or even a song or
     something instead of a module.  If the error happened because of a MED
     mutant, just load it into MED *3.10!* and save as a MODULE.  This
     should fix it.  If the tempo goes nuts, know that the MED author
     changed the tempo commands and it's not my fault.  ;-)

21 = If EdPlayer returns this, then it is exiting (shutting down). 
     However, this error is much more often generated by telled itself when
     it cannot find EdPlayer in the system.  For instance, if you have a
     script file that starts EdPlayer, and immediately tries to send
     commands to it, without waiting for it to load and get ready (open
     it's port, etc.), then your script will probably die with this error
     code.  You should wait for EdPlayer to start, and the best way to do
     this is with the "waitport" CLI command that comes (I think) with
     ARexx.  Example:  After starting EdPlayer, and before sending
     commands, have the CLI execute "waitport EDPLAYER".

============================================================================

                            W H E W ! ! ! !

============================================================================

For those of you that read all the way through that, congratulations are in
order.  I personally really hate programs who's DOC files are as big or
bigger than the program itself, and so I'm not too happy about the fact
that despite all my efforts to make this thing user-friendly, I still wound
up with MonsterDOCs.

----------------------------------------------------------------------------

If you use EdPlayer, or ESPECIALLY if you would like to use EdPlayer but
there's some little vital feature missing that's stopping you, then I WANT
to hear from you!!

For instance, if you have, say, an ASM source code that plays ST or NT mods
much better than the player built into EdPlayer, send me a copy!  I'll see
if I can include it in the next release or not...  (This is assuming you
can legally send me this copy, and I can legally use it!  If not, DON'T.)

At this point I'm also going to suggest maybe possibly sending me a
donation, if you like EdPlayer or want to see improved versions of it.  I'm
not going to expect everyone who sends me mail to give a donation, just the
people who want to see EdPlayer improve, or have found it useful.  Also,
I'm not going to say what kind of donation.  It can be money or software or
whatever, as long as it's *NOT* (a) illegal/pirated software, (b)
XXX graphics, or (c) drugs, alcohol, etc.  :-(

Also I'm open to comments & suggestions about almost every aspect of the
program, with the possible exception of people who think that naming the
"EdPlayer" after myself was an egotistical, stuck-up move.  It's FREE
software.  And I'm not a creative naming genius, obviously.  If you think
YOU are, send your much-improved names, money, software, and/or comments to:

US mail:                Ed Mackey
                        PO Box 475
                        Wayne, PA 19087
                           * USA *
Or:
    Internet:  ELM4@ns.cc.lehigh.edu    BITNET:  ELM4@LEHIGH.BITNET

As you might have guessed from the network addresses, I'm a student at
Lehigh University in Bethlehem, PA.  I'm currently in my Junior
year at Lehigh, being a Computer Science major.  This message was written
on Oct 24, 1991.  I may not be at Lehigh after '93, and I may even move my
home address from Wayne, PA before then, so I didn't provide EITHER of
those US mail addresses here.  The only one I provided is the PO Box in
Wayne (above), which I will keep EVEN if I move, so that address should be
valid for years and years to come.

About my brother, Al Mackey:  He's a senior in High School.  He and I work
together on programs, usually splitting the workload as follows:  All code
- me.  All music - Al.  All graphics - first drawn by Al and then modified
and rearranged by myself, making the gfx sort of a 50%/50% project.  This
is the way we did our game Ball, our game MegaBall (Fred Fish #477), and
also this project (EdPlayer).  I'm sorry I can't really distribute a bunch
of Al's great music with this program, but I'm trying to keep the archive
as small as I reasonably can.  Of course, Al uploads a lot of his modules
to our support board, Somerton BBS (215-464-6775), where you can DL them. 

----------------------------------------------------------------------------

Thanks for downloading EdPlayer.  Hope you like it....
                                                       --Ed.
