# Ekmelily – Notation of Microtonal Music

Ekmelily is an extension for LilyPond that supports the notation of microtonal music in the 72-EDO (Ekmelic system) and other equal-temperament tunings: 12, 19, 24, 31, 36, and 48.
It defines note names based on the names for semi- and quarter-tones given in LilyPond, 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.

Ekmelily 3.0 requires LilyPond version 2.19.22 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.

See also the complete Ekmelily project which contains, among others, a flavor of the latest version for use with LilyPond 2.18.x, and short demos of the notation styles.

## Installation

• Copy the include file(s) for the desired tuning(s) as well as the main include file `ekmel-main.ily` into an appropriate folder, e.g. `"LILYPOND/usr/share/lilypond/current/ly"`, with `LILYPOND` meaning the installation folder of LilyPond.
• Install the Ekmelos Font if it shall be used for the accidental symbols in Ekmelily; see Fonts.

## Usage

Add the following lines near the top of your LilyPond input file. They are all optional – except for the include file of the desired tuning – but should be specified in this order.

```ekmelicFont = FONTNAME \include "ekmel*.ily" \language "LANGUAGE" \ekmelicStyle STYLENAME \ekmelicUserStyle MYNAME #'((ALTERATION CHARACTER …) …)```

## Tunings

Ekmelily now supports different tunings (not only 72-EDO), available by separate include files. Each provides its own set of note name languages and notation styles (the first specified language and style is the default).

TuningInclude fileLanguagesNotation Styles
12-EDOekmel-12.ilydeutsch, english, nederlands, catalan, espanol, français, italiano, norsk, portugues, suomi, svenska, vlaamsstd, sag, msag
19-EDOekmel-19.ilydeutsch, english, nederlands, catalan, espanol, français, italiano, norsk, portugues, suomi, svenska, vlaamsstd, sag, msag
24-EDOekmel-24.ilydeutsch, english, nederlands, espanol, français, italiano, portuguesgo, stz, stc, stvt, arrow, sag, msag, arabic, persian, four
31-EDOekmel-31.ilydeutsch, english, nederlands, catalan, espanol, français, italiano, norsk, portugues, suomi, svenska, vlaamsstd, stz, sth, sag, msag
36-EDOekmel-36.ilydeutsch, englishgo, arrow, sag, msag, wys, bos
48-EDOekmel-48.ilydeutsch, englishsag, msag
72-EDOekmel.ilydeutsch, englisharrow, rhm, sims, sag, msag, wys, gost, bos, fern

## Languages

`\language "LANGUAGE"`

This selects note names (pitch names) for LANGUAGE, provided that it is available for the respective tuning. Else, the default language is selected (this is always `"deutsch"`). The `\language` command should be placed after the include file. For backward compatibility, it can be placed before the include file, but only to specify `"english"` or `"deutsch"`.

Ekmelily defines its own sets of note names based on the names for semi- and quarter-tones in LilyPond; see the Tables with the note names.

### Enharmonically equivalent Note names

Some notation styles support two distinct, enharmonically equivalent accidentals; e.g. the arrow, rhm, and sims notations for the one-quarter-tone and three-quarter-tones. Therefore, Ekmelily defines two note names each, e.g. `cqs` and `csaqf` (English) or `cih` and `ciseh` (German). However, LilyPond does not support different accidentals for the same alteration. As a provisional solution, the combined note names (e.g. `csaqf` or `ciseh`) have slightly differing alterations and are therefore not suitable for transposition and MIDI output.

## Notation Styles

### Predefined Notation Styles

`\ekmelicStyle STYLENAME`

This sets the predefined notation style STYLENAME. The default notation depends on the tuning or it is specified with the command line option 1

`-dekmelic-style=STYLENAME`

The following table shows the predefined notation styles supported by a specific EDO tuning (d = default notation); see the Tables with the alterations for details on the accidental symbols.

### User-defined Notation Styles

`\ekmelicUserStyle MYNAME #'((ALTERATION CHARACTER …) …)`

This creates a user-defined notation style derived from the current style (possibly set by a previous `\ekmelicStyle` command), with the name MYNAME.

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 a predefined Scheme symbol.
CHARACTER must be either a Unicode code point as an integer number (e.g. `#xE262`), or a character literal (e.g. `#\b`), or a string (e.g. `"bb"`). Note: The code points supported by the Ekmelos Font are listed in `Ekmelos.pdf`.
If MYNAME is an empty string (`""`), the name of the current style extended with the suffix `-user` is taken.

## Fonts

Ekmelily requires a font for the accidental symbols (as an extension to LilyPond's Feta font.) When using a predefined notation style, this font must be compliant with SMuFL.7

By default, the Ekmelos Font is used. Another font (e.g. Bravura) can be selected, either in the LilyPond input file before the include file with the variable

`ekmelicFont = FONTNAME`

or with the command line option 1

`-dekmelic-font=FONTNAME`

`\ekmelicOutputSuffix`
Set the name of the current notation style as the output filename suffix for the current `\book` section.
`\ekmelic-style-name`
Draw the name of the current notation style as markup.
`\ekmelic-char #ALTERATION`
Draw an accidental according to the current notation style as markup. ALTERATION must be a rational number or a predefined Scheme symbol.
`\ekmelic-fraction #ALTERATION`
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 a predefined Scheme symbol.

## Examples

• This sets the predefined Sims notation for 72-EDO, selects the English note names, and prints the accidentals with the Bravura font:
``````ekmelicFont = "Bravura"
\include "ekmel.ily"
\language "english"
\ekmelicStyle sims``````
• This sets the predefined Stein / Zimmermann notation (stz) for quarter-tones (24-EDO) and modifies it into a user-defined notation with the three-quarters-tone flat symbol after Tartini (U+E487), and the sharp-sharp symbol (U+E269) instead of double-sharp:
``````\include "ekmel-24.ily"
\ekmelicStyle stz
\ekmelicUserStyle myNotation #'(
(-3/4 #xE487)
(1 #xE269))``````
• This is the same example but making use of the corresponding Scheme symbols:
``````\include "ekmel-24.ily"
\ekmelicStyle stz
\ekmelicUserStyle myNotation #`(
(,THREE-Q-FLAT #xE487)
(,DOUBLE-SHARP #xE269))``````

Please find further examples of user-defined styles in the file `user-styles.ly`.

## Others

Other extensions for LilyPond for the notation of microtonal music which also inspired Ekmelily:
microlily by Graham Breed (Sagittal notation) and HE-Lily by Torsten Anders (Helmholtz-Ellis notation).

1. abLilyPond produces a warning "no such internal option", which can be ignored. Warnings can be suppressed with the command line option `--loglevel=ERROR` or `--loglevel=NONE`.
2. rhm uses optional glyphs (U+F600-U+F605) for the accidentals after Franz Richter Herf and Rolf Maedel. They are private supplements in the Ekmelos Font and subject to change in future versions.
3. msag uses the large double sharp (U+E47D) defined in SMuFL. Hence it is different from std even for 12-EDO.
4. sth uses optional glyphs (U+F612,U+F613) for the semi-flat symbols. They are private supplements in the Ekmelos Font and subject to change in future versions.
5. arabic uses the Arabic accidentals (U+ED30-U+ED38) defined in SMuFL. See `"arabic.ly"` for Arabic maqamat etc., which also uses a different three-quarters-tone flat symbol.
6. persian uses the Persian accidentals (U+E460, U+E461) defined in SMuFL for 24-EDO. See Persian music notation by Kees van den Doel for proper Persian microtonal alterations, note names, keys, etc.
7. 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.