The Music Notation Community Group develops and maintains format and language specifications for notated music used by web, desktop, and mobile applications. The group aims to serve a broad range of users engaging in music-related activities involving notation, and will document these use cases.
The Community Group documents, maintains and updates the MusicXML and SMuFL (Standard Music Font Layout) specifications. The goals are to evolve the specifications to handle a broader set of use cases and technologies, including use of music notation on the web, while maximizing the existing investment in implementations of the existing MusicXML and SMuFL specifications.
The group is developing a new specification to embody this broader set of use cases and technologies, under the working title of MNX. The group is proposing the development of an additional new specification to provide a standard, machine-readable source of musical instrument data.
w3c/smuflGroup's public email, repo and wiki activity over time
Note: Community Groups are proposed and run by the community. Although W3C hosts these
conversations, the groups do not necessarily represent the views of the W3C Membership or staff.
Robert Patterson reported that two of the MNX documents in our set of examples didn’t pass JSON Schema validation, so Adrian has fixed those, such that all example documents now validate.
Robert also raised two issues concerning system layout (issue #367) and the placement of system objects (issue #368) which need further thought. We agreed that we would digest these issues and respond directly in GitHub.
In Issue #363 Adrian Kulisch suggests that we should explicitly use the language codes defined in RFC 5646, which updates the earlier ISO 639 standard. We agreed that this would be a good change for MNX and indeed for MusicXML 4.1.
We also discussed issue #366 concerning the accidental display object, as raised by Robert. We propose that to address the concerns here we will add an optional force bool to the accidental display object, which will allow the encoder to specify whether the accidental is explicitly shown or explicitly hidden. We will wait for community feedback before we add this to the specification.
Work continues on the list of notation types that we are creating in order to identify the areas of MNX where the specification is ready for implementation. Adrian has created a prototype single-page web app that as discussed in our previous meeting, and we agreed that he should continue working on this in the coming weeks. We will share it with the community once it is a little further along.
Next meeting
The next co-chairs’ meeting will be on Thursday 13 February 2025.
The co-chairs wish everybody in the Community Group a happy New Year!
MNX
Over the past couple of meetings we have been discussing how to encourage some initial implementations of the parts of MNX that we consider stable and unlikely to change significantly as we continue to flesh out the remaining parts of the specification.
With this in mind, we are working on a reasonably detailed list of the types of notation that MNX will likely ultimately support. This will allow us both to produce a roadmap towards our eventual 1.0 release, but also to identify the parts of the specification that are stable enough to implement now.
We plan to open the list for community contributions in due course, but we believe we have made a solid start. The next step will be for Adrian to turn the list into a simple, single-page web app that will allow us to slice and dice the list by category and item.
Next meeting
The next co-chairs meeting is scheduled for Thursday 16 January 2025.
Adrian has merged the pull request for lyric line global metadata (#359).
We spent some more time discussing the issue of how to map out the remaining areas of the specification that still need to be written, and which parts of the specification we can consider safe for implementation in their current state. We will have more to share in the New Year.
MusicXML
There are two interesting areas of discussion that Myke wants to bring to the attention of the community:
Firstly, issue #565 discusses how support for MIDI 2.0 could be added to a future version of MusicXML in a backwards-compatible way.
Secondly, a report of inconsistencies in one of the sample documents hosted on musicxml.com, which are still the property of MakeMusic rather than of the CG, has broadened into a discussion about what kinds of sample documents we might want to develop in future. Please visit issue #568 to read more.
We welcome feedback from the community about these issues.
Next meeting
The next co-chairs’ meeting is scheduled for Thursday 2 January 2025.
Adrian has fixed the issues raised by Paul Overell in issue #358. One of the fixes involved changing the JSON schema to handle the identifier to be used for the lines property of the lyrics object. Adrian took the opportunity to make it possible to run JSON schema validation against all of the MNX example documents as well, as described here.
Adrian has also created pull request #359 to handle metadata for lyrics in the global object. It provides a dictionary using the lyric line identifiers as the key, a label used for reference, and the language that the lyrics are in. In future, this can be expanded to include additional information like style information. We welcome community feedback on this pull request.
We discussed some of the remaining work for lyrics, including how to encode which lines of lyrics are active in different regions of the score, and talked about the idea of “zones” as a data type to describe regions of bars, which could also become useful for encoding other types of data.
We also continued to discuss how to bring the MNX specification to a stable version 1.0, and to survey the parts of the specification that have already been completed with a view to how confident we feel that implementers would not be at risk of having to significantly rework things that they implement. We like the idea of producing a comprehensive list of notations encoded by MNX, in order both to map out comprehensively those areas yet to be specified, and also so that in the future applications can clearly document which aspects of the specification they import, export, preserve, etc.
The co-chairs will begin work on building this comprehensive list, and then open it up to the community for contribution.
Next meeting
The next co-chairs’ meeting is scheduled for Thursday 5 December 2024.
Pull request #355, which adds basic support for lyrics, has been merged, closing issue #354. As discussed in the previous co-chair meeting, the type of lyric is encoded with an enumeration, and the “lyric line” object has been renamed to “event lyric line” to make its purpose clearer.
Next, we’re going to tackle the top-level structure for the document that defines the lines of lyrics that are used in the document (which will probably be called “lyric line”, now that we have freed up this term). This needs to include metadata like a unique ID, order, language, placement, and possibly other things, though probably not style/presentation data.
Vale: Don Byrd
The co-chairs are sad to learn of the passing of Donald “Don” Byrd, who died aged 78 this past Tuesday, 22 October after a short illness. Don has played an important part in the development of music notation software, standards, and representations. His early music printing program SMUT was used to produce the music examples for Douglas Hofstadter’s 1979 book Gödel, Escher, Bach: An Eternal Golden Braid, and in the 1980s, he developed Nightingale for the Apple Macintosh. He was involved in the development of the NIFF format in the 1990s, and has done invaluable work in the field of Optical Music Recognition.
Next meeting
The next co-chair meeting is scheduled for Tuesday 5 November 2024.
Adrian has updated pull request #355, which is the proposal for how lyrics should be encoded. The change to use a dedicated user-defined key for the lyrics object was more involved, because it required changes to the doc generator tool as well in order to generate the specification and the JSON schema.
Having decided in the last co-chairs’ meeting that we would rename the originally proposed continue object to hyphen, after discussing the issue of Korean text raised by Samuel Bradshaw, we have decided to switch to an enumeration called type with values whole, start, middle, and end, defaulting to whole.
We also discussed renaming lyricLine, which is currently used to identify the individual row of lyrics belonging to an event: we want to use lyricLine to identify the whole line of lyrics, and propose that the existing lyricLine should be renamed eventLyricLine, making clear that it belongs to the lyrics local to that event.
We spent a bit of time discussing some of the notations that are often represented using lyrics in existing music notation software (for example, percussion sticking, harmonic analysis, figured bass, or even chant notation) and how these should be encoded in MNX. We had the idea of creating a kind of “kitchen sink” for rows of note-attached text to accommodate these kinds of use cases in the (short- to medium-term) absence of dedicated MNX encodings for these features. We would be interested to hear from the community about this issue, so Adrian will create a discussion on GitHub for feedback.
After we have completed this initial step of encoding lyrics, we’ll move on to lyric metadata, for example, whether a line of lyrics represents verse, chorus, translation, etc. Adrian will prepare a proposal for this after this pull request has been merged.
Next meeting
The next co-chairs’ meeting will be on Thursday 24 October 2024.
Adrian has created an initial pull request (#355) to propose the beginnings of an encoding for lyrics (issue #354).
We spent the bulk of the meeting discussing some aspects of the existing approach, resulting in the decision to change the name of the continues object to hyphen to make it clearer, and agreeing that rather than handling gaps in lines of lyrics using a kind of “sparse array” approach (where a line of lyrics that should not include a lyric for a particular note would need an empty object in an array) we would use an object where lyrics are identified by a string-based key, with the lyric text stored as the value for that key at each position. Adrian will update the pull request to reflect these changes.
We also discussed how extender lines for melismas might be encoded, but did not settle on a specific approach in the course of our discussions.
We welcome further community feedback on the proposal as it stands in the pull request, and expect to merge this pull request ahead of the next co-chairs’ meeting in two weeks.
Next meeting
The next co-chairs’ meeting is scheduled for Thursday 10 October 2024.
Adrian has spent some time reviewing the open issues in the MNX project. He has closed 35 issues, the majority of which required no action as they were older issues that are no longer relevant, but there were a couple of issues that necessitated a small change:
#172: use “double” and “final” instead of “light-light” and “light-heavy” to describe particular barlines
These changes need to be worked through into the MNX converter, which is on Adrian’s to-do list.
Adrian also created a new proposal for how to encode lyrics (#354). There has already been some good discussion on this new issue, and we welcome further discussion from the community. We spent the balance of the meeting discussing the encoding of lyrics, and will in due course add some further thoughts to Adrian’s existing proposal reflecting the discussion.
Doc generator
The doc generator has been moved to its own repository, and Myke and Adrian are now
Next meeting
The next co-chairs’ meeting is in two weeks on Thursday 26 September 2024.
We have decided to migrate the doc generator tool from the MNX GitHub repository to its own repository, which the good people at W3C have created for us. The new repository is found at https://github.com/w3c-cg/mnxdocgenerator, but at the time of the meeting is empty. Adrian is planning to migrate the current version of the doc generator into the new repository, and then register the new location with PyPI so that the doc generator can be installed using the Python package panel pip. Myke will take care of updating the docs on the MusicXML side.
As a next step, Adrian is going to review the open issues in the MNX repository to take stock of where we are, and to identify the next notations whose encoding should be relatively uncontroversial, so that we can fill in more areas of the specification, build examples, update the MNX converter, and the viewer.
Next meeting
The next scheduled meeting will be on Thursday 12 September 2024.
Adrian has renamed the octave-shift object as ottava; in addition to renaming the object, the value describing the number of octaves shifted has now been specified, and the example MNX document has been updated accordingly. This was the last of the object names that needed to be renamed to eliminate kebab case, and as such Adrian has closed issue #344.
The MNX converter has also been updated to handle the updated ottava object.
Adrian has also made some changes to the doc generator tool: issue #351 was raised by Myke and involved renaming some items. In the unlikely event that any community members have a local checkout of the doc generator tool, please note that you will need to regenerate your local database as a result of these changes. The aim of these changes is to make the tool easier to understand for newcomers; there is now only one directory called docgenerator and the directory formerly known as spec is now more aptly named spectools. Myke has also raised issues #349 and #350, which involve some practical issues to improve the experience of working with these tools, and Adrian has been thinking about changes in this area, but further discussion is needed.
We also discussed the possibility of moving the doc generator tool into its own repository to make it easier to work with for the MusicXML specification. Adrian is going to contact the team at W3C to ask them if they can help us set up a new repository for this purpose.
MusicXML
Myke has begun the process of creating a new version of the MusicXML specification for version 4.1, and has moved to the draft CLA for the new version. This work has spurred some of the discussion concerning the doc generator tool, and Adrian’s work will help Myke in the development of the spec.
Myke will continue to develop the workflow for beginning to specify the changes for version 4.1.
Next meeting
The next co-chairs’ meeting is scheduled for Thursday 29 August 2024.