********  New Features of Mark's Midi and Karaoke Player!  *********

Added 'Random' Multiplay.  Press the 'V' key (before entering
Multiplay Dialog).  Play Button will show 'Play Rnd' when the
random mode is on.  I simply shuffle the selected files so they
are no longer sorted.  Turn off random with 'V' key when not in
a Dialog of any kind.  The only way to know if it is on is to
look at the Play Button in the Multi-Selector.  The status of
random mode is NOT saved in the .ini file (yet?).

  Note: the Random mode was implemented by the request of a user
        who was kind enough to email me!  You know who you are!

*********************************************************************

Added a new Dialog that displays the selected files in a Multiplay
list (whether sorted or random).  It will highlight the currently
playing file when it comes up.  If you press the 'Next' button in
the main window, it will update the highlighted selection to
show what is currently playing.  Use the 'T' key to call up the
Dialog.  If 'T' is pressed and you are not in multiplay mode,
you will get a display of Font Info (which used to be the 'P' key).
The dialog also shows the total count of Files selected and the
number of the one currently playing or if stopped the last file.

*********************************************************************

Added a beta 'Midi Control Panel' dialog which allows the various
midi controllers and program changes to be set on any channel.
It also includes a Pause button which is useful if notes start to
'hang' when adjustments are made.  The DLL that is used doesn't
seem to always integrate 'realtime' adjustments into its outgoing
data stream correctly.  I can see I am going have to write my own
DLL (ugh!) to overcome these kinds of bugs.  The Control Panel is
called up with the 'P' key (which used to show the Font Info).

It may also be called by Left-Clicking any Voice Name box or the
keys directly under it on the player piano screen.  This will
automatically open the Control Panel with the Channel set to the
one clicked on and the current voice for that channel showing.

Currently, the Midi Control Panel only 'fetches' data about the
current voice playing on the currently selected midi channel.  The
adjustment sliders for Vol Pan Rev Chorus and User (any ctrl) are
defaulted to GS Reset standards of Vol=100, Pan=64 (Center), Rev=40,
Chorus=0, and User Control defaults to Expression=127.  You may
select any controller from 0 to 127 with the drop down combo box
and send them with the 'User' slider.  Common controllers have names.

CAUTION: improper use of controllers may 'lock up' your synth or
soundcard, or simply stop the sound on the channel you are playing
with.  Example: newer cards or Roland products will kill sound output
if an invalid control 0 bank number is used (one without a variation
voice available).  Play with non-standard controllers at your own
risk!!  BTW, proper use of the Control 0 bank switch is 1. send the
bank change event (Ctrl 0 with data of 8 for example), 2. send the
program change that has a variation in that bank.

Note: Nothing is being modified in the file playing.  The Panel simply
sends midi events in realtime that are theoretically merged into the
current outgoing data stream.  If the file is restarted it will play
as usual, even though the Vol, Pan, Rev, etc. sliders show the last
values you sent.  Touching any slider knob will send the current value
which is only 'remembered' in the text above the slider.  This is an
experimental Control Panel only.  Don't expect great and wonderful
results.  The Channel slider does not send any midi events out.

The data value of each slider is shown above it.  The Preset slider
will change the Voice Name in the box above the pause button.  If
you change the midi channel (you are selecting the channel to output
events on), the current voice playing on that channel is shown and
selected in the Preset slider.  If a song changes the voice on a
channel you are currently viewing, the Preset slider and Preset Name
will be updated!  Similarly, if you adjust the preset slider the
voice name displayed in the main window above pianos will update!  If
it happens to be hidden by the Control Panel, you won't see it until
the panel is moved or closed.

*********************************************************************

Added 'Index' button to Multiplay file selector!  This button has the
function of creating a text file which includes the filename.xxx plus
the song title of all the .mid/.kar files in the current directory.
It includes a header line which shows the directory path and number of
files.  It can be pressed while playing (playing will stop).  It auto
selects all valid files, then proceeds to create the file listing.
While it is doing so, the Titles or Filenames (in case no title is
found) are displayed (quickly) in the main window and the caption bar.
When it is done, a line is displayed to that effect at the bottom of the
screen (assuming you have a full window).  You may then unselect the
files with the None button or scroll and change directorys, to do the
next one.

If the program comes across a defective midi file (that it would
normally refuse to play), the song title in the index file will show
'Defective File!', and the indexing process will continue.  This can
be handy for checking a bunch of downloaded files to see if they are
good or defective.

CAUTION!!!  This function OVERWRITES any file in the current directory
named: _00INDEX.TXT without asking or checking for its existance!!!!
If you have a file by that name that you don't want overwritten, then
do not use this function or rename your file or move it!!!!  I did
not want to be annoyed by a 'file exists' alert everytime I wanted
to update the index file for a directory.  If this is a big concern
to you, let me know and I will add a test and option to the .ini
file to allow you to change the name of the default file saved or
always show an alert if the file exists.

The filename that is saved is always: _00INDEX.TXT and is always in
the directory associated with the listing.  BTW, a midi song title,
according to the 'midi spec' is supposed to be the first 'text' event
that is not a copyright or cue point (etc) on track 1 always!  Format
0 files (1 track only) can't have track names anyway.  Format 1 files
(multiple tracks) are supposed to have track 1 as the conductor or
tempo track.  This is the correct place for a song title.  Unfortunately
most creators of midis (Roland and others excepted), put song titles
in places where track or instrument names belong.  Many include song
info on empty tracks (with no notes) at the end of the song.

My program searches for song titles on tracks 1 to 3 until one is
found (or none).  In the case of Karaoke files (format 0 or 1) the
actual song title information is found.  This is none standard, as
in format 1 files it is on track 3 and preceeded by '@T' for each
text string.  Note: I have run into a bunch of .kar files from a
soul that insists on using all CAPS and a lot of '<<< >>>' type
characters.  As a result, I added yet another function option which
is enabled with the 'Z' key (no reason except running out of keys!).
When enabled it strips the <<< >>> garbage and extra spaces from the
song titles.  It does no harm to regular song titles and is not
modifying the actual file in anyway.

To 'remember' this function when the program boots, there must be an
entry in the .ini file called 'fixtitle=1' for 'ON'.  I don't know if
windows will automatically create it, so you may want to use Notepad
to add the entry on a line of its own below the [Midi] section
(anywhere you like).  Of course, if you never see any of these titles
then it is of no concern.

*********************************************************************

Added a Pause key function to the main window (besides the one in the
Midi Control Panel).  You may use the 'Q' key (for Quiet) to Pause
and Restart (from current point).  It toggles between paused and play.

*********************************************************************

Minor 'bug' fixes: when Ctrl 0 Lsb (32) event is encountered, its data
value is forced to 0 (zero), as non-zero values have been known to cause
no sound on Ensoniq (and other?) soundcards.  Apparently, GS/GM resets
would not restore normal operation either!  The Ctrl 0 Msb (0) is the
one which is used for bank or variation switching, and if the Lsb is
sent it should be zero.

*********************************************************************

Summary:

P  Key now calls up Midi Control Panel (not Font Info).
Q  Key toggles Pause/Play modes when main window has focus.
T  Key calls Multiplay File Listing if in that mode.  Otherwise
   it displays Font Info (which used to be on P key).
V  Key toggles Random Play mode on-off before entering Multiplay.
Z  Key toggles 'Fix Title' function on-off.  Unless you have a
   'lousy' song title, you won't know if it is on unless you look
   in the .ini file.

Index Button added to MultiPlay Selector.
Multiplay File List (of selected files) added (T).
Midi Control Panel Added (P).
Pause key (Q) added.
Random Multiplay Added (V).

That's all for now.

