Hi everyone
This issue is only for those interested in building their own custom Expression Maps.
Some of you might remember that I’ve identified some Velocity bugs before (here and here), and I’m afraid I’ve identified another, rather complicated, bug, which I don’t think is related to anything previous I’ve identified.
Anyway, @Richard_Lanyon, who was a great help to me previously, suggested that I investigate and write up a report on this new bug I have found. I’m currently on Dorico 5.1.51.
I apologise for this being a little complicated.
It seems that the presence of an additional Direction-articulation Playback Technique can force the assigned Velcoity of a Base Switch with Playback Technique Combinations to be replaced with that of another Base Switch, either (probably) a Fallback Base Switch or a Base Switch with a satisfied Note Length Condition (if present). Other aspects of the original correct Base Switch, such as Key Swtiches, seem to be unaffected.
I’ve only discovered this because I wasn’t getting the expected Velocity values into a VST from an Expression Map I’ve been building (which uses many many Playing Techniques and Base Switches with Playback Technique Combinations), so in an attempt to get to the bottom of this, I somehow managed to narrow everything down and identify something close to the core of the problem.
I present to you this simple Dorico file. Velocity from other Base Switches being used in error.dorico (493.6 KB)
It contains four custom Playback Techniques;
which can be triggered by four custom Playing Techniques.
It should be noted that A and B have the Direction articulation type, while C1 and C2 have the Attribute articulation type.
The idea is to build an Expression Map with Base Switches for {A, A+C1, A+C2} and an Add-on Switch for {B}. There will be a Mutual Exclusion Group for {C1, C2}.
I’m going to demonstrate the bug by walking through the results of four Expression Maps on a simple passage of music.
In all cases, the instrument is going to an instance of HALion Sonic 7 with an Acoustic Grand Piano loaded on Channel 1. Nothing fancy.
We’re going to listen to the volume of the VST Playback to detect the bug.
I’ll give the important details of the Expression Maps in table form. All of these Expression Maps are in the Dorico file attached, so if you want to follow along just change the Expression Map as you go.
First up is EM 1.
When the a and c1 Playing Techniques are included (triggering the A and C1 Playback Techniques) in these positions of the musical passage,
we can hear what we would expect; quiet notes in bar 1 with Velocity=30 and a loud note in bar 2 with Velocity=90. This agrees with what is displayed in the Key Editor.
However, when the b Playing Technique (triggering the B Playback Technique) is included at the start of the passage,
we now hear Velocity=30 for the whole passage, even though the Key Editor suggests that Velocity=30 for the first bar and Velocity=90 for the second bar.
When the Expression Map now includes an Add-on Switch for B, as is the case in EM 2,
we still hear the same playback of Velocity=30 for the full passage, despite the Key Editor suggesting that the EM 2 Expression Map is working.
To confirm that the Expression Map is actually triggering the correct switches, we can include some Key Switches for each of the Base Switches and Add-on Switch in EM 3,
and by watching the keyboard of HALion Sonic 7 while the passage is playing, we can see that the correct Key Switches are making it to the VST, proving that we are triggering the Base Switches and Add-on Switch we want,
but from what we can hear, not the correct Velocity values.
Note, that if we remove the b Playing Technique,
everything sounds correct again.
Let’s put the b Playing Technique back in.
Now, it gets weirder.
We add another Base Switch for the A+C2 Playback Technique, but with a Note Length Condition that will be satisfied across this passage, such as Note Length >= Very Short. We can also add in a Key Switch to help track if this Base Switch is ever triggered. This is EM 4.
Now, playback gives Velocity=127 for the whole passage, the Velocity from this new A+C2 Base Switch, even though the C2 Playback Technique is never triggered in the passage.
I believe this has now demonstrated the bug. The presence of the B Playback Technique, while not altering the Key Switches, is altering the Velocity values. It seems to be using the Velocity values of another Base Switch, probably a Fallback Base Switch or, if present, a Base Switch in which the Note Length Condition is satisfied.
If you’ve read this far, thank you for taking the time to understand this problem with me. In my real-world Expression Map, the A, B, C1 and C2 Playback Techniques and everything in EM 4 is actually doing something (such as sending Program Changes, Key Switches, Velocities, etc), and I essentially need all of them just as they appear in this report. I’d be happy to provide more context of what I’m actually trying to achieve if it would be helpful. Suffice it to say, my VST triggeres different articulations based on the Velocity, so the incorrect Velocity being sent is a problem.
Finally, as with the other Velocity issues I’ve pointed out, none of these errors occur with MIDI Export. It’s only VST Playback and Audio Export in which the wrong Velocity values are being sent.
Thank you for taking the time to read to the end. I hope this can be corrected in an update soon.