MusicXML leadsheet import
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.
-
No chord (N.C.)
In MusicXML, aharmony/kind
value ofnone
determines that no chord should be played. When MuseScore finds anone
chord in MusicXML, it still converts it to a playable chord (noting that theroot-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 asnone
. This seems to indicate an asymmetry between MusicXML import and export. -
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 ignoresunpitched
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)
Thanks,
Karim
Attachment | Size |
---|---|
Moanin'.zip | 20.56 KB |
Comments
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 - https://forums.makemusic.com/viewtopic.php?f=12&t=2476
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 Hello! I'd like to see this… by Marc Sabatella
Thanks for your reply!
Regarding N.C. import, the MusicXML designer seems to be saying at https://forums.makemusic.com/viewtopic.php?f=12&t=2476#p9099 that they want to address the
root-step
issue in version 4.0, but that theharmony/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 Thanks for you reply!… 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 https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-slash.htm
In reply to I would be inclined to agree… by Marc Sabatella
Thanks for the
slash
reference. I've included a new version of a hand-coded MusicXML file that does the following:measure-style/slash
in the first measureImporting this into today's MuseScore 3.5.x exhibits the expected issues:
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?
In reply to Thanks for the slash… by infojunkie
Since MuseScore has a function to "Toggle Rhythmic Slash Notation", would it make sense to process the
measure-style/slash
directive using that function, at import time?In reply to Thanks for the slash… by infojunkie
Added #313946: MusicXML import should honor "measure-style/slash" to discuss rhythmic slash notation.
I've submitted an issue regarding
harmony/root-step
at the W3C MusicXML repo. Anyone else who is interested, please comment there.In reply to I've submitted an issue… by infojunkie
Looking at our import code, check this out:
https://github.com/musescore/MuseScore/blob/master/mu4/importexport/int…
Seems like the code to do this is already there, just waiting to be enabled and tested...
In reply to Looking at our import code,… by Marc Sabatella
That's great! Happy to attempt a PR.
In reply to That's great! Happy to… by infojunkie
(and for 3.x, too)
See #313105: MusicXML import should honor "no chord" (N.C.) convention ;-)
In reply to See #313105: MusicXML import… by Jojo-Schmitz
PR: https://github.com/musescore/MuseScore/pull/6888
Releated to this, I've released a working version of my iReal Pro to MusicXML converter. Here's a demo and a blog post if anyone's interested.