Dorico and Ableton MIDI will not work simultaneously

I’m a total waste when it comes to music technology, but I would like to be able to run Ableton and Dorico at the same time and use MIDI in each program.

I’m usually transcribing something and using my MIDI controller to pick out the notes with different sounds in Ableton. Once I’m sure of what I need to write, I’d like to immediately switch to Dorico and use the MIDI functionality to write. (Right now, MIDI will only work with the program I’ve opened up first.)

Is this possible? Should this be possible?

Theory: I’m guessing that you’re probably on Windows. Quite a few devices come with USB<>MIDI drivers for windows that do not properly support multiple clients and get tied to the first app that calls for it.

I.E. Launch Ableton first, and MIDI works inside. Launch Dorico, and no MIDI input from your keyboard?

I.E. Launch Dorico first, and you can play in from your MIDI keyboard. Launch Ableton, and no input?

If this is your problem, then there is a workaround.

A good Virtual MIDI port that properly supports multiple clients can solve the problem.

Install a virtual MIDI port. I’m on Windows 11, and find loopMIDI to be a great option. loopMIDI lives in the system tray and makes it easy to add/remove virtual ports of any name you like at will. The setup remains intact with your Windows user login until such time as you intentionally go in and change or remove it.

Once you have at least one virtual MIDI port setup…

Use something like Bidule or Bome to take control of your MIDI controller Keyboard. Let this be your central ‘router’ for managing and diverting MIDI anywhere you like. Ultimately, you route it through virtual ports into stuff like Dorico and Ableton. Add rtpMIDI and you could even send stuff over your LAN/WAN.

For me it works like this:
I’ve set up several virtual ports on my system using loopMIDI. Once I create them and name them as I like, they stick with my Windows user login account until I decide to remove or change them.

Before I launch any DAW or Scoring software I run a stand alone instance of Bidule. I have Bidule grab the inputs of my MIDI controllers, and route the output to virtual ports.

Here you can see that I’ve routed the inputs of my Arturia Keylab mkII into a trio of virtual ports: A, B, and C.

In the above setup, I send the first mkII port unmolested straight into virtual port A. My mkII sends the normal playing stuff through this first port, while it does more ‘fancy stuff’ like Mackie Universal Control, display and light manipulating sysex data, and more, over the second port.

I’m having bidule ‘transform’ some MIDI events that the mkII controller sends over that second port when pressing various buttons while the keyboard is still in ‘DAW’ mode (transport controls and such) into something far simpler and easier to bind to commands in Dorico. I route that port 2 transformation to virtual port C, and yet it’s still no problem to provide an unmolested version of the output over virtual port B (needed by my controller profiles that implement the fancy Mackie stuff, and more, in Cubase).

The bidule called MPK Transport is used to control some stuff in the main bidule instance itself. I personally do more with the first stand alone instance of Bidule than route MIDI, but that’s a whole new thread! The short version is: ASIO Link Pro + Bidule means I can route and manipulate MIDI and ASIO or WDM audio in all sorts of ways before it ever hits a particular DAW like Cubase or Dorico, and do it all again when a stream exits such an app :wink:

Since the virtual ports happily support multiple clients, I can then run whatever I like later. Instead of getting input directly from the Arturia USB driver, they’ll get it from the virtual ports.

In Dorico, I have it ignore all inputs but these new Virtual Ports that are relevant for the session.

There are more benefits to the setup than getting around single client USB drivers. Bome and Bidule offer all sorts of features to transform and manipulate MIDI data in real time.

Bome is geared more exclusively to working with MIDI streams, while Bidule can become a complete DAW/HOST in its own right.

The free Classic nagware version of Bome should be enough to solve the simple issue at hand (rerouting MIDI from dev to virtual port).

Read up on them both, give both a try.

Personally, I’ve found Bidule to be my ultimate Swiss army knife of a host and plugin. I run it when my system boots to gain control of devices with these problem drivers, but that’s only the beginning. It’s amazing as a diagnostics tool. It’s good for general routing and mixing. I often use it as a plugin to bridge VST3 plugins into VST2 only hosts (HALion 7 in Band in a Box, Finale, or Sibelius) and vice versa (Not really needed yet for Windows users, but it might be soon necessary to run such a bridge to keep using VST2 plugins in Steinberg hosts). I use it to blend multiple plugins into a single ‘super plugin’ instrument all the time! Bidule turns out to be a quite a ‘sound design’ tool as well.

5 Likes

P.S.

I don’t know too much about Ableton or I would have suggested this FIRST…but I suspect it might be possible to have Ableton act like Bome or Bidule in a setup.

I can do it with Cubase like so…

I still need a virtual port like loopMIDI to fix the USB driver issue…
So, if you don’t have a virtual port installed, grab one.

But instead of using bome or bidule, I can always launch Cubase FIRST. Cubase will grab all the MIDI devices. Any apps I launch later might not be able to see my mkII controller at all at this point!

No problem…since Cubase can see and use the input device…it can also ‘forward’ it to other ports/devices/plugins. Right?

From there I’d use empty MIDI tracks ‘armed’ for monitoring in Cubase to route things out to virtual ports that other apps can use without issue.

So, I might have a MIDI track in Cubase named, “mkII>Dorico”.
For the track’s input, I have my mkII MIDI controller. For the track’s OUTPUT, I set it to a virtual port, and make the MIDI channel ‘ANY’.

I ARM the track for monitoring anytime I wish to forward this signal to other apps over that virtual port.

Over in Dorico (or whatever secondary apps are at hand), I have things set to get MIDI controller input from that virtual port, instead of trying to get it directly from the hardware’s included driver(s).

I suspect you could do something similar in Live if you don’t want to bother with Bidule or Bome.

  1. Launch Live FIRST.

  2. Find a way to route your MIDI input into Live back out to a virtual port, of which you’d have Dorico listening.

Personally, I still swear by a bidule setup :slight_smile:
It’s pretty cool to be able to have a single MIDI controller emulate dozens of different controllers all at the same time (transform and remap stuff in real time, send different variations to different virtual ports…creative and pragmatic freedom!).

1 Like

Are you on Dorico 5.1? I thought this version came with a Windows driver that wasn’t ‘exclusive’…
Oh hang on, that’s audio, not MIDI.

1 Like

These drivers ship with the hardware and tie in at the kernel level. You get what you get.

I suppose it’s possible that Dorico now has a way to transmit MIDI input out to some sort of built in virtual port? It’s a feature I’ve yet to encounter. Even so, it’s still going to be evident that whatever is launched AFTER Dorico probably will not be able to access such hardware directly as they’d been doing in the past.

In my experience, the majority of USB<>MIDI drivers for Windows have this issue. I say the majority…I’ve yet to come across USB<>MIDI drivers for Windows that don’t suffer from this.

MIDI INPUT from the device driver is exclusive. The first app that grabs the device gets it, and that’s it.

When using the USB connection…This was the case with my Akai MPK2 series controller. It’s the case with my Akai EWI wind Controller. Same with my newest controller, an Arturia Keylab 61 mkII.

Output USB<>MIDI devices aren’t usually as much of a problem. I.E. My old Fantom XR can take output from more than one app at the same time. I.E. I can use its included editor software while also using a DAW like Cubase or Dorico. Not so for the XR’s USB input driver tho’…only one app at a time can claim that (The XR has no keys or knobs that transmit MIDI, it’s only used for sysex dumps and such from the XR out to the PC).

I think I read somewhere that this behavior is following Microsoft’s RULES for doing MIDI over USB.

Mind you, I have some long out of production MIDI PCI devices that don’t suffer from this restriction (M-Audio Delta 1010). To go through this MIDI device, I’d need to use the old 5pin DIN cables to connect things, and these days quite a few features of MIDI controllers are exclusive to USB connections.

So, over the decades, I’ve just made it a habit to pick one app in particular that is in charge of grabbing ALL MIDI input, and routing it out from there if and when I need to use multiple apps together.

Cubase is quite capable of doing the job provided one adds a virtual port. Just use a good ole fashioned MIDI track to reroute the MIDI stream on to a virtual port. I suspect Ableton Live can do it just as well.

Over the years I’ve fallen in love with bidule for a book’s worth of reasons. It’s my defacto solution for the Windows USB driver issue (plus an endless supply of sound design and workflow perks). In fact, I’ve taught my PC to boot it up as soon as I log in. I even pipe my browser audio and such through it so I can run VST plugin EQ, limiters, and compressors (sick of the commercials blowing the walls down, and the programming being too soft to hear…so I have plugins to keep it all in a cozy listening range).

I treat it like my super patch bay to get things MIDI/Audio diverted to and from whatever I like.

4 Likes

Thank you for the massive reply. Much of what you said is over my head, but I’m going to learn, and will get back to you in this thread when I find out if this solves my problem.

Follow up question…

When I get this all set up, how will my computer distinguish which program I’m trying to use MIDI with if I have multiple programs open?

For example, if I’m trying to input notes into Dorico using my MIDI keyboard, will it also trigger whatever I have happening in Ableton? Or will it just default to whatever window I have active (Dorico in this example)?

If you’re using loopMIDI plus bidule or bome…
Once you have diverted the input of your MIDI controller into bidule, and the output of bidule to a virtual port (give it a name you like), you will have your apps listen to the virtual port for MIDI input. Since the virtual port is multi-client friendly, you could use the same one for many apps.

If you do not use bidule or bome…
You still need a virtual port like loopMIDI.
You’d always launch Ableton first. Make an empty MIDI track and set its input as your keyboard, and its output as a virtual port. Arm this new ‘routing track’ in Abelton in Monitor mode, so it always passes the MIDI on to the virtual port. Launch Dorico, or any other apps ‘after’ Ableton, and they will all need to get MIDI input from that virtual port instead of directly from your MIDI controller’s driver.

2 Likes

Depending on how you set it up, it won’t need to if you are sending the MIDI signal to multiple ports simultaneously. Here’s what my Bome map looks like:

Any MIDI data from my drum machine or keyboard is simply sent simultaneously to the various MIDI ports that I’ve created. As Dorico and Transcribe both have their own dedicated MIDI ports, they both can receive MIDI signals at the same time. This way I can both input into Dorico and control Transcribe with my MIDI foot pedals. I can also leave a standalone VST open if I want to always hear that sound while inputting into Dorico, as the VST and Dorico can each then receive the signal on their own dedicated MIDI port.

2 Likes