Music markup languages

Some of the information presented here was obtained from Robin Cover's The XML Cover Pages, XML and Music, which is a universal storehouse for XML project information.


Hypermedia/Time-based Structuring Language

HyTime is an architecture for the description of music structure and hypermedia. The draft document was released on 19 June 1989, and finally proposed as a standard in January 1991. HyTime became a standard on November 1, 1992 as ISO/IEC 10744.

Although HyTime was originally developed for music, its concepts proved to be so powerful that it has been applied to many diverse fields, first by the Association of American Publishers for the representation of electronic documents. Braille devices also make use of this standard.


Standard Music Description Language

SMDL and HyTime originated in July, 1986 on the initiative of Charles F. Goldfarb, one of the fathers of SGML. SMDL was proposed as a standard in January 1991. SMDL is a HyTime application and conforms to ISO 8897, the Standard Generalized Markup Language (SGML).

SDML focuses on application-neutral archival storage of music.

Links to the standard document: ISO/IEC DIS 10743


Notational Interchange File Format

NIFF focuses on the delivery of music notation. An SMDL document can be rendered or delivered as a printout by using NIFF.

Link to an NIFF site:


Music Notation Markup Language

MNML was initiated at the Internet Research and Development Unit (IRDU) of the National University of Singapore, headed by Dr Tan Tin Wee. MNML focuses on Web delivery of music in Western music notation.

MNML seems to have been defunct since about year 2000.

Original link to MNML site:


Lyric Meta Event Definition

The MIDI Manufacturer's Association approved an ASCII-based Lyric Meta Events system.



Leo Montgomery

4ML is an XML-compliant Music and Lyrics Markup Language; development is supported on the SourceForge forum 'fourml', which provides a collection of example applications using the 4ML language.

The design goal is to create "a single, flexible, platform-independant way to describe music and lyrics that can be used by musicians and programmers alike." 4ML is formally specified in an XML DTD.

The developers envision a range of applications that might make use of music encoded in 4ML, for example:

  1. A song could be written on a standard musical staff;
  2. The lyrics to a song, with accompanying simplified guitar chords, could be the output;
  3. The song could be played over a speaker;
  4. A MIDI file could be produced;
  5. A song could be written as guitar tablature;
  6. The lyrics could be shown on the screen, with a kareoke-syle bouncing ball.


Bert Schiettecatte
PDF on web

FlowML is a format for Virtual Orchestras. FlowML is a format for storing audio synthesis diagrams, as used in various software synthesizers. It offers a way to store synthesis instruments as a graph of reusable synthesis blocks (defined in the format specification). It differs from existing languages for audio synthesis like CSound, because it is not a programming language, but a data format. The format is also interesting for hardware synthesizer companies, it would allow prototyping of synthesizers at no cost.


Jeroen van Rotterdam

A simple MusicML Applet which reads a MusicML document parses it with the microsoft xml parser and then parses the document tree to display it on a lightweight component.


Gerd Castan

MusiXML is an experimental implementation of MusiXML -- a music notation format that is based on XML; it works with Oracle's experimental parser implementation in java (version 0.9 alpha); it is a non trivial hands-on application of XML schema. MusiXML could be helpful for others who need examples.


Michael Good

MusicXML is designed to represent musical scores, specifically common western musical notation from the 17th century onwards. It is designed as an interchange format for notation, analysis, retrieval, and performance applications.

MusicXML's design is based on the MuseData and Humdrum formats, two of the most significant pre-XML representation languages for musical scores. Humdrum explicitly represents the two-dimensional nature of musical scores by a 2-D layout notation.

Since XML is a hierarchical format, we cannot do this directly. Instead, there are two top-level formats:

  1. partwise.dtd, containing measures within each part, and
  2. timewise.dtd, containing parts within each measure.

Two XSLT stylesheets are provided to convert between the two formats. The partwise and timewise score DTDs represent a single movement of music. Multiple movements or other musical collections are represented using opus.dtd. The opus document contains XLinks to individual scores, and will evolve to include more detailed reference and musicological information.

This version of MusicXML has been tested with software that

  1. Reads from MuseData, NIFF, and Finale Enigma Transportable Files
  2. Writes to Standard MIDI Files (Format 1), MuseData files, and the Sibelius and Finale applications.

The MuseData coverage is 100% for both reading and writing.

The other formats have more partial coverage." The project web site provides several other resources, including examples and detailed description of the MusicXML markup language.


Gustavo Frederico

The purpose of ChordML is to define a way for people to exchange simple music with simple lyrics and chords.

Differences between MML and other markup languages


SDML focuses on music document archival storage of music, while NIFF focuses on printouts. MNML focuses on the Web delivery of music notation, but considers only very basic music concepts.

On one hand SDML is too complex, and the element names not really human friendly. Consider, for example, element names such as: cantus, gamut, nominal pitch, fictum adjustment, music ficta gamut. There are not many ordinary musically-inclinded people who would know the meanings of these terms. SDML is for music theorists, while MML is intended for the popular markup of music. In this sense the relationship between MML and SDML is the same as that between HTML and SGML.

On a more abstract level, SDML distinguishes between four domains:

MML, on the other hand, takes not these domains as basis, but an abstract distinction between a note and its manipulation. The abstract notion defines a note in terms of frequency and time, which can be further manipulated by the addition of modules.

Such an abstractly defined note can be manipulated in various ways. A human performer can play it with different attacks and nuances. In the music studio it can be manipulated with various effect units. Or it could be translated into MIDI by using the MIDI Module. In MML The basic abstract note will be marked with the note attribute of elements such as bar. Such a basic note can be manipulated and processed in various ways.


MNML is too simplified, and focuses only on the graphic presentation of music on a Web page, and then only a relatively small subset of the possible scope of Common Western Notation.

MML will attempt to present the common midway between these extremes. There is no point in reinventing the wheel, so there will be a common base of concepts. That may not necessarily be due to borrowing, but rather to the fact that all these languages share a common object of description and that there already is a well-established set of technical terms in general use.


The Lyric function of MML will not compete with the SMF Lyric Meta Event Definition approved by the MIDI Manufacturer's Association, but will complement it. It is envisaged that the MML lyric element can be mapped to the SMF Lyric data.

1999, 2000 Author: Jacques Steyn
Last edited: 17 September 1999, 2000