- EastWest Hollywood Strings
- BBC SO
- Spitfire Solo Strings
- VSL Synchron Strings
- Iconica Sections and Players
- Embertone’s Joshua Bell violin
- EWQL Brass
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
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.
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.
- 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.