[Musicxml Export] - Hairpin export stops halfway

• Nov 8, 2020 - 10:18
Reported version
3.5
Type
Performance
Frequency
Once
Severity
S1 - Blocker
Reproducibility
Always
Status
closed
Regression
Yes
Workaround
No
Project

As I'm transcribing this score in braille:
https://musescore.com/user/19250441/scores/6407987
I found hairpins are not completely exported. This doesn't happen in other scores even they are very complicated. The place it stops to export is at bar 147 of piano part, then the remaining piano and all string parts don't contain any hairpins. I only found this when I was at movement 2, and it's no way to continue the braille transcription, since even the piano part alone (by removing all other instruments) will stop at bar 24 of movement 2. I have to stop now, for the back check of hairpins is a nightmare, and I'd like to wait for the solution, and only check the second half of piano and whole string group of the first movement.


Comments

This happens when a hairpin start is exported but later the hairpin stop cannot be found. As MusicXML supports only a limited number of active (started but not yet stopped) hairpins at the same time, once this happens, no more hairpins can be exported. A similar issue was fixed some time ago, I suspect this file exposes a new bug in the "find hairpin stop" algorithm.

It took me about two hours to indentify a few instances of hairpins where the stop is not found, but now I can start to track down the bug(s).

In reply to by Leon Vinken

Do you mean the Musescore file has some hairpin endings missing? It's strange that happens in a normally engraved score. In Sibelius there's also case of lost ending caused by complex voicing, and is a limitation of Manuscript language not hairpins themselves. So I increased the limit to 25 in the Dolet plugin so that up to 24 layers can be exported :-)

The MuseScore file is fine. Cause has been found and is in the MusicXML importer. Measure-boundary-crossing hairpins are not handled correctly and overflow internal administration. As a result subsequent hairpins are not exported. I am finalising the solution.

Status PR created fixed

Fixed in branch 3.x, commit b0edb0a9e7

_fix #312714: [Musicxml Export] - Hairpin export stops halfway

The spanner stopped data structure was incorrectly at measure level instead of at part level.
This breaks spanners ending exactly at a measure end when the next measure starts with
a zero-sized rest (happens when the second track does not have a note at the neasure start)._

Status PR created fixed

Fixed in branch master, commit f448919b66

_Fix #312714: [Musicxml Export] - Hairpin export stops halfway

The spanner stopped data structure was incorrectly at measure level instead of at part level.
This breaks spanners ending exactly at a measure end when the next measure starts with
a zero-sized rest (happens when the second track does not have a note at the neasure start)._

Fix version
3.6.0