MIDI-OX User Forum (http://www.midiox.com/cgi-bin/yabb/YaBB.pl)
MIDI-OX >> MIDI-OX Bug List >> Intermitent lack in loading map after program chg
(Message started by: MGRCI on Nov 6th, 2005, 12:36pm)

Title: Intermitent lack in loading map after program chg
Post by MGRCI on Nov 6th, 2005, 12:36pm
First, many thanks to Jamie O'Connell for the unique *WORKING* MIDI router with patch change ==> map change capability. Congratulations Jamie!

Here is my bug:
I configured each translation map to send an "All note off" to channells 1-9 in order to avoid missing "note off" messages to a particular MIDI channel after a map change.
After the "All note off" messages, each translation map sends "program change" messages to the devices that will be used with that map (see example below).

TIMESTAMP IN PORT STATUS DATA1 DATA2 CHAN NOTE EVENT
Loaded Map: 'This Love-1.oxm'
00003CD4  10   2     B0    7F    00    1  ---  CC: Poly On
00003CD4  10   2     B1    7F    00    2  ---  CC: Poly On
00003CD4  10   2     B2    7F    00    3  ---  CC: Poly On
00003CD4  10   2     B3    7F    00    4  ---  CC: Poly On
00003CD4  10   2     B4    7F    00    5  ---  CC: Poly On
00003CD4  10   2     B5    7F    00    6  ---  CC: Poly On
00003CD4  10   2     B6    7F    00    7  ---  CC: Poly On
00003CD4  10   2     B7    7F    00    8  ---  CC: Poly On
00003CD4  10   2     B8    7F    00    9  ---  CC: Poly On
00003CD4  10   2     C1    02    --    2  ---  PC: Elec Grand Piano
00003CD4  10   2     C2    02    --    3  ---  PC: Elec Grand Piano
00003CD4  10   2     C9    00    --   10  ---  PC: Drums
Loaded Map: 'This Love-2.oxm'
00003EAD  10   2     B0    7F    00    1  ---  CC: Poly On
00003EAD  10   2     B1    7F    00    2  ---  CC: Poly On
00003EAD  10   2     B2    7F    00    3  ---  CC: Poly On
00003EAD  10   2     B3    7F    00    4  ---  CC: Poly On
00003EAD  10   2     B4    7F    00    5  ---  CC: Poly On
00003EAD  10   2     B5    7F    00    6  ---  CC: Poly On
00003EAD  10   2     B6    7F    00    7  ---  CC: Poly On
00003EAD  10   2     B7    7F    00    8  ---  CC: Poly On
00003EAD  10   2     B8    7F    00    9  ---  CC: Poly On
00003EAD  10   2     C1    02    --    2  ---  PC: Elec Grand Piano
00003EAD  10   2     C2    02    --    3  ---  PC: Elec Grand Piano
00003EAD  10   2     C9    00    --   10  ---  PC: Drums
Loaded Map: 'This Love-2.oxm'
00004095  10   2     B0    7F    00    1  ---  CC: Poly On
00004095  10   2     B1    7F    00    2  ---  CC: Poly On
00004095  10   2     B2    7F    00    3  ---  CC: Poly On
00004095  10   2     B3    7F    00    4  ---  CC: Poly On
00004095  10   2     B4    7F    00    5  ---  CC: Poly On
00004095  10   2     B5    7F    00    6  ---  CC: Poly On
00004095  10   2     B6    7F    00    7  ---  CC: Poly On
00004095  10   2     B7    7F    00    8  ---  CC: Poly On
00004095  10   2     B8    7F    00    9  ---  CC: Poly On
00004095  10   2     C9    01    --   10  ---  PC: Drums

In this example, the problem has just occurred. I called two times the map "This Love-2.oxm" by sending a program change to MidiOx. The first time I called it, the loaded map was the wrong one. It seems that the application does not wait until the map is read from hard disk and uses the map previously loaded "This Love-1.oxm". Maybe this problem could be avoided by loading all ".oxm" files into memory during intialization. This lack occurs in about 2-5% of the times I send a program change message.

My configuration:
I'm using a 2.4GHz Celeron desktop with Windows XP; an USB MIDI controller; Midi Yoke NT (v. 1.71 beta) and MidiOx (v. 7.0.0.365). MidiOX receives from USB device and sends to Midi Yoke NT 1. I use an VST host application configured to receive from Midi Yoke NT 1, but the same problem occurs even if I shut down the VST host.

Thanks for any clue.
MGRCI

Title: Re: Intermitent lack in loading map after program
Post by Jamie OConnell on Nov 6th, 2005, 1:46pm
Ordinarily, loading a map based on a patch change would never act on a patch change issued by the new map.  But it might if you had "[x] Send Patch through New Map" (in the Patch Map dialog) was checked.  Try un-checking that.

By the way, "All Notes Off" is controller 123 (7B Hex), and not 127 (7F Hex) "Poly On" as shown in your examples.

Title: Re: Intermitent lack in loading map after program
Post by MGRCI on Nov 7th, 2005, 6:41am
Hello Jamie. Thank you for the quick reply.
Disabling 'Send patch throgh new map' did not work (all 'program change' copy rules was ignored in that case).
In fact, in earlier experiments with MidiOx, I used to put a rule in all oxm maps to copy program change messages to all MIDI channels, therefore, all VST instruments would follow the change. It used to work very nice with MidiOx, but some sampler-based VST intruments have a big delay to load sample data from hard-disk when they receive a program change message (something like 0.5 to 10 seconds!). This absolutely kills live performance, where program changes must be done 'on the fly'. So, I chose to send program change messages only to the synths that will be used in each program. For example, if a song uses programs #1, #2 and #3 and program 2 uses the sampler program #20: the MidiOx maps for PC #1, #2 and #3 will send a PC to #20 message to the sampler, so, the samples will be loaded the first time I jump to one of these three programs, and then, no more delay occurs to load the samples in the middle of the song.
So, please consider supporting this feature in the next versions of MidiOx. If you want me to explain more, just tell me.
And thanks for the hint about 'All note off'. I was using 'All note on' with intensity parameter set to '0' just because I have not known the 07Bh before.
Best regards!
MGRCI



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