Hello
On 11/09/2021 11:52, Hans Aikema via bug-lilypond wrote:
Running a MusicXML-to-lilypond conversion for a score I received from the arranger as a
Sibelius 8.3.0 MusicXML export (Direct export, not from Dolet) I encoutered breaking errors
due to Sibelius’ use of none-numerical lyric numbers (part<n>verse<m>) in at
least the part-wise scores.
This case is documented online [1] [2] [3] as a known issue in MusicXML (which
has not been resolved up to now, and probably never will given the time passed
since it was raised).
I think lilypond’s musicxml2ly should support conversion of such none-numerical
lyric numbers.
Preferably by grouping lyrics based on the NMTOKEN stringvalue (as number
attribute semantics is “Specifies the lyric line when multiple lines are
present.” different values should be expected to refer to different lyric lines)
Or if that would be difficult to achieve by ignoring none-numerical lyric
numbers, grouping all such ’non-numerical lyric number’ lyrics into a single
lyric line, and only issue a conversion warning that non-numerical lyric
numbers were encountered and the corresponding lyrics merged into a single
lyrics line.
Attached is a minimal example MusicXML that demonstrates the issue.
It shows that measure number, which is clearly documented in the spec to be a
’number’ that might contain non-numerical data, is properly supporting
conversion to lilypond for non-numerical measure numbers as the conversion
breaks only on measure ‘b’, the first measure with a non-numerical lyric number
(which is not clearly documented in the spec for being a ‘number’ field that
might contain non-numerical data)).
The resulting log of musicxml2ly:
—
musicxml2ly: Reading MusicXML from /Users/**/**/XMLLyricsNumberNMToken.musicxml
...
Traceback (most recent call last):
File "/opt/local/bin/musicxml2ly", line 3479, in <module>
main()
File "/opt/local/bin/musicxml2ly", line 3472, in main
voices = convert(filename, options)
File "/opt/local/bin/musicxml2ly", line 3333, in convert
(voices, staff_info) = get_all_voices(parts)
File "/opt/local/bin/musicxml2ly", line 2910, in get_all_voices
all_voices = voices_in_part_in_parts(parts)
File "/opt/local/bin/musicxml2ly", line 2900, in voices_in_part_in_parts
voices = voices_in_part(p)
File "/opt/local/bin/musicxml2ly", line 2887, in voices_in_part
part.extract_voices()
File "/opt/local/share/lilypond/2.22.1/python/musicxml.py", line 1588, in
extract_voices
voices[id].add_element(n)
File "/opt/local/share/lilypond/2.22.1/python/musicxml.py", line 1251, in
add_element
nr = l.get_number()
File "/opt/local/share/lilypond/2.22.1/python/musicxml.py", line 971, in
get_number
return int(self.number)
ValueError: invalid literal for int() with base 10: 'b'
—
[1] https://github.com/w3c/musicxml/issues/42
[2] https://forums.makemusic.com/viewtopic.php?f=12&t=2392#p6460
[3] https://musescore.org/en/node/13760
_______________________________________________
Thank you for the report.
I have created
https://gitlab.com/lilypond/lilypond/-/issues/6174
--
Regards
James
_______________________________________________
bug-lilypond mailing list
bug-lilypond@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-lilypond