Well, most MIDI messages are 3 bytes in length. So with taking any 3 byte message and changing the Channel number on the lower nibble of the first byte, you cover most cases. Program changes are different as they are 2 bytes but the idea would be the same.
Here is an example of changing the MIDI channel of a device from any incoming channel to outgoing MIDI channel 2
incoming : Raw Midi oo pp qq
Rules
// grab the first byte and discard the second nibble put it in rr for temporary storage
rr=oo&0xf0
// make it MIDI Channel 2 (midi channel 1 is 0, 2 is 1 etc up to 15) put it back into oo
oo=rr|1
outgoing Raw midi oo pp qq
The two byte method is the same execpt you just don’t use the third byte
Now if you have a device that uses different MIDI channels for different controls, then you would have to put in translators for each of the channels for each device.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz
Another question, coming at it a different way, I want to capture a single CC encoder from a device, and output it through the Bome virtual midi out. I can capture it and set the value to be “any value” but in the outgoing I have to set the value? I can’t see an option to allow the CC value to pass through
In incoming, in addition to “any value” set the value to any local variable and then use the same local variable for output. Local variables are oo, pp, qq, rr, ss, tt, uu, vv, ww and xx.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz