The improvements regarding Expression Maps in Dorico 3.5 are great

Now it stays clear and fun! :smiley:

I notice that you use VSL libraries. In Vienna instruments you can use the speed control to trigger different samples. Why do you prefer the conditions rule - note length instead?

Sorry, its the wrong place here.


I think that is the difference between playing live (perf legato over speed controller) and playing the music you have written down, where the first and all subsequent note lengths are already known. It works well in Dorico, but I still don’t know which is better in the end.

Just to echo the titular sentiment of this thread, I continue to be impressed/amazed at the Dorico team’s attention and devotion to quality playback. It’s gotten to the point that they have exceeded my expectations for this aspect of the application. I didn’t see coming the support for mapping based on note duration, which has significantly improved the playback of my Spitfire woodwind and brass sections. Super cool! :slight_smile:

Now, if I can just figure out how to keep my strings from occasionally beginning too softly when I hit the play button… gotta figure out which values to apply to the “Init” condition.

Under pogress …


Making xmaps has become much easier with 3.5.

What I still can’t understand fully, is how exclusion groups work. But since there is the Auto button, I just trust Dorico for doing it for me! :slight_smile:


A basic entry is added to the current list of play techniques. However, if this entry is in an exclusion group with another entry that already exists in the current list, this will be replaced by the new entry so that the new entry remains the only one of the two in the current list of play techniques. This is how it works - as I understood it.

Yes, this is the basis of how xmaps work. But there is a lot more, when starting to have to decide how to group techniques together – from choosing the categories, to the group to which each techniques pertain.

The new Auto feature creates some basic groups, that are a hint on how the system should work.


Mutual Exclusion Groups: The General principles are pretty simple. If two types of playing technique cannot happen together then they go in the same group. The bowing style can’t be arco and pizz at the same time. You can’t play ‘senza vibrato’ and ‘con vibrato’ at the same time. You can’t have ‘straight mute’ and ‘cup mute’ at the same time. So there’s an exclusion group with each of these (eg primary brass contains straight mute, cup mute, harmonic mute, etc). Dorico can create the groups automatically for playing techniques that are in the default library.

On the other hand, consider ‘arco’, ‘con sord’, ‘con vibrato’. These are all independent; you can play arco with or without a mute, and with or without vibrato, so you don’t put them in the same group.

Another way of thinking of mutual exclusions is that it defines what happens when the player encounters a new playing technique in the score. If a brass player is playing with a straight mute and then sees ‘cup mute’, then they know that this replaces the straight mute, but it doesn’t replace ‘con vibrato’, ‘legato’, etc.

You shouldn’t need to worry about Exclusion Groups at all unless you are doing one of a few things:

  • Dorico’s default groups aren’t doing the right thing for you, eg because you have defined a new bowing technique that isn’t in the Primary String group
  • You’ve created some custom playing techniques, and Dorico needs to know that ‘Scratch back of violin’ and ‘Scratch front of violin’ can’t occur at the same time, so need to be in a group.

The ‘Auto’ button will deal with this second case for most simple cases, but if you have a more complex setup where you have also defined switches for multiple combations (eg ‘Scratch back of violin + legato’) then Dorico won’t be able to work out the correct groups.

Paul, very useful clarifications, thank you!


Ditto. Best description I’ve seen. I linked to it in my Dorico Reference Word document.

I’m glad you’ve found it useful - I’ve now added to the sticky Expression Maps thread

Sorry double post :blush:

This is great: With the help of the new “Add-On” switch in the “X-Map”, a playback technique that is defined as an “attribute without duration” can still be extended in the text of the score
without affecting the subsequent techniques… :laughing:

For the future I would like to have a special class for these “playback techniques” in addition to the existing “play techniques”, which depend on the X-Map, only have a text symbol for the “Pop over” window, so that there only those that are actually supported by the current “X-Map” of the instrument are listed and can be filtered separately to hide in the notation…

Das ist großartig: Mit Hilfe des neuen “Add-On” -Schalters in der “X-Map” kann eine Wiedergabetechnik, die als “Attribut ohne Dauer” definiert ist, im Text der Partitur noch erweitert werden
ohne die nachfolgenden Techniken zu beeinflussen.

Für die Zukunft wünsche ich mir vieleicht eine spezielle Klasse für diese “Playbacktechniken” neben den vorhandenen “Playtechniken”, die in Abhänigkeit zur X-Map stehen, nur ein Text-Symbol für das “Pop over”-Fenster haben, so dass dort nur die jeweils von der aktuellen “X-Map” des Instrumentes auch wirklich unterstützen gelistet werden und gesondert zum Ausblenden in der Notation gefiltert werden können.

A problem with the speed control is that it makes it decision based on the real time transition from the previous note. So at an extreme, let’s say you have an instrument that uses staccato for fast notes and a sustain for slow notes. If you had 4 sixteenths going to a whole note then Vienna will use the last sixteenth note to decide and play a staccato instead of the whole note. With Dorico’s condition rules it will analyze before playback starts and put in the appropriate switches for the sixteenths and whole note.

… which is one reason why NotePerformer “looks ahead” by having a playback latency of 1 second.

I fully agree however I have encountered kind of bug or perhaps an overlook that I would search any help here. Several of my libraries have separate sets for chosen articulations, like f.e.“sus-short”, “legato” or “effects”. Within these sets the articulations are switched by key switches and it works perfect, but each of the sets requires individual channel, so the line containing marcato notes followed by legato notes and then some effects requires changing channels (in expression map it is “channel switch”) from 1 with sus-short to 2 with legatos and 3 with effects. My problem is with the effectiveness of channel switching. It does not work as it should, because the switching happens on the note after the note where it is placed. Example: if I play 4 notes legato (samples from channel 2) and then 3 notes staccato (samples from channel 1), the first staccato note is still played legato. Of course, there is a workaround putting “nat.” over the 4th legato note or dividing the last legato note in two, putting “nat.” over the second note and then adding a tie. It results in note being back to its previous value with “nat.” still in the previous place. But that is an unnecessary gymnastics that should not happen. From what I observed the articulation requiring channel switch should be executed “at the beginning of the note” while the situation suggests it is executed once the note has actually begun, so for this note the previous articulation is still valid.
If anyone has a suggestion or solution better than the ones I have just used your help will be greatly appreciated.

Can you cook up a simple example with a single instrument and a couple of bars that demonstrates this problem, Witold, so we can look into it further?

Hi,please excuse the question: Are you talking about an (absolute or relative) channel change and don’t you mean a program change?