Overview proposal for adding SMuFL features to MusicXML 3.1

One of the main goals for MusicXML 3.1 is to add better support for SMuFL (Standard Music Font Layout) version 1.2. I've recently sent out emails about our first pull request for this, regarding accidentals in issue 109. 

Joe Berkovitz thought it would be helpful if I shared an overview proposal for implementing these new SMuFL features. This would provide more context for this pull request.

There are at least three ways we could add better SMuFL support to MusicXML 3.1. Each of these is currently proposed in one of our "In Progress" issues on GitHub.

1) Add more enumeration values to a type. An example of this is issue 83 for completing support of SMuFL's Gould arrow quartertone accidentals (24-EDO) range. We could add 6 new values to the enumeration in the accidental-value simple type. Here is one example of the resulting MusicXML:

<note>
  <pitch>
    <step>C</step>
    <alter>1.5</alter>
    <octave>4</octave>
  </pitch>
  <duration>2</duration>
  <type>quarter</type>
  <voice>1</voice>
  <accidental>double-sharp-up</accidental>
</note>

2) Sometimes SMuFL contains many more choices than MusicXML offers in an enumeration, and adding all the values to the enumeration could add undesired complexity. In this case, we can add a new smufl attribute to the relevant element whose value is a SMuFL canonical glyph name. Issue 109 is an example of this approach.

For example, instead of adding all the Wyschnegradsky accidentals as enumeration values, they could be specified with a SMuFL attribute. This could be done in combination with an existing accidental enumeration value for the element content, or with a new "other" value in the element content.

Here are two examples:

<note>
  <pitch>
    <step>C</step>
    <alter>0.8333</alter>
    <octave>4</octave>
  </pitch>
  <duration>2</duration>
  <type>quarter</type>
  <voice>1</voice>
  <accidental smufl="accidentalWyschnegradsky5TwelfthsSharp">other</accidental>
</note>

<note>
  <pitch>
    <step>C</step>
    <alter>0.5</alter>
    <octave>4</octave>
  </pitch>
  <duration>2</duration>
  <type>quarter</type>
  <voice>1</voice>
  <accidental smufl="accidentalWyschnegradsky3TwelfthsSharp">quarter-sharp</accidental>
</note>

This reflects that MusicXML directly represents quarter-tone accidentals in the accidental value, but not twelfth-tone accidentals.

This approach could be particularly helpful in MusicXML's extension elements such as other-direction, other-notation, and other-ornament. This is covered in issue 107.

3) Add new elements.  Issue 11 for staff division symbols is an example. MusicXML 3.0 does not represent them. Adding these symbols from SMuFL's staff brackets and dividers range could be done by adding a new staff-divide element within a direction-type. Here is an example of the resulting MusicXML:

<direction>
  <direction-type>
    <staff-divide type="up-down"/>
  </direction-type>
</direction>

As we go through the different SMuFL-related issues, we can discuss which methods seem most appropriate for each particular feature.

I hope this overview is helpful in terms of the current proposal for how we can greatly increase coverage for SMuFL 1.2 symbols in MusicXML 3.1. As always, comments and suggestions are most welcome!

Best regards,

Michael Good
VP of MusicXML Technologies
MakeMusic, Inc.

Received on Friday, 29 July 2016 18:58:26 UTC