Break out MIDI channels to individual virtual outputs - Solved

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.

Any thoughts would be appreciated. Thanks.

Hi,

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.

So essentially you will need 16 presets but it should be pretty quick to duplicate them and adjust for:

  1. Which channel ( in the rules)
  2. Which device (in the Specific output port

Here are how my aliases are assigned.

image

And the project file:
Port-Routing-by-MIDI-Channel.bmtp (1.5 KB)

Steve Caldwell
Bome Customer Care


Also available for paid consulting services: bome@sniz.biz

Very nice, thank you!

1 Like