Dorico and the Bidule VSTi plug-in

User Brian Roland has turned me onto Bidule, which is basically an application that allows a user to set up a directed acyclic graph of processors (mostly, but not limited to, digital audio).

I figure many professional users are well familiar with this tool, but I don’t see a thread in this forum that’s dedicated to it, and I think it’s worth it to bring it to the attention of playback junkies like myself who might not have heard of it.

Basically, it’s a way to take the information coming out of Dorico (or any other notation application that supports VST/VSTi plug-ins), pipe it through a network of specialized nodes, and then send the end result back to Dorico (or straight to your audio-out device) for playback.

Just as an example of what it does, I have a keyswitch-able sample set loaded into one of my MIDI channels in EastWest Play. This set doesn’t include a col legno battuto sample, so I’m forced to dedicate a channel to that sample (which is, of course, available as its own instrument, rather than part of a keyswitch-able set).

Normally, I would proceed to :smiling_imp:implement playback hackery:smiling_imp: to get the audio right whenever the score called for col legno battuto on the staff. Since I wouldn’t want to make a mess of the score in doing so, this would be no minor feat.

With Bidule, I simply set up a DAG that looks like this:

So, the audio information moves from Dorico, to a Key Switch node, to the EastWest Play plug-in, and finally back to Dorico. That’s the simplest set-up that I could devise; I could do a whole hell of a lot more with that, if I liked.

The Key Switch node is where the magic happens. If I double-click it, I see these controls:

So, I’m telling the information coming from Dorico, “if there’s a G7 (note 91) keyswitch, then change the MIDI to channel 4.” Naturally, channel 4 happens to be the channel to which I’ve assigned the col legno battuto sample in EastWest Play.

I’ve just begun playing around with Bidule, but I can definitely see this opening up a world of playback possibilities, and taking away a lot of the typical hurt involved in getting notation software to sound off the way I really like.

Just thought I’d plug Bidule here! Brian is the real expert, he’s been using it for a long time (apparently), I would bug him if you’ve got questions. :wink:

P.S. For developers, Plogue offers an SDK for Bidule. So I’ll be able to develop my own Bidule nodes if I please. Very sweet.

Bidule also has its own forum at https://www.plogue.com/phpBB3/.

What it seems could be happening, is that you might be mixing an EW instrument that has built in key switching, with a channel hop to a non KS instrument in the same plugin?

I might have misread, but if you’re getting conflicts between native EW Keyswitches and doing Bidule Key_Switching channel bounces…

in your Dorico Expression map, you could use two key-switches in different ranges of the keyboard. Leave the ones that are there to control the non-muted strings alone. In some other unused range of the keyboard set up a second key switch to control the Bidule channel bounces.

Another, and perhaps less confusing way you could do it, is to use program changes instead of key_switches for doing the Bidule channel bouncing.

  1. Get rid of the key_switching bidule.
  2. Double Click the MIDI splitter and change it to program change mode.
  3. In Dorico, for all of the techniques that will play over channel 1, add a Program Change 1.
  4. For techniques that will play over channel 2, add a Program Change 2.
  5. For channel 3, add PC 3.
  6. Etc…on up to 16 possible channels.

In the above example, since I have a native Key Switching instrument loaded in ARIA on Channel 1, and my muted instrument on channel 2:
I’ll go into my Dorico Expression Maps and add A Program Change 1 for all of the non muted techniques. I’ll add a Program Change 2 for the muted techniques.

If you ever get to point to where you need more than 16 bounces, or want to layer up multiple plugins…lemme know. We’ll get you sorted.

I’m about to see if I can sync up some video in this thing with the Dorico transport :slight_smile: I’m really close to making that happen!

How did you get Dorico in your interface? I was able to get EW play, Symphonic orchestra, other installed audio device such as my DAW, but no Dorico.
Can’'t seem to find it on searches or under the menus.

It finds Steinberg, and Symphonic orchestra but no Dorico.

See.

rexwine, are you using the Bidule plug-in, or the stand-alone application?

If you’re using the plug-in, then Dorico should appear automatically (as “Bidule Plugin_#”) as two nodes (one with outputs from Dorico, and another with inputs into Dorico).

I don’t understand how this can work. How do the program changes get translated to channel changes?

In fact, I just tried it and… it doesn’t work.

Did you double click the splitter and and set it to Program Change mode?

That’s probably it. I forgot I was working in standalone. Although I still find it mysterious that it detected seemingly all my other audio related devices, even ones I’ve barely used.

Thanks

OK, I see what I did wrong now. It’s not actually changing the channel, but rather sending it down a different pipe-line. So we need some channel transformers. One sec and I’ll post that up.

Add from MIDI/Remappers/Channel Remapper to insure the channel for the events get converted. My bad.

PS, the MIDI Monitors are great for seeing exactly what is coming down the pipe.

I’d forgotten that the splitter just reroutes it when in this program change mode, but doesn’t actually remap the channel for the event data. Now when I punch a PC1 it goes to channel 1, and a PC2 goes to channel 2. As I use more channels on the splitter, I’d add whatever remappers I need.

If you’re using the standalone version of Bidule, you’ll need to set up virtual MIDI ports, and direct Dorico to use them as a “MIDI Instrument” in the play tab. In this case audio is NOT routed back into the Dorico Mixer. You’ll have to mix from inside Bidule. It is possible to use reaStream (free) to route audio into one of Dorico’s effect inserts, but it might have too much latency to sync up well with anything you might be hosting natively in Dorico (will depend on the speed of your LAN and your PC).

If you don’t know how to set up virtual MIDI ports:
For the PC one simply installs loopMIDI
For the Mac one makes some ICA settings.

If you’d rather set up instruments on a totally separate PC, it’s possible to send the MIDI over your LAN.


If you’re trying to get the VST version to show up in Dorico (This variant does exist within the Dorico Mixing and effects environment), you’ll need to add the plugins to the Dorico WhiteList.

Below are the the Bidule GUID(s) all ready to copy and paste:

For Windows:

PlogueBiduleVST_x64
565354504C4749706C6F677565626964
PlogueBiduleVSTi_x64
565354504C474C706C6F677565626964
PlogueBiduleVSTi_x64_16
565354504C474D706C6F677565626964
PlogueBiduleVST_x64_16
565354504C474A706C6F677565626964
PlogueBiduleVST_x64_32
565354504C474B706C6F677565626964
PlogueBiduleVSTi_x64_32
565354504C474E706C6F677565626964

For Mac OS X:

PlogueBiduleVST
565354504C4749706C6F677565626964
PlogueBiduleVSTi
565354504C474C706C6F677565626964
PlogueBiduleVSTi_16
565354504C474D706C6F677565626964
PlogueBiduleVST_16
565354504C474A706C6F677565626964
PlogueBiduleVST_32
565354504C474B706C6F677565626964
PlogueBiduleVSTi_32
565354504C474E706C6F677565626964

OK, I’m going to try that now. Sounds like it will do the trick.

Of course, that means having up to 16 channel remappers in my graph. Not a problem, but it would be nice to have a node that consolidates all of them into a single interface, like the Key Switch Bidule. It might be time for me to get my hands on the Bidule SDK.

You can make collections of Bidules into a Group and save it for easy reuse.

See Chapter 7 of the Help File. You can also read about it here.

Wow. Just awesome. That was quick and easy, no need to code a plug-in.

I’m starting to think that this thing is underpriced.

True to my experience thus far, however, this has introduced a new problem: although the natural, muted, pizzicato, and col legno battuto samples are now correct on playback, the duration of the first note in the first bar has been adversely affected (it’s very brief, where it should play for its full duration since it ties into the next note), and my trill notation – which I have dedicated to a different instrument (staff) and loaded into channel 2 (since trill markings are not currently recognized as expression objects in Dorico) – plays on the first channel, so I hear normal, un-trilled violins, instead. :unamused: Bizarre.

Here is the gallery view of what I’m trying to play:

Again, everything but the trill and the duration of the first note play properly. The trill sounds like an un-trilled note, and the first note plays for about a third of its notated length (even though it shows full-duration playback in Play mode’s piano roll).

It’s possible to fix this too, but I’ll have to brain-storm a bit. I’m thinking we could make it so notes can hang over the program change and still get turned off when their note-off events come later on the new channel. By default the splitter bidule turns off all the sustained notes before bouncing the output to a different pin…to avoid ‘hanging notes’. It’ll take a little logic to ‘remember’ what ‘note-off’ events to keep on the previous channel when they finally come (after the PC happens), but it shouldn’t be too complicated to work out. I’ve kind of got a short-cut in mind where we use a couple of splitters in-line, with one that does not bounce at all…that’d insure notes get cut off properly when the 'Close notes on Program Changes" option is toggled OFF in the splitter that manages the PC events. Let me try some things and I’ll follow up…

For trills, one needs a true unmetered sample, or to use an arp engine. I don’t think Dorico natively ‘interprets and plays out trills’ yet. If you’ve got an unmetered tril sample (the kind where you just hold down a key and it keeps looping) Dorico can play it. If your trills and tremolo instruments must be triggered, then we’ll want to build an arp bidule if you want Dorico to play them back without you ‘writing out the entire trill’ on some separate stave.

You can build a BPM sensitive trill arp that’d work with just about any instrument if it comes to it. To get the bpm signal for controling the tempo of an arp bidule, you’d use a ‘sync extraction’ bidule that’s locked onto the main Bidule input. The Sync Extraction bidule would in turn give you access to various signals that DAWs and Plugins use to stay in sync. So effectively, we should be able to make arps for things like trills and tremolos that’s change tempo with the project (unlike alot of the unmetered trill options provided by alot of libraries).

Some libraries offer a double-trigger type of trill…where releasing the key triggers another sample. If you want to use that type along with an arp bidule…you’ll also want to halve the duration of each incoming note that’s being triggered by the arp, or it’s going to sound strange.

I’d forgotten that I once made up a Program Change to Key-Switch Bidule. It might be of use at some point. This thing doesn’t have the final key_switch bidule built in…but it does do all the logic to translate PC1-16 events into MIDI note-on events of your choice…from there you can chain in key_switching splitters if you like. I’ve got a single, and a 16 Channel version in there as examples. To change the key mappings you’d double click into the Group and sort it out as you like.

Examples of how I used this thing was to use a universal set of key switches for different libraries (I.E. where one might have pizzicato on MIDI note 5, another might have it on MIDI note 2, and so forth). I could chain these things in and have a PC change call up pizzicato in several different plugins, that all use differen key_switch mappings all at once.

You can find it in this attachment (I threw a few of my favorite and most used bidule groups in the zip).
Credo’s Bidule Groups.zip (44 KB)

To get these into your copy of Bidule simply unzip to the group folder of your Bidule installation. Not sure where it goes on a Mac, but on a PC by default you can find that in “%SYSTEMDRIVE%\Program Files\Plogue\Bidule\groups”.

When ever you make your own groups from inside Bidule itself, it keeps them in your user space. For windows that’s “%APPDATA%\Plogue\Bidule\groups”, so it’s not a bad idea to back that folder up from time to time, and if you like to use Bidule with 'multiple user accounts" you might want to move it’s contents to the main install location every so often.

For now, I’ve unchecked “Close Notes on Program Changes” in the MIDI Splitter node. The first note plays at the expected duration, now, thanks.

That’s right, it doesn’t. It doesn’t even honor expression map values for trill markings.

As I wrote, I’ve loaded a trill sample into channel 2 in EastWest Play. I’m using a separate instrument on the violin “player,” with its MIDI channel set to 2. It played just fine before I switched to Bidule as my VST plug-in.

Odd…

So if I understand correctly, you have arco on channel one, and this trill on channel 2. You can see in the Dorico’s play tab that a trill.half, trill.whole, or whatever…technique exists, and in the expression map you’ve added a PC2 event at the very top of the list for the trill technique (Yes, order does matter, so make sure the PC is at the top of the list…otherwise the stuff gets dumped BEFORE the PC, and Bidule can’t change channels first)?

Don’t forget that you can throw a MIDI Monitor 2 bidule in there and hook it up to see ‘exactly’ what is being sent where. Also check out the monitoring capabilities you get when you right click a bidule and choose monitor. Good stuff :slight_smile:

Correct.

Dorico offers only a “trill” entry in the Expression map setup interface. Unlike what one would normally see, there is no distinction between half and whole trills (which will be corrected eventually, I suspect). Furthermore, expression map settings for trills are ignored by Dorico, anyway, so providing values for trill playback is a useless venture in any case. (As we all know, Dorico is far from being feature complete.)

So, my solution (until Dorico respects trill notation in expression maps) is simply to write my trills on an entirely separate staff, which is dedicated to MIDI channel 2 (where I’ve loaded my trill sample). It works perfectly when I’m not using the Bidule VSTi. When I do use Bidule, the trill note apparently plays on channel 1, not channel 2.

Will do!