What is the most efficient way to break out incoming messages from an input device, by channel, regardless of message type, to different output devices? The only way I can see is to create a preset for each channel with a translator for each type of MIDI message. Seems cumbersome.
I have a stand-alone sequencing program, Midinous, which creates it’s own output device ‘Midinous’. I have a stand-alone software monophonic synth, G2500, which will recognize the Midinous and Bome devices, but uses MIDI omni mode only, responding on all channels. I would like to run multiple copies of the synth, each listening on it’s own channel/device.
The attached project file should get you started. Here I look at any 1 byte message for the first translator, any 2 byte message for the second translator and any 3 byte message for the third. For one byte messages, since they will not have Channel information, they will go to all output ports. For two and 3 byte messages I use the following rules to determine whether to pass the message along. This example is for MIDI CH1 messages
// Mask the status byte
rr=oo&15
// Check for MIDI CH 1 (byte=0)
if rr!=0 then exit rules, skip Outgoing Action
Each preset has a different destination as defined in the preset output. So essentially any channel messages should only go to the defined port in that preset.