levinericzimmermann / ekme-heji.ily

Helmholtz-Ellis JI Notation for Lilypond
GNU General Public License v3.0
5 stars 0 forks source link
accidentals heji justintonation lilypond microtonal music notation

Helmholtz-Ellis JI Notation for Lilypond

This package adds support for the Extended Helmholtz-Ellis JI Pitch Notation in Lilypond via Ekmelily and the Ekmelos font from Thomas Richter. For a basic introduction to microtonal composition and notation read this article.

Installation

First follow the installation instructions of Ekmelily and Ekmelos. Then download the latest ekme-heji.ily package or clone the files straight from github. You can either extract the 'ekme-heji.ily' file in the same directory as your Lilypond project, or you put it in Lilyponds installation directory (something like lilypond/usr/share/lilypond/current/ly). Finally you have to include ekme-heji.ily in your Lilypond file:

\version "2.22.0"
\language "english"
\include "ekme-heji.ily"

Usage and nomenclature

ekme-heji.ily adds new pitches to Lilypond. The pitch names are composed of three subparts:

explanation example 1 example 2
diatonic pitch name a c
Pythagorean accidental s (for 'sharp') ff (for 'double flat')
additional commas oaa ubaocb

Therefore asoaa and cffubaocb are examples for concatenated full pitch names.

Additional commas are described by three letters:

explanation example 1 example 2
tonality o (for otonality) u (for utonality)
prime number a (for 5) c (for 11)
exponent a for +/- 1 b for +/- 2

Tonality can either be o for otonality or u for utonality (if the exponent is bigger than 0 it's an otonality, if the exponent is smaller than 0 it's an utonality).

The prime number nomenclature is a simple mapping of the alphabetical order to rising prime numbers:

The exponent nomenclature is also a simple mapping of alphabetical order to rising integers:

Therefore a pitch with the interval 5/4 to c would be written as eoaa (diatonic pitch name: e, comma: oaa for otonality (= o) of 5 (= a) with exponent 1 (= a)). When a pitch owns several commas they are always sorted from lower prime numbers to higher prime numbers. For instance the diatonic pitch 'a' with two syntonic commas and one undecimal commas would be written as aoaboca.

Tempered pitches are indicated with the letter t. For instance a tempered d would be dt and a tempered f-sharp would be fst.

Examples

Writing a Wilson Hexany in HEJI - Notation:

\version "2.22.0"
\language "english"

\include "ekme-heji.ily"

\new Score
<<
    \new Staff
    {
        \new Voice
        {
            \accidentalStyle "dodecaphonic"
            aoca'1
            boaaoba'
            cobaoca''
            doba''1
            fsoaaoca''1
            gsoaa''1
        }
    }
>>

wilson

Writing a twelfth tone row of tempered pitches:

\version "2.22.0"
\language "english"

\include "ekme-heji.ily"

\new Score
<<
    \new Staff
    {
        \new Voice
        {
          \relative c'
          {
            gt1
            bft
            dt
            fst
            at
            ct
            et
            gst
            bt
            cst
            dst
            ft
        }
      }
    }
>>

berg

Precision

Midi playback is precise to within +/- 0.2 cents.

Limitations

By default not all specified accidentals and accidental combinations are supported. The highest implemented prime number is 17 although the Helmholtz-Ellis JI Pitch Notation defines accidentals until 47. There are two reasons for this limitation:

  1. Lilypond takes too long to parse if all specified accidental combinations are added.
  2. The Ekmelos font only supports accidentals until prime number 31. This could be solved in future releases of Ekmelos or through using a different font.

For now, ekme-heji.ily is only available in English (English diatonic pitch names, English default accidentals like 's' for sharp and 'f' for flat).

Modifications

If you want to build your own tuning files with different nomenclature or different supported prime numbers, you can adjust the Python script which builds the tuning files. For running it, you first have to install mutwo.ekmelily. See mutwos api documentation for more information regarding the tuning file script.