In Bome Network, the MIDI Router lets you define any number of MIDI routes. Each route is defined by a source port and a destination port. The order of MIDI routes does not matter.
Below is a summary of how the different routing options work.
INPUT to OUTPUT
Standard routing (pipe)
By using an IN port as source and an OUT port as destination, you create a one way pipe. This is the standard way of MIDI routing. Everything received on the input port will be forwarded to the output port.
Example (cross-connect)
Route 1 - IN: Launchpad → OUT: LP Virtual Out
Route 2 - IN: LP Virtual In → OUT:Launchpad
This will cross-connect the (physical) device with the (virtual) port ‘LP’. Anything coming from Launchpad will be sent on to the LP Virtual Out port. Anything received on the LP Virtual In port will be forwarded to the Launchpad device.
Example (loopback)
Route 1 - IN: Launchpad → OUT: Launchpad
Here, everything that you receive from the Launchpad will be immediately sent back to the Launchpad. This is a loopback route. When using loopback routes, be careful to not create MIDI feedback.
Example (merge)
Route 1 - IN: LPD8 → OUT: MyApp Virtual Out
Route 2 - IN: Nanokontrol2 → OUT: MyApp Virtual Out
Here, you direct two different inputs to a single output with 2 routes. This is a MIDI merge.
Example (duplicate)
Route 1 - IN: LPD8 → OUT: MyApp Virtual Out
Route 2 - IN: LPB8 → OUT: Remote PC
Here, you use the LPD8 MIDI input and duplicate the incoming MIDI messages to both the MyApp virtual port and also to the MIDI output port Remote PC.
INPUT to INPUT
Advanced: duplicate input
Another thing you can do is direct an INPUT to another INPUT. This could be handy if you want to inject an input from one input port to another. You can then route the initial destination ports to other ports, creating a MIDI duplication function that can quickly be turned on and off by checking or unchecking a given routing.
This advanced routing technique is only available if you’ve enabled Advanced MIDI Router in the settings.
Example
Route 1 - IN: A Virtual In → IN: B Virtual In – (inject)
Route 2 - IN: B Virtual In → OUT: C Virtual Out – (pipe)
Route 3 - IN: B Virtual In → OUT: D Virtual Out – (pipe)
In the above, anything coming into either A will be injected into B. Now routes 2 and 3 will forward B to C and D, so essentially, everything coming from A will be sent to C and D. Anything received on B will also be forwarded to C and D. You could turn off Route 1 and then only B will be sent to C and D. A will essentially be turned off allowing only B to be duplicated to C and D.
OUTPUT to INPUT
Advanced: loop back
This is used for injecting an existing output port’s data into a different input connector. You can take the output of one port and direct it to the input of another port.
Again, this advanced routing technique is only available if you’ve enabled Advanced MIDI Router in the settings.
Note: injecting MIDI to an INPUT port only works within Bome Network. Other applications using the same MIDI INPUT port will not see the injected messages.
Example
Route 1 - IN: A Virtual In → OUT: A Virtual Out – (pipe)
Route 2 - OUT: A Virtual Out → IN: B Virtual In – (inject)
Route 3 - IN: B Virtual In - > OUT: B Virtual Out – (pipe)
Anything coming from input A will go to output A (route 1) and from there to input B (route 2) which in turn will go to output B (route 3). Anything coming from input B will only go to output B (route 3). Essentially, we get a duplication of IN:A (to OUT:A and OUT:B) and a B-pipe (IN:B to OUT:B).
Or you could do the following to achieve the same result by using OUTPUT to OUTPUT explained below:
Example (using OUT to OUT)
Route 1 - IN: A Virtual In → OUT: A Virtual Out – (pipe)
Route 2 - OUT: A Virtual Out → OUT Virtual APC MINI – (duplication)
OUTPUT to OUTPUT
Advanced: duplicate output
You can duplicate output ports by selecting OUT ports for both source and destination. Anything sent to one output port will also be sent to the other output port. Essentially, we’re duplicating an output port.
Again, this advanced routing technique is only available if you’ve enabled Advanced MIDI Router in the settings.
Example
Route 1 - IN: A Virtual In → OUT: A Virtual Out – (pipe)
Route 2 - OUT: A Virtual Out → OUT: APC MINI – (duplication)
Route 3 - OUT: APC MINI → OUT: BMT 1 – (duplication)
Route 2 creates a new output to my attached APC MINI device. Everything sent to the virtual port OUT:A will also be sent to the APC MINI output port. Route 3 will also send anything that is going to the APC MINI to BMT 1 output. Now given route 1, everything coming in virtual port IN:A will go to virtual port OUT:A (route 1), to my APC MINI (route 2), and then also to OUT:BMT 1 (route 3).
MIDI Feedback
Be careful with cyclic MIDI routes where the MIDI messages will end up on the same ports so they will enter an infinite loop. Inside Bome Network, you can only create MIDI feedback with the advanced routing techniques (injection and duplication).
Bome Network detects MIDI feedback within the Bome Network MIDI Router and disables such MIDI routes. They’re marked with a lightning indicator too.
Feedback Example
Route 1 - IN: Launchpad → OUT: A Virtual Out – (pipe)
Route 2 - OUT: A Virtual Out → IN: Launchpad – (inject)
Route 1 will inject everything coming from the Launchpad to the virtual output port OUT:A. Route 2 will then inject everything sent to OUT:A back to the Launchpad input port, so the MIDI messages will be back to processing by Route 1, where they will be sent again to OUT:A, and so on.
Feedback Example
Route 1 - IN: Launchpad → IN: A Virtual In – (inject)
Route 2 - IN: A Virtual In → IN: Launchpad – (inject)
Another way for MIDI feedback…
Feedback Example
Route 1 - IN: Launchpad → IN: Launchpad – (inject)
You can also create feedback with just one route.
Be careful with virtual MIDI loopback ports by other applications such as LoopMIDI or LoopBE. They can easily lead to undetected MIDI feedback.
Summary
- When the source is input and destination is output: a one-way pipe.
- When destination is input you are injecting the MIDI data to the input endpoint (loop back).
This appears to only work with Virtual MIDI ports if you are injecting to a destination input. - When the source and destination are outputs: you are duplicating existing ports.
- The quickest way for a MIDI merge function is to take multiple existing INPUTS as a source and route to a single OUTPUT as a destination.
Note that injecting into a MIDI INPUT port will only work inside Bome Network. Other applications using that MIDI INPUT port will not see the injected MIDI messages.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz