                PMsndX version 0.2
                        by
                William Scott Hiles

This is the fourth release of PMsndX.  Push the HELP button
to get a short introduction to the purpose of this program.
Basically, this program is intended to eventually provide
all of the features of the SOX program and a bit more.

Sorry guys, but this is version 0.3 and with the addition of
the MMPM stuff, the format of the .ini file has changed.  I
was thinking of giving you a program to convert your old
.ini to the new format, but then I figured that there are
not that many windows to worry about.  Maybe in the next
release?

Of all the potential things that PMsndX could do, the one
that people seem to want the most is to be able to play a
sample of any format without having to save it to disk in
the native .WAV format and then start the digital audio
player.  Well, here it is.  The only difference between
version 0.2 and 0.3 is the additions to the Settings box and
the new MMPM button (with corresponding playback functions
too).  I have not implemented recording yet and a couple of
the options for the settings have not been implemented
either.

Programming for the MMPM was definitely not a breeze.  It
took me a week to figure out how to use the Playlists.
Frankly, since there is almost no documentation out there on
accessing the MMPM device, I am amazed that I got this much
working.  In any case, you will find buttons that look very
much like the buttons on the digital audio device provided
by IBM.  As you will find, I have not fully mastered
programming under MMPM so there will probably be a number of
quirky things that pop up.  Just have patience and point
them out to me and I will fix them as best I can.

As always, all comments are welcomed as well as bug
reports.

What is in the future?  Well, I am planning on adding other
sound formats.  Feedback has indiacated that .VOC, and .SND
are the most important ones, so I will start on them first.


Revision history:
Version 0.0 (initial release)
1.  6 buttons and associated dialog boxes created
1.  Ability to load and save .au files
2.  Ability to load and save .wav files
3.  Tool for changing the sampling rate (0.0a)
4.  Display of information about the current sample

0.0a - SOX appears to use linear approximation to create the
       new sample.  PMsndX provides for quality which allows the
       approximation to be adjusted.

Version 0.1
1.  Added Channel Averaging (0.1a)
2.  Added Vibro effect
3.  The .ini file are automatically located in the same directory
    as the executable.
4.  Individual tool pages no longer have separate HELP buttons
5.  A HELP button has been added to the tool box for all pages.
    When pressed, the help page for the page shown in the tools
    dialog box will be displayed.
6.  A DISMISS button has been added to the tools dialog box for
    a more consistent approach to dismissing.  The user can still
    depress the tools button on the main control panel to dismiss
    any tool dialog.
7.  Rearranged the buttons on the main control panel and added
    two new buttons for Playing and Recording samples (not implemented
    in this release...just placeholders)
8.  Changed the memory storage requirements so that data takes
    half as much memory.  Each sample is stored as a signed SHORT
    regardless of the sound type.
9.  Corrected major memory bug which resulted in a memory leak.
10. The echo effect presents an interesting challenge to the
    user interface.  How do you provide the user with an
    intuitive method to set the echo locations and the
    strength of the echo from a dialog box?  My first
    attempt was to try to display the waveform in a window
    and then to let the user set the echo points, but the
    problem of setting the echo strength is still difficult.
    This operation may have to wait for another revision
    after I have had some time to "sleep" on it.  The effect
    itself is very simple, but the interface is much more
    difficult.

0.1a - SOX can averages 4 channels to 1 by putting all four
       channels into 1.  4 channels to 2 is done by
       averaging the left channels and the right channels
       together.  PMsndX allows the user to select any
       combination of the source channels.

Version 0.2
1.  Fixed error with memory settings.  In version 0.1 if you
    opened the Settings box and then applied it by pressing
    the DOIT button it sould clear the data samples even if
    the memory configuration had not changed.
2.  Fixed bug in version 0 in which the data was cleared
    when the memory configuration was changed, but the
    sample header was not cleared.  This led to th dialogs
    trying to access data that had been released causing a
    protection violation.
3.  Added the Bandpass notebook page.  This is probably one
    of the most complex user interfaces in the notebook.
4.  Added the Echo effect.  This is the most complex
    programming challenge for a useable user interface.
    (Note, the echo only works for single channel samples).
5.  Fixed bug.  In version 0.1, the lowpass function did not
    take into account the number of channels.  This has a
    significant impact on the FFT operation.  This is fixed
    in 0.2.
6.  Fixed bug.  In version 0.1, the Vibro effect did not
    take into account multiple channels in a sample.  As a
    result, the vibro was not continuous on individual
    channels.

Version 0.3
1.  Removed the RECORD button (now just a blank button until
    I can think of something)
2.  Changed PLAY button to MMPM and added basic play
    capabilities (i.e. Play, Stop, Rewind, Pause).
3.  Updated Settings dialog to reflect options for the MMPM
    stuff.

Version 0.3a
1.  Fixed the Play button so that it is animated when the
    sample is played as it is loaded.  (What is the longest
    record for staring at a code before you realize that it
    is so late that you have been staring at the bug all
    night and just did not recognize it?...What a dumb error
    on my part!!!)
2.  Fixed the dynamic linking so that DosLoadModule is used
    rather than linking with the dynamic libraries.  Version
    0.3 would refuse to run on machines without MMPM
    installed because the libraries were loaded even if the
    MMPM support was not enabled.
3.  Changed to using SW.DLL for the buttons of the MMPM
    dialog box.  This guarantees that the program will use
    the latest formats for the buttons.
4.  Added command line playing.  I the PLAY_ON_LOAD option
    is selected, any filenames which appear on the command
    line will be played.  If a file is not found, the
    program will signal an error and continue to the next
    command line file.  If EXIT_AFTER_PLAY is not selected,
    the last file that was successfully loaded will be
    the current file in memory.
5.  Enabled the EXIT_AFTER_PLAY feature and modified the
    behaviour such that the MMPM dialog is not displayed
    during the playback.

For now, just play with it and let me know what you think.

You should have three files from the compressed .zip file.

README          This file
pmsndx.exe      Executable PMsndX
pmsndx.hlp      Help file

I can be contacted using email at whiles@relay.nswc.navy.mil.

Thanks for your time.
Scott

