FR to help avoid race conditions

The following examples use a single sustaining instrument.

Playback

Apparently, if Dorico detects that one note is starting to overlap another note with the same pitch, Dorico will shorten the duration of the earlier note so that it ends just before the next note begins. I wish that Dorico would do the same thing with two notes that have the same pitch and don’t overlap but the earlier one ends at the same time as the later one begins. This would help avoid race conditions.

Have you considered turning on IRV in Play mode? This way, the different voices will be assigned to different virtual instrument instances, which eliminates the worries about race conditions.

1 Like

My feature request pertains to situations like this.

1 Like

Cubase is ‘playing it wrong’, IMO, because something should be sounding for all of the first two bars, plus two beats.

Dorico’s rendition is more representative of what you would hear. Obviously, in real life, you’d need two players to overlap (depending on the instrument). And I’d agree that if you want to hear two voices doing different things, then you need to use IRV.

2 Likes

The purpose of the examples in my original post was to show that Dorico is shortening the duration of notes so that they don’t overlap, which a DAW like Cubase typically doesn’t do. I am asking that this logic be extended to cover situations where notes with the same pitch don’t overlap but are touching end to end.

There is an option to set how early expression maps switch before the note starts. Is that not a solution to whatever the problem is?

I have no idea what you’re referring to, but I’m hoping to get a reply from @dspreadbury.

Is your illustration possibly labeled incorrectly? I have experienced this phenomenon with unisons over decades of midi rendering and I am trying to imagine why anyone would prefer the short way, with silences in between. The text and the illustration in the first post don’t seem to match.

Since several people are confused about the examples in my original post, let’s try a more practical example with only one voice for which turning on IRV won’t help:

Playback

To eliminate one variable, let’s assume that Humanize the start positions of notes is set to zero percent. By default, every note under the slur except the last has a played duration equal to 105% of its written duration. Without special logic to detect overlapping notes with the same pitch, any MIDI application playing back this example would end the fourth note after only five percent of its written duration. Presumably with situations like this in mind, Dorico includes this logic and shortens the third note so it ends just before the fourth note begins.

Now let’s delete the slur and set the played duration of default notes to 100% of their written durations. Now the notes don’t overlap but the third note ends at the same time as the fourth note begins, causing a race condition.

Can you give an example of a problem caused by this situation?

I mentioned the setting for triggering the expressions for the next note early, as I suspect it was to ameliorate this sort of thing. I could be wrong, of course.

Screenshot

If you follow the link I gave in the third post of this topic, you will find an example of a problem caused by this situation.

The setting you mentioned determines how many ticks before a note begins a keyswitch will occur, typically to cause a change of playing technique such as going from arco to pizzicato.

mmmm i would say you can’t play the same note both at the same time with a single intrument. so in musical notation it means you use at least two instruments to get this overlap. i don’t know Dorico but is it possible to program two different intruments (or group of instruments) on the same stave ? because this what means your example

I can’t reproduce the problem in that thread. I’m not using Noteperformer, so could it be dependent on the Ex Map or VST?

When two notes have the same pitch and the first note ends at the same time as the second one begins, there is always a chance (albeit a very slight chance) that the MIDI note on event for the second note will be processed before the MIDI note off event for the first note, causing the second note to be clipped so short as to be practically inaudible.

Try using the HSO Trumpet in Bb at the stated tempo of q=92. The problem is not dependent as much on the expression map or VST as it is on the tempo.

Could you attach a short project in which this occurs? I believe the way that the overlap detection in Dorico works is intended to prevent this from happening, so it’s possible that there is a bug in the logic somewhere.

If you follow the link I gave in the third post of this topic, you will find a short project in which the problem occurs.

Here is another example of race conditions causing clipped notes, using the HSO Oboe to play the melody. In working with my virtual choir, I set Humanize the start positions of notes in Playback Options>Timing to zero percent. I also set the played durations of default notes to 100% of their written durations so that they will be as long as possible without overlapping. Then I enter the notes, setting the playback end offsets of notes at the ends of phrases and at punctuation within phrases to create the pauses that would occur in a performance by a real choir.

Hymn.dorico (704.1 KB)

Forgive my ignorance please, but what the heck is meant by the words ‘race condition’? I’ve never encountered the term before.

1 Like

According to Wikipedia:

A race condition or race hazard is the condition of an electronics, software, or other system where the system’s substantive behavior is dependent on the sequence or timing of other uncontrollable events. It becomes a bug when one or more of the possible behaviors is undesirable.