Using Plug-ins with Single and Limited Multi-Client Windows MIDI Interfaces
This does not apply to Macintosh computers.
At present, while most MIDI interfaces will claim to be multi-client in Windows, they actually are not.
Most MIDI interface drivers are either "single-client", meaning that they can only be opened by one application at a time or they are "limited multi-client". Limited multi-client drivers can be opened multiple times but the driver can only be opened once by any process. This is a serious limitation when attempting to use a Midi Quest instrument plug-in because the host needs to access the MIDI ports and Midi Quest needs to access the MIDI ports and both are running in a single process. Because of the limitation of the Windows MIDI drivers for the MIDI interface, the Midi Quest plug-in will not be able to open the MIDI ports.
Note: If you are using iConnectivity MIDI interfaces. The best solution is to use their Auracle configuration software. This software allows virtual ports to be created and manages merging of the various ports so that Midi Quest and the plug-in host can both access the MIDI interface at the same time. For iConnectivity MIDI interfaces, this is the best solution.
What are the Solutions?
The first solution is a poor one. Have all MIDI routed through the Midi Quest plug-in during playback so the MIDI interface ports are open only in the plug-in and closed in the main application. However, during the recording process you will need to close the ports in the plug-in and open them in the DAW in order to receive data. This scenario is not ideal because the best MIDI timing can not be guaranteed and it is necessary to change your working environment depending on what you want to do which is far from idea.
The better solutions require additional software but is far superior because it bypasses the limitations of the MIDI interface's MIDI drivers. These solutions utilize virtual MIDI cables allowing both the DAW and Midi Quest plug-ins to connect to the MIDI interface indirectly.
Based on user experience, this is the best functional option and has the advantage of requiring only a single piece of software. The disadvantage is that the solution is not freeware and a contribution should be made to support the software.
Note 1: this tutorial was written based on our experience. We believe that there may be a better/simpler way to configure the software to obtain the same results. If you are aware of one and are willing to share the information, we will integrate it into this manual.
Note 2: option 1 (this option) assumes that each MIDI port has one instrument connected to it and so only one instance of a given Midi Quest plug-in is required to support the instrument. If a MIDI splitter or other hardware is being used such that a single MIDI OUT port is expected to support multiple instruments, option 2 should be used because the MIDI cables can be open multiple times within a process.
What will you need?
rtpMIDI from http://www.tobias-erichsen.de/software.html
This software was originally developed to route MIDI between computers using a network. A pair of MIDI IN and MIDI OUT ports exists on each computer with MIDI flowing back and forth between the two. rtpMIDI accomplishes this by creating virtual MIDI ports which are multi-client and can be used to address the problems of single-client MIDI drivers. rtpMIDI also allows real MIDI ports to be linked to the virtual ports that are created. Using this system, both pairs of virtual MIDI ports are
Follow these instructions to get started...
1. Download and install ftpMIDI. ftpMIDI relies on Apple Bonjour software. If this software is not installed, the ftpMIDI installer will prompt install it. Ensure Bonjour is installed or ftpMIDI will not work.
2. Please note an excellent general tutorial for rtpMIDI can be found at rtp MIDI tutorial.
3. Run rtpMIDI and click on the "Advanced" tab
In the middle of the page, in the "Virtual Ports" section set the following:
"Creation Mode" to "Create port, fail enable if unsuccessful".
"Standard bitrate" to "31250" if traditional MIDI ports are being used. If only USB MIDI ports are used, the rate can be increased as long as it doesn't exceed the USB capabilities of the instrument
"Maximum Sysex-size" can remain at the default "256" kilobyte unless a Korg "All dump" driver is being used that requires memory larger than 256k.
After enabling Virtual ports, click the "Setup" tab
In "My Sessions", two ports should be created for each MIDI IN/OUT port pair that can't be simultaneously opened by both Midi Quest Pro plug-in and the DAW in the DAW environment. To do this follow these steps:
1. In the "My Sessions" section in the upper left, click the "+" button
2. A new session is added to the list, selected, and displayed the right hand side in the "Session" area.
3. The session will initially be given the name of the computer user as this software is primarily used to transfer MIDI between computers.
4. Change the name of the Session to a name that will readily be recognized as representing a physical MIDI port
5. In this example, a Roland UM-1 MIDI interface will be used so
6. Change "Local name" to "UM-1 (virtual)" to differentiate from the driver supplied by Roland
7. Change "Bonjour name" to "UM-1 (virtual)" (good practice but not necessary if the software's networking capabilities aren't being used)
8. Set the "Live routings" parameters to the actual MIDI ports
9. When configuration is complete, check the "Enabled" box. This will also enable the session in "My sessions"
The result will appear as follows:
Next, you need to create the ports that are used inside the DAW. These can be shared by both the DAW's MIDI tracks and the Midi Quest plug-ins.
10. In "My Sessions", create another Session
11. In the "Session" area call it "UM-1 (for DAW)".
12. Don't make a "Live Routings" assignment and check "Enabled".
The final step is to connect the two ports.
12. In "Directory" select the network connection, in this example it is an Ethernet connection but it could also be a WIFI connection, and press the "Connect" button directly below. The result is
Note that "UM-1 (virtual)" is a participant of "UM-1 (for DAW)". This links the two virtual ports together along with the real MIDI ports "UM-1".
When a MIDI event is received by the UM-1 MIDI IN port, rtpMIDI gets the event because it is associated with the "UM-1 (virtual)" port and it is forwarded on to the "UM-1 (for DAW)" port where it is received by Midi Quest. Conversely, MIDI events sent to the "UM-1 (for DAW)" MIDI OUT port are collected by ftpMIDI and forwarded to the "UM-1 (virtual)" port.Since the real "UM-1" MIDI OUT port is associated, the MIDI event is forwarded to the physical port and output to the instrument.
13. Repeat steps 1 - 12 for each real MIDI port that requires a virtual equivalent
14. In the DAW, if possible, only open only the new rtpMIDI ports called "XXXX (for DAW)" and leave the actual MIDI ports closed.
15. In the Midi Quest Pro plug-ins, open and use the same new rtpMIDI ports called "XXXX (for DAW)"
When using a Midi Quest plug-in, send and receive SysEx to and from the instrument use the virtual MIDI port
rtpMIDI is a service with the window acting only as a configuration interface. This means it can be closed and all of the "My Sessions" are maintained until deleted or disabled at some future time.
Based on user experience, this option is not nearly as good or reliable as option 1 but it does have the advantage of being completely free.
What will you need?
MIDIOX from www.midiox.com
loopMIDI from http://www.tobias-erichsen.de/software.html
MIDIOX is a tool which, amongst other things, allows you to automatically route MIDI data from one port to another.
loopMIDI is a virtual MIDI cable tool which allows you to route MIDI data from one application to another in Windows. The most important thing about these virtual MIDI ports is that the are truly multi-client. This means that they can be opened multiple times from within the same process!
Of course if you have preferred tools which perform the same functions as these two tools, you can just as easily use them.
Following are the instructions necessary to get started...
1. Download and install both applications.
2. Run loopMIDI and create a virtual port for each of your real MIDI ports. An example would look like this:
In the lower right, enter the name of the port you wish to create and press the "+" button in the lower left to create the new MIDI port. It really is that simple. For names, choose whatever works best for you. One suggestions would be to name the ports after the instrument that the port is connected to so "Yamaha MOTIF MIDI OUT" and "Yamaha MOTIF MIDI IN" for the two MIDI ports used to connect to this hardware. Alternately, use the name of the MIDI interface port that the virtual cable will be connecting to and append "v" or "virtual" to the name.
Once you have done this for each MIDI port, you can close the loopMIDI window.
Next, run MIDIOX.
From MIDIOX's "Options" menu choose "Midi Devices..." and the following dialog will appear
The upper left box lists all available MIDI IN ports and should include the ports created by loopMIDI. (note: the second item in the list is "loopMIDI Port OUT 1")
The lower left box lists all available MIDI OUT ports and should include the ports created by loopMIDI. (note: the second item in the list is "loopMIDI Port IN 1")
This is the important concept. From here on only MIDIOX should connect to your read MIDI ports. Your DAW and plug-ins should connect only to the loopMIDI virtual MIDI cables and they connect to the real MIDI ports. Why? As previously stated, the virtual cables allow multiple connections. The drivers for the real hardware interface probably does not. It is in this dialog that the connections are made.
Warning! You may be tempted to believe that a single cable can be used for both the MIDI IN and OUT ports of your hardware interface. It can't and this will produce serious MIDI loops. Don't do it!!
For this example, I will use the UM-550's Port 1 MIDI IN and MIDI OUT.
First, uncheck the "Automatically attach input to Output during selection" option
The way MIDIOX works is a MIDI OUT port is selected and then MIDI IN ports are selected to route to it so select the real MIDI port, UM-550 MIDI 1, from the MIDI Outputs listed in the lower left list and the virtual port you want to associate with it, loopMIDI Port Out 1, from the MIDI Inputs list as follows
You will see loopMIDI Port OUT 1 listed in Port Map Objects. Click, drag and release it over UM-550 MIDI 1 in Port Mapping. After the connection is made, the dialog will appear as follows
indicating that any data received from loopMIDI Port OUT 1 will automatically be routed to the UM-550 MIDI 1 OUT port.
The next set of instructions are used to route data from the hardware interface's MIDI IN port to an application. This may feel counter intuitive but it works. In this case the MIDI cable that is the OUT connection is the virtual cable that the DAW and plug-in will connect to so select "loopMIDI Port IN 1" from the MIDI Outputs list and the port will appear in the Port Mapping list with no connections. Also select "UM-550 MIDI 1" which is the real hardware MIDI IN port.
In order to complete the mapping connection, click on "UM-550 MIDI 1" in the Port Map Objects list and drag and drop it on "loopMIDI Port IN 1" in the Port Mapping list. The result will appear like this.
If you have only one MIDI interface, that's it, you are done. If you have multiple MIDI ports, you will need to repeat this process for every port where the DAW and your Midi Quest plug-ins must have access to the same ports.
Once finished, you should save the configuration as a preset.
Using Virtual MIDI ports in your DAW and Midi Quest Plug-ins
In order to use this system, you will need to start MIDIOX before your DAW and load the configuration you have created. This ensures that any single client MIDI interfaces are opened by MIDIOX instead of the DAW.
In both the DAW and any Midi Quest plug-ins, using this example, to receive input from the UM-550 MIDI 1 MIDI port, choose "loopMIDI Port IN 1". To transmit MIDI events out the UM-550 MIDI 1 MIDI OUT port, select the "loopMIDI Port OUT 1" port.
In order to ensure this, optionally have the DAW and Midi Quest plug-ins only open the virtual ports instead of all ports.