MusicXML leadsheet import

• Nov 15, 2020 - 02:01

I'm working on a workflow to import jazz leadsheets into MuseScore, using iReal Pro as a source. The idea is to convert iReal Pro songs into MusicXML files, which can then be opened by a number of apps, including MuseScore. In MuseScore, one would add the song's main melody, and get a decent playback of the songs in a completely open environment (since the iReal Pro leadsheets are publicly available).

I'm running into a number of issues which I will list here, and I'd be happy to get feedback and to open actual bug reports / feature requests.

  1. No chord (N.C.)
    In MusicXML, a harmony/kind value of none determines that no chord should be played. When MuseScore finds a none chord in MusicXML, it still converts it to a playable chord (noting that the root-step needs to be specified, as per the MusicXML specification). Interestingly, when the sheet is edited in MuseScore to explicitly write a chord as "N.C.", then exported to MusicXML, the N.C. chord is correctly exported as none. This seems to indicate an asymmetry between MusicXML import and export.

  2. Unplayed slash notes
    Typically, chords are notated on the staff using slash noteheads whose function is to indicate the chord's duration (but these dummy notes are not meant to be played). In MuseScore, it is possible to specify that a note should not be played, but how to indicate this in MusicXML in a way that MuseScore can understand? note/unpitched seems to convey this meaning. In this case too, MuseScore ignores unpitched notes and imports them as pitched instead. Also, MuseScore does not export the "do not play" directive to MusicXML.

Attached is a zip file to illustrate the issues here:
- Moanin' (manual editing).musicxml contains a desired syntax that would be understood by MuseScore to create a playable leadsheet.
- Moanin'.mscz contains the desired result of importing the MusicXML above
- Moanin' (MuseScore).musicxml contains the result of exporting the MuseScore sheet above (in 3.5.2)


Attachment Size
Moanin'.zip 20.56 KB


Hello! I'd like to see this working too, so let's see what we can figure out.

Regarding the N.C. import, I think the "root-step" tag is the problem. I'm not sure how MusicXML really expects this to be handled. See this discussion I started some years ago -

Regarding the slashes, I think MusicXML has a concept of this, but it doesn't map well to how MuseScore implements it. MusicXML treats it as a measure style (because it comes from Finale), MuseScore implements these are ordinary notes. So I'm not sure what the answer is here.

In reply to by Marc Sabatella

Thanks for your reply!

Regarding N.C. import, the MusicXML designer seems to be saying at that they want to address the root-step issue in version 4.0, but that the harmony/kind = "none" is an unambiguous signal to signify "no chord". I believe this could be taken care of during MusicXML import and I'd be happy to take a look at fixing that myself.

Regarding the slashes, what is the MusicXML measure style that you refer to? Maybe the import routine can detect that and convert to "no play". Also, I'm not sure what is expected to happen when MuseScore import sees a note/unpitched note in a regular measure - maybe I can dig deeper in this direction. A possible workaround would be to generate a rest instead of an unpitched note, but readability would suffer.

In reply to by infojunkie

I would be inclined to agree that kind=none could be taken to mean, don't assign an actual chord semantic to it, but it seems wrong to not show the root at all when the file clearly specifies one. I would suspect there are any number of MusicXML files out there that rely on this for whatever reason and we'd get complaints about chord symbols no longer showing correctly. It's an unfortunate situation Maybe it's worth the risk, but I think we'd need more data.

The measure style I mean for slash notation is documented in

In reply to by Marc Sabatella

Thanks for the slash reference. I've included a new version of a hand-coded MusicXML file that does the following:

  • adds a measure-style/slash in the first measure
  • represents the notes as rests
  • represents the N.C. chords as per the recommended method

Importing this into today's MuseScore 3.5.x exhibits the expected issues:

  • N.C. is not imported properly
  • The rests show as rests, not as slashes

My question is: does this MusicXML file represent a leadsheet that MuseScore would be expected to render "correctly" (i.e. as a leadsheet with slashed notes that are not played) ? Or should the notes be expressed differently?

Attachment Size
Moanin' (manual editing).zip 1.5 KB

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