SkillAgentSearch skills...

Meico

A converter framework with support for MEI, MSM, MPM, MIDI, WAV, MP3, chroma, and XSLT

Install / Use

/learn @cemfi/Meico
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

GitHub release documentation LGPL v3

Author: Axel Berndt (Paderborn University, Detmold)<br> MEI support: Benjamin W. Bohl, Johannes Kepper<br> Contributor: Matthias Nowakowski, Simon Waloschek<br>

Java Compatibility

  • meico Java compatibility 1.8+
  • meicoApp Java compatibility

Meico is a converter framework for MEI files. MEI offers an invaluable combination of symbolic music data and additional information far beyond the typical metadata found in other formats. All this is often based on musicological research and features an accordingly high scientific quality. Digital music editions motivate new interesting research questions highly relevant to the field of Music Information Retrieval (MIR) and the demand to gain deeper insight into subjects such as composition styles, performance practices, historical change processes in music tradition, and how all these reflect in the musical works edited. In this, MIR can make valuable contributions to musicology, for instance by providing tools to work on large corpora of MEI encoded music. Further application scenarios include digital music stand technology, music notation and music production. Even though MEI is a quasi-standard for digital music editions, there is few software support for it. Processing MEI encoded music is by far not a trivial task and many application scenarios have their own more established and efficient formats. With meico we address these issues. Meico implements methods to convert MEI data to several other formats, making MEI encodings accessible to a variety of applications. We presented meico at the Audio Mostly conference in 2018, the paper can be found here and in the ACM Digital Library. The following features are implemented:

  • MEI to MSM conversion (with variable time resolution in pulses per quarter, ppq),
  • MEI to MPM conversion (performance data is exported together with MSM)
  • MSM conversion to MIDI (raw and expressive performance) and sequences of chroma and absolute pitch vectors,
  • MIDI to PCM audio and MP3 conversion (with freely choosable SoundFont and Downloadable Sounds),
  • MIDI to MSM conversion,
  • PCM audio (WAV) to MP3 conversion and vice versa,
  • MEI score rendering (based on Verovio, only in the meicoApp),
  • MEI processing functions (validation, xml:id generation, resolution of elements with copyof attribute, conversion of expansion elements into "through-composed" MEI code ...),
  • MusicXML processing (via the ProxyMusic functionalities),
  • MSM processing functions (validation, remove rest elements from the score, expand repetitions encoded in the sequencingMap ...),
  • MPM processing functions (validation, making part-specific tempo and dynamics instructions global, meico integrates the official MPM API with all its functionality for creation, editing and performance rendering)
  • an instrument dictionary and several string matching algorithms to map staff names to MIDI program change numbers,
  • basic MIDI and audio playback,
  • two standalone modes (command line mode, desktop gui mode),
  • a REST API,
  • processing of XML sources with XSLT stylesheets, e.g. to convert MEI to MusicXML using the Music Encoding Initiative's mei2musicxml.xsl stylesheet from the MEI Encoding Tools GitHub.

There are several features open, though. Currently, meico ignores any MEI data that is concerned with ornamentation (trill, mordent, arpeggio, tremolo). We would also like to include MusicXML support. Several MEI elements and attributes are not supported so far (e.g. meterSigGrp, uneume, lyrics). Meico implements a default method to resolve ambiguity (e.g., choose a reading from different alternatives in MEI). If other choices should be made, the user can use MEI Sequence Editor to prepare an unambiguous MEI file.

How to use meico?

Meico can be used in several different ways. The file meicoApp.jar (see the latest release) is a standalone runnable Java program. We have tested it under Windows, Mac OS and Linux. The only prerequisite is that you have a Java 1.8 (or higher) Runtime Environment installed on your system.

Starting the standalone application meicoApp.jar without any command line options will start the window mode. Simply drag your files into the window. The startup screen lists the supported input file formats. You can find context information on each interface element in the statusbar. If you have several mdiv elements (movements) in your MEI document you will get an individual MSM/MPM pair for each movement on conversion. Conversion from MIDI to audio may take some time when it is a long piece. To get better quality sounds than Java's built-in default instruments, we recommend using a higher-quality soundbank, such as one of these soundfonts. Simply drag and drop them into the workspace and activate them via their menu or double click. XSL files are used in the same way. If you want to apply an XSL Transform to your MEI or other XML data, drop the XSL on the workspace, activate it and transform. Soundfonts and XSLTs can also be set as standard so that this loading procedure is not necessary on the next startup.

A screenshot of the meico graphical user interface.

The command line mode expects the following command line options:

Usage: java -jar meicoApp.jar [OPTIONS] FILE

| Option | Description | |-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------| | -?, --help | show this help text | | -v FILE, --validate FILE | validate loaded MEI file against given schema (e.g. C:\mei-CMN.rng) | | -a, --add-ids | add missing xml:ids to note, rest and chord elements in MEI;<br>meico will output a revised MEI file | | -u, --fix-duplicate-ids | fix duplicate xml:ids | | -r, --resolve-copy-ofs | resolve elements with copyof and sameas attributes into selfcontained elements<br>with unique xml:id; meico will output a revised MEI file | | -n, --ignore-repetitions | meico automatically expands repetition marks, use this option to prevent this step | | -e, --ignore-expansions | expansions in MEI indicate a rearrangement of the source material, use this option to prevent this step | | -ex, --expressive | convert to expressive MIDI | | -x FILE argument, --xslt FILE argument | apply an XSL transform FILE (e.g. C:\mei2musicxml.xsl) to the MEI source and store the result with file extension defined by argument (e.g. "mxl") | | -m, --msm | convert to MSM | | -f, --mpm | convert to MPM | | -o, --chroma | convert to chromas | | -h, --pitches | convert to pitches | | -i, --midi | convert to MIDI | | -p, --no-program-changes | suppress program change events in MIDI, all music will be played by piano | | -c, --dont-use-channel-10 | do not use channel 10 (drum channel) in MIDI | | -t argument, --tempo argument | set MIDI tempo (bpm), default is 120 bpm | | -w, --wav | convert to Wave | | -3, --mp3 | convert to MP3 | | -q, --cqt | convert the audi

Related Skills

View on GitHub
GitHub Stars73
CategoryCustomer
Updated1mo ago
Forks15

Languages

Java

Security Score

100/100

Audited on Feb 14, 2026

No findings