Multiple VSTs with One Instrument

Fairly new to Dorico here, and trying to figure out the best workflow to run multiple VSTs from the same instrument. I’ve looked through the forum and have seen some similar questions but nothing that really addresses the best practice for Dorico 5. I apologize if the convention of this forum is to find the closest related topic and posting there rather than starting a new topic.

What I’d like to do is find a way to do something like the following: Say I have a set of string parts. I want to use Appassionata Strings by Spitfire for the legatos, Spitfire Chamber Strings for the main articulations, and Berlin Strings Special Bows for sul tasto. (It doesn’t really matter what the libraries are; I’m looking for a general solution.) So that means running three different VST engines: Spitfire Player, Kontakt, and Sine. I would like to compose in traditional 5-part string score and bring up the correct library for each articulation and playback technique. Conceptually, it’s all one Expression Map and could be easy to do in Expression Maps if I was only using one VST (or perhaps all the libraries lived in the same VST player like Kontakt). But that’s not the case. So what’t the best way to do this?

If I can’t use an Expression Map, which doesn’t seem possible, then it seems like my choices are using divisi and independent playback, creating the instruments with a different staff for each library and either hiding some of them or condensing them to a single staff, or using a VST container plugin (e.g. VEP or Unify) to load the other VSTs into. Are those in fact my choices, or is there another, less hacky way of going about doing this?

Welcome to the forum, Jim. At the moment, there’s no good way to assign a single instrument (or single voice within that instrument, if you’re using independent voice playback) in the project to multiple endpoints, such that you can have the same music played back by multiple VST instruments. This is certainly something that has been requested before, and which we would like to add, but I can’t say for sure when we will add it.

Because you will normally need a different expression map for each VST plug-in, you really can’t drive this from a single instrument in Dorico. I think the best option is to create duplicate players and instruments and exclude them from the full score layout that you intend to finally print, and manually copy and paste the material from the “main” instrument to the duplicates.

1 Like

Third party plugins can do this.

I personally use a fully registered instance of Bidule (not free).
First I host this in Dorico, then host whatever mix-mesh of plugins I want inside that. It can do channel bounces, keyswitches, and more among the different plugins.

I.E.
Mix and match sounds from all my plugins into one unified ‘super plugin’. There are easy to use ‘bidules’ to reroute incoming MIDI to whatever plugin(s)/Channels I like in real time. I.E. I could have a key switch that changes from triggering an instance of Kontakt on channel 1 to triggering HALion channel 3. Yet another keyswitch could swap it over to a set of layered plugins…Opus stacked with Zenology and ARIA. I could make it do crossfades and stuff among the plugins too. Build new velocity or CC curves. Invert some pedals. Whatever I want really.

It can manipulate audio streams in real time too.

I can also trigger samples or longer audio tracks and keep them in sync with Dorico’s transport.

Running out of resources to play demanding VST instruments? Bounce a few staves to a straight audo track in Bidule…mute out the VST versions, and stream along the rendered version.

Dream it up, and it can probably do it. Best plugin I’ve ever spent good money on. Particularly when it comes to working with Scoring suites, and porting entire sound sets and instrument templates among different Hosts.

It’s possible to test drive a stand alone version of Bidule free of charge. You could use some virtual MIDI ports to run some experiments playing back through it from Dorico.

You might have luck with the free Kushview Element plugin. I haven’t explored it very deeply in a while, but it just might serve your needs. Won’t cost anything but some time if it doesn’t work out.

Below derAbgang recommended VEP. That’s a great option too. I’ve edited this in to toss up a link for it…
Vienna Ensemble Pro Server | VSL - Software Manuals

1 Like

I think that what you’re trying to do is, at the moment, much easier to achieve in a DAW, unless you go down the VST container route but even then it’s not straightforward. With a DAW you can obviously have unlimited tracks but in a notation environment, this quickly gets messy.

Switching between different virtual instruments as opposed to different articulations is much more doable, as Daniel has pointed out. In a recent quartet, I simply switched libraries between flows and by creating player groups and using different versions of the instrument according to the nature of the music, this was perfectly straightforward and the score remains totally readable as you’re just switching players in and out between flows. Of course changes to the VST’s used within a flow is more involved.

Anyway, it’s great to hear that the team are considering implementing multiple endpoints which could revolutionise the way Dorico works.

1 Like

I wouldn’t consider VEP a hack, per se. It’s the perfect tool for what you want to do–load up each VST (same port) and assign incoming channels appropriately so one expression map can address all articulations using CCs and channel changes.

Last I checked, it’s around 200 euros and has a free trial.

2 Likes

yes, I certainly find VEP useful (even if I use it less than before since NPPE). And of course you can that way assign just different articulations to different channels through channel changes in the map. Almost everything in this area is somehow possible in Dorico – I used to use this method for instance for switching between con sord and senza sord when they were different library instruments.

Still, it can require a certain dedication to set all that up whereas with a DAW you simply record directly the required articulation/instrument on each track without the requirement of complex programming.

1 Like

Thanks everyone!

This makes sense, though the process makes for a “compose first then mockup” workflow that isn’t one I especially like. I think using a VST container (VEP, Bidule, Unify) to load multiple VSTs and a single expression map to cover all the VST instruments will likely work better for me. This is the

method. I already have Unify, a simple VST container, so I may try that and then go to Bidule or VEP once I see the capabilities I need to make the expression maps.

This sounds interesting. Can you explain more about how you use this?

I think you are quite right. I currently work in a DAW, primarily in piano roll, and I mostly use a one instrument per track methodology, so not that distant from how things look in Dorico, except in piano roll rather than score notation (though I can use the score editor in Logic to do that too). Though I work primarily in piano roll in the DAW, I was trained back in the 1980s on paper, and there are things about notation, especially the ability to put a project aside and come back to it with minimal costs to restart, that I appreciate about notation. I also like the way I can use separate flows for sketching in Dorico and how easy it is to pass materials back and forth across flows. Lots of pain and suffering doing this sort of thing in Logic, even when you don’t have your instruments loaded into memory. (One thing that persuaded me to try Dorico was working on a long orchestral piece that ended up in three distinct Logic projects, and it was very hard to consolidate them into a single project in Logic. In Dorico, this task would have been trivial because first of all they would have started in separate flows of the same project, and second because it’s much easier to move materials between projects because its much easier to turn off playback in Dorico to make shuffling between projects simple.)

Loading multiple libraries is trivial in a DAW, of course, though not on the same track, which in the DAWs I’ve worked in (Logic primarily) suffer from much the same issue of one instrument plugin per track, which you can get around similarly through the use of VEP, or Bidule, or Unify, etc. track stacks, etc. though because of how tracks work in a DAW there is seldom a reason to do so unless for some reason you like working with multis and layers.

But I’m looking now to work in notation while preserving some of the flexibility of playback I get in the DAW. Dorico seems the best notation program for doing this, and in many ways the combination of notation and playback capability is superior even to Logic and its score editor as a combination of midi playback and notation. I long used Sibelius (grudgingly) and never got along with it very well, and because of that experience it took a long time to take the plunge with Dorico, but since I did I have to say that I really like the program. It does most of what I can do in the DAW and the notation side is of course superlative.

Yes, “hack” is too harsh. It’s a hack only insofar as it is adding capability to get around a shortcoming of Dorico. And I would consider this a shortcoming in Dorico rather than added capability from VEP since there seems no obvious reason that expression maps need to be restricted to a single VST as they are or that instruments should be restricted to a single VST instrument, especially given how divisi works and allows multiple VSTs (presumably because each staff with independent playback is in effect a new staff). I mean, the guts are all there to implement this capability, it’s an obvious thing the software could do, and it even would follow the logic of how much of the rest of the program is built in terms of loading various VSTs for a template. I’m sure there are technical difficulties to overcome that make the task non-trivial, and of course there are many other new capabilities that people would like implemented in Dorico.

The advantage of VEP and presumably Bidule as well is that they load instruments outside Dorico so you don’t have to unload and reload the VSTs when you change projects. That is a real advantage, though I haven’t yet seen a reason to get VEP for Logic.

In any case, thanks again for the various answers! I really appreciate the advice.

As an addendum for this, I’d also love to be able to just do a multiple send, especially if there’s an optional transpose (octave, at least).

Use case would be getting accurate playback from baroque/classical scores with combined “Bassi” parts, which are typically bassoon (at pitch), cello (at pitch), contrabass (down an octave). I imagine the folks doing serious organ work might like it for simulating couplers, too.

1 Like

At basic levels, you can route and mix the audio inputs and output of plugins anyway you like. You get tools to build mixing consoles, gain stages, panners, switching/routing matrix (for both audio and MIDI streams) and more…variables can be controlled via MIDI CC events, and/or VST automation (Dorico doesn’t use VST automation yet, but your Tracking DAWs will).

You get a host of ‘math’ bidules…
Constant entries and operators
Variable entries and operators (change with a slider).
Indexed Lists
Delta calculators
Event Counters
Timers
Gates/Switches
Dozens of ways to ‘trigger’ events
Memory mappers (for storing large maps of variables)
etc, etc, etc…

All the math bidules function the same across the board, so you’ll reuse them, but simply insert ‘conversion bidules’ in the flow to get things on the scale and data type you ultimately need. I.E. Is the math to be done for 8bit MIDI, 16bit MIDI, samples, some time scale, etc. Should the math scale from say, 0 to 127, or maybe it should go from -64 to +64, and so on.

I tend to use my favorite plugins to ‘generate the base waveforms/sounds/etc’, but…Bidule does include some basic oscillation tools making it possible to invent a synth of your own design directly in bidule. Your basics like sine/saw/pulse/etc. You can use samples as oscillators to invent instruments too.

You can design your own comb filters and such to isolate and separate out specific frequencies, or bands of frequencies to further ‘manipulate in real time’ with yet more ‘math and modulation bidules’. You get some ‘examples’ to study…I.E. a reverb bidule showing how to use comb filters to fashion your own plate-like reverb unit.

I.E. Here’s a peek inside a bidule-group that involves a bunch of simple comb filters and ‘sample delay’ bidules together to create a simple reverb unit.

Spectral analysis and manipulation tools are included.

You get LFO generators, of which the output can be converted to ranges and resolutions for a wide variety of purposes (Pump a CC or VST parameters, directly influence various parameters of filters, EQs, whatever you can dream up really).

Stuff to build envelopes (controllers and/or actual manipulation of audio streams).

It provides buffers and stacks if you want to design instruments that capture snippits of audio and pop sequences from stack.

stochastic MIDI event generators…loads of fun for doing experimental music, tone rows, generating random ostinatos against theoretical sets of rules, etc. Again, like with most things in bidule, you can ‘convert’ the output of these ‘random number’ generators to whatever ranges and resolutions you might want to do things beyond generating MIDI note/on/off/velocity events.

You have tools to build sequenced MIDI patterns.

Tools to build Arp Engines.

It can play back and record complete type 0 and type 1 MIDI files, with plenty of ways to trigger them, manipulate tempo, etc (though in most cases it filters out SYSEX stuff).

It can play back and record multi-channel audio streams, in pretty much any sample format/rate/dynamic resolution you’d ever want.

Internally it can convert MIDI or VST events into QWERTY keyboard, or vice verse (more useful when using Bidule in stand alone mode, but it can indeed come in handy as a plugin…especially if you get OSC servers/clients involved).

Nearly every bidule has the tools to store ‘presets’, thus making it possible to make snap shots of ‘panels’ you might build. Use your imagination in coming up with ways to cycle or instant swap among the presets. I.E. Using program changes, CC events, a VST parameter. There are even tools to ‘randomize’ preset order, or ‘randomly scramble’ all the designated parameters in a panel. Powerful stuff.

Making a control panel is pretty simple. The concept is that you ‘group’ bidules together, and then you can use a special group editor to design and display pop open panels (pots, faders, buttons, etc). Here’s an example of a simple General MIDI style mixing console I put together as ‘practice’ in learning to make them. It’s simple in that all these controls do is send CC91, CC93, CC10, and CC7 for up to 16 MIDI channels. I’m just putting it up here to demonstrate that while building your bidules, it can look like a jumbled mess of boxes and wires, but ultimately you can set up GUI panels ‘if’ you want and need them. They’re not hard at all to make. Essentially you just make ‘links’ to ‘variables or parameters’ deeper in a bidule group (via parameter trees) and tell it if you want knob/fader/button/data-field/etc.

The panel making editor for the MIDI mixer above looks like this. Every possible parameter inside the parent ‘group’ that is ‘variable’ is listed in the left. Just add it to the form on the right, and tell it what name and control type you want. Pretty simple :slight_smile:

It has OSC servers and clients…so you can communicate over a LAN/WAN from any bidule instance using IP protocols. One of my personal favorite things to use this for is having my Android devices control my DAW and/or instruments. Since neither Dorico, nor Cubendo have native OSC support, I can use a stand alone instance of bidule to monitor the network, and ‘transform’ events into regular MIDI or Mackie Universal Control events that these hosts CAN use.

The UI is ‘object based’. The pro of this is that you don’t have to be a wizard at coding or scripting languages to design some amazing networks. The con of it, is NOT built to be pretty or impress anyone on the screen. It can be a fiddly and time consuming to build a very complex network (though will get faster at it, and find yourself reusing just about everything you take the time to build for bigger and more creative ventures).

It can host VST2, VST3, and CLAP for sure. On Macs you can also host AU plugins.

The plugin version can run in instrument and effect slots.

It includes options to have bidules use discrete processing, or tie time sensitive processing to your audio clock. There are also versions of the plugins that can do 64bit floating point precision (if the host supports it).

You can get a dev kit for it to ‘code and compile’ your own bidules, make skins, and more if desired.

It has stacks and stacks of snooping and monitoring tools in various ‘human readable’ formats.

Really, it might not look like much, but I honestly could sit here and type for hours as to the possibilities with a tool like bidule.

At first I invested in bidule for simple plugin bridging and chaining, and the ability to snoop the MIDI and Audio streams for some ‘basic’ transformations and whatnot. It was already worth every penny from the first week of use to me.

I’ve used virtual MIDI ports, rtp MIDI, and OSC to treat it kind of like VEP (as an instrument server) before as well (Tho’ not for Dorico in this case). It doesn’t have a special client plugin like VEP to be a true ‘remote or local streaming instrument server’, but it is possible to set it up as stand alone locally and support multiple hosts at the same time (perhaps even on a remote machine). On some systems, reaStream, or something ASIO Link Pro can supplement stand alone bidule instances in ways that come pretty close to VEP.

Dorico doesn’t yet provide a way to get ASIO ‘inputs’ of our choice onto the mixing console…so at this time, bidule would NOT even begin to rival VEP as a pure ‘streaming’ instrument server for Dorico users. I’ve had ‘some luck’ using reaStream to get the job done in Dorico…but I found it to be more trouble than it’s worth (plus some latency on my particular system that I don’t like).

With a host like Cubase, that allows us to get any ole ASIO stream onto the mixing console. Yes, bidule could be set up with the right ASIO backend (I use ASIO Link Pro) to be a lot more like VEP.

With time, I’m constantly coming up with more uses for bidule. It’s a pretty amazing plugin.

Sebastian at Plogue keeps a regular eye on the user forum. He’s extremely helpful with users, and is quick to fix ‘issues’ we user find and point out.

Today I happen to be using Band In a Box instead of Dorcio…and here’s how I am using bidule ‘right now’. These are among simpler examples of things bidule can do to bolt ‘never had it, and never will’ features onto almost ANY host you like :wink:

The first thing bidule allows me to do, is get around the problem that BIAB doesn’t yet support VST3 plugins!

I like to have loads of choices when I’m playing with the song building ‘styles’…so I keep an instance of bidule that looks something like this…

Right off the bat, I’m able to use a few VST3 plugins that I could not before in this particular host. HALion, Groove Agent, and Zenology don’t exist in a VST2 format, I’m on a Windows PC so no AU option. So thanks to Bidule, I can use them with BIAB, Sibelius, and Finale anyway.

I can easily mix and match sounds from any of these plugins.

In the case of ARIA there, I’m often using instruments that need CC 11 events to handle ‘dynamics’. Band In A Box can’t generate this stuff, so I have bidule here snoop incoming MIDI notes, then echo the note velocity value as a brand new CC11 event on the same tick.

The bidule to do this for a single MIDI channel is pretty simple…

And then I just multiply that little bidule group by 16 copies (some minor tweaks in each copy so the MIDI channel is correct) and connect it through a special 16 channel splitter bidule.

I made a simple control panel to go with this “Velocity to CC” tool that makes it easy to enable/disable it for whatever channels in ARIA I might need it on. Here I only need it for a very expressive Tenor Sax instrument on Channel 5 that was made in a way that needs CC11 to get some varied dynamics going. Not showing here, but I’ve also got a simple velocity (now CC) curve editor in the network, so I can easily make the Sax hit harder and be more dynamic, or compress the dynamics a bit with a custom conversion curve.

I’ve also made some logic to put plugins to sleep when they aren’t being used. I say sleep…they’re still using memory, but no CPU cycles when idle. Zenology in particular uses a lot of DSP, even when it’s just sitting there idle. So here we go…listen for events/sound, if none for a few seconds, ‘mute’ the thing and put it to sleep.

I’d like to use multiple instances of Zenology today, and I’ve taught this ‘collection’ of plugins to behave something like an old school General MIDI Sound Canvas. Roland didn’t give us a way to change instruments by remote in this plugin, so I set up a bank of ‘bidule/VST presets’ and made my own ‘16 channel General MIDI I’ rendition of Zenology. Yay, now sending GM program changes calls up the instruments I want…instances of Zenology that aren’t active go to sleep.

I made a little panel that makes it quick and easy to pop the UI of the plugins I’ll be using today open/shut as needed.

I can easily route BIAB channels to whatever plugins I have hosted here. In this case, I’ve also got a nice big MIDI matrix to do the job. I can easily store snapshots of the state of this ‘matrix’ as presets, named anything I like to call up as I please.
I made a little panel that makes it quick and easy to pop the UI of the plugins and/or bidule control panels open/shut as needed.

Yes, I can ‘remote control’ changes to any of this stuff I want, and have it become embedded in the BIAB song styles or rendered sequences.

Another thing I’d like to do today is remap some drum kit bank/program changes for my Fantom XR, and divert some things to ‘borrow a snare drum from a different kit/channel’. I just used simple ‘indexed lists’ to convert the General MIDI 2 kit bank and program changes from what BIAB sends, into what I want my Fantom to actually dial up.

Sure, I could do it in the Fantom itself, but I’m in no mood to rebuild an entire drum kit today, just to get a different ‘snare’!

Yay, no problem to filter/divert the snare note, use this note remapper bidule to convert it to a new note, and then send it to a new drum kit/channel in the Fantom.

Could go on for days here, but I’m always finding uses for bidule. I’ve never regretted paying to register this utility. Pays for itself many times over, daily.

1 Like

Very cool! Thanks for the thorough overview of the extended functionality of Bidule. I had no idea. It’s very much appreciated.

1 Like