|
||
Title: Mapping program change to bank select + program ch Post by stefanlindmark on Oct 17th, 2005, 6:40am 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 |
||
Title: Re: Mapping program change to bank select + progra Post by Jamie OConnell on Oct 17th, 2005, 2:30pm 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:
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 |
||
MIDI-OX User Forum » Powered by YaBB 1 Gold - SP 1.3.1! YaBB © 2000-2003. All Rights Reserved. |