From: beltran@ns.network.com (Tony R. Beltran)
Newsgroups: rec.music.synth
Subject: midi mapper software development
Date: 16 Oct 92 18:49:12 GMT
Organization: Network Systems Corporation
Originator: beltran@ns

I have been writing a midi program for the PC and MPU-401 compatible card
(I have a Music Quest PC-midi card).  This program is written completely
in 8086 assembler for speed.  It is capable of mapping just about anything 
to anything.  For example, my FP-8 transmits on one selectable channel
and receives on one selectable channel.  My MV-30 is 8 voice multi-timbral
and it would be nice to be able to play more than one instrument at a
time when writing a new piece of music.  This way I could hear how a
string patch would sound against a horn or whatever.  In addition, I
have a Yamaha MCS-2 with its pitch and modulation wheels, two 
assignable sliders, and assignable footpedals.  These all transmit on
the same channel.  It would be nice if I could send each of these on
a separate selectable channel.  Also, when "zoning the keyboard", it
would be nice if I could scale the velocity for each zone to create a 
balance between the different response characteristics of the different
instruments being played.

The software I am working on can do all this.  Each note in the 128 midi
note range has its own velocity (separate for note on and note off msgs),
pitch, and channel translations.  Same for each controller, pitch wheel,
etc.  In addition it is possible to send out patch changes automatically
on each channel.  Any controller can be translated to any other (though
some controllers are simple on/off types) but care must be taken that
the controllers being swapped don't have conflicting characteristics.

There is also a panic button which all the appropriate note off, reset,
pitch bend 0, etc msgs on all channels.

I am currently playing with the idea of allowing any message to be
converted to any other with several algorithms available for converting
2 byte to 3 byte msgs and vice-versa.  Again, it is up to the user to
make wise choices in this arena.

So far, I have the code up and running to do all of the above.  What is
remaining is to write the user interface, which will be somewhat time
consuming considering the sheer number of elements you have control of
here.  This leads to the question:

Is there anyone interested in this software when it is done?  I can
only think of two general situations in which this software would be
useful.  If, like me, you have a decent hardware sequencer - then you
can afford to tie up your computer running this mapping package.
If you do live performances where reliable remapping to the nth degree
is worth lugging a computer around, then this is for you.

At present, I support only the MPU-401, but I wrote this whole in a
modular style so it would be relatively easy to isolate those pieces
that should change to support other cards.  Also, I use dumb "UART"
mode with polled transmit and interrupt-driven receive.  

If there is enough interest in this thing, I will do a reasonable job
on the user interface.  If not, I probably will pay attention to only
those parts I need for now.  The only problem is that I work full-time
and go to school 2/3 time.  So if I do a careful job on the user inter-
face, I may have to wait until end of quarter (December).  Since this
code I just completed only took a week, I should be able to get the job 
completed well within the time available between quarters.

This program runs under DOS (not windows) and will be text mode.  There
should be no reason it won't run on all classes of PC.

Like I said previously, I wrote this with a specific need in mind, and
am not in it for making money.  It just seems to do a lot of neat stuff.
So there may be others interested in it.

Tony