importing XML created with Noteflight

• Dec 8, 2009 - 04:25

I created a score in the online notation app Noteflight
then exported it as a MusicXML file
I imported it into MuseScore in order to work on it further
there are mistakes in where bar lines were placed
as well as incorrect ties and rests hidden underneath notes
I've attached the .xml file here as an example

MuseScore 1.9.5; revision: expo
Ubuntu 9.04
Linux 2.6.28-13-generic
Qt Open Source Edition version 4.5.0

Attachment Size
trombone_piece2.xml 24.75 KB


In reply to by Thomas

I looked into it. I see 2 problems.

  1. MusicXML timing relies on the definition of "division" which is the lenght of a quarter.
    The division needs to be chosen in a way that you can represent every note value in the score as an integer included tuplets.
    So if you have a tuplet with an half and quarter. If division is 64, an half is 128 and a quarter in the tuplet is 128/3. That's not an integer...
    From MusicXML schema definition
    Duration and divisions are used directly for generating sound output, so they must be chosen to take tuplets into account.
  2. A problem with tie/slur. For the moment, NoteFlight does not support slurs. So everything is notated as tie and exported as tie in MusicXML. MuseScore is quite strict on this matter and makes a distinction between slur and tie. A tie needs to be between two notes of the same pitch.
    Apparently Sibelius is less restrictive on this matter and somehow change a tie into a slur if the next note is not on the same pitch. MuseScore musicXML import could be changed to implement the same behavior.

In reply to by Nicolas

thanks for looking into this but I'm not sure I follow your explanation --

1) are you saying that there was no division defined in the file I attached?
and if so then what defines this 'division'?
is it the definition of [quarter note=xxxx] in the tempo marking?

edit: I see the division tag in the xml file is set to <64>
but how does one adjust this division and why isn't it corrected when tuplets are used in a piece?

2) the piece I attached should not have contained any slurs - but I did see one which was a mistake in the fifth measure
would the lack of a defined 'division' plus the inclusion of a 'slur' have caused this mangling of bar lines?

thanks again for your reply

In reply to by anechoicmedia_

The mangling is due to the first problem only.
Division is defined at the beginning of the MusicXML file, in the first measure attributes tag. It's not related to the tempo mark at all. The division needs to be define as the least common multiple of all note values included tuplets by the exporter.
For me, it looks like a problem in Noteflight MusicXML export.
Even if something can be done by MuseScore to fix Noteflight bad export when importing, I'm not sure it's the best way to go to impose best practise on a open format.

Find attached a working MusicXML.

Attachment Size
trombone_ms.xml 26.66 KB

In reply to by Nicolas

When opening the xml file in Sibelius 5.1, the score does not seem to have the 'problems' MuseScore has. So, you could call the importer of Sibelius less restrictive and more pragmatic. What's more, Sibelius' MusicXML export with Dolet returns an xml which does not have the 'problems' anymore from the imported file. If you open that exported file in Sibelius, the score does not contain the 'problems' anymore.

MuseScore could follow the same pragmatic path as Sibelius, but as lasconic pointed out, perhaps MuseScore can be the software package in the market which actually challenges other music notation developers to export good MusicXML files. The MuseScore source code is open and thus the way it writes the MusicXML can be a good lead for others.

My conclusion would be to bring this issue to the attention of the NoteFlight developers and see how they respond to it.

In reply to by Thomas

I see this issue as similar to checking HTML code on different browsers
and the use of html validation services to see if the code complies with the standard

I don't have access to Sibelius or Finale but could Lilypond be used as a validation method on Linux?

i.e. if Lilypond deals with the code 'properly' then it's clean musicXML code?

In reply to by anechoicmedia_

Unfortunatly, Lilypond does not have MusicXML export. Btw, the mangling problem is with score containing tuplets.

MusicXML "validation" can be more complicated than just normal xml validation with a schema.
For example if division is 6, and you have a quarter, his "duration" tag should be 4. If you have a eight, the duration tag should be 3, a eight in a tuplet, 2 etc ... So it's a matter of validate the links between the content of the tags, a kind of semantic validation.

In reply to by anechoicmedia_

a: I didn't do it by hand bu with sibelius export, import in musescore, export to MusicXML from MuseScore.
What happens is that division has been changed to sensible value and all "duration" element has been changed accordingly. (I also removed the tie/slur we discuss previously)

In reply to by anechoicmedia_

From a Noteflight developer, thanks for the in-depth discussion on this. I agree with lasconic and thomas_ on the difficulty of truly validating MusicXML documents and we hope to rise to the "challenge" put forth here. We are continually looking to improve our score interchange and we're working on improvements that will produce better results with MuseScore.

Specifically on divisions, this is indeed a Noteflight issue and we've made some improvements that will be reflected in a future release. The attached file was generated by Noteflight and imports successfully into MuseScore.

There still seems to be a remaining issue with one of the ties, and we will spend some more time in the future testing Noteflight-generated MusicXML documents with MuseScore.

Attachment Size
trombone_piece_nf.xml 23.71 KB

Do you still have an unanswered question? Please log in first to post your question.