Hi, I’m Daniel Spreadbury, part of the team working on Dorico, Steinberg’s new scoring application. I was contacted recently by a user who wants to import MusicXML files exported from OpenMusic into Dorico, and I agreed to take a look at the files for him. In doing so I discovered that, unfortunately, Dorico is unable to open MusicXML files exported from OpenMusic because they are invalid (in terms of XSD schema validation) and contain a number of significant errors in the encoding strategy. I am reporting these issues here in the hopes that the OpenMusic developers will be able to address them at some point.
I’m sure this is not an exhaustive list of the problems with OpenMusic’s MusicXML export: I would strongly recommend adding support for XSD schema validation, or at least DTD validation, so that you can be sure that your exported MusicXML files are at least valid in terms of the schema/DTD. This is by no means a sufficient step to ensure that the MusicXML files actually make good syntactic sense, but it’s an important first step.
1. Invalid values
The value is expressed in the MusicXML file as a fraction, i.e. 1/4. This isn’t allowed: you can specify a non-integral value, but only as a decimal value rather than as a rational number, so 0.25 would be valid, while 1/4 is not. However, if possible, divisions, and duration (which are effectively multiples of divisions), should be an integral value, so instead of using a divisions value of 1/4 such that a whole note is 1, use a divisions value of 1 such that a whole note is 4.
2. Invalid values
This particular file includes:
sharp-three
in lots of places. The element uses an enumeration of valid values, and the correct value is sharp-3, not sharp-three (i.e. the digit, not the word). The OpenMusic developers should ensure they are encoding only the accidental types that are specified in the enumeration:
http://usermanuals.musicxml.com/MusicXML/MusicXML.htm#ST-MusicXML-accidental-value.htm
3. Invalid values
The element in the element must be upper case, i.e. it must be:
rather than g as it is in these files.
4. Redundant values
Also, it’s not really a bug in quite the same way, but it’s redundant to include identical elements at the start of every bar: you only need to include the element when it changes, so it’s normally sufficient to specify it once in the first bar of each part. It’s very noisy to include these in every bar, and I would suggest that you recommend they omit them if they’re not strictly necessary.