Official tools

MEI Schema

This MEI repository contains all the source code of the core MEI Schema.

Sample encodings

The MEI Sample Encodings repository contain a wide range of MEI-encoded music files. The intent is to demonstrate the use of MEI in real-world contexts.

Encoding tools

The MEI Encoding Tools repository contains a number of tools for working with MEI-encoded files.

Customization service

The MEI schema can be customized for various needs. A customization can be used to disable existing features of MEI in order to obtain a schema validating only a subset of the original schema, for example, a customization for validating MEI documents containing only common Western music notation (CWMN). This customization will disable all the functionality contained in MEI for representing other types of notation (tablature, mensural, or neume).

On the other hand, a customization can also be useful for extending the schema in order to include features not already available in MEI. This can be desirable when doing developments or experiments with the schema but in can also be used in “production” for projects that have very specific needs for features that are not expected to be included in “out-of-the-box” MEI.

We provide an online customization service that makes it easy to generate a schema (or other output formats) from an MEI source file and a customization file. The source code for the customization service itself is available on GitHub


Community tools

The MEI community provides a wide range of tools for working with MEI data. They can serve a whole range of purposes, from data creation or conversion to rendering or analysis. Some of them are full software applications, but many of them are libraries, modules or stylesheets to be integrated into larger software environments. All the tools listed here are open-source and freely available.

MerMEId

The Metadata Editor and Repository for MEI Data (MerMEId) under development at the Danish Centre for Music Publication (DCM) aims at providing tools for editing comprehensive metadata in MEI files. It is conceived for the compilation of catalogs and thematic indexes of works, but may also complement other music editing software in adding metadata to existing MEI files or serve as a database for editors of critical editions. Apart from basic metadata, such as titles and persons involved, the MerMEId editor records information such as detailed source descriptions, lists of performances and reviews, bibliography, notes on composition history as well as structural information including movements, instrumentation, incipits, key, tempo and meter.

The MerMEId software is installed on a web server and is operated client-side using a standard web browser capable of handling XHTML and Javascript. Several indexes of works are under preparation at DCM using MerMEId, among them a thematic-bibliographic index of Carl Nielsen’s works (CNW).

SibMEI

SibMEI is an open source plug-in that makes it easy to export MEI from the Sibelius notation editor.  In addition to facilitating the creation of MEI-formatted data without the burden of writing XML by hand, it also makes it possible to convert MusicXML files to MEI. The plug-in can be downloaded from https://github.com/music-encoding/sibmei/releases.

General installation instructions for Sibelius plug-ins can be found at http://www.sibelius.com/download/plugins/index.html?help=install. Once installed, an “Export to MEI” option will appear in the plug-in list in Sibelius.

LibMEI

LibMEI was created by Andrew Hankinson and Alastair Porter and seeks to define a common software library for interacting with files encoded in MEI. This is targeted at software developers who wish to integrate support for MEI into their software.

LibMEI is a C++ library for reading and writing MEI files. It can be integrated in C++ software applications but it can also be used in a wide range of environment through bindings. It ships with a Python bindings using the Boost-Python framework. The source code and the documentation are available on GitHub It is developed by the Distributed Digital Music Archives and Libraries Lab at the Schulich School of Music at McGill University, Montréal, Canada and is available under the MIT License.

MEI to Music21 Converter

With the release of version 2.0, the music21 Python toolkit for musicology is now capable of importing MEI files. This release focuses on the features required for CMN scores, though it is hoped future versions will address more of MEI. To learn whether your favorite elements and attributes are supported, consult the music21.mei module documentation.

The module was primarily written by Christopher Antila with assistance from Andrew Hankinson, Ichiro Fujinaga, Myke Cuthbert, and the MEI-L mailing list. Funding for this project was provided by Canada’s SSHRC as part of the SIMSSA project.

You may send questions, comments, bug reports, and feature requests to Christopher Antila christopher@antila.ca, Andrew Hankinson andrew.hankinson@mail.mcgill.ca, MEI-L mei-l@lists.uni-paderborn.de, or the music21 list https://groups.google.com/forum/#!forum/music21list.

Rendering MEI

MEILER

The MEI LilyPond Engraving Refinement (MEILER) is a set of XSLT stylesheets to render MEI files with help of the LilyPond Engine. This allows to make heavy use of the layout attributes and parameters MEI brings with it.

Possible LilyPond output formats are PDF, PNG and SVG. It’s available on GitHub. You may have a look at some test files here and here, to get an impression of it’s capabilites. Also there’s a poster available.

meiView

meiView is an experimental web application designed to display 15–16th century music and provide a dynamic mechanism for the user to select which variant they want to see.

Verovio

Verovio is a fast, portable and lightweight library for engraving Music Encoding Initiative (MEI) music scores into SVG developed by the Swiss RISM Office. It is designed as a tool usable as a one-step conversion tool and it is written in pure standard C++ with no dependencies on third-party frameworks and libraries. Verovio implements its own rendering engine, which can render SVG with all the musical symbols embedded in it and without dependency on external fonts. In addition to MEI, Verovio can also render Plain and Easy (PAE) code and DARMS code.

A significant strength of Verovio is that it implements MEI’s structure internally, making it the best-suited solution for rendering features that make MEI unique. The hierarchy of the MEI is preserved in the SVG output. This feature makes it extremely easy to build interactive applications since both the structure and the unique identifiers are available in the output music notation.

Since the rendering engine is defined as an abstract component, Verovio is highly modular and can be used in different contexts, such as a JavaScript or Python toolkit. Verovio follows the Standard Music Font Layout (SMuFL) specification and the font can be changed for personalizing the output. It is open-source and is available on GitHub.