Can I create Playing/Playback Techniques that control Volume/Expression CC Values?

I’m trying to replace dynamic markings with numerical values, solely for sample library playback purposes. For example, if I want my sample library to play Volume/Expression value 1 (or any value between 1-127), I would like to be able to type into my score “1” instead of “pppppp”.

I’ve created a new Playback Technique under the category “Dynamics” and called it “1”. I’ve then linked this to a new Playing Technique also called “1” and to an Expression Map switch that triggers a Control Change (on channel 11, in my case) of value “1”.

In Write mode, I’m able to attach “1” to any note, albeit as a Playing Technique rather than Dynamic; and in Play mode, I can see this value in my CC11 lane. However, this value is then immediately overridden by the prevailing dynamic (or default starting dynamic, as I haven’t declared one).

What is the overriding mechanism at play here and can I disable it?

Just to be clear of my full intention: in Sibelius, I had Playback Techniques for every value from 1 to 127 controlling CC11. I could use these numbers completely in lieu of dynamics and could even cresc./dim. between them.


Here you can see the CC data adjust to the playing techniques and immediately return to an overriding dynamic value.

I’d start by setting the Playback options>Dynamics>Dynamic curve to 1.0 (which should give you a linear mapping) and turning off all Dorico’s humanisation.

Yes, a good place to start - that removes all Velocity/CC variation but dynamics (whether specified or not) still appear to override Playback Techniques that attempt to control Velocity/CC.

Unfortunately, @Janus’s solution won’t give a linear mapping in the MIDI values, even if you can stop the prevailing dynamic from overriding the Playback Technique.

Even with the Dynamic curve set to 1.0, changes in the MIDI values from p to mp and from mf to f are (erroneously) half of what they are everywhere else. Even if this were corrected so that they are the same as everywhere else, “linear” spacing (i.e., equal spacing) in the MIDI values does not produce a linear perception in the corresponding changes in loudness. (Please see my response on 25 JAN 6 to my original post “Single Dynamic Point Level Inconsistency.” There, inter alia, I discuss the formula for the MIDI values that produce a linear perception in loudness, from single point dynamic to single point dynamic, and in hairpins.)

The Dorico-generated MIDI values do appear to be consistent when called by any of the dynamic labels pppppp through ffffff, for any given Dynamic curve value (including 1.0), as long as this value does not change throughout a project. @kbunt1, are you able to take a Dorico-generated MIDI value of, say, 85 (corresponding to f), and convert it to a different MIDI value (say, 71), before sending it to your libraries?

@Sitka I applaud your thorough investigation into Dorico dynamics. Although interesting, I’m not that bothered by the inconsistencies between dynamic values (whether literal dynamics or CC values) and perceived loudness.

Rather, I just want to control “loudness” (an area you’ve proved tricky) with values 1-127 rather than approximate dynamic markings pppppp-fffffff. It’s silly to have to type six p’s to output 1. Why shouldn’t I be able to simply input 1?

As for your question - unfortunately not, I’ve been unable to override a Dorico-generated MIDI value with my own. At least with any lasting effect that is, as it’s always immediately re-overridden by Dorico!

If your player responds per the MIDI standard for interpreting volume (as velocity or a CC value), your input value of 1 will be 84 dB below the value of 127. It will take a good ear (or reference to a pre-calculated table) to handle this raw, non-linear input deftly.

I believe I share your desire to access this from the score, instead of having to fix possibly every instance in the Player CC tracks. I am more inclined to declare (and use) the named dynamics, and assign their associated MIDI values as part of the setup. For the stuff I do, I haven’t needed to modify this very often later in the piece.

In the expression map, what is Volume Dynamic and Secondary Dynamic (if checked) set to? If you don’t have either of those set to CC11, Dorico won’t do anything with CC11.

I’ve tried two settings: (1) Volume Dynamic set to CC11 with no secondary dynamic and (2) Volume Dynamics set to note velocity and Secondary Dynamic set to CC11.

As expected, Dorico is doing something with CC11 (moving it to the value I’ve specified in the expression map) but then overriding it with the prevailing dynamic (or default dynamic value, if I haven’t declared a dynamic marking yet).

I must admit I’m mystified as to what you are trying to achieve.

The point is: you can’t expect Dorico to do nothing (not override with the prevailing dynamic) if you specify that it should do something (specify volume or secondary dynamic). If you want to control CC11 with a play(ing/back) technique, remove all mention of CC11 from the expression map volume/secondary dynamics and only control the CC11 value with the playing technique entry.

2 Likes

as far as I can see, this is simply how Dorico works – being score based, it seems logical enough to link the dynamics lane, irrespective of controller, to the score dynamic marking even though it’s not how it works in Sibelius. The dynamics lane will take the value of the dynamic marking in the score – any p.t you enter will not override this.

But it seems to me to be not so hard to use your “1” in the way to get results you want. First you need to know how the library you use (not specified) works. Pretty typical is that actual volume (as opposed to dynamic tone) is controlled by CC11 and so that in most cases a value of 1 will be virtually inaudible. A pppp is more likely to be around 10-20. As long as you set your “1” to be a “direction”, the appropriate value will stay until overridden. In the Expression Map, as already suggested, you just have CC11 as the primary controller with no secondary at the appropriate value in both “min” and “max” fields.

Of course if you want the lowest dynamic – usually considerably louder – as opposed to the lowest volume, then you could change your EM for “1” to use CC1 instead of CC11 and get something like the below

There is a considerable difference between the two but not as much as using CC11 – this example is using VSL which is not atypical of how sample libraries work.

Yes, this seems to be the case.

If I want to control Expression/Volume with my own CC-specifying play(ing/back) techniques, instead of Dorico’s inbuilt dynamic markings, then I must keep that CC channel isolated from Dorico’s dynamic system.

This contrast to Sibelius appears to stem from the fact that Sibelius’ dynamic markings were literal, albeit disguised, velocity values (e.g. ff=104). Whereas Dorico’s dynamic markings represent abstracted dynamic steps (-6 to 6) which are then converted to Velocity/Expression/Volume according to the Expression Map.

This is still a win. In summary, one can use their own CC values 1-127 instead of Dorico’s dynamic markings pppppp-ffffff and input these directly onto the score. However, unlike Sibelius, hairpins won’t be available to bridge between CC values, but you can draws these in the Play editor instead.