Velocity assignments for expressions


I am looking to see what is the most efficient way to edit MIDI velocities in my compositions, and was curious if there is actually a way to edit the velocity assignments with expressions and dynamic markings? For example, could I always have the MIDI velocity with the expression “f” also be 118? I am noticing in parts of my compositions, the expressions don’t match the velocity that I intended. Thanks for the help.

You can assign either Velocity or a CC in the expression map to control VST dynamics.

The corresponding lane (Vel or CC) in Play Mode will then start showing different values that interpret the dynamic markings from the score. You can change these values either manually in Play Mode or automatically by changing the dynamic markings.

It’s important to know that Dorico has an internal map of dynamic levels. I think it goes from -8 to +8, with 0 as mf (IIRC, the max I got by dragging them up or down). Dorico basically allocates a range of velocities or CC values to each level, and this range can be adjusted at the edges to influence how the overall dynamic range is perceived.

So, when Dorico encounters a dynamic marking (say, pp) it will assign values from the range of velocities in its internal map that correspond to pp and reproduce the dynamic. Within my current settings, Dorico uses velocity range 30-40 for pp marking, which I can see marked as level “-2” in the dynamics lane in Play Mode.


But this can become a bit of a problem when Dorico’s allocation of velocities to dynamic layers doesn’t match with how the sound library mapped it.

For the longest time I couldn’t understand why the overall sound balance of OT Berlin Percussion was so off in Dorico playback. Either way too loud or way too quiet. It turns out that Velocity range of approx.65-78 is a mf for Dorico (again, in my current settings), but the same range is actually a recorded f for many of the Berlin Percussion instruments. Velocity 16 is a pp for some Berlin Percussion instruments, but it is pppp for Dorico!! Even though these don’t seem like a lot, things tend to either stick out or disappear completely, especially outside of mp-mf range.

In order to solve this, I’ve used a 3rd party plugin to remap the values Dorico sends out and match them to Berlin Percussion. But then I only use Dorico to send MIDI Out to VEPro, so it was very easy. I don’t know how to do that if Dorico does the playback, but manually re-drawing values is not a solution for larger scores.

These instruments use velocity to switch between recorded layers without any crossfading, but I have rescaled the CC1 for Clarinet in Es from Berlin Woodwinds in the same way and the result is so much more natural and pleasant. Berlin really shines sonically when their recorded layers are properly matched to Dorico’s ranges.

I’m sorry if I ended up highjacking this thread but it would be really really nice if Dorico included a simple MIDI plugin that would allow rescaling of velocity or CC curves it sends out from a given track to better match the recorded dynamic layers.

Perhaps @dspreadbury would agree to consider this a feature request for the future?


Thanks ebrooks for the insightful overview of how Dorico works with VSTs and dynamics.

1 Like

Wow, thanks for the great info! Is it possible to change the velocities in “write” mode in Dorico? It really helps me to see the notated music when changing velocities, and doing it in “play” mode with the little squares is very hard for me. Thanks for the help.

If I understand correctly, Dorico 4 will have an option to open the Play Mode as a lower pane window, similar to Dorico for iPad and Cubase. Supposedly this will allow to change velocities while seeing notes.

I do think it’s better to solve the underlying problem with setting up and balancing dynamics rather than manually redraw velocities forever. You mentioned f at velocity 118, but that’s a high number very close to the 127 limit. I think Dorico would assign velocity 118 to something like fff or ffff.

it would be interesting to hear which plug-in you use for this as I wouldn’t mind trying it out? There are other workarounds for the very common issue of dynamic output levels differing in Dorico and the VST. One is simply to scale the dynamic in the Expression Map for each playing technique requiring adjustment in the relevant dynamic controller.

Take the example of a violin being always too quiet playing legato. Legato patches will nearly always be controlled by a CC lane, in fact usually two CC lanes – one for crossfade expression (typically CC1) and one for general volume (typically CC11). If the volume is too low then simply increase the minimum level in the CC11 controller to an appropriate level as shown below.

This all assumes ensuring the secondary dynamic is active. For velocity patches, this is not always required – depends on the instrument-- but the basic principle applies.

It may be that the plug-in provides even better results though it of course assumes that the dynamic levels are properly programmed in the first place by the vendor which is far from a given.

I use Transmidifier. My intent for it was to fake the real-time playing of modelled instruments (SWAM) - Transmidifier allows real-time remapping of note velocity and/or dynamics to any other parameter (e.g. formant, key noise) and then further additional transformations with redrawing of the curves.

It ended up working so well for me, I now route Dorico MIDI → Transmidifier → VEPro Standalone for all instruments. It’s a handful, for sure, but I also get tiny Dorico file sizes and near instant Dorico load times.

It also led me to completely rethink my approach to Dorico playback of dynamics. Basically, what I want to achieve is automatic playback in Dorico that’s better than Note Performer - however using my selection of individual libraries instead of a single package like a BBCSO. I want to input notes, set my dynamic markings and have Dorico play it back convincingly without me having to reach for the mixer panel, volume knobs or anything at all to do with playback.

I’m starting to realize, while on this quest, that properly balancing the dynamics of the Playback Template itself, while it is loaded into some kind of “Master Instrument Inventory” Dorico project is by far the most effective way to get closer to where I want to be. And easier in some sense!

I also came to the conclusion that the very many individual workarounds, like the Expression Map trick you mentioned, create too many choke points for me that are sprinkled all over the program, so I removed them. And because my libraries are not normalized with many articulations available, I set the Dynamic Curve to 1, Accents back to 0 and so on - to get completely flat response from Dorico and prevent it from assuming that I don’t have a strings Accent Sustain patch so it needs to fake it. And I must say I really love the logic of how Dorico is treating the dynamics, with ranges and levels that allow for humanization.

Right now, my approach is first to re-map the MIDI values Dorico sends out using Transmidifier if/when they are mismatched. When Dorico sends a ff, I first check in VEPro that each instrument is indeed playing the ff and so on for each marking. Then I designate one library as my “volume standard” (Berlin Woodwinds) and match everything else to it, using only the mixer volume in VEPro and no other tool. Having a single point of control was another important realization. And then I balance most un-stressed articulations (legatos, sustains, staccatos, etc) by writing tutti chords and applying trusty old Brant and Rimsky ratios.

Would love to hear an example of how it all sounds!

I’ve only done woodwinds and brass so far; adding percussion now to this “instrument file” aka playback template…

Here is a very short “headphones-only” rendering of what I’m using to check how things sound after balancing the tutti chord. It’s work-in-progress and I apologize in advance for the missing strings but I’ve yet to add anything after cymbals. You will hear things that are still not properly aligned (a pair of low horns, bass trombone and a trumpet) but it hopefully gives an idea of what I’m doing

As I mentioned before, I’d love to let Dorico handle all of the dynamics as they are written in the score. So, I haven’t touched a single CC line or note velocity here at all, which is probably fine for a very simple piece like this one. But I do input playback offsets for every note.

This idea came to me from reading the recent Note Performer thread, but since then I decided to make expression/percussion maps as I go along and also to create “custom” instruments included in my libraries where it makes sense, because why not?? :roll_eyes: So this is probably going to become a longer project than I originally anticipated. And I’m not sure how Dorico 4 will impact things…

1 Like

Nice - Surely two of the most incredible orchestral crescendos in existence. Some work still to be done as you say, but a very good start. I too have balanced my template carefully with a specific velocity curve and specific velocity settings in the EM. This whole issue of different libraries having different velocity layers which correspond to different velocities/dynamics is something that I have been commenting on and requesting a solution to for maybe a couple of years. I think that eventually the team are planning on implementing individual dynamic curves for each individual Expression Map, and this would be a good start, but what is needed on top of this is more granular control within the dynamic curve of what velocity is triggered for each particular dynamic marking so that we can adjust and taylor these depending on which library we are using. Transmidifier is an ingenious solution, but I’m hoping that Dorico will soon be able to address these basic differences within various libraries. I guess many of us have learnt to live with the present state of affairs and have done lots of tweaking and experimenting to find a sweet spot, but I will still welcome a more detailed level of control when it arrives. I do believe that having more control of velocity levels along with having more conditions are the two most immediate and important additions to the Expression Maps.

PS - Do you have the score for the Prokofiev as a pdf, midi file or xml? I would be interested in trying these few bars out on my system. IMSLP says it is not available in my region which is the US. It was written in 1935 so I think it is out of copyright and should be available.

1 Like

Hi @Grainger2001 - here is the Dorico project I’m using for this piece.

Heads-up: I made this myself and I started on it using the score of the full ballet. However, the last bit (starting from RM7 to the end) is done from Suite #2. As far as I can tell, the only difference is the number of Fr. Horns (6 in the full ballet, and 4 horns in the Suite). I’ve only used this in Write and Play modes.

One thing I didn’t know about this score is the difference between written dynamic markings and tempi and the way it sounds on recordings. I listened to Maazel, Muti and Litton versions and I think most of them made at least tempo changes. Dynamic range seem quite different too, but that may have to do with recordings being compressed.

Anyway, would be curious to hear your render of it - or anyone else who’d like to join in!

Dance of the Knights. Romeo. Prokofiev.dorico (954.5 KB)

EDIT: I believe the Tuba part is transposed an octave higher RM 2 to RM6. Thats incorrect - apologies for that.

As a trained sound engineer (in music, and especially in classical music), I can add some input here. I think it has more to do with where the microphones were placed, the amount of ambiance chosen by the executive producer… Compression is used quite delicately in high quality productions (I suppose those directors were involved in). Close microphones were handled “by hand” following the score, opened only when needed (as in “as little as possible”). They had to make sure the recording would fit into the limited dynamic range allowed by the vinyl disc. Anyway, the parameters are quite complex, and I do not expect any library to be able to really mimic those.
Tempi changes are a major parameter which has a major impact on how the music is perceived. I believe it’s worth spending more time on analysing that, rather than trying to recreate the aesthetics of a sound recording.

1 Like

Thank you for this, it confirms what I had suspected already - in this particular piece, the snare drum is drastically different between the recordings I’ve listened to (not to mention the choice of the drum itself). I do believe a close mic amount had a lot to do with that.

I think what I’ll do from now on is pick one “reference” recording and will use that as a benchmark for spatialization, timbre and for balance confirmation. And listening to my render again, I think my intended setup benefit from a different brass library that’s more compatible with the idea of letting Dorico handle dynamics.

Many thanks, Marc!

1 Like

Interesting comments Marc… That’s a different way of thinking about close mics for me. I’ve still a lot to learn. I’ve tended to get a static mic mix for a given instrument (when a library allows multiple positions and if there seems to be a compelling reason to “go there” versus one of the default mixes.)

Would you mind sharing a little bit more - In those limited situations, are you generally popping CM’s in as a correlation with dynamics, or if you want to emphasize texture for fast and quick strings, etc.? Some general rules of thumb?

One more comment: I had no EQ or compressors/limiters of any kind on my render. But after thinking through you comment, I added a compressor on the master bus in VEPro and the impact it has (on “gentle” setting) specifically on percussion is incredible. Suddenly snares sound very detailed and present, just like the Litton recording.

So I think I’ll get an FX chain set up and leave it “always on” from now on so I can balance dynamics within that context. Thanks!

Thank you for the Dorico file - Nice work. I will try it with my template when I get chance. I will be interested to see how the rendering turns out using EM conditions as well as with my own bespoke system of articulation management. It’s a fun piece to try. I started inputting Strauss’s Don Juan into Dorico last year, but the score is so dense I’ve kind of given up because it was taking so much time.

presumably you mean more than the “dynamic curve power” which is of course already available in the EM overrides? On your points in general, I am in wholehearted agreement as to the priorities

Hi David,
Yes! You’re absolutely right of course…The dynamic curve power can be overridden in the playback overrides and I must confess that I had forgotten this as my template has been set for quite a while. Greater granular control of future individual curves is indeed my main request in this area.