Music Notation Community Group
Skip to toolbar

Community & Business Groups

Music Notation Community Group

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/smufl
Group'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.

Final reports / licensing info

Date Name Commitments
MusicXML 4.0 Licensing commitments
SMuFL 1.4 Licensing commitments
SMuFL 1.3 Licensing commitments
MusicXML Version 3.1 Licensing commitments

Chairs, when logged in, may publish draft and final reports. Please see report requirements.

Co-chair meeting minutes: October 24, 2024

MNX

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.

Co-chair meeting minutes: October 10, 2024

MNX

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.

Co-chair meeting minutes: September 26, 2024

MNX

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.

Co-chair meeting minutes: September 12, 2024

MNX

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:

  • #258: encode the curvature direction of ties
  • #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.

Co-chair meeting minutes: August 29, 2024

MNX

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.

Co-chair meeting minutes: August 15, 2024

MNX

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.

Co-chair meeting minutes: August 1, 2024

MNX

Since there has been no further community discussion since our last meeting, we have decided to merge pull request #347, concerning accidental display. Adrian still has the changes required for the octave-shift object (#344) and updating the MNX converter with the most recent specification changes on his to-do list.

MusicXML

We spent a little while discussing issue #529 concerning harmonics. We think that this is a good request, and we will look at this issue in the context of MusicXML 4.1. To ensure backwards compatibility, we will make the number attribute optional for the harmonic element.

SMuFL

We discussed fonts for text-based applications. Daniel is planning as part of the SMuFL 1.5 update to deprecate the existing guidelines for SMuFL fonts for text-based applications in favour of a set of guidelines that prioritises making it possible to type ranges of musical symbols in blocks of regular text at a consistent size, without needing to fiddle with ligatures in order to shift the symbols up or down.

Myke proposed that Daniel should start a draft version of this recommendation, and we discussed a programmatic approach where we could define a data file that specifies ranges of glyphs and the transform and scale operations required to map between the registration and size used in fonts for notation applications and those needed for text-based applications, so that we can have a simple workflow for repeatably converting between the two. Daniel agreed to look into this when time allows.

Next meeting

The next co-chairs’ meeting will be in two weeks on 15 August 2024.

Co-chair meeting minutes: July 19, 2024

MNX

In our last meeting we discussed moving the staff number up from the clef object into the positioned clef object, and Adrian has made that change (git commit). Only a single example document (for grand staff instruments) was affected by this change, and Adrian has updated that too.

We asked for feedback on pull request #347 and we spent a while discussing the responses received on the pull request. We as co-chairs are unanimous that we need the support mechanism not only for accidental display, but also no doubt for other things in future (for example, beaming), and we believe that raising the burden on producers of MNX to have implementations of these algorithms will damage the broader utility of the specification, particularly for applications not solely focused on displaying music notation. Nevertheless, we welcome further feedback from the community before we proceed with this change.

We received an automated security advisory from GitHub’s “dependabot” concerning a known vulnerability in Django, which is used by our doc generator system, and Adrian has merged the resulting pull request.

Myke raised the issue that we still have a single object type with a hyphen, octave-shift, which represents an octave line, which means we cannot yet close issue #344. In deciding how to address this, we decided that we would rename the object ottava (to allow us to use the idea of “octave shift” more generically, for example for the amount of transposition suggested by a clef). We also decided that we would change the value for the amount of shift to be an integer representing the number of octaves. Adrian will make these changes soon, so that we can close off this issue.

Next meeting

The next co-chairs’ meeting will be on Thursday 1 August 2024.

Co-chair meeting minutes: July 4, 2024

MNX

Adrian has added an example MNX document for grand staff instruments, illustrating three key aspects: the part object has a staves object to specify the number of staves, each sequence needs to specify which staff it belongs to, and each clef likewise needs to specify its staff. No specification changes were required to accommodate this example. We discussed briefly whether it makes sense to move the staff from inside clef up to the positionedClef object, where the rhythmic position lives, and agreed that we should.

Adrian has also created a pull request for the support element, which in the first instance is intended to specify whether the document encodes the visibility of accidentals (pull request #347). The field useAccidentalDisplay defaults to false, i.e. by default it is assumed that the consuming application is expected to use its own algorithmic approach to determining where accidentals should appear. If the document does not have useAccidentalDisplay set to true, but then nevertheless specifies accidentalDisplay for one or more notes, we have specified that will be invalid MNX; we are not yet sure whether we can make the JSON schema complain about this issue, but we will look into it. We welcome community feedback on this pull request before we merge it.

MusicXML

Adrian has made the corresponding change to the doc generator for MusicXML to encode long strings as arrays to improve the readability of the diffs (pull request #526).

Next meeting

The next co-chairs’ meeting is scheduled for Friday 19 July 2024.

Co-chair meeting minutes: June 21, 2024

MNX

Adrian has documented that staves are numbered using a 1-based system (git commit).

Adrian has made a change to the specification to remove the micro-syntax for measure location, which was used in six different places in the spec. He has introduced a new object measure rhythmic position that defines the rhythmic position within a particular bar. The git commit message specifies the various places where these changes have been made. The specification and examples have also been updated accordingly.

Adrian is next going to work on a pull request for the supports object for accidental visibility (see minutes of previous meeting), and will follow up with examples that show how things are encoded with reference to a specific staff (discussion #343).

We talked for a while about rich text encoding (with reference to issue #280) and discussed how this might look now that we’ve moved to JSON. Daniel agreed to write up an issue capturing some of the discussion as a starting point for further feedback.

Next meeting

The next co-chairs’ meeting is scheduled for Thursday 4 July 2024.