VEPro 7 and Expression Maps

I am hosting a library in VEPro 7 (Berlin Symphonic Strings). I have it set up this way:

Violin 1 - Port 1, Ch. 1 Vienna Ensemble Pro
Violin 2 - Port 1, Ch. 2 Vienna Ensemble Pro Event Input
Viola - Port 1, Ch. 3 Vienna Ensemble Pro Event Input
Cello - Port 1, Ch. 4 Vienna Ensemble Pro Event Input
Basses - Port 1, Ch. 5 Vienna Ensemble Pro Event Input

I have created an expression map and assigned it to each staff in the End Point Setup dialog box. The keyswitches only work in Violin 1, however. The other staves, which playback notes, don’t react to the expression map. They won’t change. Is an expression map instrument-specific? I just don’t quite get it. Thanks.

1 Like

Apologies for asking a remedial question, but have you made sure in the Endpoint Setup dialog that an appropriate expression map is set for each channel?

1 Like

No questions are remedial, and yes I have. I’ve been beating my head on this thing for about three days, and I am open to trying/checking just about anything at this point. I quit VEPro and just hosted in Dorico to simplify the problem, and I have much the same problem. As far as I can tell, the main problem occurs with my custom Playback Techniques, though it was more than this in VEPro.

This will be longish but bear with me. In Write view, I click on Playback Techniques (I think this is what it is called, but nothing has tooltips, so I am not sure. The icon has a down bow and an up bow.) In the strings section, I create a series of new playback techniques, i.e. Pattern Legato. I then create a series of keyswitches in the expression maps dialog under a new expression map that I created on the left. In this case, I named it BSS Cello. I note the correct keyswitches and choose the corresponding Playback Techniques. Some of the techniques already exist as Playback Techniques, i.e. Spiccato, Pizzicato, etc., and all of these work. If I put Spiccato in the score, it switches to the correct keyswitch and plays back. But as soon as I insert one that I created, i.e. Pattern Legato, it fails to switch. There must be a box somewhere that I am not checking or something. But I am at a loss.

I have scoured the documentation, and I find nothing about this. I have watched every video I could find multiple times. They are long, and it is difficult to get precise information out of them because some of them are low resolution, making it difficult to see what is really happening, and John gets interrupted constantly by questions, which leads to unfinished thoughts. What we need–or I need as a new user–is for someone to write down a step-by-step guide for creating an expression map. I don’t care how mundane it is, we need every step. At the end, tell me when, where, and how to save it. Tell me how to make it part of my template so that it is always there. (One of those cool video tutorials on the website would do the trick too if it were detailed enough.) I can’t help but feel that there are a lot of composers who would love to embrace this program, but a lot of us are intimidated by expression maps. And I now fully understand why. (I admit that I hated them in Cubase and switched to Logic as a result, but at least for Cubase, you could buy the expression maps.) From an outsider looking in, this is terribly complicated, and there just don’t seem to be any instructions anywhere.

I certainly have sympathy with the frustrations you’ve experienced, and I agree that some more structured tutorial content could be very helpful here. I’ll discuss this with John and Anthony and see whether we can together come up with something that will provide the information you need.

In the meantime, if you are finding that your own playback techniques aren’t working but the built-in ones are, there are two things I can think of, off the top of my head, that could perhaps help.

The first concerns mutual exclusion groups. When you define your own playback techniques, Dorico doesn’t know anything about the nature of the playback technique you’re creating: it doesn’t know whether it can be applied on top of another technique that is already active, or it needs to be used as an alternative. For example, pizz. and arco are exclusive, while con sord. could (in principle) be applied whether the instrument is currently being plucked or bowed, subject to the virtual instrument supporting it – but Dorico doesn’t “know” this, and particularly when you define your own playback techniques, it may be obvious to you or me whether or not you can add them together or whether you must switch between them, but it won’t be obvious to Dorico.

So the first thing to check is that the playback techniques you have created are, if necessary, contained within a mutual exclusion group in your expression map, assuming they are indeed exclusive.

The second thing to check is that you have got the appropriate connection between the playing techniques that appear in the score and the playback techniques that they trigger in the world of playback, and that the right playback techniques are referenced in your expression maps.

For example, you have created a playback technique (in Library > Playback Techniques) for “Pattern Legato”. To trigger this in playback, you also need a playing technique (in Library > Playing Techniques) that has a suitable appearance in the music (e.g. just some text, “Pattern Legato”, would do, and you can later on hide the playing technique via the Properties panel if you don’t want to see it printed in the music) and has the appropriate playback technique chosen in the Playback technique menu.

Possibly one of these two things – the playback technique referenced in the expression map, or the playback technique referenced by the playing technique that you actually create in the music to trigger the technique change – is not hooked up correctly.

(I know the similarity in terminology between playing techniques and playback techniques is hugely unhelpful, and we certainly don’t rule out making some changes in this area to try to make the relationship clearer.)

I hope this provides you with some initial pointers. Do let me know if you’re still not getting anywhere.

1 Like

I finally more or less made this work with a tip that John dropped in passing in one of the videos. So let’s say we’re cruising along with our pattern legato and we want to change to rapid legato. On the note to which you append Rapid Legato, you also have to add nat. Somehow this cancels the Pattern Legato allowing the switch to Rapid Legato. I can’t imagine why it is programmed this way. It seems terribly redundant, and it is messy. Simply sending a new keyswitch to the player should be all that is needed.

As for Playing Techniques and Plaback Techniques, this is totally confusing. I have no idea how they are different or why two are necessary. I would at least rethink that nomenclature.

Perhaps this evening I will have time to once again try these things in VEPro. I will follow up once I have had a chance to test them out.

As noted above, I finally got my expression maps working when the samples were hosted in Dorico. So I decided to try hosting the samples in VEPro. (This is a standard five-stave string orchestra.) I happened onto a problem that has likely tripped me up in the past. When you change the player in Dorico, the Expression Map resets to default. So you have to go specify the correct map again. An odd thing was happening when I was resetting these to the maps that I had made. (There are two: Violin + Viola, and Cello + Bass.) When I would change the expression map for Violin 2, it would change the map for the Bass as well. When I changed it back in the Bass, it would change to the same map in Violin 2. It finally quit switching the other instrument, but this went on for quite a while, and I don’t really know how I got it to stop.

Once I got it set up in VEPro (The same routing as my first post.), Violins 1+2 would play back with the proper keyswitches. Viola, Cello, and Bass would not. So the same expression map that produced keyswitches in Dorico would not do the same in VEPro. To add to the conundrum, the Viola is using the same map as Violin 1+2. Why would that map work in the violins but not in the viola?

I am really at a loss here, and I don’t know how to continue.

Edit: Either I just thought it was working in Violin 2 or it has quit. In any case, Violin 2 is not responding to the keyswitches. (I had this same problem with a Spitfire/VEPro template last night.)

I am going to add more to this because, ultimately, it is helpful to all of us if it gets resolved. Wondering if this was somehow a Sine problem, I closed the BSS project that I was working on and returned to the Spitfire Apassionato Strings project that I was working on last night, which had the same problems. By hosting these strings in Dorico instead of VEPro, all of my keyswitches from my Expression Maps work in Dorico.

Dorico sends all of the notes to VEPro, and they play back, but the articulations will not change. I can make them change by writing the actual keyswitch in the score way down below the staff, i.e. C-1, but I can’t make the Expression Map that switches them in Dorico do it. It is so bizarre. I keep thinking that some VEPro guru is going to say, “You gotta check this box, you moron.”

Hello - maybe my comment will help?
I use VEP with Doric by simply loading the required sample instances into VEP and a VEP instance into Dorico with appropriate entries in its endpoint configuration.
I didn’t get it to work with “VEP Ivent Input” either.


Performance instructions-Playback instructions-Expressionmap. An actually simple, logical and functional concept - but English is just not my mother tongue.

1 Like

Can you elaborate on your routing? Are you creating a single instance for each instrument? That is the only way I can see that you could connect more than one instrument. That is going to be a lot of instances for a full orchestra, though.

For the record, I tried putting each instrument in a separate instance, but only the keyswitches in the instance with Violin 1 changed.



Thank you so much! That solved the problem. I have never routed VEPro this way before. I didn’t even know you could. It is puzzling that Dorico won’t work with Event Input, which is the usual way to do this sort of thing. Seriously, thank you! I have been at this for days.

1 Like

That’s nice. I suggest ticking the solution box.


I guess that having only used VEPro with Dorico, it had never even occurred to me to try something like Event Input which is why I found the whole thread baffling! I just use VEP server and add the relevant vst from the “insert a new plug-in” Sine should be listed there as it is with me. All my libraries work this way. There seem to be times for me at any rate where ignorance is bliss…

1 Like

This is exactly what I was referring to in my reply directly above this one:

Dorico doesn’t know that “pattern legato” and “rapid legato” are mutually exclusive, i.e. that they cannot both be active at the same time, unless you tell it directly. If you have “pattern legato” and then add “rapid legato”, Dorico will be looking for a combination of “pattern legato” and “rapid legato” in your expression map. If it can’t find one, it will just keep going with the technique it’s already using.

Rather than inserting “nat.” to fix this, you can create, say, a “Legato” mutual exclusion group, and put “legato”, “rapid legato”, and “pattern legato” into that group. Then when Dorico encounters any of these playback techniques, it will remove whichever of the other two is currently active, if any.

Dorico can’t work this out on its own – this is why you can edit mutual exclusion groups in your expression map. Once you get the mutual exclusion groups set up properly, you won’t need to use “nat.” unless you really do want to return to whatever state you have defined as the natural state in your expression map.

1 Like

I see what you are saying now. I was in the process of reading about exclusion groups when my eyes landed on nat. on my other monitor. In the haze of my memory, I remembered John saying something about this. I hadn’t quite put together that this was doing the same thing as an exclusion group. Thank you for pointing it out.

I remain perplexed about the reasoning behind this, however. You said:

Dorico will be looking for a combination of “pattern legato” and “rapid legato” in your expression map. If it can’t find one, it will just keep going with the technique it’s already using."

The logical thing for Dorico to think at this point, after it can’t find a combination of the two, is, “Hmmm, I don’t find a combination of the two, so he must want to switch to Rapid Legato, otherwise he wouldn’t have put the marking in the score.”

The important thing is that I now understand how it works, but this just underscores the need for a detailed set of instructions.

The matter of the Event Input above remains perplexing as well, but there is one part that I think needs addressing. It really makes no sense that using the Event Input would send the notes but not the keyswitches because keyswitches are just notes. What makes even less sense is that when I set each instrument up in its own instance, it still would not work. This makes me wonder what happens when I have an entire orchestral setup with different instances for each choir? I will cross that bridge when I come to it, but I would like to stress the necessity of playing nice with VEPro. Composers like me have samples spread over multiple different computers, and VEPro is the glue that binds them all together. It takes a tremendous amount of processing power to run all these, and VEPro allows that to happen.

Thank you for your time and attention. There is a remarkable amount of forward-thinking in your product.

The only reason I can think of that Dorico would not be sending the required keyswitches etc. to the VE Event Input is if the wrong (or no) expression map is chosen for that endpoint, in the Endpoint Setup dialog. Dorico doesn’t know anything special about what’s on the other end of these endpoints, and it certainly doesn’t have any special behaviour that would cause it to decide not to send keyswitch information to a particular endpoint. So it must be a configuration issue of some kind, and I’d be happy to look at it further with you if that’s something you want to solve.

Thank you Daniel, but please note that the fellow who helped me above also was not able to make it work. If it comes down to it, I can set the file up as it was before I changed it and send it over, but I think that you can quickly test this in-house by simply creating a similar doc. Use strings. Load all of the samples in one instance of VEPro channels 1-5. Then connect Violin 1 to VEPro. For the remainder of the section, connect each one via Vienna Ensemble Pro Event Input with the corresponding channels. Then load your Expression Maps in the End Point Configuration. I consistently found that Dorico would not send the requisite keyswitch data on any channel except the initial VEPro channel. It would not send it over the Event Input channels.

I will indeed ask somebody to take a look at this and we’ll see if we can figure out what’s happening.

1 Like