Expression Maps for Dorico 3.5+


In this post I’ll give an overview of the process of creating Expression Maps for Dorico 3.5. Some of the following may also be applicable to earlier versions of Dorico, but 3.5 has a number of new Expression Map features that won’t work in earlier versions. I’ve worked through the creation of Expression Maps for a few popular libraries and I’ll describe some of the strategies for working with these libraries. Bear in mind that there can be many different ways of creating an EM for any specific library depending on your requirements and personal preferences. I’ll provide some sample EMs which are not complete, but should show you how to access some of the key features of each library. We’ll try to keep this post updated with a curated list of user-contributed Expression Maps too. This thread will be locked to keep it concise and useful as a reference. The previous EM thread can be found here

A note on importing Cubase Expression Maps: this is possible, but it doesn’t always give good results. There’s no standard naming convention for keyswitches, especially if you have ‘longs’, ‘shorts’, ‘sustains’, etc. Dorico applies some heuristics, but you always need to check it’s done what you expect. In many cases it can be much quicker to create a new one. I was able to create the set of most Spitfire BBC SO keyswitches in under an hour. If you have a ‘combinatorial’ EM that has every combination of techniques in it (eg for VSL libraries) then consider whether the Add-on Switch method could be used to represent it more effectively.

Getting Started Creating Expression Maps
The first priority is to get the correct mappings for dynamics. Consult the sample library manual to find the best mappings to use.
Bear in mind that different articulations within the same library may use different mappings. Libraries for non-orchestral instruments
and keyboard instruments tend to use note velocity, whereas libraries for orchestral and jazz instruments often use a mix of note velocity,
modulation wheel (CC1), expression (CC11) and sometimes some other controllers.

Create a new project with a variety of note lengths repeated for different dynamic levels: fff, f, p, ppp. Load the plug-in and select the most appropriate
default articulation for ‘natural’. If it’s not immediately obvious which one this is then sometimes it may be labelled as ‘sustain’ or ‘long’.
Create a new expression map and add a rule for natural. Set the primary dynamic as appropriate for the library. In the Endpoint Setup Dialog, ensure the expression map
is set.

If it’s not clear from the library documentation which dynamic controllers/velocity to use, start with note velocity and play the sample project back.
If everything plays at the same volume then try switching to CC1. Some libraries recommend using a secondary controller, typically velocity + CC1, velocity+CC11 or CC1+CC11.
If you’re using a secondary controller, play the test project and if the ppp notes are too quiet, try increasing the minimum dynamic value. If the range is too extreme,
try reducing the range of the secondary controller, eg to 64-127. Next, switch to one of the other articulations, eg a short one such as staccato, and check to see if
that responds to dynamics in the same way. In many libraries the short articulations respond to velocity, so you may need to use different settings.

Once you’ve found a good candidate for the dynamic levels, the next thing is to deal with short vs long notes. Many sample libraries provide separate patches for short notes,
which have a much faster attack. The default long notes often have a slower attack which means that they can be too quiet on runs of short or fast notes, especially at lower
dynamic levels. Ensure that your test project has runs of very short notes at different dynamic levels so you can test this.

If a short articulation is available (sometimes the staccato articulation can be used for this) then you can set Expression Map Conditions so that a different switch is chosen
according to note length. A note length of ‘medium’ is around the length of a quarter note at 81-159bpm (375ms-750ms), ‘short’ is an eighth note, ‘long’ a half note, etc. A good
starting point is to add the short note articulation and set the condition to ‘Note Length < Short’. You don’t need to set the condition on the default (long note) switch -
this will be chosen as a fallback if the condition for the short note isn’t satisfied. Try playing the test project and check the fast note runs and that the dynamics are
consistent with those of the longer notes. If the long note articulation has a longer attack then try changing the condition to ‘Note Length < Medium’.

Once you’re happy with the short and long notes and their dynamics, the next step is to set up the articulations for other playing techniques.
The first priority is legato, if the library has a dedicated patch for it, then work through the other articulations.

Base and Add-on Technique Switches
Dorico 3.5 introduces Add-on Switches. This provides a simple way of accessing articulations for some sample libraries that use additional keyswitches or controllers
on top of the other articulations. For example, EastWest Hollywood Strings provides the ‘Script Legato’ function that can be enabled for all articulations by outputting CC68 and
Con Sordino with CC15. So you can add an Add-on Switch for legato that has on events as CC68=127 and off events as CC68=0.

Init Switches
It’s now possible to add set of MIDI events that will be sent at the start of playback, which are in the new Init switch section. This may be useful if you want to ensure that the plugin starts playback in a known state, eg for ensuring that legato mono/poly mode is correctly set, or that any add-on switches are reset to their default state. It can be used to set personal preferences, for example in VSL Synchron Strings to choose the regular or lyrical vibrato, or full or reduced dynamic range. In Garritan JABB you could set up the amount of growl, breath and valve noise.

Miscellaneous tips

  • You can select multiple switches to set the parameters of all of them at the same time. This can be very useful for tweaking the dynamic parameters.
  • Try changing the default volume curve in Playback Options > Dynamics. The default Dorico value of 2.5 is chosen to ensure that most of the dynamic range of the
    plug-in is used for dynamics in the range ppp-fff. You can reduce the value to within the range 1-1.5 to get a more linear mapping but this means that ppp and fff will
    be closer together and will use a smaller range of the samples. Experiment with this curve and the minimum and maximum velocity and dynamic levels to get something
    that works for your library.
  • You can drag and drop expression maps from the Explorer or Finder into the Expression Map editor to import them
  • You can easily build up combinations of techniques in the switch list by holding down shift as you press the edit button or double click a row
  • Use the Play button in the Expression Map dialog to preview the current switch, which will work if the Expression Map is used by any plugin that’s currently loaded
  • Switches can be disabled, which can be useful if you are experimenting

Creating Endpoint Configurations and Playback Templates
If you are creating an orchestral template then you can get the most flexibility by building it up in sections. Create separate Endpoint Configurations for the string, wind, brass and percussion sections and then these can be easily combined to fit different ensemble sizes. If a particular ensemble has extra wind players, or you wish to use independent voice playback for divisi then a second winds section will be automatically added when you switch to the Playback Template. In the following example, I’ll assume we’re setting up a library that has one instrument loaded in each instance of the plug-in, such as for VSL Synchron series, Spitfire BBCSO and others, EastWest Hollywood series.

For instance, start with the strings. Create a new empty score and then Setup > Add Ensemble > Strings > String Section. Load the desired plug-in at the top of the plug-in rack. Open the plug-in’s editor window and load the appropriate patch for ‘Violins 1’. Open Play > Expression Maps and create or import the expression map for the violins. In the track header for Violin 1 in Play Mode, set the instrument to play with the plug-in you added, setting the correct channel (often channel 1). Open the Endpoint Setup dialog and set the name, eg ‘BBC SO Violins’, set the expression map for the first instrument, set the MIDI channel limit to 1 (which removes the other rows in the table we don’t care about), and set the audio outputs limit to 1 if you just want a stereo out for each plug-in. This reduces the number of excess channels in the mixer.

The second violin is now much easier to set up. Right-click in the VST Instruments window and choose ‘Duplicate Plug-in’. If there’s a different ‘Violins 2’ patch in the library then load that. Change the expression map if required (though many libraries use the same articulations for violin, viola and cello, so you can use the same expression map). In the track header for Violins 2, route it to this plugin.

We repeat the process with viola, cello, double bass, but in each case, review the settings in the Endpoint Setup Dialog, in particular the name and the expression map, and ensure that all instrument tracks are routed. It can be helpful to add some notes of different durations and with different dynamic levels and playing techniques, if you wish to ensure that the expression maps are set up correctly and you’ve got a good balance between instruments.

Save this project as (eg) ‘BBC SO Strings Section Template’ and at the bottom of the VST Instruments panel, choose Save Endpoint Configuration and save as ‘BBC SO Strings Section’. If you later need to tweak the settings then you can modify this project and then re-save the endpoint configuration. Repeat for brass, wind and percussion. You can now create the Playback Template. In Play > Playback Template, create a new template and just add all the Manual entries for the Endpoint Configurations we’ve just created. It’s worth also adding HSSE+HSO (Pro) (in the Automatic list) as the last entry, as this will ensure that any instruments that couldn’t be found in the endpoint configurations will still have a sound provided.

Now you have a Playback Template, you can apply this to other projects to test your library, or you can export it to a .dorico_pt file which can be imported by other users who use the same library.

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.


EastWest Hollywood Series

These libraries are very flexible in how it can be set up - the user can load arbitrary combinations articulations, and so there isn’t a single Expression Map. In the following, I describe one way of doing it which you should be able to adapt to your needs.
Most of the articulations in the EastWest Hollywood libraries are accessed by loading multiple articulations (‘instruments’ in EW Play) into separate chanels. In Play’s Settings > Other, set MIDI Channel Assignment to ‘Automatic Increment’, so that the first loaded articulation is set to channel 1 and the next to channel 2, etc. Channel Switches are used to access each instrument.

Hollywood Strings

Load the ‘Keyswitch’ instruments into channel 1 (eg 1st violins/06 Keyswitch/1st Violins Sus KS). This provides the articulations for natural, detaché, tremolos and trills. Load the Short Loose/Mod Combos/Shorts Mod Speed instrument into channel 2. This provides articulations for staccatissimo, staccato, staccato-on-bow and short marcato. Then extra articulations can be added as required into the other channels.

Note: there’s no way currently of automatically triggering up and down bow samples.

Other articulations that you can load and then add in the expression map: pizz/bartock pizz, flautando (2nd violins only), harmonics (2nd violins only), slurred staccato, long marcato (marcato sus)


Sustained/long articulations use CC11 to control dynamic. Short articulations use velocity + CC11. To get a good dynamic range that doesn’t get too jumpy, set the note velocity range to 1-127 and CC11 range to 10-127. To narrow the dynamic range use CC11 30-127


There are two methods of playing legato - one is to load a dedicated Legato Slur instrument and other is to use the Script Legato function which works with most other articulations. To use the Script Legato, create an Add-on Switch for legato and set the switch on action to CC68=127 and the switch off action to CC68=0. You may also want to add CC22=0 in the Init Switch to disable mono mode if you are playing divisi sections but not using separate voice routing

Add-on Technique Mappings

For the following use value 127 for the switch on action and 0 for the switch off action

  • Script Legato: CC68. You also need to disable mono mode with CC22=0 (this may be better to add to the Init switch)
  • Con Sordino: CC15
  • Portamento: CC65

Controllers to modify behaviour

  • Portamento/Legato time: CC5
  • CC69 turns RR repetitions on and off
  • CC22 turns legato mono mode on or off (on by default)

In this Hollywood Strings Expression Map

  1. Template Pro / Violins NV NV NV VB…
  2. Template Pro / Legato Slur (this does a portamento-like pitch transition)
  3. Template Pro / Pizz
  4. Template Pro / Shorts Mod Speed
  5. Template Pro / Slur runs
  6. Template Pro / Spic Marc Mod
  7. Template Pro / Stac Slur
  8. Keyswitch / Sus (for trill and tremolo)
  9. Long / Marcato Sus (can also be used for short marcato)


  • Expression map uses channel switches to access each instrument
  • Init switch sets CC15=0 and CC68=0 to reset script legato and con sord
  • ‘Legato slur’ create a portamento effect. If you don’t want this, disable the switch to use the other add-on legato switch
  • The Add-on legato switch turns off the mono mode CC22=0
  • The Muted legato switch activates con sord with CC15
  • The ‘Mod’ instruments use CC1 to access the different layers

Alternative configurations

  1. Keyswitch Sus (for nat, trill, trem)
  2. Short Loose/Tight / Mod Combos / Shorts Mod Speed
  3. Short / Pizz
  4. Short / Bartok Pizz
  5. Short / Spicc
  6. Legato Slur
  7. Long / Marcato Sus
  8. Long / Detaché
    Hollywood Strings (2 KB)

These expression maps can be used by the Pro and Core versions of BBC SO. It should be possible to use them for the Discovery version by deleting or disabling the articulations that aren’t provided in that library.

It’s quite simple to map this library as most of the keyswitches can be directly linked to playing techniques in Dorico. Some of the techniques have long and short variants which can be accessed using Note Length conditions.

Note that articulations use the middle C=C4 convention.


Shorts use note velocity, longs use CC1.

The attached expression maps and percussion maps include most of the strings, wind and brass, but only a selection of percussion instruments are mapped.
BBC (6.44 KB)

This example is for Spitfire Solo Strings, but some of the approach may be applicable to other Spitfire libraries that support UACC.

Note that articulations use the middle C=C4 convention.

Load the instrument patches and then click the padlock icon on the bottom left and select ‘Locked to UACC’.

There are no dedicated shorts - use stacc: ‘This creates a sound that can be used either as a nice short staccatissimo, but also as part of a sequence of fast short notes’.

All articulations use velocity + CC1 for dynamics. The velocity and CC ranges are set to 30-127 to prevent ppp dynamics from being too quiet.
If you find that the dynamics feel too ‘jumpy’, try reducing the range of the CC1 dynamic to 60-127 or setting the dynamic curve to 1.5 or 2.

If the notes sound too detached then try increasing the Release very slightly (CC17)

Cubase expression maps:
Spitfire Solo (1.68 KB)

Synchron Strings doesn’t use a single set of keyswitches. It uses up to 3 sets of keyswitches where the values of one set depend on another. Several of the articulations have Fast variants, which can be accessed using Note Length conditions.

Note that articulations use the middle C=C4 convention.

The violins and violas have the same keyswitches, but the cellos and basses are shifted to a different octave.


The expression map uses the VelXF version of the instruments. The dynamics are controlled with CC2
If you find ppp too quiet then change the minimum velocity 10 or 20.
If you want a reduced dynamic range then you can trigger the Medium Velocity Range set by adding a keyswitch of D2 to the Init switch.

If you are playing string divisi in a single channel then set Legato Mode to Poly to allow chords to play back correctly.
Synchron (5.42 KB)
Other implementations:

1 Like

It’s not currently possible to load Iconica patches automatically as for HSO, but it can be used as part of a Playback Template.

For the string section, load HSSE and then load 4 patches per instrument: Standard, long, short, dynamics. So 1-4 for violins 1, 5-8 for violins 2, 9-12 for violas, 13-16 for cello. It’s necessary to create a second HSSE for the basses.

So the first HSSE will look like this:

1 Violins 1 Standard
2 Violins 1 Long Notes
3 Violins 1 Short Notes
4 Violins 1 Dynamics
5 Violins 2 Standard
5 Violins 2 Long Notes
7 …

The base switches use relative channel switches to select between the 4 channels. ‘Natural’ switches back to the original channel.

Long articulations use CC1 dynamics, short articulations use velocity. Set the CC1 range to 10-127. If you find it too quiet then use 20-127.

Uses Legato runs for legato + short notes conditions

Articulations that can’t currently be mapped:

  • Repetitions
  • Crescendos, decrescendos, swell and fp

There are separate expression maps for strings (violin, viola, cello) and basses. The winds and brass can be set up in the same way as the strings, with the set of Standard, Long Notes, Short Notes, Dynamics for each.
Iconica Sections and (3.29 KB)

Joshua Bell Violin

Contributed by @kimfierens:


BBC Symphonic Orchestra Discover

Contributed by @Estigy:


Vienna Symphonic Library Synchron Strings Full

Contributed by @mpetersenfx:


1 Like

EastWest Quantum Leap Brass

Contributed by @charleswtjr:



Contributed by JesterMusician.


Garritan Personal Orchestra 5 (GPO5)

Contributed by benwiggy:


Vienna Symphonic Library VSL Synchron-ized Special Edition

Our friends at Vienna Symphonic Library have produced expression maps and playback templates for the VSL Synchon-ized Special Edition, available here:


Iconica Sections and Players

My learned colleague John Barron has produced a playback template for Iconica Sections and Players for use with Dorico 3.5, available on the Dorico blog:


EastWest Quantum Leap Symphonic Orchestra

Lohengrin has shared a set of expression maps for EWQLSO:


VSL Super Package

@symphonic-riot has developed a set of expression maps and playback templates for the majority of the VSL Super Package, covering the following instruments:

  • Solo Strings 1&2
  • Violin 2 & Cello 2
  • Chamber Strings 1&2
  • Orchestral Strings 1&2
  • Appassionata Strings 1&2
  • Dimension Strings 1-3
  • Woodwinds 1&2
  • Brass 1&2
  • Dimension Brass 1&2
  • Percussion
  • Harps


Cremona Quartet

@Thurisaz has developed expression maps and a playback template using Vienna Ensemble Pro for the Cremona Quartet.


1 Like