Now that it's clear I can send messages between two instances of MT, how should I implement the following:
- I set a global variable in instance 1 of MT
- In instance two, I need to know the value of that global variable.
- --- Should I send a control change message from instance 1 to instance 2, and then disregard the change itself, but use the value by storing it as a global in instance 2.
- --- Should I send sysex or NRPN or RPN (don't know how to utilize any of these)
- --- Is there some way I can actually query the instance 1 global by doing something in instance two?
You need to determine how many bits you need of the variable. A MT Pro global variable is 32 bits so if you need all 32 bits, you should probably send Sysex message and break it up into 7 bit bytes of 7bits each (5 bytes with 3 bits left over). Most of the time you can probably get away with just 2 bytes (14 bits) just send lsb msb as part of sysex and break it up on the sending side and re-assemble on the receiving side. This is much like how I do it on MIDIBuddy for sending mouse pointer coordinates.
I suppose you could set up a translator on instance 2 to query instance 1 for the variable and have instance one respond. The main thing is to ensure the query and response is unique and follow a standard (that you set up).
The Sysex broken up as you suggest is just what I need.
BTW, if the variable outputs of MIDIBuddy relative mode are there in order to compensate for different speeds of trackball movement, I’m really floored by the analysis and implementation in the MB relative mouse movement translators. Heck… I’m impressed even if that’s not what you were doing.
Hi Gabriel, I let Windows handle mouse acceleration parameters in MIDIBuddy. I just take the output of whatever Microsoft sends and let the Microsft drivers handle any accelleration as normal. You will find that if you turn off all accelleration, your mouse will move the cursor very slowly (fine tune mode). Maybe in a future release, I can adjust this tuning in MB.