Multi-measure rests not working with XML export to SmartMusic
I was wondering if MuseScore codes multi-measure rests strangely. I use MuseScore and upload XML files to SmartMusic all the time for my students to practice. Whenever there is a multi-measure rest at the beginning or end of a line, it looks like a total mess in SmartMusic (notes and measures are all squished together and totally unreadable).
SmartMusic support said that it has something to do with the way MuseScore exports the information into XML in that specific situation. Obviously exporting from Finale into SmartMusic doesn't have this problem. Is this a bug that can be fixed? I've attached screenshots of what the original music looks like in MuseScore and then when it's imported into SmartMusic, and also a screenshot of the email with SmartMusic support.
Attachment | Size |
---|---|
SmartMusic Error.png | 303.38 KB |
MuseScore Original.png | 210.01 KB |
SmartMusic Email.png | 91.79 KB |
Comments
Hi Andrew,
could you attach the MuseScore (.mscx or .mscz) file that exhibits the issue ?
Leon.
In reply to Hi Andrew,… by Leon Vinken
Here's the file I used as an example in the screenshot. In this case, the multi-measure rest is on page 2, beginning of the second to last line. Literally any file that has a multi-measure rest at the beginning or end of a line has this issue. Unfortunately, this happens quite frequently in the concert band music I upload to SmartMusic.
In reply to Here's the file I used as an… by Andrew S
I have no insight into the problem and cannot say who is right and who is wrong, but I can observe that a workaround would be to press "M" to disable multimeasure rests before exporting.
In reply to I have no insight into the… by Marc Sabatella
Thanks! Disabling the multimeasure rest did work. SmartMusic automatically converts it back to a multimeasure rest.
In reply to Thanks! Disabling the… by Andrew S
Andrew,
thanks for sharing the file. Based on discussions in the MakeMusic MusicXML forum, I still believe the MuseScore implementation is correct, so I will not change it. The MusicXML export is exactly what I would expect it to be.
See:
https://forums.makemusic.com/viewtopic.php?f=12&t=1665&p=3798&hilit=mul…
https://forums.makemusic.com/viewtopic.php?f=12&t=1280&p=2183&hilit=mul…
Regards, Leon.
In reply to Andrew,… by Leon Vinken
Is MuseScore using MusicXML 3.1? Im asking for the tech people at SmartMusic.
In reply to Is MuseScore using MusicXML… by Andrew S
Not yet, but see #235526: [MusicXML] support MusicXML 3.1 and https://github.com/musescore/MuseScore/pull/3254
As far as I'm aware MusicXML 3.1 is still not officially released, regardless being due since end of July, there still is no 3.1 release visible on https://github.com/w3c/musicxml/releases
In reply to Not yet by Jojo-Schmitz
They're saying that New SmartMusic and Finale version 2 both use 3.1.
In reply to They're saying that New… by Andrew S
This got to be a downright lie, as 3.1 is not yet released, check the link I provided above. They may be using some 3.1 beta test, and said so in http://www.musicxml.com/musicxml-3-1-arrives-in-finale-v25-4-dolet-7/
But I see indeed that in http://www.musicxml.com/finale-25-5-musicxml-updates/ they claim Finale to be using 3.1
To be honest I see them claiming to use 3.1 (and not some beta of it), while this not being officially released, as being a miss-use of their position in board of that standards community group
In reply to Andrew,… by Leon Vinken
I'VE FOUND THE ERROR.
I searched through the XML file (and learned how to read it, yay). I use line breaks to format my music, so there should be a print new-system="yes" section of code to start a new system. Now whenever there is a multimeasure rest at the end or beginning of a line, the print new-system="yes" section simple does not exist in the XML code that is exported. It's just not there.
Check out the files I've attached. In the MuseScore file, there are line breaks at M. 9, 18, and 27. Look in the XML file and you'll only find print new-system="yes" at M. 28, when they should be at M. 10 and 19.
To test this, I went ahead and wrote in the code to create new systems where they should be, imported it to SmartMusic, and it worked perfectly.
In reply to I'VE FOUND THE ERROR… by Andrew S
I did some more experimenting and discovered something else. I made a screencapture video to demonstrate exactly what's going on since it's quicker and easier that writing it out. Here's the link: https://www.youtube.com/watch?v=G8OvlzIEh1Y&feature=youtu.be
Long story short: pressing "M" two times changes the output of the XML file. It adds line breaks in some measures where they should go, but not in others. Also, If I save the .mscz file after doing this, close it, re-open it, and export as XML, it goes back to the way it exported before I pressed M twice. Pretty buggy.
I've attached the MuseScore file I used in the video.
In reply to I have no insight into the… by Marc Sabatella
Btw, disabling multimeasure rests entirely worked for that small four-measure rest, but when I break a large group up, like 32 bars for example, there are so many individual measures that they get pushed the next line no matter how small I squeeze them. When that happens, the XML codes a new system on whatever measure happens to be pushed to the next line. When I import that into SmartMusic, I'm back at square one. I could go in manually and remove those new systems and it works fine, but that's extremely time-consuming and tedious. Alternately, I could increase the page width to something like 20 inches so they all fit on the intended line, export as XML, go into the XML file and manually change the page width back to 1304.35 (9 inches), and then those page breaks won't be there, but again...very tedious when I have four bands, 3-4 pieces per band, and 10 parts per band.
Ultimately there's just a bug that prevents XML from coding new systems when there are multimeasure rests at the beginning or end of a line. Hopefully that's a simple fix?
In reply to So this workaround worked… by Andrew S
This is indeed a bug (or perhaps a few), will investigate.
In reply to This is indeed a bug (or… by Leon Vinken
I found another related bug. When exporting to XML, It's not coding the rehearsal marks that come before multimeasure rests. This happens at M. 17, 25, 60, 80, 104, and 110 in these attached files.
In reply to This is indeed a bug (or… by Leon Vinken
And another: and it's also not coding the System Text that should be at M. 17 "GOD REST YE MERRY GENTLEMEN", M. 60 "O COME, O COME EMMANUEL, or M. 110 "WE WISH YOU A MERRY CHRISTMAS".
Seems to all be a part of the same bug.
In reply to This is indeed a bug (or… by Leon Vinken
Submitted issue #267131: [MusicXML export] print new-system missing in multi-measure rests, seems to be 2.1-specific.
In reply to Submitted issue #267131: … by Leon Vinken
Also submitted https://musescore.org/en/node/267176, also 2.1-specific.
In reply to Also submitted https:/… by Leon Vinken
Missing new-system bug found: the new system / new page detection in the MusicXML exporter fails for measures in a multi-measure rest because for a normal measure its parent is the system, but for a measures in a multi-measure rest it is the multi-measure rest.
Should not be too hard to fix.