On my Windows rig I use Tobias Erichsen’s loopMIDI and Blogue’s Bidule. Sometimes I also toss jack2 into the equation.
And example of my primary setup:
With jack2, An instance of Bidule serves as a central patch bay for everything MIDI and Audio running on my rig. I can route both to/from almost any ASIO compliant app. (I can’t get audio INTO Dorico with jack2 alone, but I can send it from Dorico anywhere I like…even to multiple apps/outputs/etc.) And example would be having a big MIDI workstation such as a Fantom XR connected to the rig…I’d like to be able to work its sounds into the mix, and be able to use it as a dumb controller, with more than one app at a time, and more.
After having setup a number of Virtual ports, these remain intact for good until removed. I can reboot, whatever…and they’re still present. The catch with these is that anything that wants to use them has to be logged into the same user account. I.E. I can NOT use these virtual MIDI cables to communicate between things running under two different logins at the same time (for that scenario, as rare it may be, I’d use rtpMIDI over a local rtp port instead).
I’ll begin by launching an instance of Bidule in stand alone mode. There is usually a free stand alone version available for Bidule on their website. If you’d also like the plugin variant which can also be run inside other hosts, well, that’s not free.
Here, in this first stand alone instance of Bidule, I usually don’t connect Bidule to any audio ports unless jack2 is involved and I’d like to set up virtual audio cables as well.
jack2 can create ASIO compliant virtual cables for audio. It can also be used to set up virtual MIDI cable, but I’ve had better luck only using jack2 for audio, and using loopMIDI and Bidule for the MIDI side of things. If you need to aggregate multiple audio devices into a central driver, one can also combine ASIO4ALL with jack2. ASIO4ALL is a replacement for Steinberg’s own Generic ASIO bridge (usually only needed if your audio card/chip-set doesn’t natively support ASIO, or for situations when you want to try ‘aggregating’ several devices together…I.E. Pull a USB mic into the DAW, yet still be able to use your audio card’s inputs and outputs on the side).
If you also need audio virtual cables, yet another option is reaStream, which can route both audio and MIDI over your LAN (as well as to local ports that never actually hit your physical network router). In my experience this can work great for the right situations if you host it in the DAW, and route things into Dorico from there, but not as easily and efficiently as the jack2/loopMIDI>Bidule/Bome setup.
Sadly, Dorico doesn’t have a way to put misc. audio inputs on the mixing console natively, so it’s typically best to do it the other way around, and use jack2 to send audio to other ASIO apps from Dorico. If for some reason you really want/need to get audio into the Dorico mix, it’s possible by setting up a reaStream instrument in one of your mixer inserts (Personally, I use the fully registered version of Bidule as a vst to chain it to something that looks/acts more like a regular VSTi in Dorico, as opposed to hosting it as a mixer insert. In short, I can use it, and a virtual midi connection to fool Dorico into thinking my Roland Fantom workstation is a ‘vst plugin’.). Why would I want to do this? Well…I sometimes like to bring audio from instruments like the Roland Fantom into the Dorico mixer, so it’ll share the mix, and the common reverb with the Dorico hosted VST plugins.
From there I use Bidule to act as my ‘patch bay’, thus allowing me to send the data from my MIDI controllers to any software I like. I can send it to one app, or to several.
In addition to using Bidule as the ‘patch bay’…I also use it to make my MIDI controllers smarter.
I.E. I have some Yamaha stomp pedals that are wired backwards for my AKAI MPK261, and the MPK doesn’t have a way to invert the signal. Bidule can though…so boom…I can use those pedals in MPK ports that I normally would not.
I.E. Sometimes I’ll plug in a controller that still works, but is a little flakey from age. An example might be a key or two that only fires at ‘full velocity’. So, until I get a chance to service the hardware, I can have bidule isolate the sticky keys and bring them down to a somewhat respectable velocity.
I.E. I can make really dumb MIDI controllers that aren’t very programmable pretty smart. Say your run of the mill Walmart Casio piano. Maybe it only has one slider that sends CC7 volume, and can’t send aftertouch at all. With Bidule can transform that CC7 into whatever I like on the fly. I could also change that CC7 into a static aftertouch controller of sorts (some libraries do need aftertouch at times).
I.E. Got a full 88 key electronic piano with MIDI in/out? It doesn’t have many programmable buttons and stuff, but you can split that keyboard into ‘zones’ and treat some of the keys like programmable buttons. Easily build a ‘universal’ setup that works in both Dorico and Sibelius (or whatever else you desire) for things like transport control, cursor placement, and more.
I.E. I can turn MIDI events in to qwerty keyboard events, and vice verse.
I.E. Since Bidule also has an OSC server and client, I can use tablet apps over the wi-fi LAN as a MIDI controller, and route that into any app I like that supports MIDI in.
There’s a whole lot more it can do really. The main thing when using this set up, is that in my case, I MUST be sure to start Bidule before I start other apps that want access to the AKAI instrument ports. Why? For some reason, the usb MIDI drivers for my AKAI devices go exclusive to the first app that grabs them. Your mileage might vary depending on your hardware and the drivers that goes with it.
Another very good option for rerouting and transforming MIDI on the fly is Bome Translator. For PC they also have free to try Classic version with a nag splash screen on startup (other than the nag screen on startup, it perfectly functional and doesn’t expire…it’s only like $30 US to register this version). Again, you’ll require virtual MIDI ports to get this in the chain.