All Projects → music-encoding → Music Encoding

music-encoding / Music Encoding

Licence: other
美 The Music Encoding Initiative schema and guidelines development repository

Projects that are alternatives of or similar to Music Encoding

Graphquery
GraphQuery is a query language and execution engine tied to any backend service.
Stars: ✭ 112 (-13.18%)
Mutual labels:  xml
Binding.scala
Reactive data-binding for Scala
Stars: ✭ 1,539 (+1093.02%)
Mutual labels:  xml
Sepa king
Ruby gem for creating SEPA XML files
Stars: ✭ 125 (-3.1%)
Mutual labels:  xml
Dino
Modern XMPP ("Jabber") Chat Client using GTK+/Vala
Stars: ✭ 1,637 (+1168.99%)
Mutual labels:  xml
Lemminx
XML Language Server
Stars: ✭ 117 (-9.3%)
Mutual labels:  xml
Markup.ml
Error-recovering streaming HTML5 and XML parsers
Stars: ✭ 122 (-5.43%)
Mutual labels:  xml
Kripton
A Java/Kotlin library for Android platform, to manage bean's persistence in SQLite, SharedPreferences, JSON, XML, Properties, Yaml, CBOR.
Stars: ✭ 110 (-14.73%)
Mutual labels:  xml
Sitemap
PHP XML Sitemap Generation
Stars: ✭ 128 (-0.78%)
Mutual labels:  xml
Flexlib
FlexLib是一个基于flexbox模型,使用xml文件进行界面布局的框架,融合了web快速布局的能力,让iOS界面开发像写网页一样简单快速
Stars: ✭ 1,569 (+1116.28%)
Mutual labels:  xml
Prettydiff
Beautifier and language aware code comparison tool for many languages. It also minifies and a few other things.
Stars: ✭ 1,635 (+1167.44%)
Mutual labels:  xml
Marklogic Data Hub
The MarkLogic Data Hub: documentation ==>
Stars: ✭ 113 (-12.4%)
Mutual labels:  xml
Twital
Twital is a "plugin" for Twig that adds some sugar syntax, which makes its templates similar to PHPTal or VueJS.
Stars: ✭ 116 (-10.08%)
Mutual labels:  xml
Snodge
Randomly mutate JSON, XML, HTML forms, text and binary data for fuzz testing
Stars: ✭ 121 (-6.2%)
Mutual labels:  xml
Repurrrsive
Recursive lists to use in teaching and examples, because there is no iris data for lists.
Stars: ✭ 112 (-13.18%)
Mutual labels:  xml
Attentionxml
Implementation for "AttentionXML: Label Tree-based Attention-Aware Deep Model for High-Performance Extreme Multi-Label Text Classification"
Stars: ✭ 126 (-2.33%)
Mutual labels:  xml
Bible Database
Bible databases as XML, JSON, SQL & SQLITE3 Database format for various languages. Developers can download it freely for their development works. Freely received, freely give.
Stars: ✭ 111 (-13.95%)
Mutual labels:  xml
Saxerator
A SAX-based XML parser for parsing large files into manageable chunks
Stars: ✭ 119 (-7.75%)
Mutual labels:  xml
Scobot
SCORM API for Content. JavaScript library, QUnit tests and examples.
Stars: ✭ 128 (-0.78%)
Mutual labels:  xml
Jstoxml
JavaScript object to XML converter (useful for RSS, podcasts, GPX, AMP, etc)
Stars: ✭ 127 (-1.55%)
Mutual labels:  xml
Js2xml
Convert Javascript code to an XML document
Stars: ✭ 124 (-3.88%)
Mutual labels:  xml

The Music Encoding Initiative

Branch Continuous Integration Status
Develop Deploy Schema and Guidelines
Master Build Status

The Music Encoding Initiative (MEI) is an open-source effort to define a system for encoding musical documents in a machine-readable structure. MEI brings together specialists from various music research communities, including technologists, librarians, historians, and theorists in a common effort to define best practices for representing a broad range of musical documents and structures. The results of these discussions are formalized in the MEI schema, a core set of rules for recording physical and intellectual characteristics of music notation documents expressed as an eXtensible Markup Language (XML) schema. It is complemented by the MEI Guidelines, which provide detailed explanations of the components of the MEI model and best practices suggestions.

Validating MEI files against an MEI Schema

One of the core strengths of the MEI Schema is that it allows an individual to validate an MEI file against an XML Schema to ensure the MEI file conforms to expected encodings and behaviours. To validate an MEI file you need XML validator software. XML Authoring tools, such as oXygen has built-in validation tools. There are also several command-line utilities, including xmllint and jing.

For example, you might validate an MEI file from the the 'sample-encodings' project using xmllint:

$> xmllint --noout --relaxng schemata/mei-CMN.rng "sample-encodings/MEI 3.0/Music/Complete\ examples/Bach_Ein_festeBurg.mei"

sample-encodings/MEI 3.0/Music/Complete examples/Bach_Ein_festeBurg.mei validates

Or, the same command using jing.

$> jing schemata/mei-CMN.rng "sample-encodings/MEI 3.0/Music/Complete\ examples/Bach_Ein_festeBurg.mei"

Structure of the MEI Source Repository

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

  • customizations: TEI ODD files that allow you to build customized MEI schemas.
  • schemata: pre-built MEI schemas
  • source: Contains the source code to the MEI schema, expressed in TEI ODD. This includes the source code for the MEI Guidelines, and MEI Core.
  • tests: Unit tests for the MEI Schemas

In addition, samples of MEI-encoded files are available in the sample-encodings project, and tools for working with and converting to and from other formats and MEI are available in the encoding-tools project.

Building MEI

The MEI Source is not a schema in itself; rather, it can be used to build customized schemas. To create your own customization, you should understand the building and customization process.

Customizing MEI

The MEI Schema may be customized to express and validate different types of music documents. These customizations are controlled by customization By default, MEI includes five customizations:

  • mei-all: The full MEI Schema. This is the most permissive version of MEI.
  • mei-CMN: Validates MEI files that express common Western music notation.
  • mei-Mensural: Validates MEI files that express white Mensural notation (will raise validation errors if elements like "measure" exist in the MEI encoding).
  • mei-Neumes: Validates MEI files that express Neume notation (like Mensural, will raise validation errors if elements that are not part of neume notation exist in an encoding.)

Why Customizations?

For those who are used to having a single DTD or W3C Schema to validate music notation encodings, the customization process may seem to be a complex way of arriving at a schema to validate music notation. However, customizations are a vital part of the expressive power of MEI, and when used to their full extent, can assist organizations in ensuring the integrity and validity of their data.

When designing a music encoding system there are many contradictory and non-standardized practices associated with writing music notation. Different repertoires may have extremely different ways of expressing pitch or rhythm; for example, rhythm in Mensural notation is incompatible with the later systems developed in common Western notation.

Most attempts at addressing this complexity restricts a schema to only a certain subset of music notation, and does not attempt to accurately represent the semantics of music notation that falls outside of its defined scope. So, for example, a system designed for common Western notation that depends on the existence of measures, duration, note shapes, or even staves, cannot semantically represent notations that do not have these features.

The MEI takes a different approach. With the customization system, schemas may be generated from an existing "library" of well-defined musical behaviours, but each behaviour may be mixed and matched according to the needs of the notation. In this sense, the MEI source functions more as a "library" of music encoding tools from which many different types of notation can be expressed, and not just a single monolithic schema.

Building MEI Schemas

Building MEI requires the TEI Stylesheets. You should clone their git repository, or download them in a packaged zip file.

To build the CMN customization, for example, you can use the teitorelaxng command in the TEI Stylesheets. Let's assume that your stylesheets are in /opt/TEI, and your MEI source is in /opt/MEI:

$> /opt/TEI/bin/teitorelaxng --localsource=/opt/MEI/source/mei-source.xml /opt/MEI/customizations/mei-CMN.xml mei-cmn.rng

This will generate a RelaxNG schema called mei-cmn.rng for the CMN Customization, which can then be used to validate CMN-encoded MEI files.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].