Matching the dynamic ranges - FR or best practice

Sometimes the default dynamics in VST and modelled instruments do not align very well to the ranges as Dorico defined them. Is there a way to match them easily? If not, could this be a feature request for Dorico 5: to make it easier to match instrument dynamics to Dorico’s ranges in Expression Maps.

Dorico considers a mf dynamic to be in the range of velocity/CC value of mid ~60s to low ~70s, depending on the curve and humanization applied. However, a modelled instrument, say an Audio Modeling woodwind or brass, produces a more natural and realistic mf at CC11 range that’s 10 or even 20 points lower, at least to my ears, which is a huge gap.

I tried matching the effective mf midpoint in the Expression Map using for example the 0-100 instead of standard 0-127 range. However, I am a bit doubtful if restricting the range is a good way to match dynamics: it seems to lead to an even coarser resolution than the basic 0-127 (and Dorico doesn’t support the granular MSB/LSB option). The result is that while dynamics are more aligned between instruments, the sound becomes quite lifeless and mechanical, in particular in solo passages and especially in clarinets, trumpets and horns from AM.

Additionally, it’s unclear how the dynamic curve in Playback Options behaves when the range is restricted like this. Does it center around the new mid-point and curve within the now narrowed range? I’m doubting myself here, but to my ears it sounds like something is audibly off in terms of expressiveness even though I can’t quite quite pinpoint and describe it.

The other case is the complete opposite: from very wide to very narrow instrument defaults. Some sampled VST instruments provide only a handful of recorded dynamic layers, perhaps 9, sometimes 5, often 3, etc. The standard range is divided between layers so that a p is triggered by any velocity within 0-35, to use a percussion example. However, the combination of the curve and humanization can push the written dynamic from one category into another. For example, Dorico would show the velocity of 36 while still in its p range but of course Kontakt shows that the instrument has already jumped into its next layer. This is especially audible when an instrument tone color changes at different dynamics. But it can also be quite jarring when there is a gradual dynamic that is velocity triggered (i.e. not masked by a continuous controller action).

OK, not quite like that but hopefully it gets the point across. Setting the dynamic curve to 1 and disabling humanization produces a more reliable match. However, since the curves now do not match between different instruments, there can be audible “drops” or “jumps” in volume in the affected regions in ensemble or tutti and a more robotic sound overall.

As there is no published table that shows the breakdown of the default velocity/CC values at default Curve and humanization levels, I try to match it manually via trial and error. This is very time consuming and basically a guessing game which can be quite frustrating. Modifying the default curve for other instruments can mean redoing this manual matching all over again, something that I’m dreading tbh.

I was wondering if an Expression Map could include a field that tell Dorico how a library allocates the dynamic layers for each given articulation so that a reliable match can be set as default, but of course the team will have a better solution if they accept it as a FR. I do think addressing it can improve Dorico’s ability to produce better mockups more easily. In the meantime, if there’s a better way to match dynamics in the interim, I’d really appreciate some guidance. Thanks.

P.S. I forgot to mention that previously I used to use a tool to remap velocity and CC values from an instrument going to Dorico. Here’s an example for one of several suspended cymbals from OT Berlin Percussion:

It took a bit of time to put together (there’s 4 cymbals, 3 piatti, 7 snares, etc) and it only worked for one given setting of the dynamic curve in Dorico’s expression map. However, this tool allowed me to input precise mapping for each value which made the guessing game a lot more effective; and it was reliable with low humanization values.

For various reasons, I changed the setup, so I don’t use it anymore and now I miss it every day. But for modelled instruments with fluid dynamic ranges this tool wasn’t doing much - it’s the same restriction of range that can be done in a Dorico Expression map.