- Ekmelily 2.2 – for LilyPond 2.19.22 or higher
- Ekmelily 2.2 + Ekmelos 2.3 bundled
- Ekmelily 1.10 – for LilyPond 2.18.x
Ekmelily is an extension for LilyPond that supports the notation
of microtonal music in the 72-tone equal-temperament system (72-EDO,
Ekmelic System), as well as in the included sixth-, quarter-, and
third-tone systems (36-,24-,18-EDO).
It defines Note names for all twelfth-tone degrees and supports variable notations in terms of predefined and user-defined Notation Styles. Each style uses a specific set of accidental symbols for the alterations up to the five-quarters-tone. See Alterations for details of the accidental symbols in the predefined styles.
Ekmelily requires LilyPond version 2.18 or higher. LilyPond is a free music typesetting program (part of the GNU Project) to automatically produce high-quality sheet music. It runs on GNU/Linux, OS X, and Windows.
- Copy the file
ekmel.ilyinto an appropriate folder, e.g.
LILYPONDmeaning the installation folder of LilyPond.
- Copy one or both of the language files into the same folder as above:
ekmel-en.ilyfor English note names,
ekmel-de.ilyfor German note names;
see Note names.
- Install the Ekmelos Font if it shall be used for the accidental symbols in Ekmelily; see Fonts.
Predefined Notation Style
This sets the notation style STYLENAME. The default setting is arrow or the style specified with the command line option 1
The following styles are predefined (see Alterations for details of the accidental symbols):
- arrowArrow notation
- rhmRichter Herf / Maedel notation
- simsSims notation
- sagSagittal notation. . .
- msagMixed Sagittal notation
- wysWyschnegradsky notation. . .. . .
- goGould notation for quarter-tones
- gosGould notation for sixth-tones
- gostGould + Stein / Zimmermann notation
- stzStein / Zimmermann notation
- stcStein / Couper notation
- stvtStein / Van Blankenburg / Tartini notation
- bosBosanquet commatic notation
- fourDigit 4 notation
- fernFerneyhough notation
User-defined Notation Style
\ekmelicUserStyle MYNAME #'((ALTERATION CHARACTER …) …)
This creates a user-defined notation style with the name MYNAME, derived from the current style (usually a predefined notation style).
For each specified ALTERATION, a new accidental is defined which is a concatenation of one or more CHARACTERs. For all other alterations where the previous accidental of ALTERATION is found in combination with further symbols, this accidental is also replaced by the new one.
ALTERATION must be a rational number or one of the
predefined Scheme symbols.
CHARACTER must be either a Unicode code point as an integer number (e.g.
#xE262), or a character literal (e.g.
or a string (e.g.
Note: The code points supported by the Ekmelos Font are listed in
If MYNAME is an empty string (
name of the current style extended with
-user is taken.
- Set the name of the current notation style as the output filename
suffix for the current
- Draw the name of the current notation style as markup.
- Draw an accidental symbol according to the current notation style as markup. ALTERATION must be a rational number or one of the predefined Scheme symbols.
- Draw ALTERATION as a fraction (arranged vertically, not just a string n/d), or as an integer if its denominator is 1, with a separate minus sign for a negative value. ALTERATION must be a rational number or one of the predefined Scheme symbols.
Ekmelily defines note names (pitch names) for all twelfth-tone degrees
based on the German and English names for semi- and quarter-tones that
are already given in LilyPond;
see the table of all note names.
The used language version depends on which language file exists:
ekmel-en.ily for English note names,
ekmel-de.ily for German note names;
or, if both exist, which language is selected with the
\language command (this must be specified before
"english" selects the English note names, any other language
the German note names.
Enharmonically equivalent Note names
The one-quarter-tone and three-quarters-tones degrees have two distinct,
enharmonically equivalent accidentals in some notation styles like
arrow, rhm, and sims.
Therefore, Ekmelily defines two note names each, e.g.
csaqf (English) or
However, LilyPond does not support different accidentals for the same
alteration. As a provisional solution, the combined note names (e.g.
ciseh) have slightly differing alterations
and are therefore not suitable for transposition and MIDI output.
ekmelicFont = FONTNAME
or with the command line option 1
This sets the predefined Gould notation for sixth-tones (gos) and modifies it into a user-defined notation with the Tavener (Byzantine-style) sharp and flat (code points U+E476, U+E477) for the quarter-tone degrees:
\include "ekmel.ily" \ekmelicStyle gos \ekmelicUserStyle gouldTavener #'( (1/4 #xE476) (-1/4 #xE477))
The same example making use of the corresponding Scheme symbols:
\include "ekmel.ily" \ekmelicStyle gos \ekmelicUserStyle gouldTavener #`( (,SEMI-SHARP #xE476) (,SEMI-FLAT #xE477))
This selects the English note names and prints the Sims accidentals defined in the Bravura font:
\language "english" ekmelicFont = "Bravura" \include "ekmel.ily" \ekmelicStyle sims
Please find further examples of user-defined styles in the file
- ↑abLilyPond produces a warning "no such internal option",
which can be ignored.
Warnings can be suppressed with the command line option
- ↑The German note names correspond with those in Ekmelily versions prior to 1.9 without language files.
- ↑SMuFL (Standard Music Font Layout) is a specification for music symbols, developed by the W3C Music Notation Community Group. It uses the Unicode Private Use Area (PUA) in the Basic Multilingual Plane (BMP) starting at code point U+E000.