# Ekmelily – Notation of Microtonal Music

## Latest release: 3.717 May 2021

Ekmelily is an extension for LilyPond that supports the notation of microtonal music in several equal-temperament tunings: 12, 19, 24, 31, 36, 48, and 72-EDO (Ekmelic System).1

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, at most.

Ekmelily 3.7 requires LilyPond version 2.19.22 or higher. LilyPond is the free GNU music typesetter to automatically produce high-quality sheet music. It runs on GNU/Linux, OS X, and Windows.

• Ekmelily Folder
… all files of Ekmelily: LilyPond include files, documentation, scripts, old versions, in particular, a flavor of version 3.0 for use with LilyPond 2.18.x, and short demos of the notation styles.
• Zip Archive
… with the LilyPond include files, documentation, et al

## 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 ACC-ELEMENT …) …)

## Tunings

Ekmelily supports different tunings available by separate include files (`.ily`). Each provides its own set of languages and predefined notation styles. The first language and style specified in the following table is the default.

Note: Ekmelily versions prior to 3.0 support only 72-EDO.

## Languages

\language "LANGUAGE"

This selects the note names in LANGUAGE, provided that it is available for the respective tuning. Else, the default language is selected (which is usually `"deutsch"`). Ekmelily defines its own sets of note names based on the names for semi- and quarter-tones given in LilyPond. See the Tables for 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-quarters-tone. 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 option3

-dekmelic-style=STYLENAME

The following table shows the predefined notation styles. X = supported by a tuning. D = default notation style in a tuning. See the Tables with the alterations for details on the accidental symbols.

### User-defined Notation Styles

\ekmelicUserStyle MYNAME #'((ALTERATION ACC-ELEMENT …) …)

This creates a user-defined notation style derived from the current style – possibly set by a previous `\ekmelicStyle` command – with the name MYNAME. If MYNAME is an empty string (`""`), the name of the current style extended with the suffix `-user` is taken.

ALTERATION must be a rational number. For each specified ALTERATION, a new accidental is defined which is the concatenation of the ACC-ELEMENTs. For all other alterations where the previous accidental of ALTERATION appears likewise (usually in combination with further symbols), this accidental is also replaced by the new one.

ACC-ELEMENT must be either a code point as an integer number (e.g. `#xE262`), or a character literal (e.g. `#\b`), or a string of any length (e.g. `"bb"`). Two or more ACC-ELEMENTs are juxtaposed with a padding of 0.12 staff units, but no extra space is inserted between the characters of a string. Note that in a SMuFL10 compliant font, accidental symbols have a zero side-bearing. This also applies to the Basic Latin (ASCII) characters in the Ekmelos Font.
See e.g. the Ekmelos Documentation for code points.

## Fonts

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

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 option3

-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.
\ekmelic-fraction #ALTERATION
Draw ALTERATION as a fraction arranged vertically (not just a string num/denom) or as an integer if its denominator is 1, with a separate minus sign for a negative value. ALTERATION must be a rational number.

## Examples

```ekmelicFont = "Bravura"
\include "ekmel.ily"
\language "english"
\ekmelicStyle sims```
This sets the predefined Sims notation for 72-EDO, selects the English note names, and draws the accidentals with the Bravura font.
```\include "ekmel-24.ily"
\ekmelicStyle stz
\ekmelicUserStyle myNotation #'(
(-3/4 #xE327)
(1 #xE262 #xE262))```
This sets the predefined Stein / Zimmermann notation (`stz`) for quarter-tones (24-EDO) and modifies it into a user-defined notation with the Sagittal flat 11 medium diesis down symbol (U+E327) for three-quarter-tones flat, amd a concatenation of two sharp symbols (U+E262) for double-sharp.
```\include "ekmel-24.ily"
\ekmelicStyle stz
\ekmelicUserStyle myNotation #`(
(,THREE-Q-FLAT #xE327)
(,DOUBLE-SHARP #xE262 #xE262))```
This is the same example but it makes use of the corresponding Scheme symbols.
```\include "ekmel.ily"
\language "english"
\ekmelicUserStyle hewm #'(
(1 #\x)
(-1 "bb")
(1/2 #\#)
(-1/2 #\b)
(1/4 #\^)
(-1/4 #\v)
(1/6 #\>)
(-1/6 #\<)
(1/12 #\+)
(-1/12 #\-))```
This sets the HEWM (Helmholtz / Ellis / Wolf / Monzo) notation for 72-EDO and selects the English note names.
```\include "ekmel-24.ily"
\language "nederlands"
\ekmelicStyle stz
\ekmelicUserStyle stockhausen #'(
(3/4 #xED5A)
(-3/4 #xED59 #xE260)
(1/4 #xED58)
(-1/4 #xED59))```
This sets the notation after Karlheinz Stockhausen for 24-EDO with the fractional sharp symbols (U+ED58) and (U+ED5A), and the quarter-tone flat symbol (U+ED59), and selects the Dutch note names.

Further examples of user-defined styles can be found in the file `user-styles.ly`.

## What's New

• Version 3.7 (): New languages are available in `ekmel-36.ily` and `ekmel.ily` ("norsk", "suomi", "svenska"). In `ekmel-24.ily`, some quarter-tone names of "suomi" are corrected.
• Version 3.6 (): The note names are revised according to LilyPond 2.22. New languages are available in `ekmel-24.ily` ("catalan", "norsk", "suomi", "svenska", "vlaams"), in `ekmel-36.ily` ("nederlands"), and in `ekmel.ily` ("nederlands"). Native language names ("català", "español", "português") or their alias names can be used.
• Version 3.5 (): `ekmel-24.ily`: The Hába notation for quarter-tones uses the SMuFL glyphs (U+EE64-U+EE69) and the default notation is `stc` instead of `go`.
• Version 3.4 (): The Hába notation for quarter-tones (24-EDO) and for 1/3-, 1/6-, and 1/12-tones (36 and 72-EDO) is added.
• Version 3.3 (): Definitions to adjust the size of accidentals on grace notes are removed (obsolete since 3.2).
• Version 3.2 (): The output of accidentals is newly implemented (stencil instead of simple text) and the hair-space character (U+200A) is not used any more for padding in composite accidentals. The natural sign for restore and key cancellation now depends on the notation style (not always U+E261).
• Version 3.1 (): Key signatures are now supported. The file `ekmel-24.ily` defines an alteration order for key signatures including quarter tones. A new file `ekmel-arabic.ily` is available for Arabic scores (24-EDO) including maqamat (taken from `arabic.ly`).
• Version 3.0 (): A completely revised version that now supports different tunings (12, 19, 24, 31, 36, 48, 72-EDO) by separate include files. Arabic and Persian notation are added for 24-EDO.

See the file `CHANGELOG.txt` for older versions.

See the file `LICENSE.txt`. This license is also available at www.gnu.org/licenses.
2. abThe file `ekmel-arabic.ily` is a variant of `ekmel-24.ily` for Arabic scores, like LilyPond's `arabic.ly` but with the correct accidentals (U+ED30 - U+ED38 in SMuFL). It supports Arabic maqamat and defines only the Arabic notation and Italian note names, so the commands `\ekmelicStyle` and `\language` are not required.
3. 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`.
4. `rhm` uses optional glyphs (U+F600 - U+F605) for the accidentals after Franz Richter Herf and Rolf Maedel as they are not included in SMuFL. They are private supplements in the Ekmelos Font.
5. `msag` uses the large double sharp (U+E47D in SMuFL). Hence it is different from `std` even for 12-EDO.
6. `sth` uses optional glyphs (U+F612, U+F613) for the semi-flat symbols. They are private supplements in the Ekmelos Font.
7. `arabic` uses the Arabic accidentals (U+ED30 - U+ED38 in SMuFL). See the file `ekmel-arabic.ily` which supports Arabic maqamat.2
8. `persian` uses the Persian accidentals Koron and Sori after Ali-Naghi Vaziri (probably) (U+E460, U+E461 in SMuFL). See Persian music notation by Kees van den Doel for proper Persian microtonal alterations, note names, keys, etc.
9. `haba` in the 36- and 72-EDO tuning uses optional glyphs (U+F660 - U+F670) for the accidentals after Alois Hába as they are not included in SMuFL. They are private supplements in the Ekmelos Font.