Closed alastair closed 2 years ago
I looked into some files and the problem here is MusicXML's non-controlling
attribute on measures.
Verovio goes through the parts and tries to arrange the measures in MEI. The problem lies in the mensuralish notation in those pieces: measure boundaries are shifted, some measures are split up in some parts, etc.
It comes close to magic trying to make sense out of this kind of encoding and convert it into proper MEI.
This is closely connected to https://github.com/music-encoding/music-encoding/issues/700 and cannot be addressed here without clarification in MEI.
thanks for looking into the cause, @rettinghaus. At the very least, even if there's not yet a decision made on how to represent this in MEI it'd be good to get verovio to output a specific error message and return a known status code instead of crashing in this situation. I'll have another look at a few of these files (CPDL includes a PDF of the rendering) and see how the rendering changes when I open/re-save in musescore. It might be interesting to see what decisions musescore makes in order to turn these into a representation that doesn't cause verovio to crash, and if the layout changes significantly.
Describe the problem As part of our work in the Trompa project, I processed a large number of MusicXML files from CPDL, converting them to MEI/SVG with verovio. We found that about 10% of the files caused verovio to crash while performing the conversion. We were able to work around this in most cases by opening and re-saving musicxml using musescore, and then using verovio on the new files.
I noticed that many files failed with the same error:
The output of verovio on these files includes:
and additionally, musescore also raises an error box on these files when it opens them, saying that they are invalid with similar error messages:
However, pressing the ignore button in musescore does open them, and it's successfully able to re-save the file, preserving most of the content.
To Reproduce
I've included a list at the of the mxl files that crash with this specific error, along with a gdb stacktrace with debugging symbols for each of them (it looks like they're all crashing in the same place)
Steps to reproduce the behavior:
./verovio -r ../data/ -o output.svg [inputfile.mxl]
Expected behavior Verovio successfully converts the file, or raises an error and exits cleanly
Input data See links below
Verovio information
develop
Environment information (as appropriate)
Additional context Sample files and stack traces
O sacrum convivium a 4 (Tomás Luis de Victoria) - ChoralWiki
stacktrace
Magnus es tu Domine - Tu pauperum refugium (Josquin des Prez) - ChoralWiki
stacktrace
O vos omnes (voci impari) (Tomás Luis de Victoria) - ChoralWiki
stacktrace
Parce mihi (1565) (Orlando di Lasso) - ChoralWiki
stacktrace
Dissi a l'amata mia lucida stella (Luca Marenzio) - ChoralWiki
stacktrace
Quare tristis es anima mea a 4 (Orlando di Lasso) - ChoralWiki
stacktrace
Jubilate Deo a 4 (Orlando di Lasso) - ChoralWiki
stacktrace
Mia benigna fortuna (Cipriano de Rore) - ChoralWiki
stacktrace
Audite Nova! (Orlando di Lasso) - ChoralWiki
stacktrace
Ne timeas Maria (Tomás Luis de Victoria) - ChoralWiki
stacktrace
O quam gloriosum est regnum (Tomás Luis de Victoria) - ChoralWiki
stacktrace
Parce mihi (1565) (Orlando di Lasso) - ChoralWiki
stacktrace
Tu solus qui facis mirabilia (Josquin des Prez) - ChoralWiki
stacktrace
Audite Nova! (Orlando di Lasso) - ChoralWiki
stacktrace
Princeps marte potens (Orlando di Lasso) - ChoralWiki
stacktrace
Domine convertere (Orlando di Lasso) - ChoralWiki
stacktrace
Audite Nova! (Orlando di Lasso) - ChoralWiki
stacktrace