User Forum    :: Powered by YaBB
  « MIDI-OX User Forum - Mapping program change to bank select + program ch »
Welcome, Guest. Please Login or Register.
May 19th, 2025, 9:48pm


Home Home Help Help Search Search Members Members Login Login Register Register


   MIDI-OX User Forum
   MIDI-OX
   Mapping Questions
(Moderator: Jamie OConnell)
   Mapping program change to bank select + program ch
« Previous topic | Next topic »
Pages: 1  Reply Reply Notify of replies Notify of replies Send Topic Send Topic Print Print
   Author  Topic: Mapping program change to bank select + program ch  (Read 1165 times)
stefanlindmark
New Member
*



MIDI-OX Rules!

   


Posts: 1
Mapping program change to bank select + program ch
« on: Oct 17th, 2005, 6:40am »
Quote Quote Modify Modify

Would it be possible to implement this mapping scheme?
 
I'd like to remap program changes 0-127 to:
0: send bank select 78, program 0
1: send bank select 78, program 1
:
57: send bank select 26, program 10 <- non-standard
58: send bank select 78, program 58
:
127:  send bank select 78, program 127
 
See the point? Some voices use patches from other banks than the standard bank.
 
I can get this working by using data mapping to send sysex messages. But I can't get the original receiving channel number into the first Bx message, where x is a 4 bit representation of the channel.
 
Examples:
"C0 39" => "B0 20 1a C0 00" <- non-standard playback
"C0 05" => "B0 20 4e C0 05" <- GM std voice used
"C2 05" => "B2 20 4e C0 05" <- GM
"C5 39" => "B5 20 1a C0 00" <- non-standard
 
I can only get a full-byte channel number into the sysex message by using the FC placeholder. That means that for channel 5 will FC become "05". So I can't construct the needed "B5" (which would become B05 -- invalid).
 
Notes of things I've tried which did not work:
(1) Adding a rule for every instrument on every channel to get around this would result in 2048 mapping rules. Although this definition file could be generated by a small program, I don't think Midi-OX was designed to scale to so many rules.
 
(2) I've tried Bome's Midi Translator, but it requires what's described in (1) above and it's proven not to handle it.
 
(3) I've tried WSH scripting using a callback function and it works but totally crawls with 2000+ ms response time (modulation and pitch wheels spin for seconds after they are released). Polling is reported to result in 100% CPU hog down which would mean heavy fans spinning up in my system, so I've never tried it.
 
(4) The Sysex mapping dialog switches the channel over to "Match Input" but I tested (just to be sure) by sending data on channel 1 and the B0 would not be replaced in the sysex sequence.
 
Any help appreciated.
 
/Stefan
IP Logged
Jamie OConnell
Administrator
*****






   
WWW Email

Gender: male
Posts: 2027
Re: Mapping program change to bank select + progra
« Reply #1 on: Oct 17th, 2005, 2:30pm »
Quote Quote Modify Modify

Yes.  I think you should be able to do the complete mapping using Data Mapping along with Cloning Events.  Here is a sample using your example:
 

Ch Message V1Min V1Max V2Min V2Max C|Ch Message V1Min V1Max V2Min V2Max Ac
 * ProgChg     0     0     *     * Y| * Ctrl        0     0    78    78    
 * ProgChg     1     1     *     * Y| * Ctrl        0     0    78    78    
 * ProgChg     2     2     *     * Y| * Ctrl        0     0    78    78    
 * ProgChg    57    57     *     * Y| * Ctrl        0     0    26    26    
 * ProgChg    57    57     *     *  | * ProgChg    10    10     *     *    
 * ProgChg    58    58     *     * Y| * Ctrl        0     0    78    78    

 
Note that each event is cloned except for the 2nd mapping of Prog Change 57.  The cloned events are sent unmodified except for Prog Change 57 -- that one is cloned and then remapped.  After remapping, the event is not further cloned.
 
Quote:
(1) Adding a rule for every instrument on every channel to get around this would result in 2048 mapping rules. Although this definition file could be generated by a small program, I don't think Midi-OX was designed to scale to so many rules.  

 
From the Help File:
 
Changing the Map Items Maximum
Although a large number of mapping items can be assigned in the mapping dialog, the low level memory for this feature is allocated and fixed during program startup. By default, 256 mapping items can be assigned. This maximum can be increased (or reduced) by changing a parameter in MOXLIB.INI. This INI file should be located or created in the MIDI-OX application directory. The parameter is located in the [Options] section and is named MapItems. If you change the INI file, you must restart the program before the setting takes effect.
 
Example:  
[Options]  
MapItems=384; Creates room for up to 384 map items  
« Last Edit: Oct 17th, 2005, 2:33pm by Jamie OConnell » IP Logged

--Jamie
Music is its own reward.

Pages: 1  Reply Reply Notify of replies Notify of replies Send Topic Send Topic Print Print

« Previous topic | Next topic »


MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.