MusicXML Compatibility with Sibelius 7
I have exported some scores from Sibelius format using the new MusicXML export available in Sibelius 7. When I then imported these scores into MuseScore, all the lyrics were missing. I verified that the lyrics were indeed in the XML by looking at them in a text editor and by trying to re-import them in Sibelius, which worked.
I then tried importing the file into Finale which also worked perfectly. All the lyrics were in place in Finale so I then exported from Finale as MusicXML and imported into MuseScore and that worked perfectly also. All the lyrics were present in MuseScore using the export from Finale.
So then I went and looked at the XML to see what had changed. Apparently the problem is that inside the lyric node, Sibelius exports both the part number and verse number inside the 'number' attribute. In other words if we are working with verse 1 and the 8th part in the score, Sibelius will export the 'number' attribute as 'part8verse1'. Whereas MuseScore only wants that '1' and thus ignores the entire lyric node. I have attached a complete example.
The fact that Finale recognizes this format would seem to indicate that it is valid. In any case, in order to maintain compatibility with other software, this should be corrected.
Attachment | Size |
---|---|
XMLExample.txt | 330 bytes |
Comments
The info at http://www.recordare.com/musicxml/tutorial/lyrics indicates that the number attribute is considered to be an integer. It's not because Finale imports non integer values, that it's supposed to be like this. Let's ask Michael Good bc I'm making assumptions.
In reply to Lyric number by Thomas
The MusicXML DTD specifies:
The lyric number indicates multiple lines, though a name can be used as well (as in Finale's verse/chorus/section specification).
Furthermore, the lyrics "number" attribute is of type NMTOKEN, which is defined in the XML specification as:
An Nmtoken (name token) is any mixture of name characters.
Finally, schema validation of a MusicXML file with a lyric numbered "part1verse1" reports no errors.
So I guess this makes it legal, which means MuseScore should support it. Unfortunately, the MusicXML DTD does not specify how to interpret the number, e.g. when specifed in verse/chorus/section. Could someone with access to Finale and/or Sibelius 7 add some information about what pattern are to be expected and how to interpret these ? Or is it as easy as removing everything but the last digit ?
In reply to The MusicXML DTD by Leon Vinken
Since "NMTOKEN" means _any_ mixture of characters, none of which need to be numeric, doesn't this mean you need to match the text name to know the verse#? I suspect seeing the full XML output of a Sibelius 7 file would be more helpful.
[ EDIT: Interesting side-note that Recordare is being bought my MakeMusic ]
In reply to The MusicXML DTD by Leon Vinken
See attachment
The number attribute for the lyric element is optional. I think that MuseScore should be interpreting this the same way it does as if the number attribute was missing. The default-y value provides placement information; you can try to infer numbering from that.
The intent is that this attribute should be an integer value. I do not recall why we did not specify this as an integer in the XSD schema and left it as an NMTOKEN. I think any software interpreting this attribute is expecting an integer. I have added this to our issue list for a future MusicXML release.
Please report this export problem to Sibelius as well. Even though MuseScore should handle it, there are semantics that are being obscured by the way this is being exported from Sibelius. It seems that Sibelius should use a name attribute of "verse" and a number attribute of "1" in this situation. All notation programs would benefit from a cleaner export of this data from Sibelius.
In reply to Treat like it was missing by musicxml
Thank you Michael for clarifying this.
In reply to Thanks! by Thomas
Submitted issue #13860: MusicXML: support lyrics exported by Sibelius 7, which I intend to fix both in the 0.9.6 branch and in the trunk.
I have also found another problem with importing from Sib7. The harpsichord part in the attached does not import correctly. It is a score downloaded from the Choral Public Domain Library (www.cpdl.com). When importing the XML as output from Sib7, it does not seem to know to which staves the notes belong.
When I import it into Finale, it looks like it did in Sibelius. Again, as with the lyric problem, when I output MusicXML from Finale for this same score, MuseScore reads it in fine and matches how Finale interpreted the original output. I have attached the original Sibelius file, the XML file output from Sibelius, as well as the XML output from Finale.