Issues with new CC delay function in playback

In the latest update, track delay compensation for CC’s has been added to playback.

The good news: It seems it works.

The bad news: One of the libraries I use expects only the notes to get a negative delay and not the CC’s, so now with a -250ms delay set in the expression map, the notes are in the right spot but the CC’s all fall too early.

Unfortunately, there doesn’t seem to be a way to control whether or not the CC’s should receive the delay as well - the CC’s just automatically receive the delay too.

I’m also not quite understanding why the “fff” that falls on beat 4 of that last bar is on time instead of being 250ms earlier like the other dynamics.

It might be ideal if the expression maps supported creating an “exclude list” of CC’s to exclude from the negative delay, because I suspect some libraries may respond instantly to CC11 or CC7 but expect CC1 to be pre-delayed like the notes. I know I have few libraries where I would need to do this in order for them to work properly.

I have cases where I have CC’s used to activate simulated mutes which should not be affected by the delay setting like the dynamic CC.

That’s because there’s no note at that position. Dorico determines the offset for dynamics based on the per-switch delay for any note at that position.

In general it’s not going to be practical for us to provide per-CC settings for whether or not the delay should apply. For actions relating to the switch in the expression map, they will be output at the precise start and end of the playback technique region to which they correspond, and those regions are offset as required for per-switch delays. Dynamics were not included because they are not typically processed according to those regions: they are instead processed for the whole voice at once, and take things like per-note dynamic variation (from pitch contour emphasis, beat stress, etc.) into account.

In theory we should be able to add a playback option to control whether dynamics are offset for per-switch delays, and then allow that to be overridden in an individual expression map, but that’s probably as far as we can reasonably go in the short term.

1 Like

Thanks, Daniel. This would be very helpful, being able to get basically the old behaviour if needed through a playback option that could then be overridden in the expression maps.

I’m also not meaning to seem like I’m just complaining, I’m very happy about these new enhancements and love the new context sensitive help, but didn’t realize that some of my libraries behaved like this until I tried the new features.