Expression Maps

I’ve finished the first iteration of Dorico expression maps and Synchron Player presets for VSL Synchron Strings I. Presets are now included for Violins1, Violins2, Violas, Cellos, and Basses. Let me know if you find anything wrong or confusing.

More details and installation instructions in the ReadMe file.

-mike (133 KB)


Here is a BBC Symphony Orchestra Percussion Map that I made for Dorico. You have to define you percussion playing techniques for snare drum, marching snare drum and tenor drum to match the noteheads you’d like to use. Otherwise it should work fine, if keyswitches in BBC SO Plugin are the same as in the PDF that comes with the zip file.
BBC SO Percussion (56 KB)

I didn’t know how to map grace notes for snare drum to trigger the grace note sample, but if there is a way let me know!

I hope the Dorico team has some better ideas for articulation management than just copying Cubase’s expression maps. The VSL Synchron strings emap posted above, and the Note Performer emap highlight several problems with using expression maps for articulations.

Failure to map directly to control schemes

While there may at ground truth be a particular sample for e.g. marcato+long+con sordino+non-vib, very few (no?) sample plugins have flat address spaces like that. Instead, they offer more than one control dimension and perform the intersection of controls internally. Some examples:

  • In VSL Synchron Dimension strings - mute/string emphasis/articulation/vib and marcato are 5 independent dimensions.

  • Orchestral Tools Berlin strings has articulation/mute/vib/accent on 4 independent dimensions.

  • Note Performer emap is using 5 CC ‘dimensions’.

So in VSL Synchron and OT, a single CC moves through vibrato levels. A single CC can switch between mutes. Etc. Note Performer is controlling itself similarly. These schemes are semantic and orthogonal, in the same way music notation is about directives and playing techniques.

A system that was co-aligned with this would let you create a ‘group’ (like the exclusion groups, but independent from one another) and an associated set of control messages, sending those messages whenever you transitioned within a group. These should ‘chase’, like other control signals.

Without something like this you have to incorporate a message for every dimension for each emap entry, i.e. 5 dimensions = 5 messages per entry, 5 messages per note. Look at the Note Performer emap for example.

Combinatorial explosion

Related to this is the fact that, by creating a single, flat address space, emaps require a number of entries equal to the product of the sizes of the dimensions. So, taking Synchronized Dimension Strings as an example (where I’ve put Norm/Sord into a dimension) we have:

Mute (on/off - 2)
String (norm, open, sulX - 6)
Articulation (36 entries, in 2 synchron dimensions)
Attack (marcato/not - 2)
Vib (4 vib levels)

The product of these dimensions would require a whopping 3456 (2x6x36x2x4) emap entries, each specifying 6 CC/KS messages, for a total of 20736 messages to specify! While not every combo is valid, specifying even a fraction of these is far too many, especially with the tools provided. The XML format is not specified and the XML file is not just about emaps, unfortunately.

Contrast this with a system that allowed us to talk about each group separately - that yields the sum of the sizes of the dimensions, in this case 50 entries (2+6+36+2+4), each specifying only one or two KS/CC messages, for fewer than 100 messages to specify in total to exhaustively cover the options. The plugin already knows how to handle the product of these dimensions, emaps just force us to make every combination explicit and redundantly restate the dimension messages. Such enumeration of combinations should only be required when a plugin does not have more than one dimension of control.

Notion’s rules system allows one to handle directive/technique dimensions separately and is an order of magnitude less work than emaps for a given setup.

Too many messages per note

This is somewhat of an optimization, and memory/chasing could alleviate, but currently a message is sent for every dimension, plus the dynamics CC, before every note. (Notion does the same thing).

In short, Cubase’s emaps have well known scaling issues that particularly get triggered by orchestral sample library use cases. We need something better for notation programs.

Thanks for your consideration.

Paul and i have been talking about these kinds of issues for a long time, and we do have a number of ideas about how to mitigate the combinatorial explosion issue you describe here. Watch this space (though not super closely, because there won’t be anything to see imminently).

I exploded and am now trying another workaround.

My XMap only contains (apart from the standards) one single entry for each patch of the VSL-lib,
all are in the same mutual exclusion group with “direction” (no attributes).
With an instrument prefix and meaningful named, you can find them well using Shift + ‘p’.
it is easy to read in the musical text and works as intended, also support of dynamics and decorations,
controllable with with CCs and of course, can be made invisible in seconds.
The workload is still reasonable.
With an XMap filter in the popover, these user techniques could be reused in other XMaps.
Best regards

Ich bin dabei explodiert und versuche nun einen anderen workaround.
Meine XMap enthält (ausser den Standards) nur noch jeweils einen direkten Eintrag für jedes patch der VSL-lib,
alle in einer exclusiven Gruppe mit “Richtung” (keine Attribute).
Mit Instrumenten-Prefix und sinnvoll benannt kann man sie mittels Shift+‘p’ gut finden.
Im Notentext gut zu lesen, funktionieren wie gedacht, unterstützen auch Dynamisches und Verzierungen, können mit CCs variert werden
und natürlich in Sekunden unsichtbar gemacht werden.
Der Arbeitsaufwand ist noch vertretbar.
Mit einem XMap-Filter im Popover könnten diese User-Techniken in anderen XMaps wiederverwendet werden.
Herzliche Grüße

Bug fix: attached is a new version of my Synchron Strings expression map and presets. “Arco” should now work properly.
The Synchron Player presets are unchanged from the previous version and don’t need to be re-installed. (133 KB)

In my experience, the mapping works without “pt.user …”. I just always use the same text labels. The program change also seems to work - so I manage with 2 (+ 1 for A / B) events per entry.
Best regards

Nach meiner Erfahrung funktioniert das Mapping auch ohne “pt.user…”. Ich verwende einfach immer die gleiche Textbezeichnungen. Auch der Programmwechsel scheint zu funktionieren - so komme ich mit 2 (+ 1 für A/B) Events aus pro Eintrag aus.
Beste Grüße

I would recommend keeping the pt.user prefix for the Playback Playing Technique IDs, as that is what Dorico uses to know that they are not the built-in ones.

Hello the team and colleagues,
In an older comment here I’ve seen someone having problem with the correct playback of techniques, especially if there are involved more than one
e.g. staccato + accent.
Here I would like to ask the team for small improvement of the Expression Maps, inspired by Overture 5.
You could allow the users to adjust the expression/technique Playback Offset. Currently such option doesn’t exist in the Expression Maps dialog.
I’m not sure how the automatic Playback Offset works in Dorico Pro, but in Overture 5 it is linked to the MIDI note position (the MIDI mock-up), so even the playback of the notes starts before the written traditional notation, everything plays as expected.
Is not uncommon for the musicians to play the notes a little bit earlier…

Thank you in advance! :slight_smile:
Best wishes to all! :slight_smile:

This is on our list for a future version.


I followed several videos and readings and eventually managed to set the expression maps correctly for the whole East West Symphonic Orchestra in Cubase 10.5.
I started in any case from the Steinberg website page
Here I downloaded the Expression Map files for the EWSO that can be used in Cubase.
I used them in Cubase and they work perfectly.

I recalled them in Dorico applying the following process:

From the PLAY section I selected the Play->Expression Maps menu…
From this dialog I selected “Import Cubase Expression Map” and imported all the EWSO EM I had used in Cubase.
These were correctly imported and displayed in Dorico.
I then added to each EM the item “Natural” associating it to the basic articulation so that where no articulation was indicated in the score, the default articulation was selected.
Also in the PLAY section I then selected the Endpoint Setup of the EWSO VST Play and in this I associated the proper EM for each instrument I had .

And here begin the questions.
I would have expected to find, in the Playing Techniques menu in the right panel of the WRITE section, all the articulations defined in the Expression Map selected.

This doesn’t happen and I can’t understand how to do it so, even though I’ve done all the steps indicated in the manual and in the videos that deal with the topic, there is actually no way to use the articulations defined in these Expression Maps or at least not every articulation present in defined EM and with the denominated technique.

Did I miss something?

I saw the Daniel replay but it is of 2 years ago, anything change in last 3.1 version?

Thank you in advance for any suggestion

You can edit playback playing techniques in Engrave > Playing Techniques. If you match them up between the playing techniques you create in the score and the ones you define in your expression maps, you should find that you can successfully trigger them.

Ok thank you Daniel.
Unfortunately I found out that the Engrave mode is not present in Dorico Elements.
Thanks anyway, at least I know that is possibile.


Ah yes, you are limited to the existing playing techniques in Dorico Elements, but if you can keep track of which ones you have used, you can use “wrong” playing techniques provided they match between the playing techniques you create in the score (which can be hidden) and the ones you use in your expression maps.

Have there been Expression Maps posted for any SPITFIRE Symphonic Libraries using UACC (not Keyswitches)?

No, not as far as I know.

Did anyone make maps for Kirk Hunter Spotlight Strings?

I like that you have the option to add a second CC w/ “Use Secondary dynamic” checked. My setup would benefit greatly from even more options there. Ideally one could have a crescendo with Mod, Velocity, Expression, amount of Vibrato (or any other CC available) - all tied to the dynamics lane. Even better would be the ability to set each CC or velocity option to its own max and min value so some would use the full range and others less.

For now I can draw info in the corresponding CC lanes, but having something like the above would be a time saver. Does this sound possible for a future version?

More questions for the day:

  1. Is there an in-depth tutorial on the “Techniques” section of the Xmap? I’m trying to limit the Velocity value on staccatos, but it doesn’t seem to respond - like it’s getting over-ridden by the dynamics velocities. (?)

  2. Is there a way to change the default midi note lengths for a particular Xmap? For strings I’d like to have full note values as default (no lift at the end of every note).

  3. Similarly, I’d like to have the default note lengths of SLURRED notes also be longer - as my library makes smoother transitions between notes. The overlap is not quite long enough as it is.